FireFox To Get Process Separation: Multi-Core Support

FireFox 3.5 is a very strong contender in the browser market but one feature it lacks that Google Chrome and Internet Explorer 8 has is multi-process browsing. Multi-process browsing gives the browser ultimate stability and performance for computers with multiple processors or CPU cores by having each page or tab, run in a separate process. This means each tab could theoretically could be on separate processors or cores giving you a performance boost over having just one process (the browser) running on just one CPU or core.

We gain not only performance from this type of process separation, we also gain security because if one page ends up being malicious its process can be closed and is segregated from the remaining browser processes.

When Does the Multi-Process Feature Come?
That’s very hard to say at this time. If we had to predict a time-frame, I would have to say around Q4 of 2009 or Q1 of 2010. The Mozilla team has already created a ‘prototype’ of the software and is testing it now but is still very far away from having an actual Alpha product for general testing.

Benjamin Smedberg is leading the core team of developers had has posted some general information on the project to his blog. Some of the benefits that he has outlined include:

  • Increased stability: if a plugin or webpage tries to use all the processor, memory, or even crashes, a process can isolate that bad behavior from the rest of the browser.
  • Performance: By splitting work up among multiple processes, the browser can make use of multiple processor cores available on modern desktop computers and the next generation of mobile processors. The user interface can also be more responsive because it doesnt need to block on long-running web page activities.
  • Security: If the operating system can run a process with lower privileges, the browser can isolate web pages from the rest of the computer, making it harder for attackers to infect a computer.

The Wiki Mozilla page offers some additional details of the project. The details boil down to the following tasks:

  1. Sprint as fast as possible to get basic code working, running simple testcase plugins and content tabs in a separate process. – This has somewhat been done, at least the basic code working part.
  2. Fix the brokenness introduced in step one: shared networking, document navigation and link targeting, context menus and other UI functions, focus, drag and drop, and probably many other aspects of the code will need modifications. Many of these tasks can be performed in parallel by multiple people.
  3. Profile for performance, and fix extension compatibility to the extent possible.
  4. Ship the product!

The project is called Electrolysis and the team consists of;
Benjamin Smedberg
Joe Drew
Jason Duell
Chris Jones (cjones)
Ben Turner
Boris Zbarsky

If you are interesting in volunteering with the project you can email benjamin@smedbergs.us.