Electrolysis

From MozillaWiki
(Redirected from Content Processes)
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".

Testing

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

Firefox Beta

If you're currently using Firefox Beta you might be testing e10s already, check about:support and look for a number higher than 0 in the "Multiprocess Windows" entry. If you would like to opt-in to help us test open about:config and toggle browser.tabs.remote.autostart to true. On your next restart, e10s should be active.

Firefox Release

If you're using Firefox 48 or later, you might be using e10s already. Check about:support and look for a number higher than 0 in the "Multiprocess Windows" entry. If you would like to opt-in, open about:config and toggle browser.tabs.remote.autostart to true. On your next restart, e10s should be active.

Force Enable

If you've tried enabling e10s following the instruction above, but your about:support indicates that e10s is disabled (e.g., accessibility, add-ons can trigger this), you can force e10s on for testing purposes. Within about:config create a new boolean pref named browser.tabs.remote.force-enable and set it to true. This is not encouraged, use it at your own risk!

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 (e10s-multi) 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

Add-ons Schedule

The following schedule rollout of Electrolysis as it releases specifically to add-ons. Each release of Firefox will add more and more add-ons to the cohort of users who get multi process Firefox.

Users with add-ons not in yet the cohort to get multi-process, will continue to run Firefox (as before) without e10s enabled.

Version Cohort
49 limited experimental set of Extensions and all WebExtensions
50 all Extensions marked "multiProcessCompatible" and all WebExtensions [1]
51 all Extensions and all WebExtensions [1], [2], [3]
52 as in 51 [2], [3]
53 as in 52 [2], [3]

[1] Before each stage moves from beta to release, there are release criteria (crashes, jank etc) that need to be met. We will delay moving to Release if issues are identified in Beta.

[2] Initially Shims will be available that will help certain add-ons with compatibility. These are a temporary measure due to potential limitations that could impact user experience.

[3] With the exception of Extensions marked explicitly as NOT multiProcessCompatible.

For information on add-on support rollout see the Add-on Project Wiki.

Staged Roll-Out Plan

To read a summary of the Roll-Out plan, see Asa's blog.

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.

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.

For more information about Add-on issue mitigation and rollout of e10s to add-on users, see the Add-on Project Wiki page.

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)