B2G: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
Line 71: Line 71:
* [[Gaia/Meeting/2012-03-13|2012-03-13]] (Gaia)
* [[Gaia/Meeting/2012-03-13|2012-03-13]] (Gaia)
* [[B2G/Meeting/2012-03-13|2012-03-13]] (B2G)
* [[B2G/Meeting/2012-03-13|2012-03-13]] (B2G)
* [[Gaia/Meeting/2012-03-20|2012-03-20]] (Gaia)
* [[B2G/Meeting/2012-03-20|2012-03-20]] (B2G)


== Contributing ==
== Contributing ==

Revision as of 17:20, 23 March 2012

This page is edited by brendan, cjones, gal. Please don't change without permission.

Booting to the web

Mozilla believes that the web can displace proprietary, single-vendor stacks for application development. To make open web technologies a better basis for future applications on mobile and desktop alike, we need to keep pushing the envelope of the web to include --- and in places exceed --- the capabilities of the competing stacks in question.

We also need a hill to take, in order to scope and focus our efforts. Recently we saw the pdf.js project expose small gaps that needed filling in order for "HTML5" to be a superset of PDF. We want to take a bigger step now, and find the gaps that keep web developers from being able to build apps that are --- in every way --- the equals of native apps built for the iPhone, Android, and WP7.

To that end, we started a project we’re calling Boot to Gecko (B2G) to pursue the goal of building a complete, standalone operating system for the open web. It requires work in a number of areas.

  • New web APIs: build prototype APIs for exposing device and OS capabilities to content (Telephony, SMS, Camera, USB, Bluetooth, NFC, etc.)
  • Privilege model: making sure that these new capabilities are safely exposed to pages and applications
  • Booting: prototype a low-level substrate for mobile devices (phones and tablets)
  • Applications: choose and port or build apps to prove out and prioritize the power of the system.

We will do this work in the open, we will release the source in real-time, we will take all successful additions to an appropriate standards group, and we will track changes that come out of that process. We aren't trying to have these native-grade apps just run on Firefox, we're trying to have them run on the web.

This project is in its early stages; some pieces of it are only captured in our heads today, others aren’t fully explored. We’re talking about it now because we want expertise from all over Mozilla -- and from people who aren’t yet part of Mozilla -- to inform and build the project we’re outlining here.

Is B2G based on Android?

No. B2G uses some of the same low-level building blocks used in Android (Linux kernel, libusb, etc) in order to reduce the burden on ODMs/OEMs to bring up B2G on new hardware. However, B2G is not based on Android, and will not be compatible with the Android stack (in particular B2G will not run Android applications).

FAQ

We're maintaining a FAQ to help people find and share answers to common questions.

Roadmap

We have a roadmap.

Getting started

Please see the Hacking page.

Meetings

Gaia Weekly Meeting

Time:
Tuesdays 0900 PST / 1800 CET / 0300 CST
Dial-in:
+1 650 903 0800 x92 Conf 434#
+1 416 848 3114 x92 Conf 434#
+1 800 707 2533 (pin 369) Conf 434# (toll free, Skype)
Vidyo:
MTV 2J-JK

Notes during the meeting are captured on this etherpad and later transferred to Past meeting notes of this page.

B2G Weekly Meeting

Time:
Tuesdays 1700 PST / 0200 CET / 0900 CST
Dial-in:
+1 650 903 0800 x92 Conf 434#
+1 416 848 3114 x92 Conf 434#
+1 800 707 2533 (pin 369) Conf 434# (toll free, Skype)

Notes during the meeting are captured on this etherpad and later transferred to Past meeting notes of this page.

Past meeting notes

Contributing

First, you will want to read about the B2G/Architecture.

We're in an early enough stage of the project that we're still getting infrastructure and so forth set up. Unfortunately that means that there's not a lot of parallelizable low-level work yet. We'll be updating this page and filing issues/bugs for work items as that changes.

For now, the best ways to contribute are

  1. Work on existing Firefox/Gecko features and bugs. See bugzilla or join #developers or #b2g on IRC.
  2. Work with the Web APIs group on new features. Join #content or #b2g on IRC, and join the [mozilla.dev.b2g and [mozilla.dev.webapi mailing lists.
  3. Work with the Accessibility team. Join #accessibility or #b2g on IRC.
  4. Work on performance testing. We'll need new tools and tests, including a power-usage test suite and measurement tools. More details forthcoming. Join #perf or talk to bsmedberg on IRC.
  5. Work on new web apps!

We can't implement a full-fledged phone app until we have telephony APIs, for example, but that doesn't mean a phone app can't be developed in parallel. That work also feeds back into the API design, since the phone app could work out in some detail the API gaps that need to be plugged the APIs group: the prototype could use "mock objects" to provide an approximation of the missing functionality. Here's a short list of apps we know we'll want

  • Phone
  • SMS
  • Contacts manager
  • Camera/photo manager/gallery
  • E-book reader
  • Games
  • Crazy new things!
  • ...

B2G low-level work

A few disorganized items that have arisen so far. As we get more information about reusable work from others, these items will change

  • Radio Interface Layer for accessing the cellular network. This is needed for dialing/receiving calls, SMS messages, and anything else that deals with the phone network.
  • Make "home screen" web app the "home page" for browser/shell. Import/reference work done by Anant and webapps team.
  • Implement HTML5 IME. Big project. See Vivien's add-on for reference.
  • Build the final image in a separate step from android userspace compilation. use the "internal" android build targets directly
  • Strip out unnecessary crud from gonk image, unused programs etc. Default home screen is currently just in the way.
  • Start porting gecko to directly use native libs instead of java wrappers. Big project. prioritize with feedback from authors/web-APIs team.
    • telephony probably first, want to show our own UI
  • Give gecko a GL context for the screen and deliver raw input events to it, remove android eventry and widgetry. Big project.
  • Proxy oprofile and/or perf samples over adb to avoid processing on device
  • the updater-binary built by CyanogenMod has been observed to corrupt the /system filesystem of the Galaxy S II when applying an update.zip, specifically at the reformatting command in the updater script.

User Interface

The UI of B2G is called Gaia and is a collection of web apps.

Some design concepts are posted here.

Subpages of B2G