Google, never one to compete in a market with a single product, is apparently hard at work on a third operating system after Android and Chrome OS. This one is an open source, real-time OS called “Fuchsia.” The OS first popped up in August last year, but back then it was just a command line. Now the mysterious project has a crazy new UI we can look at, so let’s dive in.
Unlike Android and Chrome OS, Fuchsia is not based on Linux—it uses a new, Google-developed microkernel called “Magenta.” With Fuchsia, Google would not only be dumping the Linux kernel, but also the GPL: the OS is licensed under a mix of BSD 3 clause, MIT, and Apache 2.0. Dumping Linux might come as a bit of a shock, but the Android ecosystem seems to have no desire to keep up with upstream Linux releases. Even the Google Pixel is still stuck on Linux Kernel 3.18, which was first released at the end of 2014.
Google’s documentation describes Magenta as targeting “modern phones and modern personal computers with fast processors, non-trivial amounts of RAM with arbitrary peripherals doing open-ended computation.” Google hasn’t made any public, official comments on why Fuchsia exists or what it is for, leaving us only to speculate. The “modern phone” shout out certainly sounds like something that could eventually compete with Android, but for now the OS is so early, it’s hard to tell.
Armadillo, the Fuchsia System UI
This all leads us to an interesting point right now: the Fuchsia interface is written with the Flutter SDK, which is cross-platform. This means that, right now, you can grab chunks of Fuchsia and run it on an Android device. Fuchsia first went public in August 2016, and but back then compiling it would get you nothing more than a command line. Thanks to Hotfix.net for pointing out that the Fuchsia System UI, called “Armadillo” is actually pretty interesting now.
It’s possible to download the source and compile Fuchsia’s System UI into an Android APK and install it on an Android device. It consists of a wild reimagining of a home screen along with a keyboard, a home button, and (kind of) a window manager. Nothing really “works”—it’s all a bunch of placeholder interfaces that don’t do anything. There’s also a great readme in the Fuchsia source that describes what the heck is going on.
The home screen is a giant vertically scrolling list. In the center you’ll see a (placeholder) profile picture, the date, a city name, and a battery icon. Above the are “Story” cards—basically Recent Apps—and below it is a scrolling list of suggestions, sort of like a Google Now placeholder. Leave the main screen and you’ll see a Fuchsia “home” button pop up on the bottom of the screen, which is just a single white circle.
The center profile picture can be tapped on, and here you’ll bring up a menu that’s a bit like Android’s Quick Settings. The top row of icons shows the battery and connectivity. Below that you’ll get sliders for volume and brightness, and icons for airplane mode, do not disturb, and auto rotate. You can interact with the buttons and sliders, but they won’t actually do anything on Android. Below that are buttons labeled “log out” and “more,” which don’t work at all.
Above the profile section are a bunch of cards labeled “Story [something].” The readme describes stories as “a set of apps and/or modules that work together for the user to achieve a goal.” That seems pretty close to a recent apps list, maybe (eventually) with some kind of grouping feature. Tapping on any card will load it as a full-screen interface, and since one is labeled “email,” it’s pretty obvious that these are apps. The list is sorted by “last opened” so the most recently-used cards will sit at the bottom of the list.
This list also has some window-management features. You can long press on a card and drag it around, and if you drop it on top of another app, it will trigger a split screen mode. The split screen system seems really capable, and probably needs to be reigned in a bit. You can do a 50/50 split vertically or horizontally. You can drag in a third app and 33/33/33 split horizontally or vertically, or a 50/50 split next to a full-height app, or a have a tab bar appear for the three full screen interfaces. You can drag in four apps and do a 75/25 split on one side of the screen and 25/75 on the other, and then you can keep dragging in apps until the whole thing crashes. Go back the story list and you’ll see your split screen layout is reflected in the card, too, which is nice.
The bottom “Google Now” panel starts with a search bar mockup. Tapping on it will bring up a keyboard, but this is not the Android system keyboard, and it is instead a custom Fuchsia interface. It has a new, dark theme, and things like long-pressing for symbols or settings do not work. Below that appears to be Google Now, which has several “suggestion” cards. They seem to be a little different than Google Now’s news, weather, and calendar suggestions though, with the docs saying “Conceptually a suggestion is a representation of an action the user can take to augment an existing story or to start a new one.” That almost makes it seem like an app launcher.
A long road ahead
With any new project at Google, it’s hard to know what the scale of the project will be. Is this a “20 percent” project that will be forgotten about in a year or something more important? Luckily, we have a direct statement from a Fuchsia developer on the matter. In the public Fuchsia IRC channel, Fuchsia developer Travis Geiselbrecht told the chat room the OS “isn’t a toy thing, it’s not a 20% project, it’s not a dumping ground of a dead thing that we don’t care about anymore.”
Android was conceived in the days before the iPhone. It started as an OS for cameras, and then became a BlackBerry clone, before being quickly retooled after the iPhone unveiling. With Android, Google is still chained to decisions it made years ago, before it knew anything about managing a mobile OS that ships on billions of smartphones. I’d say the two biggest problems with Android right now are
- Getting OS updates rolled out across the third-party hardware ecosystem
- A lack of focus on smooth UI performance.
While there hasn’t been anything said about an update plan, the OS’s reliance on the Dart programming language means it has a focus on high-performance.
Fuchsia really seems like a project that asks “how would we design Android today, if we could start over?” It’s a brand-new, Google-developed kernel running a brand-new, Google-developed SDK that uses a brand-new, Google-developed programming language and it’s all geared to run Google’s Material Design interface as quickly as possible. Google gets to dump Linux and the GPL, it can dump Java and the problems it caused with Oracle, and Google can basically insulate itself from all of Android’s upstream projects and bring all the development in-house. Doing such a thing on the scale of Android today would be a massive project.
The hardest part might not even be developing the OS, but coming up with some kind of transition plan from Android, which has grown to be the world’s most popular operating system. The “cross platform” feature of the Flutter SDK sounds important for a transition plan. If Google could get developers to start writing apps in Flutter, it would be creating an app ecosystem that ran on iOS, Android, and, eventually, Fuchsia. Google has also shown that it is able and willing the make the Android Runtime work on non-Android platforms with Chrome OS, so if Google does choose to go through with a transition plan, perhaps it could port and entire Android stack over to Fuchsia as a stop-gap app solution.
Back in August when Fuchsia went public, Geiselbrecht told the Fuchsia IRC channel “The Magenta project [started] about 6 months ago now” which would be somewhere around February 2016. Android hung around inside Google for about five years before it launched on a real product. If Fuchsia follows a similar path, and everything goes well, maybe we can expect a consumer product sometime around 2020. Then again this is Google, so it could all be cancelled before it ever sees the light of day. Fuchsia has a long road ahead of it.