Electrolysis
Goal
The goal of the current Electrolysis project ("e10s" for short) is to render and execute web related content in a single background 'content' process which communicates with the main Firefox process via various ipdl protocols. The two major advantages of this model are security and performance. Security improvements are accomplished through sandboxing, performance improvements are born out of the fact that multiple processes better leverage available client computing power.
For current status, visit the current project roadmap overview. The e10s team estimates e10s with a single content process will be enabled in Firefox Release by the middle of 2016.
Enabling and Disabling Electrolysis
To enable or disable e10s, open Preferences and check the "Enable multi-process" checkbox and then restart your browser.
If your browser breaks in a way that you can't easily recover to change this setting, you can start Firefox in Safe Mode (by holding Alt/Option during start) which should allow you to enter the Preferences dialog and untick the checkbox.
What to Expect
Generally the browser should be stable and usable, without major issues or crashes. Profiles that have lots of older addons will likely experience slowness or other issues. If you run into any trouble, try disabling incompatible add-ons.
Schedule
Date | Trunk | Aurora | Beta | Release |
---|---|---|---|---|
3-30 | 40 default (working on m5) | 39 off | 38 off | 37 off |
5-11 | 41 default (working on m6) | 40 prompt | 39 off | 38 off |
6-29 | 42 default (working on m7/m8) | 41 prompt | 40 off | 39 off |
8-10 | 43 default (working on m8) | 42 default | 41 off | 40 off |
9-21 | 44 default (release criteria driven) | 43 default | 42 off | 41 off |
11-02 | 45 default (release criteria driven) | 44 default | 43 off | 42 off |
12-14 | 46 default (release criteria driven) | 45 default | 44 A/B | 43 off |
1-25 | 47 default (release criteria driven) | 46 default | 45 A/B | 44 off |
3-07 | 48 default (release criteria driven) | 47 default | 46 50-50 (addons & a11y = off) | 45 off |
4-18 | 49 default (release criteria driven | 48 default | 47 50-50 (addons & a11y = off) | 46 on (addons & a11y = off) |
Contributing
The simplest way to help out is to test a release that has e10s enabled, and file bug when you find them. Please try to find duplicates prior to filing.
- The project roadmap overview provides current bug lists slated for development based on a set of 2015 milestones.
- The current incoming e10s weekly triage bug list. Check this for "fresh" issues recently filed.
- Here's a bugzilla template link for filing a new e10s bug: http://is.gd/aTza8A
- When filing a new bug, please add the tracking-e10s:? flag or place 'e10s' in the bug title so that it shows up in the team's weekly triage bug list.
For developers interested in helping out, MDN has a good introduction to e10s, useful for both Firefox and add-on developers.
Accessibility Support
Accessibility clients require direct access to information about content. In non-e10s this information is queried directly using sync calls into the DOM. These calls generally arrive on the application main or UI thread and expect a response on return. With e10s, the chrome process generally communicates with content through asynchronous interfaces. This is incompatible with current a11y clients. As such the Accessibility Team is currently working on a two phase approach to getting accessibility working under e10s:
- Initial support with sync chrome -> content calls for most common apis, with light weight caching to cut down on the heaviest api traffic. (Partly complete.)
- A black list of clients known to have issues with e10s will be added for roll out to Aurora and beyond. When a blacklisted client is detected Firefox will prompt the user to disable e10s and restart. This work is covered by meta bug 1159326.
- Gradual improvement using chrome side caching of DOM state, working toward a mostly asynchronous interface.
- Eventual removal of the blacklist once we are ready to drop support for non-e10s and A11y caching support is fully implemented.
Tracking bugs:
- bug 1159326 - Tracking e10s / a11y mitigation work for roll out to Aurora
- bug 1029143 - Implement accessibility for sandboxed e10s
Add-ons Compatibility
Add-on authors should refer to the MDN Firefox Add-on Migration Guide for porting existing add-ons to e10s. For general design information see the Multiprocess Firefox MDN documentation.
Add-on testing compatibility is currently available at http://arewee10syet.com.
Past Milestones
- 2014-09-11 - bug 1064885 - Enable opt-in option for Nightly
- 2014-11-13 - bug 1093691 - Enabled for Nightly builds
- 2015-05-08 - bug 1161260 - Enable opt-in option for Aurora
- 2015-07-28 - bug 1182097 - Disabled on Aurora for about 1 week due to a bug in a11y prompting
- 2015-07-31 - bug 1188605 - Enabled for Aurora builds
Communication
Weekly Team Meeting | Weekly Team Meeting Thursday at 9:00am PT
|
Weekly Addons Strategy Meeting |
|
IRC |
|
Newsgroup/Mailing List |
People
Engineering Management |
|
Project Management |
|
QA |
|
Development Team |
|
Other Teams |
|
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)
- Tips for converting tests to be e10s compatible
Bug Lists
- Nightly enable blockers:
- M2 bugs: http://tinyurl.com/mjywvmb (one leftover bug, assigned m5+, 1047603)
- M3 bugs: http://tinyurl.com/n7jekh6 (all resolved + dependencies resolved)
- Aurora uplift blockers (plus dev. tools):
- M4 bugs: http://is.gd/fi3ByM
- M5 bugs: http://is.gd/hNTLWk
- M6 bugs: http://is.gd/1Dw8gN
- All M4–M6 bugs: http://is.gd/drPSBc
- Beta blockers:
- M7 bugs: http://is.gd/DlWOob
- M8 bugs: http://is.gd/gL9Qfj
- All M7–M8 bugs: http://is.gd/89wJQh
- All M4–M8 bugs: http://is.gd/Yf1YT3
- Performance bugs:
- Complete e10s-perf List: http://is.gd/izIbfl
- P1: http://is.gd/N4Kska
- Other e10s bugs (not blockers):
- "+" bugs minus addon bugs: http://is.gd/7PQRIY
- Triage Lists
- e10s Tracking Triage List: http://is.gd/sJWCv7
- e10s-perf Triage List: http://is.gd/5R5Leo
- Tracking:? needinfo List: http://is.gd/vsPqdk
- Add-on triage query: http://is.gd/P2aqLC
- Misc. Trackers
- Accessibility tracker: https://bugzilla.mozilla.org/show_bug.cgi?id=1029143
- Devtools bug tracking: https://etherpad.mozilla.org/devtools-e10s-statuses