Analysis: What does Google Fuchsia look like for a future-oriented operating system?

Lei Feng network (search "Lei Feng network" public number concerned) by: author of this article He Chu, open source hardware and software enthusiasts, Linux heavy users, engineers, analysts. Lei Feng network exclusive article.

Recently, according to foreign media reports, Google is currently working on the development of a new open source operating system - Fuchsia, using a new kernel written entirely new, supporting PCs, mobile phones and other smart devices. The voice of the industry generally believes that the purpose of Fuchsia is to open up PCs and mobile phones. It may be Google's future IoT fusion operating system, and even voices are the next-generation operating systems developed to replace Android and Chrome OS.

According to the network information: it is not a Linux kernel but a new kernel called Magenta; its UI layer uses the Dart language Flutter; the renderer Escher; and the application framework Mojo. In addition there is not much explanation for the details of this project. The founder was asked on the irc: "Why didn't you have a documentation or declaration? Open it up?" Answer: "(We) decided to open it up, and feel that it should start from the beginning of the project (so everything It is not perfect, and therefore it has not announced it)."

So to understand the specifics of this project, it is better to turn over documents and code.

What does Fuchsia look like?

There is very little documentation on the official website. The author turned it over and tried to get Fuchsia up and running.

The aforementioned Magenta is a combination of a microkernel and a series of user-space services and drivers. At present, it has been able to start running on virtual machines, certain NUC small computers and certain types of laptops. After running in the virtual machine is a character terminal, executing a shell called mxsh, in addition to a small number of basic tools and test assemblies.

Only the Fuchsia system of the Magenate kernel runs like this in the virtual machine:

Figure: magenta kernel running inside a virtual machine

It doesn't look cool at all, right? ! Because this basic system does not have a graphical user interface (GUI) section. Continuing to read the Fuchsia compilation documentation, after a long period of downloading, compiling, waiting, and trying, I have not been able to successfully see a GUI program running on the magenta kernel. A closer look at the source code and documentation reveals that the UI part has not yet been merged into the project.

Well, the data says "its UI layer is using the Dart language Flutter; the renderer Escher; the application framework Mojo." Then we try to compile Flutter separately across platforms and see how the user interface will look. Others such as the kernel, development languages, basic frameworks, etc., are not perceived by ordinary users - or left to the engineers.

Flutter is a user interface development library that can be run on Android and iOS. From its source code submission and bug tracking log information, its current engine cannot run on Fuchsia, but it is already close enough to work. Flutter official website claimed that he is still an early stage of the open source project, although the author's test is an early project, but it is easy to run the demonstration program on an Android phone. So, together, look around--what the "future" operating system program might look like (ignore Android comes with black bars and a carrier flag):

Figure: The Flutter Gallery demo program running on an Android phone

Flutter uses the Materal Design design language (specification), which defines the use, appearance, presentation, and specification of morphological changes for elements on the user interface.

From a user-visible point of view, the programs that run within the future Fuchsia operating system, including the buttons, dialog boxes, picture frames, and other interface components, should basically be similar to the above picture - of course, the future may also change - and Those cool 3D special effects, blank pointing, and virtual (enhanced) reality screens in science fiction movies are not yet visible from the demo program.

Hmm, so far, the interface of App on Fuchsia is probably this feeling.

In-stream, take a look at Fuchsia developers

Well-known participants in the Fuchsia project include Travis Geiselbrecht and Brian Swetland.

Back in the middle of the 90s of the last century, Apple Inc. was looking for alternatives because its own operating system could not be launched in time. At that time, there were two ideal candidates for the product: be company's multimedia operating system BeOS, and NeXTSTEP, NeXT's product, which was opened by Jobs. Later, due to the high price of Be company, Apple acquired NeXT to re-obtain Jobs and then developed OSX, which was later to shine. Be company was acquired by Palm in 2001 due to poor management.

BeOS, which can be listed as an acquisition target by Apple, is naturally not weak. The above two brothers have done operating system development at Be company. Since BeOS was very advanced at the time, many engineers and enthusiasts felt that it was a pity that the company was closed. So the design inherited from BeOS reimplemented an open source system named Haiku, and Haiku used a kernel called NewOS. Naturally - the founder and main developer of NewOS are these two buddies.

Perhaps the two people prefer to extremely thin products, or feel that the design of the NewOS kernel is too thick. In short, in 2008 they designed an extremely lightweight kernel littlekernel (abbreviation: lk) for embedded devices.

After nearly 20 years in the past, as the service companies closed down and switched, they also worked at giant companies such as Danger, Palm, Android, Apple, and Google. Brian Swetland's most recent job was senior software engineer at Google, responsible for managing Linux kernel development related affairs. A few days ago, he announced Fuchsia on github, using a kernel called Magenta, based on their lk kernel project extensions.

It can be seen that the project leader is definitely an experienced old driver.

The characteristics of Fuchsia operating system So, the basic situation of Fuchsia operating system at this stage is:

Kernel: Magenta, there are early versions that can be run on specific devices, and framework design, core functions, and related tool chains are better. If you need to support new (peripheral) devices, there are plenty of drivers that need to be ported.

