From MozillaWiki
Jump to: navigation, search

Program Description

The web already powers the world's email, media, shopping, and more. Interacting with these things is a breeze because they all use the web. What if the electronics around us were the same?

Meet FlyWeb. FlyWeb is a very simple idea at its core. Instead of phones interacting only with the cloud, they can discover and interact with electronics around them that are running empty web clients, such as TV's, projectors, game consoles, etc. The electronics come to life when connected to phones. The key here is that either the phones serve web apps to these electronics, or the electronics serve web apps to the phones.


The connected devices market is ready to explode. As the market grows, much like the early internet, these devices are being segregated into walled gardens of one-off proprietary initiatives, such as AirPlay, the Google Cast API, etc. These solutions not only lock their users into specific vendor ecosystems -- to the benefit of those vendors and detriment of their users -- but also require significant investment to solve each use case.

Many of these connected devices initiatives have common underlying platform needs:

  • to discover and connect devices together,
  • enable bi-directional communication,
  • allow arbitrary, but secure code execution on each side,
  • and require knowledge of as few details of a device's peers as possible.

The web is the best platform for serving all of these needs. Indeed, it has been designed for them for over a decade.

User Stories and Acceptance Criteria

Coming soon!

Program Status

Milestone Date Status
MozFest Demo 11/6-7/2015 DONE
Mozlando Demo 12/7-11/2015 DONE
Platform Development 1/2016 ON TARGET
Land on Master 6/2016 ON TARGET
London All Hands Conference 6/2016 ON TARGET

Program Timeline


Detailed Milestones

