Electrolysis: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(closing this out.)
 
(311 intermediate revisions by 33 users not shown)
Line 1: Line 1:
==Goal==
== Thanks ==


The goal of the project 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.
(5/1/2018) The Electrolysis Project is officially complete. Mozilla continues to work on scaling the Gecko process model through newer projects and work, including our process-per-origin initiative [https://wiki.mozilla.org/Project_Fission Project Fission]. Props and thanks to our entire community for helping us ship this body work. We could not have successfully shipped this without your help!


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 [[Electrolysis/Roadmap|project roadmap]] has more details.
== Overview ==


==Enabling Electrolysis==
Electrolysis functionality hosts, renders, or executes web related content in background [https://en.wikipedia.org/wiki/Child_process child processes] which communicate with the "parent" Firefox browser via various [https://developer.mozilla.org/en-US/docs/IPDL 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.


We're developing off of mozilla-central. Therefore, it's possible to enable Electrolysis right now in Firefox nightlies.
Electrolysis child processes are currently in use for the following tasks within Firefox:


* Update to a current nightly.
* Legacy NPAPI plugin hosting
* We strongly recommend you create a new profile!
* Media playback ('Gecko Media Plugin', a.k.a. 'GMP')
* Set the browser.tabs.remote preference to true.
* Web content ('content processes')
* As of Firefox 30 set browser.tabs.remote.autostart to true to always enable e10s; otherwise, create a new e10s window.
* [Fx53] GPU Process (Windows Only) {{bug|1264543}}
* Restart Firefox.
* [Fx54] file://URL access process {{bug|1147911}}
* [Fx55] Web Extensions {{bug|1190679}}
* [Fx55, Fx56] ServiceWorker and in the future SharedWorker threads {{bug|1231208}}


==What to Expect==
In the future Electrolysis child processes may be used to handle other browser tasks including audio, networking ({{bug|1322426}}), PDFium and Pepper Flash ({{bug|558184}}).


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.
In Mozilla documentation "Electrolysis" is often shorted as "e10s".


What works:
== Testing ==
* Back and forward buttons
* URL bar and search bar
* Context menu (somewhat)
* Middle clicking to open links
* Bookmarks
* Flash (sometimes)
* Add-on installation on [https://addons.mozilla.org a.m.o] (without download progress)
* The find bar
* Zooming
* Session restore
* Developer tools


What doesn't work yet:
=== Nightly/Aurora ===
* Drag and drop
* Printing
* Many addons
* Many plugins
* Click to play


==Contributing==
If you're on Nightly e10s-multi is enabled by default with 4 content processes. Soon, Firefox 54 Aurora, will also have e10s-multi (4 processes) 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:


The simplest way to help out is to file bugs when you find them. The tracking bugs are [https://bugzilla.mozilla.org/show_bug.cgi?id=fxe10s fxe10s] and [https://bugzilla.mozilla.org/show_bug.cgi?id=core-e10s core-e10s]. We also have a [[Electrolysis/Todo|master todo list]] in the wiki.
[[File:E10s-toggle-in-preferences.png|324x150px|frameless|Nightly > Preferences > General > Enable multi-process]]


Most bugs in electrolysis 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 <code>browser.contentWindow</code>, <code>browser.docShell</code>, or some variation of them. Often, these property accesses will generate errors in the console, which makes these bugs fairly easy to detect.
=== Firefox Beta ===


The ideal way to solve these problems is with [https://developer.mozilla.org/en-US/docs/The_message_manager the message manager]. Any code that touches data in the content process should run in a content script. Content scripts communicate with chrome by message passing. Often, it's fairly easy to partition code into content and chrome portions and use message passing to communicate.
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.


However, there are cases where it is awkward to partition code in this way. In these cases, it may be beneficial to use [https://developer.mozilla.org/en-US/docs/Cross_Process_Object_Wrappers cross-process object wrappers (CPOWs)]. CPOWs make it easy to transparently access content objects from chrome. The main drawback of CPOWs is that they are slow and they cause the chrome process to block, which can lead to jank. However, there are times when it makes sense to use CPOWs. For example, CPOWs are used to generate the menu items for the Firefox context menu. Creating the context menu sends a small number of CPOW messages since it doesn't touch the content document very much. And while the main event loop will be blocked while generating the context menu, users are unlikely to notice since they're just waiting for the menu to appear.
=== Firefox Release ===


==Communication==
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!
 
== Schedule and Status ==
View the [https://wiki.mozilla.org/Electrolysis/Multiple_content_processes Multiple Content Process] wiki page for more information about release milestones, release criteria, and a gradual roll-out schedule of e10s-multi.
 
=== Schedule ===
 
The following schedule covers rollout of the single content process feature to release builds up to Firefox 54. Multi process is covered starting in Nightly 54.
 
[https://sql.telemetry.mozilla.org/queries/972#1659 What percent of the population actually has e10s enabled? ]
{| class="wikitable"
|-
! 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[6] || 50 default || 49 [2][4]|| 48 ON [3]
|-
| 2016-09-19 || 52 default [7][8] || 51 default[6] || 50 default [4] || 49 ON [5]
|-
|2016-11-07 || 53 default [8] || 52 default [7]|| 51 default [6] || 50 ON [5]
|-
|2017-01-24 || 54 default || 53 default  || 52 default [7] || 51 ON
|-
|2017-03-07 || 55 default[9] || 54 default[8] || 53 default || 52 ON
|-
|2017-04-18 || 55 default || n/a || 54 default || 53 ON
|-
|2017-06-13 || 56 default || n/a || 55 default || 54 ON [10]
|}
 
[1] qualifying users: users that do not use addons and have not activated accessibility support over 30 days.<br/>
[2] full run across the entire beta period<br/>
[3] 1% of qualifying users with ramp up to 100% during the release cycle<br/>
[4] White listed Add-Ons + Add-Ons created as a WebExtension testing on beta, full cycle <br/>
[5] White listed Add-Ons + Add-Ons created as a WebExtension shipping on Release<br/>
[6] A11y+ Windows 8 touch screen support enabled, not riding trains<br/>
[7] Windows 8 riding trains<br/>
[8] E10s Multi Enabled, Not riding trains<br/>
[9] A11y Enabled for Windows <br/>
[10] E10s multi enabled, riding trains<br/>
[*] indicates the goal for the release has yet to be planned
 
=== 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.  The [https://blog.mozilla.org/addons/2017/02/16/the-road-to-firefox-57-compatibility-milestones/ Road to 57 blog post] has details and there is a [https://wiki.mozilla.org/Firefox/AddOns/Status/current#Schedule visual of the schedule here].
{| class="wikitable"
|-
! Version !! Cohort
|-
| 49 || limited experimental set of Extensions and all WebExtensions
|-
| 50 || all Extensions marked "multiprocessCompatible" and all WebExtensions [1]
|-
| 51 || Moving back to Fx 50 release criteria.  All Extensions and all WebExtensions [1], [2], [3], plus 770 add-ons testing in Beta that were not marked either way (initial expansion) had been included.
|-
| 52 || all Extensions marked "multiprocessCompatible" and all WebExtensions [1]
|-
| 53 || all Extensions marked "multiprocessCompatible" and all WebExtensions [1].
|-
| 54 || all Extensions marked "multiprocessCompatible" and all WebExtensions [1]. 
|-
| 55 || all Extensions marked "multiprocessCompatible" and all WebExtensions [1]. 
|-
| 56 || all Extensions marked "multiprocessCompatible" and all WebExtensions [1].
|-
| 57 || ONLY WebExtensions supported [4]
|}
 
[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 [https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Multiprocess_Firefox_and_the_SDK#Testing_your_add-on Shims] will be available that will help certain add-ons with compatibility.  These are a temporary measure due to potential [https://developer.mozilla.org/en-US/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers#Limitations_of_CPOWs limitations] that could impact user experience.
 
[3] With the exception of Extensions marked explicitly as NOT multiprocessCompatible.
 
[4] [https://blog.mozilla.org/addons/2017/02/16/the-road-to-firefox-57-compatibility-milestones/ More details in blog post] or [https://wiki.mozilla.org/Firefox/AddOns/Status/current#Schedule broader add-on timing schedule] see [https://wiki.mozilla.org/Add-ons/Firefox57 for details on what will be allowed]
 
For information on add-on support rollout see the [https://wiki.mozilla.org/Firefox/AddOns/Status/current#Add-ons.2Fe10s_Program_Status_Report Add-on/e10s Project Wiki].
 
===Staged Roll-Out Plan===
To read a summary of the Roll-Out plan, see [https://asadotzler.com/ Asa's blog].
 
=== Windows XP ===
Due to [https://wiki.mozilla.org/Electrolysis/XP stability issues] Windows XP is currently not leveraging e10s on release channel.  XP and Vista will move out to Extended Support Release (ESR) 45 when 45 merges to release ({{bug|1303827}}). As such there are no plans to support e10s for XP/Vista in the future.
 
=== Weekly Status Reports ===
 
==2017==
*[https://wiki.mozilla.org/E10s/Status/Feb17 Feb 17]<br>
*[https://wiki.mozilla.org/E10s/Status/March20 March 20]<br>
*[https://wiki.mozilla.org/E10s/Status/April3 April 3]<br>
*[https://wiki.mozilla.org/E10s/Status/April10 April 10]<br>
*[https://wiki.mozilla.org/E10s/Status/May5 May 5]<br>
*[https://wiki.mozilla.org/E10s/Status/May9 May 9]<br>
*[https://wiki.mozilla.org/E10s/Status/May16 May 16]<br>
*[https://wiki.mozilla.org/E10s/Status/May26 May 26]<br>
*[https://wiki.mozilla.org/E10s/Status/June2 June 2]<br>
*[https://wiki.mozilla.org/E10s/Status/June16 June 16]<br>
*[https://wiki.mozilla.org/E10s/Status/July21 July 21]<br>
 
==2016==
* [https://wiki.mozilla.org/E10s/Status/Jan15 Jan 15]<br>
* [https://wiki.mozilla.org/E10s/Status/Jan29 Jan 29]<br>
* [https://wiki.mozilla.org/E10s/Status/Feb12 Feb 12]<br>
* [https://wiki.mozilla.org/E10s/Status/March29 March 29]<br>
* [https://wiki.mozilla.org/E10s/Status/April8 April 8]<br>
* [https://wiki.mozilla.org/E10s/Status/April22 April 22]<br>
* [https://wiki.mozilla.org/E10s/Status/May5 May 6]<br>
* [https://wiki.mozilla.org/E10s/Status/May20 May 20]<br>
* [https://wiki.mozilla.org/E10s/Status/July1 July 1]<br>
* [https://wiki.mozilla.org/E10s/Status/July8 July 8]<br>
* [https://wiki.mozilla.org/E10s/Status/July22 July 22]<br>
* [https://wiki.mozilla.org/E10s/Status/July22 July 29]<br>
* [https://wiki.mozilla.org/E10s/Status/Aug05 Aug 05]<br>
* [https://wiki.mozilla.org/E10s/Status/Aug12 Aug 12]<br>
* [https://wiki.mozilla.org/E10s/Status/Aug26 Aug 26]<br>
* [https://wiki.mozilla.org/E10s/Status/Sept2 Sept 2]<br>
* [https://wiki.mozilla.org/E10s/Status/Sept9 Sept 9]<br>
* [https://wiki.mozilla.org/E10s/Status/Sept23 Sept 23]<br>
* [https://wiki.mozilla.org/E10s/Status/Oct 3 Oct 3]<br>
* [https://wiki.mozilla.org/E10s/Status/Oct11 Oct 11]<br>
* [https://wiki.mozilla.org/E10s/Status/Oct24 Oct 24]<br>
* [https://wiki.mozilla.org/E10s/Status/Nov3 Nov 3]<br>
* [https://wiki.mozilla.org/E10s/Status/Dec1 Dec 1]<br>
* [https://wiki.mozilla.org/E10s/Status/Dec23 Dec 23]<br>
 
==2015==
* [https://wiki.mozilla.org/E10s/Status/Nov13 Nov 13]<br>
* [https://wiki.mozilla.org/E10s/Status/Nov20 Nov 20]<br>
* [https://wiki.mozilla.org/E10s/Status/Nov27 Nov 27]<br>
* [https://wiki.mozilla.org/E10s/Status/Dec4 Dec 4]<br>
* [https://wiki.mozilla.org/E10s/Status/Dec22 Dec 22]<br>
 
 
 
== Experiments ==
There's a dedicated page for the experiments: [[Electrolysis/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 [https://developer.mozilla.org/en-US/Add-ons/Working_with_multiprocess_Firefox good introduction to e10s], useful for both Firefox and add-on developers.
 
== Security Sandboxing ==
 
See the [https://wiki.mozilla.org/Security/Sandbox Security Sandbox] wiki page for more information and status.
 
== Accessibility Support ==
See the [https://wiki.mozilla.org/Electrolysis/Accessibility e10s Accessibility] wiki page for support implementation detail.
 
== Add-ons Compatibility ==
 
Add-on authors should refer to the MDN [https://developer.mozilla.org/en-US/Add-ons/Working_with_multiprocess_Firefox Firefox Add-on Migration Guide] for porting existing add-ons to e10s. For general design information see the [https://developer.mozilla.org/en-US/Firefox/Multiprocess_Firefox Multiprocess Firefox] MDN documentation. Add-on testing compatibility is currently available at https://arewewebextensionsyet.com/.
 
For more information about Add-on issue mitigation and rollout of e10s to add-on users, see the [https://wiki.mozilla.org/Add-ons 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
* 2016-08-01 - Enabled for non-add-on users in Release 48 / Beta testing of add-on users in 49
 
== Communication ==


{| class="wikitable fullwidth-table"
{| class="wikitable fullwidth-table"
  | Weekly Team Meeting
| Weekly Cross Functional<br/>Covering current e10s status, multi-e10s, add-ons rollout, and sandboxing.
|| [http://arewemeetingyet.com/Los%20Angeles/2014-04-24/14:30/w/E10s%20Weekly%20Team%20Meeting Thursday at 2:30pm PT] for 30 mins
|| Fridays @ 10am Pacific
* Vidyo: William McCloskey's Video Room
* Vidyo: [https://v.mozilla.com/flex.html?roomdirect.html&key=njJM9NHQBt2a "e10s"]
* Invitation: Contact billm@mozilla.com to get added to the meeting invite list.
* Invitation: Contact Erin Lancaster (:elan) for an invite.
* Dial In Information:
* [https://docs.google.com/document/d/1MS8ol0vJPQ2eNnbZTr6lQABxRBt5KtvuTAfwlMihMls/edit Meeting Notes]
* [https://etherpad.mozilla.org/E10s-meeting-notes Meeting Notes Etherpad]
|-
* Historical Notes: [[Content Processes/Meetings|Meeting Agendas and Notes]]
  | Weekly Team Meeting<br/>(No longer active)
* We are currently looking into a time that could work for Australian eastern timezone.
|| [http://arewemeetingyet.com/Los_Angeles/2014-04-24/09:00/w/E10s Weekly Team Meeting Thursday at 9:00am PT]
* Vidyo: [https://v.mozilla.com/flex.html?roomdirect.html&key=njJM9NHQBt2a "e10s"]
* Invitation: Contact blassey, jimm, or larissa to get added to the meeting invite list.
* [https://wiki.mozilla.org/Electrolysis/Meetings Meeting Notes]
|-
| Weekly Addons Design Meeting<br/>(No longer active)
||
* Vidyo: [https://v.mozilla.com/flex.html?roomdirect.html&key=njJM9NHQBt2a "e10s"]
* Invitation: Contact billm to get added to the meeting invite list.
* [https://e10s.etherpad.mozilla.org/addons-notes Meeting Notes Etherpad]
|-
|-
| IRC
| IRC
Line 65: Line 255:
* Server: irc.mozilla.org
* Server: irc.mozilla.org
* Channel: [irc://irc.mozilla.org/e10s #e10s]
* Channel: [irc://irc.mozilla.org/e10s #e10s]
|-
| Tracking bugs
||
* [https://bugzilla.mozilla.org/show_bug.cgi?id=fxe10s fxe10s] for frontend bugs
* [https://bugzilla.mozilla.org/show_bug.cgi?id=core-e10s core-e10s] for platform bugs
* [https://bugzilla.mozilla.org/show_bug.cgi?id=e10s-addons e10s-addons] for add-on compatibility
|-
|-
| Newsgroup/Mailing List
| Newsgroup/Mailing List
Line 76: Line 260:
* https://lists.mozilla.org/listinfo/dev-tech-electrolysis
* https://lists.mozilla.org/listinfo/dev-tech-electrolysis
|-
|-
| Project branch
||
* We use the project branch only for experimental code. We don't recommend people test with it. Please use mozilla-central instead.
* https://hg.mozilla.org/projects/larch/
* https://github.com/mozilla/mozilla-central/tree/larch
|}
|}


==People==
==People==
  {| class="wikitable fullwidth-table"
  {| class="wikitable fullwidth-table"
| Project Champion
| Engineering Management
||
||
* Vlad Vukicevic ( A )
* Brad Lassey
|-
|-
| High Level Oversight
|Product Management
||      
||
* Johnathan Nightingale ( I )
*Jeff Griffiths
* Gavin Sharp ( A )
|-
|-
| Project Management
| Project Management
||
||
* Chris Peterson ( R )
* Erin Lancaster - e10s Go to Market
* Shell Escalante - Add-Ons
|-
| QA
||
* Tracy Walker (e10s Quality Assurance Lead)
|-
|-
| Development Team
| Development Team
||  
||  
* Nicholas Alexander ( R )
* Mike Conley
* Felipe Gomes (Firefox front-end) ( R )
* Felipe Gomes
* Mark Hammond ( R )
* Blake Kaplan
* William McCloskey ( R )
* Gabor Krizsanits
* Jim Mathies ( R )
* William McCloskey
* Allison Naaktgeboren ( R )
* Jim Mathies
* John Schoenick (plugins) ( R )
* Tom Schuster
* Tom Schuster ( R )
* Dave Townsend
|-
* George Wright
| Other Teams
|
* Accessibility: Alexander Surkov and Trevor Saunders ([https://bugzilla.mozilla.org/show_bug.cgi?id=646596 bug 646596])
* Addon Developer Relations: Jorge Villalobos
* Developer Tools: Rob Campbell ([https://bugzilla.mozilla.org/show_bug.cgi?id=875871 bug 875871])
* IME: Makoto Kato (alternately, Masayuki Nakano) ([https://bugzilla.mozilla.org/show_bug.cgi?id=926798 bug 926798])
* Jetpack: Dave Townsend
* OMTC/Windows: Nick Cameron ([https://bugzilla.mozilla.org/show_bug.cgi?id=756608 bug 756608])
* Printing: Olli Pettay ([https://bugzilla.mozilla.org/show_bug.cgi?id=927188 bug 927188])
* Sandboxing: Brian Bondy, Sid Stamm ([https://bugzilla.mozilla.org/show_bug.cgi?id=925570 bug 925570])
* WebAudio: Ehsan Akhgari (WebAudio currently works on B2G, but Ehsan says he's not sure how the audio backend handles IPC.)
* WebRTC: Randell Jesup or Eric Rescorla. WebRtc is currently getting ready to go into B2G - mozGetUserMedia will be in 26/1.2, and PeerConnections will be in 28/1.3.
|}
|}


Here is what the letters following each name stand for, those higher on the list include all those below:
== Meeting Notes ==


* R = Responsible for deliverable, in most cases this is anyone writing code.
[https://wiki.mozilla.org/Electrolysis/Meetings Link]
* 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==
== Reference ==


* [https://developer.mozilla.org/en-US/Add-ons/Working_with_multiprocess_Firefox MDN: Working with multiprocess Firefox]
* [https://developer.mozilla.org/en-US/docs/The_message_manager The message manager]
* [https://developer.mozilla.org/en-US/docs/The_message_manager The message manager]
* [https://developer.mozilla.org/en-US/docs/Cross_Process_Object_Wrappers Cross-process object wrappers]
* [https://developer.mozilla.org/en-US/docs/Cross_Process_Object_Wrappers Cross-process object wrappers]
* [[Electrolysis/Archive | Archive of past content on this page]]
* [[Electrolysis/Archive | Archive of past content on this page]]
* [https://etherpad.mozilla.org/uYS8ZplOMU Electrolysis platform notes]
* [https://etherpad.mozilla.org/uYS8ZplOMU Electrolysis platform notes]
* [https://etherpad.mozilla.org/rRk4aEHkwC Notes on the Chromium IPC library]
* [https://etherpad.mozilla.org/rRk4aEHkwC Notes on the Chromium IPC library]
* [https://docs.google.com/a/mozilla.com/spreadsheet/ccc?key=0AhFRRYurPzRndHQwUVNscThIbFBsYmNRaU44LVlDdlE#gid=0 Addon Compatibility Test Results]
* [https://docs.google.com/a/mozilla.com/spreadsheet/ccc?key=0AhFRRYurPzRndHQwUVNscThIbFBsYmNRaU44LVlDdlE#gid=0 Addon Compatibility Test Results]
 
* [http://mxr.mozilla.org/mozilla-central/source/dom/base/nsIMessageManager.idl#15 IDL comments about Message Manager]
* [http://mxr.mozilla.org/mozilla-central/source/content/base/public/nsIMessageManager.idl#13 IDL comments about Message Manager]
 
* Tim Taubert's [http://timtaubert.de/blog/2011/08/firefox-electrolysis-101/ "Firefox Electrolysis 101"] blog post (2011)
* Tim Taubert's [http://timtaubert.de/blog/2011/08/firefox-electrolysis-101/ "Firefox Electrolysis 101"] blog post (2011)
* [[Electrolysis/e10s test tips|Tips for converting tests to be e10s compatible]]
* [[Electrolysis/Performance_Optimization|Performance optimization tips]]
* [https://www.mozilla.org/firefox/channel/ Download Beta, Developer, or Release]
* [https://nightly.mozilla.org/ Download Nightly]


== Meeting Notes ==
== 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: https://is.gd/S0iUXW
* 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


; For latest meeting notes, see the [https://etherpad.mozilla.org/E10s-meeting-notes Meeting Notes Etherpad].
=== Misc. Trackers ===
 
* Accessibility tracker: https://bugzilla.mozilla.org/show_bug.cgi?id=1029143
Create a new weekly agenda from the [[Electrolysis/Meetings/0-0-0|template]]:
* Devtools bug tracking: https://etherpad.mozilla.org/devtools-e10s-statuses
<createbox>
=== '''Uplift candidates''': (M9 and P1 tracking+ bugs fixed in FF 48 but not 47) ===
align=left
* https://wiki.mozilla.org/E10s/Status/m9
type=create
preload=Electrolysis/Meetings/0-0-0
default={{#time: Y-m-d | thursday}}
prefix=Electrolysis/Meetings/
</createbox>
 
{| class="toccolours" style="width: 100%"
|{{Special:PrefixIndex/Electrolysis/Meetings/}}
|}

Latest revision as of 14:14, 15 May 2018

Thanks

(5/1/2018) The Electrolysis Project is officially complete. Mozilla continues to work on scaling the Gecko process model through newer projects and work, including our process-per-origin initiative Project Fission. Props and thanks to our entire community for helping us ship this body work. We could not have successfully shipped this without your help!

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 ('Gecko Media Plugin', a.k.a. 'GMP')
  • Web content ('content processes')
  • [Fx53] GPU Process (Windows Only) bug 1264543
  • [Fx54] file://URL access process bug 1147911
  • [Fx55] Web Extensions bug 1190679
  • [Fx55, Fx56] ServiceWorker and in the future SharedWorker threads bug 1231208

In the future Electrolysis child processes may be used to handle other browser tasks including audio, networking (bug 1322426), PDFium and Pepper Flash (bug 558184).

In Mozilla documentation "Electrolysis" is often shorted as "e10s".

Testing

Nightly/Aurora

If you're on Nightly e10s-multi is enabled by default with 4 content processes. Soon, Firefox 54 Aurora, will also have e10s-multi (4 processes) 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!

Schedule and Status

View the Multiple Content Process wiki page for more information about release milestones, release criteria, and a gradual roll-out schedule of e10s-multi.

Schedule

The following schedule covers rollout of the single content process feature to release builds up to Firefox 54. Multi process is covered starting in Nightly 54.

What percent of the population actually has e10s enabled?

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[6] 50 default 49 [2][4] 48 ON [3]
2016-09-19 52 default [7][8] 51 default[6] 50 default [4] 49 ON [5]
2016-11-07 53 default [8] 52 default [7] 51 default [6] 50 ON [5]
2017-01-24 54 default 53 default 52 default [7] 51 ON
2017-03-07 55 default[9] 54 default[8] 53 default 52 ON
2017-04-18 55 default n/a 54 default 53 ON
2017-06-13 56 default n/a 55 default 54 ON [10]

[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 to 100% during the release cycle
[4] White listed Add-Ons + Add-Ons created as a WebExtension testing on beta, full cycle
[5] White listed Add-Ons + Add-Ons created as a WebExtension shipping on Release
[6] A11y+ Windows 8 touch screen support enabled, not riding trains
[7] Windows 8 riding trains
[8] E10s Multi Enabled, Not riding trains
[9] A11y Enabled for Windows
[10] E10s multi enabled, riding trains
[*] indicates the goal for the release has yet to be planned

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. The Road to 57 blog post has details and there is a visual of the schedule here.

Version Cohort
49 limited experimental set of Extensions and all WebExtensions
50 all Extensions marked "multiprocessCompatible" and all WebExtensions [1]
51 Moving back to Fx 50 release criteria. All Extensions and all WebExtensions [1], [2], [3], plus 770 add-ons testing in Beta that were not marked either way (initial expansion) had been included.
52 all Extensions marked "multiprocessCompatible" and all WebExtensions [1]
53 all Extensions marked "multiprocessCompatible" and all WebExtensions [1].
54 all Extensions marked "multiprocessCompatible" and all WebExtensions [1].
55 all Extensions marked "multiprocessCompatible" and all WebExtensions [1].
56 all Extensions marked "multiprocessCompatible" and all WebExtensions [1].
57 ONLY WebExtensions supported [4]

[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.

[4] More details in blog post or broader add-on timing schedule see for details on what will be allowed

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

Staged Roll-Out Plan

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

Windows XP

Due to stability issues Windows XP is currently not leveraging e10s on release channel. XP and Vista will move out to Extended Support Release (ESR) 45 when 45 merges to release (bug 1303827). As such there are no plans to support e10s for XP/Vista in the future.

Weekly Status Reports

2017

2016

2015


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 https://arewewebextensionsyet.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
  • 2016-08-01 - Enabled for non-add-on users in Release 48 / Beta testing of add-on users in 49

Communication

Weekly Cross Functional
Covering current e10s status, multi-e10s, add-ons rollout, and sandboxing.
Fridays @ 10am Pacific
Weekly Team Meeting
(No longer active)
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 Design Meeting
(No longer active)
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)