Electrolysis

From MozillaWiki
Jump to: navigation, search

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:

Nightly > Preferences > General > Enable multi-process

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 ? 47 ?

[1] qualifying users: users that do not use addons and have not activated accessibility support over 30 days.
[2] first 4 weeks of the beta cycle

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

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 which is incompatible with current accessibility clients. As such the e10s and Accessibility Teams are working on a new approaches for accessibility clients.

OSX and Linux

  • Sync chrome -> content calls for most common apis, with light weight caching to cut down on the heaviest api traffic.
  • Gradual improvement using chrome side caching of DOM state, working toward a mostly asynchronous interface.

Windows

See the Windows e10s Accessibility wiki page for more information and status.

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
  • Vidyo: "e10s"
  • Invitation: Contact blassey, jimm, or larissa to get added to the meeting invite list.
  • Meeting Notes
Weekly Addons Strategy Meeting
IRC
  • Server: irc.mozilla.org
  • Channel: #e10s
Newsgroup/Mailing List

People

Engineering Management
  • Brad Lassey
Product Management
  • Jeff Griffiths
Project Management
  • Erin Lancaster - e10s Go to Market
  • Shell Escalante - Add-Ons
QA
  • Tracy Walker (e10s Quality Assurance Lead)
Development Team
  • Mike Conley
  • Felipe Gomes
  • Blake Kaplan
  • Gabor Krizsanits
  • William McCloskey
  • Jim Mathies
  • Tom Schuster
  • Dave Townsend
  • George Wright

Meeting Notes

Link

Reference

Bug Lists

Nightly enable blockers

Aurora uplift blockers (plus dev. tools)

Beta blockers

GA Blockers

Summary Lists

Devtools Lists

Performance bugs (e10s-perf)

Future

Triage Lists

Misc. Trackers

Uplift candidates: (M9 and P1 tracking+ bugs fixed in FF 48 but not 47)