Future Firefox will be multiprocess

Mozilla has started a new project to make Firefox split into several processes at a time: one running the main user interface (chrome), and another or several others running the web content in each tab. Like Chrome or Internet Explorer 8 which have implemented this behavior to some degree, the main benefit would be the increase of stability: a single tab crash would not take down the whole session with it, as well as performance improvements in multiprocessor systems that are progressively becoming the norm.

The project, which lacks a catchy name like other Mozilla projects (like TaskFox, Ubiquity, or Chocolate Factory) is coordinated by long time Mozillian, Benjamin Smedberg; and also integrated by Joe Drew, Jason Duell, Ben Turner, and Boris Zbarsky in the core team.

According to the loose roadmap published, a simple implementation that works with a single tab (not sessions support, no secure connections, either on Linux or Windows, probably not even based on Firefox) should be reached around mid-July. Phase II will deal with the interactions between the two process types (chrome and content), and is aimed for November.

Phase III will take on adapting the APIs for extensibility, accessibility, and performance. By this time (not even guesstimated), we could see a release to play with. Finally, Phase IV will extend the previous development to support several content processes at a time. Security sandbxing will be covered in a later phase.

So it seems we won’t see a multiprocess Firefox for at least a year or so. However, some decisions like taking Chromium’s networking stack to replace Necko, could accelerate the process. As you may know, Chromium is the open source version of Google’s Chrome.

Another consideration is that changes would come at the platform level, so in reality, any Mozilla-based application would be able to create independent processes when web content rendering is required.

