Hi,

I've been thinking about working towards deprecating "Open Web Apps" (aka
mozApps
<https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/API/Navigator/mozApps>)
in Gecko.

For the most part I think mozApps should eventually be replaced by
standards-based web apps using Web Manifest, Service Workers etc. I'd love
to see a standalone display mode for Firefox which supports these web apps
on desktop and mobile to replace the now defunct web runtime, but that's
not what this email is about.

For the most privileged pieces of UI like the browser chrome of the
browser.html project and the Firefox OS system app I think we may need
another solution. I'd like us to be able to split Gaia
<https://github.com/mozilla-b2g/gaia> into chrome (the system pieces) and
standard web content (everything else). (I'd also like to see a lot of the
current mozApps-only DOM APIs become web services).

   - In the past we had XULRunner but this has recently been removed and it
   seems the continued use of XUL is being discouraged in favour of HTML.
   - There was an attempt at rebooting the Chromeless project
   <https://github.com/mikedeboer/chromeless2> but it looks like that was
   still based on XULRunner.
   - The browser.html <https://github.com/browserhtml/browserhtml/> project
   currently uses Graphene
   
<https://github.com/browserhtml/browserhtml/wiki/Building-Graphene-%28Gecko-flavor%29>,
   a build of Gecko/Servo which runs locally hosted web content as browser
   chrome, but that's based on certified mozApps and the mozBrowser API.

After chatting with members of the browser.html team I'd like to propose a
solution inspired by Electron <http://electron.atom.io/> (which they
already proposed <https://github.com/browserhtml/browserhtml/issues/639>
before <https://github.com/servo/servo/issues/7379>). This would involve a
new type of HTML-based chrome including a new <webview> element.

Kan-Ru previously did a comparison
<https://wiki.mozilla.org/WebAPI/BrowserAPI/Common_Subset> of Mozilla's
mozBrowser API, Google's <webview> and Microsoft's <webview> and I started
to spec something out <https://github.com/benfrancis/webview/> with a view
to potentially standardising this, but the web lacks the security model
needed to expose this API and there's currently not much interest in a
standard. So my proposal is a chrome-only <webview> element for Gecko which
would replace the mozApps-only mozBrowser API
<https://developer.mozilla.org/en-US/docs/Web/API/Using_the_Browser_API>,
along the lines of Electron's <webview> element
<http://electron.atom.io/docs/v0.36.8/api/web-view-tag/>, to allow you to
safely embed web content in an application with HTML-based chrome.

We could also potentially emulate other parts of Electron's APIs too, see
their quick start tutorial
<http://electron.atom.io/docs/v0.36.8/tutorial/quick-start/> to get an idea
of how their embedding works.

Initially this would be used by the browser.html and Firefox OS projects,
but I think it could be a possible route away from XUL for Firefox in the
future too.

I've chatted with a few people working on browser.html and Firefox OS about
this, but I'd like to get broader feedback. Vivien told me he's already
prototyping a similar solution <https://github.com/vingtetun/planula> to
the same problem so I'd like to kick off some discussion here about which
direction we should take.

Thanks

Ben
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to