Electrolysis
Goal
The goal of the Electrolysis project ("e10s" for short) is to run web content in a separate process from Firefox itself. The two major advantages of this model are security and performance. Security would improve because the content processes could be sandboxed (although sandboxing the content processes is a separate project from Electrolysis). Performance would improve because the browser UI would not be affected by poor performance of content code (be it layout or JavaScript). Also, content processes could be isolated from each other, which would have similar security and performance benefits.
Although the Gecko platform supports multiple processes, the Firefox frontend is not designed to use them. Work to make the frontend (including addons) support multiple processes was begun in early 2013. The project roadmap has more details.
Enabling and Disabling Electrolysis
To enable or disable e10s, open Nightly's Preferences and check the "Enable E10S" checkbox. You will need to restart Nightly. Alternately, you can also toggle the browser.tabs.remote and browser.tabs.remote.autostart prefs to enable (true) or disable (false) e10s.
Contributing
The simplest way to help out is to file bugs when you find them.
- Link to all open e10s bugs: http://is.gd/QripTz
- Please check the open bugs for duplicates before filing a new bug.
- Link to file new e10s bug: http://is.gd/aTza8A
- Please include the string "e10s" in the bug summary so we can more easily track your bug.
Most bugs in e10s occur because code in the chrome process tries to access data in a content process. All of the DOM objects for a XUL browser element, as well as its DocShell, live in the content process. Typical access paths are via browser.contentWindow, browser.docShell, or some variation of them. Often, these property accesses will generate errors in the console, which makes these bugs fairly easy to detect. MDN has a good introduction to e10s, useful for both Firefox and add-on developers: https://developer.mozilla.org/en-US/Add-ons/Working_with_multiprocess_Firefox
What to Expect
Basic browsing should work as expected. Tabs that are loaded remotely (i.e., in a separate process) will have their title underlined. By default, only one content process is used. You can control this with the dom.ipc.processCount preference.
Known Issues
Known issues you might run into when testing e10s:
- HTTP redirects don't always work: bug 997808, bug 1050869
- Printing does not work: bug 927188
- WebRTC does not work: bug 849746
- Gmail login does not work if third-party cookies are always blocked: bug 1049299
- Accessibility does not work: bug 1029143
- Spell checker does not work: bug 1030449
- PDF.js does not work: bug 942707
- Middle-click, Open Link in New ... options doesn't work
Add-ons Compatibility
A list of tested add-ons (compatible and incompatible) is available at http://arewee10syet.com. Some popular add-ons that are currently broken with e10s:
- Bugzilla Tweaks/BugzillaJS: bug 972507
- HTTPS Everywhere: bug 1014986
- Tree Style Tabs: bug 1042680
- 1Password: bug 1042195
- NoScript: bug 1058542
Communication
| Weekly Team Meeting | Thursday at 2:00pm PT for 30 mins
|
| IRC |
|
| Tracking bugs |
|
| Newsgroup/Mailing List | |
| Project branch |
|
People
| Project Champion |
|
| High Level Oversight |
|
| Engineering Management |
|
| Project Management |
|
| QA |
|
| Development Team |
|
| Other Teams |
|
Here is what the letters following each name stand for, those higher on the list include all those below:
- R = Responsible for deliverable, in most cases this is anyone writing code.
- A = Accountable for the final decision making on some aspect of the project, often leadership that is not working on code but have go, no go decision making.
- C = Needs to be consulted on key topics, often this would be for subject mater experts that need to be consulted but don't have decision making power.
- I = Needs to be kept informed, those that just need regular status reports sent to them.
Reference
- MDN: Working with multiprocess Firefox
- The message manager
- Cross-process object wrappers
- Archive of past content on this page
- Electrolysis platform notes
- Notes on the Chromium IPC library
- Addon Compatibility Test Results
- IDL comments about Message Manager
- Tim Taubert's "Firefox Electrolysis 101" blog post (2011)
Meeting Notes
- For latest meeting notes, see the Meeting Notes Etherpad.
Create a new weekly agenda from the template: <createbox> align=left type=create preload=Electrolysis/Meetings/0-0-0 default=2025-12-18 prefix=Electrolysis/Meetings/ </createbox>