A couple of days ago and without fanfare Google went live with Fuchsia.dev, a developer site for its new operating system, currently called the Fuchsia Project.
What is Fuchsia? The first the general public knew about it was when a GitHub project appeared in August 2016 (though the repository has since moved to Google's own googlesource.com site). Google has said little about it publicly, other than to publish the source code – which is saying a lot technically, but little about the intent behind it.
In the absence of official statements, everything about Google's plans for Fuchsia is speculative. The project may be Google's future operating system for all kinds of devices – this actually looks likely – or it may be scrapped and never used in anger.
At the Google IO developer conference in May, the company made a few low-key references to Fuchsia. Hiroshi Lockheimer from the Platforms and Ecosystems team said in a "Fireside chat":
Fuchsia is an open-source project by Google. It's an investment by us in modernising and trying out new concepts around operating systems. A lot of people assume, "It's a new OS from Google so it must be the future of the one OS from Google." That's not how we look at it... It's not about replacing Android or replacing Chrome OS... In the world of IoT there are increasing numbers of devices that require operating systems and new runtimes and so on, so I think there is a lot of room for multiple operating systems with different strengths and specialisations. Fuchsia is one of those things, so stay tuned... there's really not much intrigue in it.
We have a few more clues, though. First, the name. From the beginning, Google has described Fuchsia as: "Pink + Purple == Fuchsia (a new Operating System)."
Pink may well be a reference to Apple's Pink project, an object-oriented operating system developed in the '80s which evolved into Taligent, a joint project with IBM intended to be a future Mac OS.
Project Purple was Apple's codename for the project that became iPhone.
Back to the Fuchsia: The next 10 years of AndroidREAD MORE
Despite Lockheimer's remarks, there is an implication that Fuchsia is a next-generation Android, intended for the kinds of devices that today run Android or Chrome OS, while retaining compatibility with existing applications through virtualization or other techniques. The published code can be built and deployed for testing on a Google Pixelbook, an Acer Switch Alpha 12, or an Intel NUC – full computers rather than typical IoT devices.
A capability-based operating system
Google also describes Fuchsia as "capability-based". This turns out to have a precise meaning. According to the Fuchsia glossary: "A capability is a value which combines an object reference and a set of rights. When a program has a capability it is conferred the privilege to perform certain actions using that capability."
In addition, there is a feature called "capability routing", which is "a way for one component to give capabilities to another instance over the component instance tree".
Therefore, "capability-based" seems to describe a security system in which each component has only the minimum privileges it requires to run.
Fuchsia is not Linux
Fuchsia is a microkernel-based operating system and that microkernel is called Zircon. Supported architectures are arm64 and x64, but not currently AMD CPUs, though this means only that these are not actively tested.
The new operating system is only loosely coupled with filesystems, say the docs:
Fuchsia's filesystems live entirely within userspace. They are not linked nor loaded with the kernel; they are simply userspace processes which implement servers that can appear as filesystems. As a consequence, Fuchsia's filesystems themselves can be changed with ease – modifications don't require recompiling the kernel. In fact, updating to a new Fuchsia filesystem can be done without rebooting.
A further implication of this service-based approach to filesystems is that "any resources accessible via a channel can make themselves appear like filesystems by implementing the expected protocols".
Fuchsia will ship with support for a number of filesystems including MemFS (in-memory), MinFS (traditional), Blobfs (optimised for write once, then read only) and ThinFS, which implements FAT (legacy file system) in the Go language.
Fuchsia graphics and Flutter
Fuchsia features a GPU driver architecture called Magma. The drivers do not execute inside the kernel, but rather in privileged userspace processes. Magma is designed for Vulkan, the accelerated graphics API managed by the Khronos Group, though it is intended also to support OpenGL via a translation layer.
Fuchsia also includes a renderer called Escher and a system compositor called Scenic.
Time for a little bet on Google? App-building framework Flutter now fitted for more than phones – desktops, tooREAD MORE
Google has put tons of energy into Flutter development and what at first seemed to be a strategy for cross-platform mobile now seems to go beyond it. Applications built using Flutter will be optimised for Fuchsia – so by investing in Flutter, Google is building an ecosystem for Fuchsia.
Google Pixelbook is a supported target for Fuchsia development
Fuchsia and applications
Fuchsia is designed to support multiple programming languages. It already has support for C/C++, Dart, Go, Rust and Python. In addition, there is FIDL (Fuchsia Interface Definition Language), "a language for defining protocols that are typically used over channels. FIDL is programming language agnostic and has bindings for many popular languages, including C, C++, Dart, Go, and Rust. This approach lets system components written in a variety of languages interact seamlessly," state the docs. Channels are messaging transports provided by Zircon.
FIDL definitions in the Fuchsia SDK should be "considered public ABI [Application Binary Interface] for the system".
Fuchsia APIs will be vetted by an API Council. The council exists and you can view its goals and membership here.
There is also the concept of "runners". A runner is a "component that provides a runtime environment for other components, e.g. the ELF runner, the Dart AOT runner, the Chromium web runner... every component needs a runner in order to launch." The implication is that Fuchsia will support Linux applications as well as, of course, PWAs (Progressive Web Applications). There is also an Android runtime in the source.
The Fuchsia SDK is low level and the code notes that most developers will not use it directly. "They will instead consume a transformed version of it, for instance within the development environment and ecosystem supporting a given language runtime," it says. "Maintainers of development environments who wish to add support for Fuchsia are the main audience for this SDK."
What next for Fuchsia?
One sign that Google is relatively far along with Fuchsia is that there is detail about user features, including a thing called a Story, which is "a user-facing logical container encapsulating human activity, satisfied by one or more related modules. Stories allow users to organize activities in ways they find natural." Stories are presented in a visual thing called a Story Shell.
Now that the Fuchsia website is public, our guess is that Google will soon be saying a lot more about its new operating system – while still hedging its bets by insisting that both Android and Chrome OS have a bright future.
Fuchsia looks promising as a secure, modular operating system that has good compatibility with Android, Linux and web applications. At the same time, there are many obstacles to a successful new operating system launch and many fail – Taligent being one example. You can also bet that like Android and Chrome OS, Fuchsia will aim to hook users into the Google ecosystem. ®