Milestone Status
FlyWeb internal (privileged) APIs written up in WebIDL and implemented. DONE
FlyWebDiscoveryManager WebIDL class that serves as an abstract fronted for service-discovery across multiple transports. DONE
An internet-and-mdns-specific backend implementation for FlyWebDiscoveryManager that lets the APIs discover ‘_http._tcp’ and ‘_flyweb._tcp’ services advertised on the local network via MDNS (Bonjour). DONE
Integration with the firefox UI to present a toolbar button that lists discovered FlyWeb services in a menu. DONE
When the user selects a menu item, open a tab that browses to the service (currently using an ip-based URL). DONE
Implementation of initial ‘publishServer’ and ‘connectToService’ web APIs exposed to content. DONE
Addition of a temporary “FlyWeb” protocol (flyweb://) to enable testing and mockup of an http-like server embedded in gecko DONE
Implement anonymous, browser-based naming of services. For security purposes, the browser will have to assign a token hostname to a service as needed, and route that hostname to the service’s IP address (bypassing normal DNS mechanics). DONE
Modify the “publishServer” Web API to hook into FlyWeb’s backend service publishing API. DONE
Modify the "publishServer" API to implement a http server rather than the custom flyweb:// protocol. DONE
Modify the "publishServer" API to implement a http server rather than the custom flyweb:// protocol. ON TARGET
Implement JS fallback mDNS implementation (Android, Windows) ON TARGET
Draft protocol spec for FlyWeb ON TARGET
Wi-Fi Direct transport implementation on Android ON TARGET
Implement Certificate protocol for encrypted communication ON TARGET
Implement Stable Naming based on Certs ON TARGET
All-Hands Conference Demo implementation ON TARGET
Maker community for IoT use cases ON TARGET
Web dev community for Peer-2-Peer use cases ON TARGET

MVP Scope

ID Summary Status Target milestone Resolution Assigned to Depends on Blocks Whiteboard Feature b2g
1228667 Implement FlyWeb service discovery RESOLVED --- FIXED Kannan Vijayan [:djvj] 1228662 ---
1228948 Implement FlyWeb communication protocol and API RESOLVED --- DUPLICATE Jonas Sicking (:sicking) No longer reading bugmail consistently 1228662 ---
1244299 Implement FlyWeb Routing Abstraction for MDNS services RESOLVED --- FIXED 1228662 ---
1245963 Integrate Kannan and Jonas FlyWeb code RESOLVED --- FIXED 1228662 ---
1247680 [mDNS] Provide a JS implementation for mDNS service advertisement RESOLVED --- FIXED Justin D'Arcangelo [:justindarc] 1264730, 1264732, 1259144, 1264034, 1264727 1228662 [ft:conndevices][necko-would-take] ---
1247724 [FlyWeb] Update popover UI to conform to existing styles RESOLVED --- FIXED Justin D'Arcangelo [:justindarc] 1228662 ---
1247727 [FlyWeb] Implement FlyWeb UI for Fennec RESOLVED --- FIXED Justin D'Arcangelo [:justindarc] 1228662 ---
1249099 [FlyWeb] Expose MDNS TXT records as metadata on discovered services. RESOLVED --- FIXED 1228662 ---
1249101 [FlyWeb] Unify different advertisements for same service. NEW --- Kannan Vijayan [:djvj] 1228662 [necko-would-take] ---
1250553 [FlyWeb] Lock FlyWebMDNService::mServiceMap because it's accessed from multiple threads. RESOLVED --- FIXED Kannan Vijayan [:djvj] 1228662 ---
1251096 [FlyWeb] Allow multiple AN entries in mDNS responses when parsing with MulticastDNSFallback.jsm RESOLVED --- FIXED 1228662 ---
1251099 [FlyWeb] Use dot-suffixed names when discovering mDNS services. RESOLVED --- FIXED Kannan Vijayan [:djvj] 1228662 ---
1253761 [FlyWeb] Implement WiFi-Direct backend on Android RESOLVED --- WONTFIX Kannan Vijayan [:djvj] 1228662 [necko-would-take] ---
1256456 [UX] Provide initial design for Flyweb UI NEW --- 1228662 ---
1257002 [FlyWeb] Crash on Android when connecting to FlyWeb service RESOLVED --- WORKSFORME Justin D'Arcangelo [:justindarc] 1228662 [necko-active] ---
1257280 [FlyWeb] Improve discovery frontend API RESOLVED --- FIXED Kannan Vijayan [:djvj] 1228662 [necko-active] ---
1260213 Set extensions.systemAddon.update.url to enable system add-ons infrastructure for Fennec NEW --- 1228662, 1265442 ---
1261901 [FlyWeb] Can no longer build larch branch for Fennec RESOLVED --- FIXED Kannan Vijayan [:djvj] 1228662 ---
1263991 [FlyWeb] Make publishServer support e10s RESOLVED mozilla50 FIXED Jonas Sicking (:sicking) No longer reading bugmail consistently 1287163 1228662 btpp-fixlater ---
1263998 Crash when creating new Response object. RESOLVED --- INVALID 1228662 ---
1264733 [FlyWeb] List of discovered services is still unstable RESOLVED --- WORKSFORME 1228662 [necko-would-take] ---
1265441 [FlyWeb] Move FlyWeb UI implementation for Desktop to system add-on RESOLVED --- FIXED Justin D'Arcangelo [:justindarc] 1228662 [necko-would-take] ---
1265442 [FlyWeb] Move FlyWeb UI implementation for Fennec to system add-on RESOLVED --- FIXED Justin D'Arcangelo [:justindarc] 1260213 1228662 [necko-would-take] ---
1265474 Ensure flyweb has no impact on Fennec battery performance NEW --- 1228662 [necko-would-take] ---
1265481 Consider packaging FlyWeb UI for Fennec as opt-in add-on on AMO for Beta and Release NEW --- 1228662 [necko-would-take] ---
1271807 [FlyWeb] Expose the server URL in addition to server hostname RESOLVED --- FIXED 1228662 ---
1272092 [FlyWeb] Review for landing in mozilla-central RESOLVED --- FIXED 1272099, 1272100, 1272101, 1272102, 1272107, 1273279, 1275714 1228662 [necko-would-take] ---
1272406 [FlyWeb] Published server is not shut down when tab is closed RESOLVED --- FIXED 1228662 ---
1272432 [FlyWeb] Always set attributes in nsDNSServicediscovery when resolving service. RESOLVED --- FIXED 1228662 ---
1272678 [FlyWeb] Crash on linux in FlyWebMDNSService::DiscoveredInfo::DiscoveredInfo when trying to get attributes RESOLVED --- FIXED Kannan Vijayan [:djvj] 1228662 [necko-active] ---
1273454 [FlyWeb] Simplify mDiscoveryManagerTable RESOLVED --- FIXED 1228662 ---
1273677 TLSServerSocket doesn't properly set up the session cache RESOLVED mozilla49 FIXED David Keeler [:keeler] (use needinfo?) 1228662 [ft:conndevices][necko-active] ---
1274343 Add parent-to-child pipe streaming to IPCStream RESOLVED mozilla55 FIXED Andrea Marchesini [:baku] 1093357, 1333973 1110596, 1204254, 1228662, 1283191, 1277744 btpp-active ---
1275373 [FlyWeb] Improve nsNetworkInfoService's GetHostname implementation on Windows and OSX. NEW --- 1228662 [necko-backlog] ---
1275390 [FlyWeb] Look into unifying necko and flyweb HTTP parsing code NEW --- 1228662 [necko-backlog] ---
1275396 [FlyWeb] Fix same-line control flow syntax in netwerk/dns/mdns/libmdns/MDNSResponderOperator.cpp NEW --- 1228662 [necko-would-take] ---
1275645 [FlyWeb] larch build busted due to undeclared use of gethostname RESOLVED --- FIXED 1228662 ---
1275955 [FlyWeb] Get green on treeherder for landing RESOLVED --- FIXED 1275956, 1275959, 1275962, 1275991 1228662 [necko-would-take] ---
1279272 [FlyWeb] Add back l10n support for FlyWeb system addon NEW --- 1228662 ---
1286636 [FlyWeb] Use unbound UDP socket for mDNS queries RESOLVED mozilla50 FIXED Kannan Vijayan [:djvj] 1228662 [necko-active] ---
1292639 [FlyWeb] Ask user permission before allowing navigator.publishServer RESOLVED mozilla51 FIXED Kannan Vijayan [:djvj] 1228662 ---
1294772 [FlyWeb] NS_ERROR_FAILURE on 'Nightly' builds for Windows and Linux RESOLVED mozilla51 FIXED Kannan Vijayan [:djvj] 1295870 1228662 [necko-would-take] ---
1296464 [FlyWeb] Machines with multiple interfaces cause duplicate advertisements on all interfaces RESOLVED mozilla52 FIXED 1228662, 1298463, 1299866 ---
1298463 [FlyWeb] mDNS services on ESP8266 devices not discoverable in Fennec RESOLVED --- WORKSFORME Justin D'Arcangelo [:justindarc] 1296464 1228662 [necko-active] ---
1299866 [FlyWeb] mDNS services discovered remain after network change RESOLVED mozilla52 FIXED Justin D'Arcangelo [:justindarc] 1296464 1228662 [necko-active] ---
1301091 [FlyWeb] Tab crashes when publishServer-hosting-page receives an incoming connection. RESOLVED mozilla51 FIXED Kannan Vijayan [:djvj] 1228662, 1291652 ---
1301454 [FlyWeb] Implement integration tests NEW --- 1228662 ---
1303454 [FlyWeb] publishServer() broken on Fennec RESOLVED mozilla52 FIXED 1228662 ---
1303865 [FlyWeb] Fix shutdown leak of FlyWebService RESOLVED mozilla52 FIXED 1228662 ---
1311188 Security Review: Flyweb NEW --- 1228662 ---
1315437 FlyWeb crash: [@mozilla::MozPromise<RefPtr<mozilla::dom::FlyWebPublishedServer>, nsresult, false>::ThenValueBase::AssertIsDead()] NEW --- Kannan Vijayan [:djvj] 1228662 [necko-active] ---
1335286 [meta] FlyWeb HTTPS Implementation NEW --- 1228662 ---

52 Total; 13 Open (25%); 39 Resolved (75%); 0 Verified (0%);

Program Stakeholders

Role Name IRC
EPM Nicole Yee nicoleyee
EM Jonas Sicking sicking
TL Kannan Vijayan djvj
Engineering Justin D'Arcangelo justindarc
  • EPM = Engineering Program Manager
  • EM = Engineering Manager
  • TL = Tech Lead

Reference Links

Demo Videos




Video Conferencing - Vidyo Room

Quick link to join with the Vidyo app (prompts install if needed)

We have our own Vidyo room for meetings. Contributors and non-employees are welcome to attend all meetings. Here are the full details for joining:

Project Management

Trello dashboard

We use Trello for project management. All ongoing tasks are listed there.




The FlyWeb team has a public calendar with every team meeting.

Instructions for Adding to your Calendar

  1. Open the calendar.
  2. Click on the "+ Google Calendar" button in the very bottom right of your screen.

You can also use the XML and ICS methods, but these are not recommended.

Note: The "Find a Time" feature will not work for other people if you import this calendar. As a consequence, others will not see that you are unavailable when attending a FlyWeb meeting. We suggest either accepting this, or adding the meetings to your main calendar as well.


We have two weekly standups, with both times available on the Public Calendar. These standups happen in the FlyWeb Vidyo room.

All meeting minutes



See Also

  • User and Market Research: Due to the confidential nature of the interviews, and our respect for our interviewees' privacy, we are restricting access to this information.

Strategy Essays

Related Initiatives

Related APIs