This week in Fuchsia Friday we look at the bigger picture. Google is making Fuchsia fundamentally different from systems of the past, especially learning from the challenges the company has encountered with Android. But now that we’ve taken a few weeks to describe some of its more important elements in detail, let’s take a step back and look at the big picture. Let’s check out the building blocks and terminology that Google uses to describe Fuchsia’s “modular” design.
One of the first things Google wants you to know about Fuchsia is that it is ‘modular‘. What this means is that “almost everything that exists” in Fuchsia, such as software and even system files, is contained in ‘packages‘. And Fuchsia packages can be made up of smaller ‘components’ instead of being large all-in-one programs. As we looked at in a previous Fuchsia Friday, this could allow you to only download what you need, when you need it.
So what are components, then? Simply, a component is a small piece of software usually designed to do one job. By itself, a component can’t do much, but when combined with others, fitted together sort of like Legos, you can build almost anything. Components will come in many varieties, but the main two right now are agents and modules.
An agent is a component that works in the background. Agents can give information to other components and/or respond to things like push notifications or something on-screen. We’ve previously looked at an example of an agent that created cards in your Google Feed based on musicians you’re watching or listening to, but this is only one example of the many things agents can do for you. Earlier this week, we also discovered “Kronk”, which is described as Fuchsia’s “assistant agent.”
Modules are the components of Fuchsia software that you can see. Each module is designed and tagged with a specific task, so that Fuchsia will know which module to use without having to necessarily pick it yourself. I believe this system to be the most exciting part of Fuchsia’s modular design.
Under the hood of each module is a list of things it can do (called ‘verbs’), and the kinds of entities it can work with (referred to as ‘nouns’ in this context). Check out our breakdown of entities for a refresher. When you want to do something in Fuchsia, behind the scenes Fuchsia finds the best tool for the job by turning that desired action into a noun and verb. Then the OS will find all possible modules that match the verb and filter that list down to those that can handle the noun. This system makes perfect sense, in context of the Instant-Apps-like system we proposed last week.
A Story is a group of one or more modules communicating and working together to help you do one complete action. Stories are easier to understand with examples. A “watch TV with friends” Story could consist of Netflix and Skype modules. Or a “date night planning” Story could be Calendar, Contacts, and UrbanSpoon modules.
Part of the goal of this modular system seems to be making developers lives easier. By breaking down into smaller parts, big unwieldy apps become manageable. Using Facebook as an example, all of their apps (Facebook, Messenger, Page Manager, etc) need to log in with your account. By writing a module that can “login” (verb) to “Facebook” (noun), they could be able to use it in multiple places without copy-pasting code, or doubling it on your device. Additionally, if something changes about logging in, it should only have to be updated once in the dedicated login module. The new module should act as a drop-in replacement, like taking out one Lego brick and replacing with one of the same size.
Another purported advantage of modularity is that it may be possible to add features to an existing app by just installing another component. Perhaps you could be using the free version of an app, and decide to upgrade to Pro. The new features could be installed as modules without any fuss of uninstalling Free to install Pro. Just like snapping some extra pieces onto your Lego set. I only hope the opposite is true, and I can uninstall features I don’t use from apps. Looking at you, Facebook Stories.
All-in-all, Google seems willing to try new things with Fuchsia that could really change the dynamic of how we use our devices. The issue with this is that the power lies in developers’ hands to make the most of what Fuchsia has to offer. Only time will tell if companies will play along with Google’s vision.
Fuchsia Friday is a new series where we dive into the Fuchsia source code and interpret what the current state of the OS might mean for the finished product. All information in this article is speculation based on available information and is subject to change.
Read more in our Fuchsia Friday series:
- Fuchsia Friday: What are Stories and Modules?
- Fuchsia Friday: Ledger picks up where you left off
- Fuchsia Friday: Everything is an Entity
- Fuchsia Friday: A system built for ‘Instant Apps’ on steroids