UI layer: Flutter, the component library has been basically perfect, there are no obstacles to writing some simple programs, and it is not yet possible to run in Fuchsia. The version of the official who claims to be an early stage is also true. In addition, there is no 3D related support in OpenGL ES, and the official promises to open its own optimized 3D programming interface in the future. (So ​​it may not be the reason why you don't have a cool flash interface for the future)

Rendering engine: Escher, less information is not known, but it should have very prominent advantages in rendering speed and effect.

The main programming language: Dart, object-oriented cross-platform language, related libraries have been relatively complete and Flutter's development language. The Dart language is mainly used to develop apps for Fuchsia later.

If you need to understand the current stages of the various components of the project and the project's resource investment, perhaps the following figure can have a brief description. The figure shows the data submitted on a weekly basis for several project sources within the last year (representing active conditions). The left ordinate is the number of submissions, and the abscissa of each item is the most recent one year period.

Figure: Project Activity Diagram

The figure shows the names of important projects and the number of contributors to the current project.

It can be seen that the number of participants participating in the code is more active, which is the two projects of kernel Magenta and graphical interface layer flutter. The Flutter project is special. It started very early and has been dedicated to providing a unified coding environment for Android/iOS mobile devices. With the exception of Flutter, all other projects are probably started in the last two months. The current most active part is the kernel of the operating system. Many of the 22 contributors can see Google, and the official Chromium members are submitting the code. Kernel development requires technology and experience. It is not a labor-intensive type of work. Several core engineers are enough. It can be seen that Google’s current efforts in the kernel project are quite adequate, but the number of people concerned about other supporting projects is slightly less.

The figure is already obvious. In general, the Fuchsia operating system is still at an early stage. The architecture has been designed and is improving the content step by step.

As can be seen from the framework of the construction, its characteristics are basically a combination of the advantages of the components it has selected. The more representative ones are:

Suitable for embedded devices and high-performance devices: The base lk of magenta kernel is the kernel of an embedded system. Its code is very simple and suitable for porting to different devices. The imaginable target devices are: Internet of Things, mobile handheld devices, wearable devices, and so on.

Low latency, high efficiency: In the project description of Magenta, Escher and Flutter, you can see the keywords “real-time”, “efficient”, and “low-latency”. It can be foreseen that Fuchsia’s goal is also to achieve a real-time nature. High operating system. What is the use of low latency? Imagine the VR glasses when watching virtual reality, the picture is not surprisingly refreshed. So low latency is a very important consideration for this operating system and is one of the core strengths. By the way, Windows, Linux, and Android that we use for ordinary people are not real-time operating systems. OSX and iOS have lower latency, but they are generally not classified as real-time operating systems.

High-level programming languages: Dart's goal is to design a development language that is deployed everywhere, with stable interfaces, and a complete base library. In Fuchsia it is clear that the intention to get rid of the Java language is obvious. In addition, it is also a language that requires VM. However, according to Flutter's official data, after a comparative test, Dart's score on execution performance, development efficiency, object orientation, and fast memory allocation (recycling) is very high, so it will be selected as a development language by Flutter.

Unified UI experience: Due to the use of the Matrial Design design language, programs running on Fuchsia theoretically have a unified UI experience.

There is no historical baggage: a system designed completely from scratch, there will be no historical packages for compatibility considerations—such as the slowness of Java virtual machines, and slower rendering speeds for Android. Therefore, the volume can also be made small and plugged into a device with a small storage capacity.

Does Fuchsia integrate PCs and mobile phones to replace Android and Chrome OS?

Online mentions that Fuchsia replaces Android, Chrome OS, or Fuchsia cross-platform integration, I think the possibility is not great. Not to mention whether or not Fuchsia will ever make a final release. It is not certain that the operating system will be released. It would be very difficult to replace Androd and Chrome OS, or to integrate existing applications on the market.

In a stock market, any new product that wants to replace the old product must consider two biggest obstacles: 1. User habits; 2. Ecological environment.

The user habits of the Android system must be replaced by Fuchsia. Unless Fuchsia is doing very well on Android, it is difficult for users to replace the old system with an unfamiliar new one. In addition, the upstream and downstream ecological environments of Android range from the development of languages, related data resources, the number of employees, software developers, and equipment manufacturers to the final hardware and software products. The number of resources in this ecosystem is huge. The ecosystem will automatically keep related resources in the original camp and it will be difficult to break through.

The best example of an ecosystem is Windows Phone, which wants to compete with Android/iOS - it has disappeared from our lives.

Since it is difficult to succeed in the stock market, the goal of the newly developed Fuchsia must be emerging markets - an existing operating system such as Android and Chrome OS can not adapt, and the application form is not the same - the future market.

The speculation on the Internet is more clear, this market may be: Internet of things, virtual reality, augmented reality, wearable and so on. These areas have not yet become standard monopolies, and existing operating systems such as Android and Chrome OS are not very suitable for applications in these areas. In the future, the imagination of these areas of growth is huge and worth investing.

Looking back at Fuchsia's features: embedded, low latency, high performance, and consistency, it's designed for these product areas.

So, will the operating system converge? Will Fuchsia replace the other? I don't think it will be a very long time.

Note 1: This article has obtained valuable historical information from the kurain, head of the Haiku Chinese community. Kurain is the Chinese Language Manager of Haiku's official internationalization project. Almost all of the culture has translated all of Haiku's official documents and development manuals. Kurain is also a hardware and software geek. His github account is haiku-cn. Thank you for kurain here.

Note 2: This article is rushed, the relevant documentation is not able to read in-depth understanding, if any errors please correct me! thank you very much!

Lei Feng Net Note: Reprinted please contact us to authorize, and retain the source and author, may not delete the content.