Multi-process Firefox, coming to an Internets near you

Benjamin Smedberg recently discussed the motivation for splitting Firefox into multiple process, so I won’t recap that here. Instead, I want to demonstrate what we’ve accomplished so far. The video below shows our nearly Phase I-complete browser. (Back and Forward don’t work yet, but are relatively easy to add.)

First, I browse around. Nothing particularly exciting there, except that two Firefox programs are running — Firefox itself, and gecko-iframe. The second program is new: it’s drawing the web pages to the screen. Currently in Firefox, this is all done within the same program.

The fun comes when I kill -9 this gecko-iframe, the “tab” containing mozilla.com. To the non-geeky, invoking kill -9 on a program causes it to crash IMMEDIATELY. This simulates what would happen if, say, you tried to run a buggy plugin and it got itself into trouble. Notice that only the “content” disappears when the page crashes; the user interface itself keeps running as if nothing happened. This is a big step forward! If I were to kill -9 the current version of Firefox, everything would die, user interface and tabs.

With Firefox protected from buggy pages and plugins, more fun is possible. This video shows me pressing a “Recover” button that relaunches the page that just crashed. There are many more possibilities for recovering from these errors, and I’m excited to see what our user interface folks cook up.

This demo shows off a lot of hard work from Ben Turner, Benjamin Smedberg, Boris Zbarsky, and Joe Drew. (We also have plugins running in their own, separate processes, in an incomplete way. However, the plugins still refuse to draw to the screen and so wouldn’t make for a very good demo.) Drop by #content on IRC or read mozilla.dev.tech.dom if you want to find out more details of what the Electrolysis team is up to.

Comments (6)

  1. cjones wrote::

    @Adam: this has been in various stages of planning for at least 8 years.

    @asdf: you might want to read |man nice| again.

    @Ben: we at Mozilla haven’t been looking at security in earnest yet, but I know that the Google Chromium team at least considered using seccomp. I don’t know what they eventually chose, though.

    @anon: scheduling and prioritization of Firefox processes is pretty far down the road right now ;). But your suggestion is definitely something I’d like to implement eventually.

    Thursday, July 9, 2009 at 09:39 #
  2. hank wrote::

    i think that a separate hidden window/process for tracemonkey to do the javascript in would be good like chrome has that might ad more speed also overall this looks like a great idea i thank and praise you for your work on this so far

    Sunday, September 13, 2009 at 16:52 #
  3. E71 wrote::

    Old news yet here were are on Firefox 4.0 and disappointingly there’s no one-process-per-tab functionality in sight…

    Just a separate process for plugins… nowhere near as useful (at least for me).

    Tuesday, April 5, 2011 at 05:05 #
  4. IT Rush wrote::

    That’s the very reason FF is becoming so popular.. Keep it up.

    Friday, April 15, 2011 at 08:03 #
  5. Tim wrote::

    Does it really make that much of a difference? I’m sitting here with firefox 5, and compared to opera 11 it doesn’t seem that much quicker. Unless opera has the same technology..?

    Sunday, August 21, 2011 at 04:48 #
  6. cjones wrote::

    Tim: We still haven’t enabled out-of-process web content in desktop Firefox.

    Wednesday, November 23, 2011 at 09:39 #

Trackbacks/Pingbacks (2)

  1. […] Un primo esempio di questo approccio è stato illustrato in questo screencast (in formato OGG Theora), dove viene mostrato un prototipo di browser che esegue il rendering delle pagine web in processi separati e isolati da quello principale. Maggiori informazioni su questa dimostrazione vengono fornite in questo post. […]

  2. On Competition - Kurifuri on Thursday, July 9, 2009 at 21:18

    […] it’s coming to Firefox. (Yeah, this is old news by […]