34 thoughts on “Future Firefox will be multiprocess”

  1. I think the whole “one tab one process”-thingy makes the taskmanager one hell of a mess. I work with 40-50 tabs at all time so imagine what my taskmanager’s gonna look like =/

    I don’t see the real advantages of such a set up…

    1. Your taskmanager being a mess vs. Making it nearly impossible for malware to get to your machine.

      Hackers have come out and said that this sandboxing approach has made it nearly impossible to crack Chrome, and now other browsers want in on it. Also, the whole process makes the browser more stable. I can’t count how many times I’ve made the mistake of opening a PDF file in Firefox only to see it freeze and wait for it to respond minutes later. This would make my life so much easier.

      1. The sandboxing in Chrome, IE7, and IE8 is unrelated to running each tab in separate processes. This specific project is unrelated to sandboxing.

        Chrome, IE7, and IE8 all run their processes below the user privilege, so if malware compromises the browser, it can’t actually do anything.

        Firefox currently, and even after this, will run at user privileged level, so if the browser is compromised, so is the user account.

        That said, Mozilla is supposed to be implementing sandboxing in 4.0. We’ll see if that goes anywhere or not. I hope it does, it’s a basic security measure that Mozilla has ignored for far too long.

      2. Re the pdf files – go to options/applications. enter pdf in the search box. change the action to ‘use Foxit Reader’. Now the pdfs will automatically download in the browser downloader and open outside in the reader. Problem solved.

  2. That is a slight annoyance, Nils, however combined with the fact that at least Windows 7 (I think Vista too but I don’t remember) automatically sorts the processes in the Task Manager (in XP you had tell it to sort it), it shouldn’t be that big a deal to bypass all the Firefox processes. Do you really need to look at the processes in your Task Manager that often?

    I concede that I usually end up doing so at least a couple times a day on average, if I know what I’m looking for then I have it sorted alphabetically (forward or reverse) and I skip everything I don’t need to look at anyway. Otherwise I’m usually looking for the process or processes which take up the most CPU % or RAM, in which case the multiple Firefox processes still wouldn’t present a problem.

  3. There shouldn’t be any more taskbar buttons than normal. Those are associated with top level windows, not processes.

  4. Flash also makes life a mess and in browsers like Firefox, one freeze takes down the browser.
    I wish Firefox has this feature, since memory is quite cheap these days. Secondly, browser is an integral part of our Internet life.

  5. @Nils
    I was the same way until a few weeks ago, I also had the same mindset about this idea but instead I started using the bookmarking system in Firefox more effectively and have now trimmed my normal 107-140 tabs down to about five or six. If you organize it right it can work out very well. Folders are your parents, and separators are your friends.

    You’re right, but I think he’s talking about the processes you see in your task manager, which for every tab you have open in the browser would show a new Firefox process.

    Although that may bulk up your listing some you can still type out the first few letters of what you’re looking for (just click anywhere on an active process then type eg: word) and it should take you to that process in a jump. It makes finding a specific process much faster when you’re in a hurry.

  6. Careful with the terminology here: Firefox already has multiprocessor support because it uses multiple threads; this project is about moving from a single processes to multiple processes.

  7. I would think so, but I don’t think i’ve /ever/ actually seen firefox tap more than one core, even when lagging under heavy load (loading 20+ tabs, for example). I always thought that was weird, so for some reason it must be confined to one core even though it is multithreaded. I hope this fixes that some, whatever the issue is.

    The sandboxing is nice too, i dont like firefox freaking out because one page is somehow messing it up.

  8. Alex is right here. Multiprocessing isn’t going to be directly improved by splitting into more prosesses, but it could lead to those processes being more “threaded” than Firefox is now.
    I’m too a sloppy user with sessions of 50 tabs or so. They arent all flash and pdf, more like wikipedia and API-references. So is Firefox gonna start up 50 processes when I fire up one of those saved sessions?

  9. @Nils You most be using the windows default taskmanager which doesn’t list parent/child relationships for processes. I think the problem here is the taskmanager.

  10. In my opinion this is where Mozilla need to be looking to improve the browser. All the new evolutionary features they’re looking into are fine, but ultimately a browser needs to be an almost-invisible, efficient way of getting to web content and applications. I’ve found myself moving to Chrome for day-to-day tasks, and it’s going to take massively-improved performance from a multi-process Firefox to get me to move back.

  11. This is all about moving the responsibility for managing disparate sessions to the layer/experts whom know it best, the OS. It does reduce the ability to share memory and makes IPC more difficult, but that’s great security-wise.

    Basically, exactly what Apache and PostgreSQL has ben doing for years.

  12. Firefox is starting to fall behind. I’ll stick to it because of the great plugins but my original interest in FF was because it was cutting edge and fast.

    Now it seems like a technology laggard and bloated. I hope they get their act together before Chrome or Safari comes from behind in innovation. Never mid IE, I won;t go back to MS.

  13. If the goals of this project is to provide better responsiveness and improve robustness as a result – I think there can be another way than to use multiple processes. There is a screen cast on how we ensure responsiveness in Firefox by separating each JS application with an isolation called Script Space.


    This is the example code that was run.

    A click on the button would cause the browser to run a busy JavaScript loop .Firefox will not be able to process any more event unless the loop completes.

    We believe that JavaScript executions can be isolated if they belong to different events & different Script Space( this is a grouping of events based on DOM hierarchy) each event running in a separate thread. Threads then can be scheduled to ensure fairness in execution. By separating the execution of the onclick handlers , we can click on the second button while the other one is running its onclick handler – Thus ensuring responsiveness.

  14. single tab process always useful as Firefox is getting crashed common now a days ,if firefox crashed with this feature wonly one tab will be lost.

  15. Is it possible to have the best of both worlds? Continue single-process Firefox tabs, plus an option to create a new tab as a new process: basically as a new window, which looks like a tab, but perhaps in a different colour?

    1. That sounds like the worst of both worlds, plus some new terribleness!

      Single-process by default (same stability, performance, and memory fragmentation issues as today). Added UI complexity for everybody. Added internal complexity to support both modes.

      And for what? Just so when you open Windows Task Manager you see fewer .exe’s?

      Please don’t punish us users just because you like to see a short list in Windows Task Manager, and it’s not smart enough to do process grouping (like the Mac and Linux task managers do).

  16. Firefox could stand to improve it’s use of multiple processors. I have often noticed when Firefox is sluggish one core is maxed out at 100% utilization, while the other one is at almost 0%. I will follow this project closely as I am very excited about what it may offer!

  17. Great! I really hope an informative task manager will go along with this, so one can single out resource hogs by tab, extension and plugin (like one can already in Google Chrome) or even the combinations of those (e.g. in which tab has the Flash plugin gone nuts or better which precise flash animation).
    Right on!

  18. The ff greyout sucks so much. Uploading images to a laboratory and whole ff stays gray. I cannot start a second instace cause the config files are locked from the hanging ff. We are in jul 2010, when will a threaded ff available?

  19. Still can’t wait for this to appear.

    This approach is about the single and only major advantage Chrome holds over Firefox. And it’s exactly why Chrome fascinated me so much. Sandboxing offers great security, isolates tabs so they can only crash by themselves (it’s very rare though) but most importantly, separate the memory management.

    The biggest and most annoying complaint I have about Firefox is that I love keeping the browser open for hours, for days sometimes. But it has always had problems with memory leaks and the consomption growing steadily over time and over use. By isolating the tab to a single process, the memory consumption is completely freed.

    When this project comes to Firefox, I likely won’t ever have to look at any other browser out there because everything else it has is superior, except maybe speed which honestly isn’t that much of a bother and it gets better with Firefox 4.

  20. @Ncrdrg Process seperation is already in Firefox 4 Mobile, Firefox 4 (desktop) does not have it yet. But it is planned for the next release after that.

Comments are closed.