Electrolysis
Overview
Electrolysis functionality hosts, renders, or executes web related content in background child processes which communicate with the "parent" Firefox browser via various ipdl protocols. The two major advantages of this model are security and performance. Security improvements are accomplished through security sandboxing, performance improvements are born out of the fact that multiple processes better leverage available client computing power.
Electrolysis child processes are currently in use for the following tasks within Firefox:
- Legacy NPAPI plugin hosting
- Media playback
- Web content ('content processes')
In the future Electrolysis child processes may be used to handle other browser tasks including graphical composition, and addon hosting for addons that leverage the new WebExtensions apis.
In Mozilla documentation "Electrolysis" is often shorted as "e10s".
Enabling and Disabling Electrolysis on Nightly/Aurora
If you're on Nightly or Aurora, e10s is already enabled by default! A user facing checkbox is available for controlling Electrolysis functionality. Open Preferences and check the "Enable multi-process" checkbox and then restart your browser:
For release builds (Beta, Release, ESR) enabling Electrolysis is controlled through an internal preference.
Enabling and Disabling Electrolysis on Beta
If you're on beta, you might be using / have already used e10s for some periods of time as we're running experiments to evaluate its stabililty.
However, if you want to permanently opt-in, you can do so with a simple pref change. Just go to about:config and toggle browser.tabs.remote.autostart to true. On your next restart, e10s should be active. To verify that it is active, go to about:support and look for a number higher than 0 in "Multiprocess Windows".
Enabling and Disabling Electrolysis on Release
Multiprocess is not yet available on the release channel. Stay tuned! If you really want to test it we suggest you to use Beta and help us test it!
Force-enabling e10s
If you've tried to enable e10s, but you see information in about:support saying that it is disabled by some reason (e.g., Add-ons), you can create and set to true a pref called browser.tabs.remote.force-enable. That is not encouraged though, so use it at your own risk, and only if you know what you're doing.
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 and Status
A single content process model is currently being tested on Nightly, Aurora and Beta channels. See the schedule below for planned rollout to release. A multiple content process model will roll out in a follow up release. View the Multiple Content Process wiki page for more information.
Schedule
The following schedule covers rollout of the single content process feature to release builds.
Date | Trunk | Aurora | Beta | Release |
---|---|---|---|---|
2015-04-30 | 40 default (working on m5) | 39 off | 38 off | 37 off |
2015-05-11 | 41 default (working on m6) | 40 prompt | 39 off | 38 off |
2015-06-29 | 42 default (working on m7/m8) | 41 prompt | 40 off | 39 off |
2015-08-10 | 43 default (working on m8) | 42 default | 41 off | 40 off |
2015-09-21 | 44 default | 43 default | 42 off | 41 off |
2015-11-02 | 45 default | 44 default | 43 off | 42 off |
2015-12-14 | 46 default | 45 default | 44 A/B [1] | 43 off |
2016-01-25 | 47 default | 46 default | 45 A/B [1] | 44 off |
2016-03-07 | 48 default | 47 default | 46 A/B [1] | 45 off |
2016-04-25 | 49 default | 48 default | 47 50% [1][2] | 46 off |
2016-06-06 | 50 default | 49 default | 48 [1][2] | 47 off |
2016-08-01 | 51 default | 50 default | 49 [1][2] | 48 [3] |
2016-09-12 | 52 default | 51 default | 50 [1][2][4?] | 49 [5] |
[1] qualifying users: users that do not use addons and have not activated accessibility support over 30 days.
[2] full run across the entire beta period
[3] 1% of qualifying users with ramp up during the cycle
[4] white listed addons testing on beta
[5] 100% of qualifying users
Staged Roll-Out Plan
Weekly Status Reports
Experiments
There's a dedicated page for the experiments: E10s Experiments
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.
Security Sandboxing
See the Security Sandbox wiki page for more information and status.
Accessibility Support
See the e10s Accessibility wiki page for support implementation detail.
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
- 2015-12-15 - bug 1229104 - Beta testing
Communication
Weekly Team Meeting | Weekly Team Meeting Thursday at 9:00am PT
|
Weekly Addons Strategy Meeting |
|
IRC |
|
Newsgroup/Mailing List |
People
Engineering Management |
|
Product Management |
|
Project Management |
|
QA |
|
Development Team |
|
Meeting Notes
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
- Performance optimization tips
- Download Beta, Developer, or Release
- Download Nightly
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
- M4–M6 bugs: http://is.gd/drPSBc
Beta blockers
- M7 bugs: http://is.gd/HQGwVi
- M8 bugs: http://is.gd/Au5e7x
GA Blockers
- M9 Actionable Bugs: http://is.gd/qufPe0
- M9 plus RC Meta Bugs: http://is.gd/tv81Zf
- M9 RC Metas: http://is.gd/hTHo9U
- RC Meta Children: http://is.gd/eKcXxH
Summary Lists
- M7–M8 bugs: http://is.gd/YPXLZT
- M4–M8 bugs: http://is.gd/16YH4l
Devtools Lists
- e10s-m7 and e10s-m8 bugs: http://is.gd/zrzaRw
- e10s-m4 through e10s-m8 bugs: http://is.gd/Ra53os
Performance bugs (e10s-perf)
- Complete e10s-perf List: http://is.gd/izIbfl
- P1: http://is.gd/N4Kska
- P2: http://is.gd/tricyk
Future
- tracking-e10s:+ P1: http://is.gd/ztBxgX (no tests or sdk bugs)
- tracking-e10s:+ P1: http://is.gd/syKhQ8 (everything)
- tracking-e10s:+ P2: http://is.gd/NnCvUQ
- tracking-e10s:+ P3: http://is.gd/PD3PI8
- tracking-e10s:+ P4: http://is.gd/K6dCIq
- tracking-e10s:later: http://is.gd/B1cfnm
Triage Lists
- e10s Triage List: http://is.gd/sJWCv7
- e10s-perf Triage List: http://is.gd/5R5Leo
- e10s needinfo Triage List: http://is.gd/MoraEb
- tracking-e10s:? specific needinfo List: http://is.gd/vsPqdk
- Add-on triage List: http://is.gd/P2aqLC
- tracking-e10s:+ List: http://is.gd/ybrg68
- minus needinfos
- minus Summary containing 'intermittent', 'test', 'addon', 'add-on'
- minus Keywords containing 'meta', 'qawanted'
- minus bugs with a priority set
- not blocking bug apz-desktop, bug e10s-tests, bug e10s-perf, bug e10s-addons, bug e10s-gfx, bug e10s-sdk, bug e10sa11y2, bug e10s-ime, bug dte10s, bug e10s-social, bug e10s-multi, bug e10s-harness
- tracking-e10s:+ needinfos List: http://is.gd/YADITg
- RTL Blockers: http://is.gd/cKUiNa
Misc. Trackers
- Accessibility tracker: https://bugzilla.mozilla.org/show_bug.cgi?id=1029143
- Devtools bug tracking: https://etherpad.mozilla.org/devtools-e10s-statuses