This is a guest post. The views expressed in this article are solely those of the author and do not represent positions of IEEE Spectrum or the IEEE.
It's not often that one of the world's leading software companies decides to develop a major new operating system. Yet in February 2016, Google began publishing code for a mysterious new platform, known as Fuchsia.
Google has officially said very little about Fuchsia, and the company did not respond to my request for comment. But since it's being developed as an open-source project, its source code is entirely in the open for anyone to view. Indeed, anyone can download Fuchsia right now and try to run it.
Many people wrote about Fuchsia when it was first spotted last year. They raised the obvious questions of whether it meant that Google would be moving away from Linux within Android.
Since then, I have been periodically looking at the source code for signs of the company's plans for its new operating system. According to Google, Fuchsia is designed to scale from small Internet of Things devices to modern smartphones and PCs.
Google, of course, already has two consumer operating systems. Within the tech industry, there is a well-known conflict between Google's Android and Chrome OS. Android, which is primarily used in smartphones and tablets, is the most popular operating system in the world by device shipments and Internet usage and has a thriving native app ecosystem. Meanwhile, Chrome OS, which was designed for PCs, is much more secure than Android and provides a simplified computing environment that's well suited for the education market.
While Google executives have denied that the two platforms would ever merge, there has been much internal debate over the years about how best to unify Google's software efforts. Meanwhile, many consumers want Android as a PC platform, due to its greater capabilities and ample software offerings compared with those of Chrome OS.
In my eyes, Fuchsia is Google's attempt to build a new operating system that advances the state of the art for consumer platforms and corrects many of the long-standing shortcomings of Android. The engineering goals of the project appear to include a more secure design, better performance, enabling timely updates, and a friendlier and more flexible developer API (application programming interface).
The heart of any operating system is its kernel, which is a program that mediates access to the hardware and controls all other software within the OS. Fuchsia's kernel is named Magenta.
Google's official repository for Magenta states that “Pink + Purple == Fuchsia." According to public statements by Fuchsia team members, Purple refers to Project Purple, which was the original iPhone project. And Pink is a reference to Taligent, Apple's failed experiment to replace its classic Mac OS with a new operating system. As a transition strategy, Taligent was designed to look and feel like the classic Mac OS and even continue to run its same applications, only they would run on top of a new microkernel (a type of kernel that provides only the minimal functions necessary to implement an operating system).
There are strong reasons to think this approach is somewhat similar to what Google now intends to do with Android. In my opinion Google cannot credibly release a new mobile OS for consumers without providing some form of backward compatibility for Android apps.
It is unclear how Google would do that, but one possibility would be deploying virtualized Android apps on top of a hypervisor. A hypervisor is software that allows a device to simultaneously run multiple operating systems as virtual machines on the same hardware. While virtual machines are traditionally fairly inefficient and present multiple OS environments to the user, progress in virtualization technology over recent years could suggest a more refined solution: running virtual machines more like containers.
Containers are sets of isolated processes that virtualize individual apps within a host operating system. By using only the parts of a guest operating system (Android) that are necessary for individual apps to function, operating virtual machines more like containers could be a more efficient way of running and displaying all apps within the same operating system (Fuchsia), in a robust and secure manner.
Fuchsia could thus be launched with Android support, providing all the apps and experiences that users already enjoy. While Android would likely continue to be developed and supported for some time, in this scenario it would exist as a legacy environment within Fuchsia that is gradually replaced over many years.
One downside of the Linux kernel that Android relies on today is that it lacks a stable application binary interface (ABI) for software drivers. This turns out to be quite consequential. An ABI provides a low-level interface between program modules in machine code, instructions that execute directly on a computer's central processing unit. Software drivers are programs built on an ABI that provide an abstraction layer between software and the underlying hardware. Thus, changing an ABI requires updating and recompiling programs such as drivers that are based on it.
This matters to the silicon vendors who write drivers for Android's fork of Linux. Without a stable ABI, they must write and update drivers for each new version of Android in order for the kernel to continue operating with their hardware. That becomes costly, and is often not worth the expense.
Device vendors, however, need updated drivers in order to push operating system updates. In Android's case, this disconnect has resulted in millions of devices not receiving timely updates, or any updates at all. Critics have denigrated this as death by fragmentation and a security nightmare.
Fuchsia could be an attempt to solve this problem. As with operating systems like Windows, Fuchsia uses a kernel that effectively provides a stable driver ABI. Fuchsia actually contains two different kernels—LK and Magenta. LK, or Little Kernel, is an existing tiny operating system for embedded devices. Magenta is a microkernel built on top of LK.
In Google's public documentation, Fuchsia as an Internet of Things platform is described as only using LK and not Magenta. But Magenta is used on more complex devices such as smartphones and laptops.
From the consumer's perspective, an operating system consists of not only a kernel but also (for developers) an API—which defines how software components interoperate—and the frameworks built for it. Android's original architects made certain technical decisions about its API during the operating system's early days—often out of necessity—that now make life difficult for the Android team and developers.
Fuchsia provides Google with a rare opportunity to replace an existing operating system with something newer and better. Its API draws heavily from Chromium, the open-source project behind Google's Chrome Web browser, which makes up most of Chrome OS. Much of Fuchsia's low-level API plumbing is based on modified code taken from Chromium's Mojo system API. Many former members of the Chromium team also now work on Fuchsia.
Flutter, an existing cross-platform framework for developing mobile apps, uses Google's Dart programming language and provides the user-interface layer for Fuchsia. It is likely that one of the main advantages of using Flutter will be that developers can write a Fuchsia application once and also have it run with few modifications (in theory) on Android and Apple's iOS. This would reduce the number of programmers needed to develop mobile apps for multiple platforms.
For consumers, Fuchsia's move away from the constraints of Android, Linux, and Unix could reboot Google's operating systems with better performance, security, and long-term support. Perhaps most exciting, Fuchsia's potential launch on new form factors such as laptops and 2-in-1s (devices that switch from tablets to laptops) could provide a better user experience than legacy PC operating systems. Though it's not yet clear what Google has in store for Fuchsia, it's an intriguing and ambitious project worth watching.