Service Workers
Service Workers are presently being implemented in Gecko. Biweekly calls (2015-08-12 is the next one) are held on Wednesdays at 8 AM Pacific in the WebAPI Vidyo room to discuss status and blockers for consumers. Email Andrew Overholt [:overholt] if you want to be added to the meeting invite or just show up.
Most people working on the implementation hang out in #content on IRC.
Implementation status
Lots of code has been written and much functionality exists. There are a variety of prefs you can flip in about:config to turn them on: dom.serviceWorkers.enabled, dom.serviceWorkers.interception.enabled, etc.
Filing bugs (in Core :: DOM: Service Workers) describing problems you have is highly appreciated.
An audit of call sites where existing networking security functionality can be affected by a Service Worker's interception is underway. The results of this are filtering into Bugzilla and the remaining blockers are tracked as below.
Shipping on Desktop (planned for 44) (bug 1059784)
<bugzilla>
{
"blocks": 1059784,
"resolution": "---",
"include_fields": "id, summary, status, assigned_to, resolution",
"order": "bug_id "
}
</bugzilla>
Bugs we should fix to be compatible with the specification (bug 1226983)
<bugzilla>
{
"blocks": 1226983,
"resolution": "---",
"include_fields": "id, summary, status, assigned_to, resolution",
"order": "bug_id "
}
</bugzilla>
Shipping on Fennec (aka Firefox for Android) (bug 1207262)
<bugzilla>
{
"blocks": 1207262,
"resolution": "---",
"include_fields": "id, summary, status, assigned_to, resolution",
"order": "bug_id "
}
</bugzilla>
Refactoring for n content processes (bug 1231208)
<bugzilla>
{
"blocks": 1231208,
"resolution": "---",
"include_fields": "id, summary, status, assigned_to, resolution",
"order": "bug_id "
}
</bugzilla>
Shipping for web content on Boot2Gecko (aka Firefox OS) (bug 1207265)
<bugzilla>
{
"blocks": 1207265,
"resolution": "---",
"include_fields": "id, summary, status, assigned_to, resolution",
"order": "bug_id "
}
</bugzilla>
Shipping for Gaia (bug 1131322)
<bugzilla>
{
"blocks": 1131322,
"resolution": "---",
"include_fields": "id, summary, status, assigned_to, resolution",
"order": "bug_id "
}
</bugzilla>
Things we likely won't get to in the first release supporting Service Workers (bug 1173500)
<bugzilla>
{
"blocks": 1173500,
"resolution": "---",
"include_fields": "id, summary, status, assigned_to, resolution",
"order": "bug_id "
}
</bugzilla>
Demos/examples
- https://azasypkin.github.io/sw-tests/permanent-redirect/
- https://jakearchibald.github.io/trained-to-thrill/ - the canonical example
- https://www.pinterest.com/ - seems to be used for Push
- https://github.com/GoogleChrome/samples/tree/gh-pages/service-worker - a number of examples here
- https://busrouter.sg/ - Only offlines its app shell and not map tiles or other data.
- https://www.parleys.com/
- https://guitar-tuner.appspot.com/