Skip to content

Instantly share code, notes, and snippets.

@cvan
Last active May 25, 2018 02:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cvan/88fdc79b9683ab865ff8442db0d6c5b4 to your computer and use it in GitHub Desktop.
Save cvan/88fdc79b9683ab865ff8442db0d6c5b4 to your computer and use it in GitHub Desktop.
The Evolution of XULRunner, Open Web Apps, Gecko WebRuntime, qbrt, Headless Firefox

Backstory

First, there was XULRunner. In 2007, this was turned into an experimental product called Mozilla Prism. (Also popular at the time was Fluid for Mac OS X.) In 2011, Mozilla launched an initiative targeting Firefox for desktop, Chrome/etc. for desktop, Firefox for Android, and Firefox OS, in that order. Evolved from the same codebase and team as the Firefox Add-ons program, there was an "app store" for HTML5, cross-platform, cross-browser web applications, Open Web Apps, called the Firefox Marketplace.

Open Web Apps

Developers could build HTML5 apps targeting desktop, tablet, and mobile devices. These chromeless, cross-platform web applications were called Open Web Apps (OWAs). Essentially a Firefox-proprietary (and polyfilled in other browsers) JavaScript API was called (e.g., navigator.mozApps.install('http://e8da9f7e.testmanifest.com/manifest.webapp')), which would prompt the user with a door-hanger notification to install a native application to the user's Applications directory on any platform where native Firefox (i.e., Gecko) was supported (i.e., Windows, Mac OS X, Linux, Android). This app was just a tiny shell application that launched Firefox (i.e., Gecko) headlessly with a fresh profile. This chromeless engine was called Firefox's WebRT (Web Runtime); Myk Melez was the primary author of this code. The code has since been removed from Firefox.

Progressive Web Apps & WebExtensions

Years later, announced at Chrome's Developer Summits, Progressive Web Apps (PWAs) were announced. Around the same time, the Firefox, Edge, and Opera teams began work on adapating Chrome's proven browser-extension API as an interoperable browser standard called Browser Extensions (more commonly known as WebExtensions). Both PWAs and WebExtensions have continued to evolve alongside such initiatives as Electron, Positron, Tofino, qbrt, and then release-channel Headless Firefox (and Chrome).

Supported today in Firefox, Chrome, Opera, Edge, and partially Firefox for Android.

Electron, NW.js, React Native (packaged using Squirrel, Qt, GTK+, etc.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment