I’ve seen the future, brother: it is dynamic additions to the status bar that don’t block the main process.

You’re looking at a mind-bogglingly alpha Jetpack prototype running out of process. Yesterday was a black triangle moment for me, as I finally saw the culmination of 2.5 months of work to make the words “Gmail it” appear in the status bar.

In this implementation, when a Jetpack tries to do something that doesn’t really make sense in its own process (say, adding an element to the status bar), it proxies this operation to the chrome process and continues on its way. Theoretically this allows the main chrome to focus on important things like being responsive or not freezing, so the main work of running Jetpack scripts can be delegated to another process.

There’s lots and lots more work from here (for example, clicking “Gmail it” does nothing for various reasons I need to explore), but this inauspicious screenshot demonstrates that the out of process future is alive and kicking!

2 Responses to “I’ve seen the future, brother: it is dynamic additions to the status bar that don’t block the main process.”

  1. So, it took you 2.5 months to add “Gmail it” to the status bar that doesn’t even work? I can do that in 2.5 minutes! 🙂

    But on a more serious note: How does this work, some new IPC API? For simple extensions, won’t the signaling overhead be larger that the time this extension would normally spend on the main thread? And is the idea to move all Jetpack extensions out of process or is it going to be an opt-in thing?

  2. Wladimir: this is using the Electrolysis work as a base. The “signaling overhead” you refer to is exceedingly low; the IPDL technology we’re using is quite responsive and easy to work with. The eventual goal is to have a separate process for Jetpacks (maybe per Jetpack, I’m unclear on that point right now); I recommend seeing the wiki for a general overview of future plans. The process of moving them out of process is unavoidable – seeing as Firefox is going to be split into chrome/content processes and Jetpacks by necessity span both, I’m doing the investigation now to figure out how best to go about it.

Leave a Reply