A Fuchsia Future? Part One: Build One (or Two) to Throw Away
Fuchsia is not just a difficult-to-spell name of a color. It is also the name of a “skunkworks” project inside of Google building a next-generation operating system for all form factors. This week, I’ll explore various aspects of this and my expecations of its impact on Android developers and apps.
First up: um, WTF?
You might be forgiven if you think that Google is going a bit overboard with operating systems nowadays. In addition to Android, they have:
- Chrome OS
- various specialized Android variants, such as Wear OS
- whatever is powering the Chromecast (which reportedly is some Android/Chrome OS mashup)
- whatever is powering their other smart devices
- possibly other stuff that I’m forgetting
However, what has been getting a lot of attention in the past year is Fuchsia. Bloomberg reported in July 2018 that 100+ engineers are devoting some time to Fuchsia. Various outlets, including 9to5Google, reported a couple of weeks ago that Google hired a long-time Apple engineer “to help bring [Fuchsia] to market”. And so on.
On the one hand, this seems bizarre. Google dominates mobile with Android. Chrome OS, while not nearly as popular, has fans in various market segments, such as the US education market. Why would Google be looking to replace one or both of these with something new?
On the other hand… perhaps we should expect this.
As developers, we like to toss around the term “tech debt”, referring to the ever-growing pile of bad decisions that we need to revisit someday. Anything with an API has an additional tech debt problem: how to address that tech debt while maintaining reasonable compatibility with things using the API. Platforms, such as operating systems, have it the worst, in that they are often expected to be able to support a fairly broad history of stuff. In Android’s case, we are supposed to be able to run Android 1.0 apps on Android 9.0 devices.
Yet, despite this, operating system developers do need to address the tech debt. Sometimes, that can be done incrementally. Sometimes, that is done much more dramatically. For example:
Microsoft had a long transition from 16-bit Windows to 32-bit Windows environments, where they had parallel OS tracks for a while (Windows NT and Windows 2000 were Win32-centric, with Windows 95 and 98 being more Win16-centric)
Apple switched both operating systems (OS 9 to OS X/macOS) and CPU architectures (PowerPC to x86), resulting in lots of challenges for keeping existing Mac software running (e.g., Carbon compatibility layer)
Fred Brooks’ The Mythical Man-Month is a legendary book about managing software projects. One of his most powerful quotes is:
Where a new system concept or new technology is used, one has to build a system to throw away, for even the best planning is not so omniscient as to get it right the first time. Hence plan to throw one away; you will, anyhow.
To some extent, Microsoft built 16-bit Windows, then threw it away and shipped 32-bit Windows. Apple built the original Mac OS, then threw it away and shipped OS X/macOS. It should not be all that surprising, therefore, that Google may elect to address Android’s tech debt by replacing Android. Most likely, the developers of the stuff that was “thrown away” in these scenarios were not planning on having their stuff be “thrown away” — it’s just a matter of course.
Fuchsia appears set to run Android apps, possibly using a container system akin to how Chrome OS does. If it does a reasonable job of this, then it is very possible that the Android ecosystem could turn into a Fuchsia ecosystem over time, just as Win32 replaced Win16 and OS X replaced the original Mac OS. And, just as developers had to learn Win32 and Cocoa APIs to develop apps native to the replacement OSes, developers will need to learn Fuchsia’s APIs to develop apps native for Fuchsia.
It does not appear that Fuchsia is “ready for prime time” just yet. By the time it does, Android might be 15 years old, measured from when Google acquired Android Inc. in 2005. 15 years is a decent amount of time for a consumer operating system. We should not be surprised if Google tries to use Fuchsia as their way to move forward while still offering a transition from the past.
The key word there is “tries”.
Tomorrow, I’ll explore a bit more about the transition and how that impacts developers considering Flutter.
Want an expert opinion on your Android app architecture decisions? Perhaps Mark Murphy can help!