Google’s next big thing is being developed underneath our noses. While it’s not a tightly kept secret in Google-related circles, Fuchsia (or Andromeda, or Pink + Purple – whatever you like, name-wise) is still not drawing much attention. But one clever developer took a closer look, and found a mishmash of languages and components involved in its making.
Daniel Matte dove deeper into Fuchsia (we’re just going to call it Fuchsia for now, because why not) than anyone else to this point, and made some interesting discoveries. First notable find: Matte doesn’t think Fuchsia is a case of Android being merged into Chrome, or vice versa. Rather, he believes that both are being pushed into Fuchsia, which is being developed as an entirely new platform.
And that’s where the confusion starts to play out. A new API for Fuchsia, dubbed Mojo, comes from Chromium, and it’s also what enables Android apps to work in Chrome OS. In addition, it has a dizzying array of languages to support:
Mojo in Fuchsia features intriguingly extensive language support. C/C++, Dart, Go, Java, Python, and Rust all have bindings to Mojo. I am guessing that C/C++ is for native development, Go is for networking, Java is for Android, Python is for scripting, and Rust is for writing portions of the kernel. (Or perhaps Rust’s usage is minimal, suggests a commenter on Hacker News.) Mixing and matching languages aside, the main UI API is based on, yes, Dart.
Matte describes Flutter, written in Dart, as “an existing Google widget framework” that has been repurposed for Fuchsia. A new runtime named Modular is also in play, which is described as “a post-API programming model that allows applications to cooperate in a shared context without the need to call each other’s APIs directly.” Instead, it uses a Mojo-based inter-process communication (IPC) messaging platform, which sounds a lot like a proprietary IFTTT for light data transfers.
So What Is Google Doing?
If you’re adrift in a sea of Go, Dart, Rust, C++, APIs and runtimes, there’s method to Google’s madness.
Rather than go all-in on a new stack, Google appears to be repurposing existing modules and language features for Fuchsia. In a way, that’s good; unlike Apple, Google doesn’t have the synergy to keep things totally proprietary (not to mention un-fragmented), so developing a brand new language or operating system behind closed doors would be a sharp about-face for the company.
Google also has existing languages it can lean on. Go and Dart are suitable for a variety of purposes, and the company is always good about providing documentation and APIs for its various services. Go is quickly becoming popular, and Fuchsia may just push it over the top. The company’s ongoing spat with Oracle over Java might serve as motivation for Fuchsia, too.
Matte’s findings are entirely speculative, even if they are reasonable. Google may put a patina on Fuchsia before shipping; as-is, asking developers to poke around the disparate variety of languages currently supported in Fuchsia seems obtuse. Google may be best served using it all as an underpinning for apps written in Go, while allowing developers to manipulate their own services using those various languages if they like.
The core takeaway is that Google wants Fuchsia to be everything to everyone, and that’s tough. It’s built to run on ARM, MIPS and Intel x86 processors, and its scalability suggests it will run on everything from IoT devices to desktop computers or cars.
It’s a bridge between lands for Google. Right now, Android apps run in a shell on Chrome OS, and early returns suggest the experience is just plain bad. Fuchsia may be able to solve that, which is clearly Google’s main intent, but it’ll take more than a one-size-fits-all operating system.
Android has always faced scalability issues. Apps look and feel better on a smaller screen. It’s part of the reason Android tablets never sold well, and why apps tend to run in windowed environments on Chrome OS. Fuchsia will have to solve for that, which may lead to Google forcing developers to optimize their apps in a new way.
We’ve also seen this fail before. Microsoft tried in earnest to have us all buy into the Universal Windows Platform, but neither consumers nor developers were interested. Google’s reach with Android and Chrome (as well as its strong partnerships) may carry the day, but it’s not a sure thing.