Mozilla Working On Custom Mobile OS

The Mozilla Foundation is building an open source operating system to rival Google’s Chrome OS on mobile devices

Mozilla has begun work on a new web-based mobile operating system that will rival the efforts Google has taken with its Chrome OS, except the Mozilla operating system will target smartphones and tablets as opposed to netbooks.

The new Mozilla project is known as Boot to Gecko or B2G and its goal is to build a complete, standalone operating system for the open web, said Mozilla engineer Andreas Gal in a 25 July blog post. Gecko is Mozilla’s browser layout engine. It appears that Mozilla will begin building out B2G with Android components and Gecko as foundational technologies.

All open source

However, as the team is pledging to work in a totally open source environment, they are enlisting help and suggestions from developers in the community. And the B2G effort will require work in several areas, including building new APIs for exposing device and OS capabilities to content in areas such as telephony, SMS, camera, USB, Bluetooth, Near Field Communications (NFC) and so on. Developers must also choose and port or build apps to prove out and prioritise the power of the system, prototype a low-level substrate for an Android-compatible device, and establish a privilege model to ensure that these new capabilities are safely exposed to pages and applications.

Gal said Mozilla needed to take “a hill” or win an early battle as leverage to fight on with the B2G project, which will likely take years to complete. Google took at least two years to bring Chrome OS to fruition.

Essentially, Mozilla’s goal is to “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”, Gal said.

“Mozilla believes that the web can displace proprietary, single-vendor stacks for application development,” Gal said. “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.”

Moreover, in true open source tradition, Mozilla plans to release the B2G source code in real-time and to take all successful additions to appropriate standards groups, Gal said. “We aren’t trying to have these native-grade apps just run on Firefox, we’re trying to have them run on the web,” he added.

Gecko vs. Android

The B2G post drew an extensive comments thread, many of which came from Mozilla engineers responding to queries and further explaining the project.

However, one commenter, identified as Nick Dafo, asked why build a new operating system in the first place. Dafo wrote:

“As a huge Android supporter I don’t see why you find the need to do this. Android is already a great mobile OS that is open source… If Mozilla wants to support open source and the web in mobile devices you should better work as much as possible on the Android version of Firefox instead of trying to create a whole new OS. There is no need for another OS if you can build a great Firefox app for an existing open source OS that is already out on the market and growing faster than the closed systems like Apple’s and Microsoft’s.”

Gal responded:

“Android is not open source in the sense of ‘open technology’. Android APIs are proprietary Google sauce, not broadly accepted and adopted open web standards. At some point Android used to be at least ‘available source’ where Google would publish secretly/internally developed source code/technology after the fact as products ship, but even those times seem to be over now. I would love to boot my custom Android build on my Galaxy Tab 10, but no luck, Google refuses to release the source.

“We want to do Boot to Gecko the way we think open source should be done. In the open, from day 1, for everyone to see and participate.”

Meanwhile, responding to queries about potential desktop targeting, Mozilla’s Mike Shaver said: “We might prototype some stuff on a PC, but the project is really about the device space. We had to pick somewhere, and this seems like where the energy is best spent. Desktop devices tend to be harder to get good open drivers for without pulling in things like X, which we don’t want to do.”

Founded on Android

And discussing the use of Android components as a foundation for B2G, Shaver said, “We intend to use as little of Android as possible, in fact. Really, we want to use the kernel + drivers, plus libc and ancillary stuff. It’s not likely that we’ll use the Android Java-wrapped graphics APIs, for example. It’s nice to start from something that’s known to boot and have access to all the devices we want to expose.” Shaver note that this may not be the right direction and asks for suggestions.

The discussion prompted several queries about APIs. Regarding the APIs and privilege model, Brendan Eich, a Mozilla engineer and creator of JavaScript, said:

“Those New Web APIs are for the standardised, portable content languages (JS/HTML/CSS). We are not looking to run native code, especially given the requirements for a new plug-in API, complex toolchain, etc. We’re following NaCl, including the PNaCl work, but it is not ready for prime time, and we’d have to spend a lot of people and time integrating and tracking it. The opportunity cost on pushing the open web standard is very high, at least for our community.

Google can much better afford to invest in NaCl, but that won’t necessarily make a standard. The toolchains and OSes are likelier to support control-flow integrity enforcement in native code sooner than the browser makers, IMHO.”

NaCl, known as “Salt” because “NaCl” is the molecular formula for salt, is a sandboxing technology for running a subset of Intel x86 native code using software-based fault isolation. The Google Native Client technology uses software fault isolation (SFI) to enable the execution of untrusted native code inside a web browser, giving web applications greater access to the performance of the client machine while avoiding the security problems with current infrastructure for plug-ins. PNaCl, pronounced Pinnacle, is a a suite of tools for building, testing, and distributing Native Client programs in an instruction-set neutral format. PNaCl uses the Low-Level Virtual Machine (LLVM) bitcode format to represent instruction set architecture (ISA) neutral portable executables compiled from code written in a variety of languages including C and C++.

Meanwhile, Gal summed up Mozilla’s goals for B2G:

“A number of intermediate steps are possible. I am very interested in making a beefed up web stack with powerful local APIs available to users of existing devices. I think we can do this without distracting from the ultimate goal: breaking the stranglehold of proprietary technologies over the mobile device world.”