Google Fuchsia
Fuchsia is an open-source capability-based operating system currently being developed by Google. It first became known to the public when the project appeared on a self hosted form of git in August 2016 without any official announcement. The name means "Pink + Purple = Fuchsia (a new Operating System)",[2] which is a reference to Pink (Apple's first effort at an object-oriented, microkernel-based operating system) and Purple (the original iPhone's codename).[3] In contrast to prior Google-developed operating systems such as Chrome OS and Android, which are based on the Linux kernel, Fuchsia is based on a new kernel called Zircon.
Screenshot of the Google Fuchsia GUI | |
Developer | |
---|---|
Written in | C, C++, Dart, Go, Rust, Python[1] |
Working state | Current |
Source model | Open source |
Initial release | August 15, 2016 |
Repository | fuchsia |
Available in | English |
Platforms | ARM64, |
Influenced by | Android |
Default user interface | Ermine |
License | BSD, MIT, Apache License 2.0 |
Official website | fuchsia |
History
In August 2016, media outlets reported on a mysterious codebase post published on GitHub, revealing that Google was developing a new operating system called "Fuchsia". No official announcement was made, but inspection of the code suggested its capability to run on universal devices, including "dash infotainment systems for cars, to embedded devices like traffic lights and digital watches, all the way up to smartphones, tablets and PCs". The code differs from Android and Chrome OS due to its being based on the Zircon kernel (formerly called Magenta)[4] rather than on the Linux kernel.[5][6][7][8][9]
In May 2017, Ars Technica wrote about Fuchsia's new user interface, an upgrade from its command-line interface at its first reveal in August, along with a developer writing that Fuchsia "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".[10] Multiple media outlets wrote about the project's seemingly close ties to Android, with some speculating that Fuchsia might be an effort to "re-do"[11] or replace Android[12][13][14] in a way that fixes problems on that platform.[10]
In January 2018, Google published a guide on how to run Fuchsia on Pixelbooks.[15][16] This was followed successfully by Ars Technica.[17]
A Fuchsia "device" was added to the Android ecosystem in January 2019 via the Android Open Source Project (AOSP).[18][19] Google talked about Fuchsia at Google I/O 2019.[20] Hiroshi Lockheimer, Senior Vice President of Chrome and Android, described Fuchsia as one of Google’s experiments around new concepts for operating systems.
On July 1, 2019, Google announced the official website of the development project providing source code and documentation for the operating system.[21]
Overview
Forbes describes Fuchsia:
Zircon was previously known as Magenta and it was designed to scale to any application from embedded RTOS (real-time operating systems) to mobile and desktop devices of all kinds. As a result, there has been much speculation that Fuchsia will be the natural successor to Android and Chrome OS, combining capabilities of both with backwards compatibility to run legacy applications built on either. In short, this thing is designed to run on anything from 32-bit or 64-bit ARM cores to 64-bit ppc processors and it has a potential to be rather disruptive.[21]
The GitHub project suggests Fuchsia can run on many platforms, from embedded systems to smartphones, tablets, and personal computers. In May 2017, Fuchsia was updated with a graphical user interface, along with a developer writing that the project was not a "dumping ground of a dead thing", prompting media speculation about Google's intentions with the operating system, including the possibility of it replacing Android. On July 1, 2019 Google announced the homepage of the project, fuchsia.dev, which provides source code and documentation for the newly announced operating system.[21]
Fuchsia's user interface and apps are written with Flutter, a software development kit allowing cross-platform development abilities for Fuchsia, Android and iOS. Flutter produces apps based on Dart, offering apps with high performance that run at 120 frames per second. Fuchsia also offers a Vulkan-based graphics rendering engine called Escher, with specific support for "Volumetric soft shadows", an element that Ars Technica wrote "seems custom-built to run Google's shadow-heavy 'Material Design' interface guidelines".
Due to the Flutter software development kit offering cross-platform opportunities, users are able to install parts of Fuchsia on Android devices.
Ars Technica noted that, though users can test Fuchsia, nothing "works", because "it's all a bunch of placeholder interfaces that don't do anything". They found multiple similarities between Fuchsia's interface and Android, including a Recent Apps screen, a Settings menu, and a split-screen view for viewing multiple apps at once.[10] After the second review, Ars Technica experts were impressed with the progress, noting that things were then working, and were especially pleased by the hardware support. One of the positive surprises was support for multiple mouse pointers.[17]
A special version of Android Runtime for Fuchsia is planned to run from a FAR file, the equivalent of the Android APK.[22]
Kernel
Fuchsia is based on a new messaging-passing kernel called Zircon, named after the mineral. The project describes it as both a microkernel and not a microkernel in different parts of its documentation.[23][24] Zircon's code base was derived from that of Little Kernel (LK), a real-time kernel for embedded devices, aimed for low resource consumption, to be used on a wide variety of devices.[25] Little Kernel was developed by Travis Geiselbrecht, who had also coauthored the NewOS kernel used by Haiku.
Zircon is written mostly in C++, with some parts in assembly language. It is composed of a kernel with a small set of user services, drivers, and libraries which are all necessary for the system to boot, communicate with the hardware, and load the user processes.[26] It’s present features including handling threads, virtual memory, processes intercommunication, and waiting for changes in the state of objects.[27]
It is heavily inspired by Unix kernels, but differs greatly. For example, it does not support Unix-like signals but incorporates event-driven programming and the observer pattern. Most system calls don't block the main thread. Resources are represented as objects rather than files, unlike traditional Unix systems.
References
- "Language usage in Fuchsia". Fuchsia.
- "Fuchsia". Fuchsia.
- Matte, Daniel (April 10, 2017). "Open-Source Clues to Google's Mysterious Fuchsia OS". IEEE Spectrum. IEEE. Retrieved March 4, 2019.
- McGrath, Roland (September 12, 2017). "[zx] Magenta -> Zircon". zircon - Git at Google. Archived from the original on July 11, 2018. Retrieved September 19, 2017.
- Etherington, Darrell (August 15, 2016). "Google's mysterious new Fuchsia operating system could run on almost anything". TechCrunch. AOL. Retrieved October 5, 2016.
- Fingas, Jon (August 13, 2016). "Google's Fuchsia operating system runs on virtually anything". Engadget. AOL. Retrieved October 5, 2016.
- Szász, Attila (November 8, 2017). Dive into Magenta – fuzzing Google’s new kernel. Hacktivity – via YouTube.
- "Google's Fuchsia OS Magenta Becomes Zircon - Phoronix". Retrieved May 20, 2018.
- Vaughan-Nichols, Steven J. "Google Fuchsia is not Linux: So, what is it and who will use it?". ZDNet. Retrieved August 18, 2018.
- Amadeo, Ron (May 8, 2017). "Google's "Fuchsia" smartphone OS dumps Linux, has a wild new UI". Ars Technica. Condé Nast. Retrieved May 9, 2017.
- Fingas, Jon (May 8, 2017). "Google's mysterious Fuchsia OS looks like an Android re-do". Engadget. AOL. Retrieved May 9, 2017.
- Gartenberg, Chaim (May 8, 2017). "Google's mysterious new Fuchsia OS has a UI now". The Verge. Vox Media. Retrieved May 9, 2017.
- Davenport, Corbin (May 8, 2017). "Google's "Fuchsia" operating system is taking shape with a new design". Android Police. Retrieved May 9, 2017.
- "First Look at all new Fuchsia OS from Google". IB Computing. IB Computing. January 18, 2018. Retrieved January 18, 2018.
- "Yes, Google Is Running Fuchsia On The Pixelbook: Calm Down". Chrome Unboxed - The Latest Chrome OS News. January 1, 2018. Retrieved January 3, 2018.
- Install Fuchsia on Pixelbook, retrieved December 9, 2020
- Amadeo, Ron (January 8, 2018). "Google's Fuchsia OS on the Pixelbook: It works! It actually works!". Ars Technica. Condé Nast. Retrieved January 22, 2018.
Right now, Google's built-from-scratch kernel and operating system will actually boot on the Pixelbook, and some things even work. The touchscreen, trackpad, and keyboard work and so do the USB ports. You can even plug in a mouse and get a second mouse cursor.
- "Add initial fuchsia target". January 22, 2019.
- Bradshaw, Kyle (January 3, 2019). "Google's Fuchsia OS confirmed to have Android app support via Android Runtime". 9to5Google. Retrieved January 4, 2019.
- Li, Abner (May 9, 2019). "Fuchsia is Google's investment in trying new OS concepts".
- Altavilla, Dave (June 30, 2019). "Google's Mysterious Fuchsia OS Developer Site Debuts With New Fascinating Details". Forbes. Retrieved August 29, 2019.
- "Google's Fuchsia OS confirmed to have Android app support via Android Runtime". 9to5Google. January 3, 2019. Retrieved March 27, 2019.
- "Zircon". Fuchsia. Retrieved December 9, 2020.
Zircon is composed of a microkernel (source in /zircon/kernel)
- "Pragmatic". Fuchsia. Retrieved December 9, 2020.
Zircon is a pragmatic, message-passing kernel—not a microkernel
- Sims, Gary (August 17, 2016). "What we learned from running Fuchsia, the mysterious new OS from Google". Android Authority. Retrieved May 9, 2017.
- "An Early Look at Zircon, Google Fuchsia New Microkernel". April 15, 2018. Retrieved May 20, 2018.
Written in C++, Zircon is composed of a microkernel plus a set of userspace services, drivers, and libraries that are required to handle system boot, process launch, and other typical kernel tasks. Zircon syscalls are generally non-blocking, with the exception of wait_one, wait_many, port_wait and sleep.
- "Overview". Fuchsia. Retrieved June 18, 2020.