This week on Fuchsia Friday, we look at one of the most requested features of Fuchsia and how it might be possible.
Update 04/26/18: Evidence has been uncovered that Google is altering the Android Runtime in some way to support Fuchsia. This, by itself, doesn’t confirm or discredit the ideas contained in this article.
For over five years, Android has been the smartphone OS with the highest market share. In the 10 years of its existence, developers have created millions of apps — everything from ‘classic’ games like Angry Birds to modern apps like the AI-infused Astro Email.
One of the biggest fears people (myself included) have about Fuchsia, is that all these apps and the lessons developers learned along the way will all be lost. A new platform usually means new applications need to be created, and companies will want to get their app to market quickly so users can get back to using their product. This rush could lead to inferior versions of software on Fuchsia compared to Android.
Or the opposite could happen. Fuchsia could release with a barren app selection. Who wants a smartphone with no apps?
The obvious solution is to keep compatibility with Android apps, but on first inspection that doesn’t seem possible. It’s not like Google could just port over the Android Runtime without a herculean effort.
In this post, I’d like to offer a possibility. A theory that I want to believe, one that is not yet backed by the evidence. If you should take other Fuchsia Friday posts with a grain of salt, take this post with the whole salt shaker.
For about two years now, it’s been possible to run Android apps on Chromebooks. When working correctly, this is an almost magical experience. Surely, Google succeeded where Microsoft, with Windows 8, failed to unify the desktop experience with the “app” experience users love on mobile.
The Chromium project to run Play Store apps on Chrome OS is called ARC, and works by running Android in a Linux container. This is no small feat, I assure you, but it was likely made easier by Chrome OS and Android’s common ancestor in Linux. But now that Google has done it on Chrome OS, surely they could do it for any Linux-based OS.
But where does that leave us? ‘Fuchsia is not Linux‘ after all, right? Well, there’s a small hint that could make it possible. Inside of Garnet, one of Fuchsia’s ‘layers’, there is a project called Machina, that makes it possible to run other operating systems in a ‘virtual machine’ (or VM). If you’re not familiar with the idea of a VM, think of it as a second computer running inside of your computer. In fact, the first ‘guest’ operating system that the Fuchsia team is working to make possible is Debian, a fully featured Linux distribution.
Let’s say we take this a step further, shall we? Beyond this point is pure speculation.
It’s somewhat odd to me that the Fuchsia team is working on virtualizing so early into the OS’s development. Perhaps Google could make a slimmed down Linux distribution that is specially designed for loading Android apps. When you decide to open an Android app, a virtual machine would start up loading the specified APK.
There’s even early signs that more than one VM could run at the same time, which would be good for running more than one app at once. Alternatively, running more than one VM is a common task for a server OS, thus it’s too early to tell exactly what this will be used for later on.
If backwards compatibility is possible, companies will not have to scramble to create a native Fuchsia app. The compatible Android app will suffice while developers spend the appropriate amount of time making a clean, connected experience with Fuchsia specific features like agents and entities.
Don’t forget that Machina isn’t the only tool created to help transition developers to Fuchsia. Flutter, Google’s new mobile app development kit, supports Android and iOS today and apps designed for those platforms may immediately work for Fuchsia, as we’ve demonstrated before.
All in all, Google has a few tricks up its sleeve for ensuring that Fuchsia will launch with a great app library on Day 1. Needless to say, I’m going to be keeping a very close eye on the possibility of backwards compatibility, watching how Machina develops and the systems it supports. Until some hard evidence is uncovered, it’s fun to dream, right?