'Fuchsia Is Not Linux': Google Publishes Documentation Explaining Their New OS (xda-developers.com) 245
An anonymous reader quotes a report from XDA Developers: You've probably seen mentions of the Fuchsia operating system here and there since it has been in development for almost 2 years. It's Google's not-so-secretive operating system which many speculate will eventually replace Android. We've seen it grow from a barely functional mock-up UI in an app form to a version that actually boots on existing hardware. We've seen how much importance Google places on the project as veteran Android project managers are starting to work on it. But after all of this time, we've never once had either an official announcement from Google about the project or any documentation about it -- all of the information thus far has come as a result of people digging into the source code.
Now, that appears to be changing as Google has published a documentation page called "The Book." The page aims to explain what Fuchsia, the "modular, capability-based operating system" is and is not. The most prominent text on that page is a large section explaining that Fuchsia is NOT Linux, in case that wasn't clear already. Above that are several readme pages explaining Fuchsia's file systems, boot sequence, core libraries, sandboxing, and more. The rest of the page has sections explaining what the Zircon micro-kernel is and how the framework, storage, networking, graphics, media, user interface, and more are implemented.
Now, that appears to be changing as Google has published a documentation page called "The Book." The page aims to explain what Fuchsia, the "modular, capability-based operating system" is and is not. The most prominent text on that page is a large section explaining that Fuchsia is NOT Linux, in case that wasn't clear already. Above that are several readme pages explaining Fuchsia's file systems, boot sequence, core libraries, sandboxing, and more. The rest of the page has sections explaining what the Zircon micro-kernel is and how the framework, storage, networking, graphics, media, user interface, and more are implemented.
interesting (Score:3, Insightful)
It looks like an interesting kernel using microkernel ideas. It should be interesting if they can get around the latency for process switching and message passing.
Re: (Score:2)
Microkernel? Oh, god, just bury it now. Microkernels have been the coming thing for decades now, and they never make it work.
Re: (Score:2)
Re: (Score:3)
sure, great for a single purpose appliance. for a modern smartphone or tablet not so much
Re:interesting (Score:4, Informative)
Blackberry used QNX, a microkernel based OS used in lots of real-time applications.
Yeah, the device failed, but not because of the microkernel.
Re: (Score:2)
old blackberry is an abacus next to modern smartphone. Note they now use Linux kernel. microkernel can't cut it.
Re: (Score:2)
old blackberry is an abacus next to modern smartphone. Note they now use Linux kernel. microkernel can't cut it.
Don't you remember when QNX gave away a Unixlike distribution? It was totally usable as a desktop.
Re: (Score:3)
Re: (Score:2)
Re: (Score:3)
Re: (Score:2)
Gosh, I remember when Commodore suggested that the next Amiga might use QNX, before they fell over and died....
Look up the Unisys ICON [wikipedia.org], an 80186 based computer back in the 1980's that ran QNX. They had quite the interesting architecture, and were basically early network computing environments (they had their own local memory and processing, but a centralized network disk share by all systems).
I have fond memories of those machines.
Yaz
Re: (Score:2)
"I saw a qnx demo of a bouncing cube and realtime video playing on the different sides of the cube"
I think that was BeOS unless QNX also had a similar demo
Re: (Score:2)
Are you sure it was a QNX demo or the Amiga DE SDK [vesalia.de] based on TAO intent OS [c2.com]? I still have the Amiga SDK manual for that OS and probably the DVD is hidden somewhere around my house. I actually liked that OS.
Re: (Score:2)
Real time systems got it right (as opposed to pre-emptive).
Huh? Real time systems can still pre-empt. Time sharing RTOS' do exactly this. Depending on wether the RTOS is hard of soft; so long as you can deterministically meet a deadline, you can pre-empt and still be a hard RTOS.
Yaz
Re: (Score:2)
Depending on wether the RTOS is hard of soft; so long as you can deterministically meet a deadline, you can pre-empt and still be a hard RTOS.
That's EXACTLY what she said!
Re: interesting (Score:3)
Re: (Score:2)
Yeah, but this wasn't the "really, really old" BlackBerry you may be thinking of. BlackBerry devices based on QNX didn't start shipping until 2013.
Yeah ... you've never seen one in the wild.
Re: (Score:3)
Re: interesting (Score:3)
Re: (Score:3)
I do chalk most of this up to QNX being an RTOS as opposed to it being a Microkernel.
These days, with multi-core CPUs everywhere, I think the whole Microkernel/message passing vs everything else is basically irrelevant since the real-time stuff can be run on one core while everything el
Re: (Score:2)
I worked on the first major device running QNX as a kernel for an interactive device. It was the most difficult platform I ever coded for and to be honest, there were many things which were very problematic with the platform.
ICON?
Re: (Score:2)
Wow, your post is an example of what makes Slashdot worth reading. I never coded for QNX myself, and appreciate your perspective, it has the ring of truth.
I just took a look at some of the internal apis for Magenta [github.com] and it is clear that a kernel built around clunky glue like that can't be anything other than a dog. Will there somehow be a flash of genius to make it magically fast? Don't count on it.
Re: (Score:2)
Re: (Score:2)
'single purpose'.
I don't think you know what the hell you're writing about. A robotic vacuum cleaner might meet the definition of 'single purpose', but what that's relatively primitive. So microkernel should be considered appropriate for toasters, etc?
Tell that one to Apple. Or BlackBerry.
Re: (Score:2)
sure, great for a single purpose appliance. for a modern smartphone or tablet not so much
So, obviously iPhones and iPads are no good then as they run the Mach microkernel. I mean, it's clear by their marketshare that it's a dead-end system.
Re:interesting (Score:4, Insightful)
I will tell you the problem with Android bugs is not in the kernel. This is a severe case of NIH. The biggest problems in Android come from Google themselves.
Re:interesting (Score:5, Insightful)
It's not a severe case a of NIH. It's a severe case of GPL. This is just so they can move all the Android devices to Fuchsia (under permissive licenses), and then slam the door shut by requiring things for new Fuchsia devices once the whole ecosystem has moved over. It's an evolution of what they started to do with GApps.
Re: (Score:2)
Re: (Score:3)
Wasn't the BSD licence there 20 years earlier?
Re: (Score:3)
This is just so they can move all the Android devices to Fuchsia (under permissive licenses), and then slam the door shut by requiring things for new Fuchsia devices once the whole ecosystem has moved over.
Care to make a wager on that? I've got $10K that says you're wrong.
Re: (Score:2)
I will tell you the problem with Android bugs is not in the kernel.
Go look at the monthly Android security bulletins. It's a rare month that does not have a serious kernel vulnerability. The kernel is the biggest single source of security problems in Android. The Android security team badly wants to replace Linux.
Re: interesting (Score:2)
Re: (Score:2)
QNX [wikipedia.org]
Re: (Score:2)
Re: interesting (Score:2)
Re: (Score:2)
As I understand it, Apple was compelled to violate the basics of microkernels at many points, [...]
You understand wrong, but you're not alone. Apple broke the rules of 1990s microkernel fundamentalism, which are not the same as "basics of microkernels".
Re: (Score:2)
latency for process switching
Has this been a problem for decades on user devices?
Re: (Score:2)
On x86, yes. That's why user space drivers suck for things with frequent calls.
Re: (Score:2)
IIRC, this issue was pretty much fixed since the advent of PCID. Also, it was never as much of an issue on ARM.
Re:interesting (Score:4, Interesting)
Intel has 4096 process ID's now, so that's a lot of stuff in kernel space which could get it's own process space. AMD has address space ID's, but those are meant for virtualization, don't know if they could be abused for microkernel isolation. ARM has 16 domain IDs.
The popular ISAs all allow more than the old kernel/user space division now. It's time to move on.
Re:interesting (Score:4, Informative)
The early microkernels had problems, but a 2nd generation of 'L4' kernels, pioneered by Jochen Liedtke (who died an untimely death at age 48) seems to have gotten around that. From the wikipedia article on L4 microkernel family:
Re: interesting (Score:3)
Spring (https://en.m.wikipedia.org/wiki/Spring_(operating_system)?wprov=sfti1 ) beat many of the performance issues. Chorus too, but with different solutions. Linux is not the beginning nor the end of OS development. Kudos to Google management for making the investment
Re:interesting (Score:5, Interesting)
When I first started reading the code to Fuschia, I was going line by line asking myself "Haven't we already made this mistake before?". It was like one major compilation of "I took an OS course based on Tananbaum's book and decided just to copy every mistake we never learned from". And in the end we have a brand spanking new 30 year old operating system.
Ok, I'm being harsh and it's only partially fair. Let me start with your issues.
It's not necessary to sort out the issues with latency and message passing. They are making a real-time (or near real-time) operating system which in its own right already suggests that they're willing to sacrifice performance in favor of deterministic time. Telephones always benefit from real-time kernels in the sense that it allows dropping overall transistor and component count. Every telephone which ever boasted 4 day batteries ran real-time operating systems and it was generally a good idea.
Secondly, there's been a pretty huge move in Firefox and Chrome to optimize their shared memory systems to reduce or eliminate hardware locks by marshalling the memory reads and writes. Add to that that almost all modern development paradigms are asynchronous programming... unless you're stuck with some shitty language like C or C++, and most of the switch and latency issues are irrelevant. This is because you can keep multiple cores spinning more or less non-stop without much concern for kernel level inter-thread synchronization. Take it a few steps further and expose things like video hardware access directly to individual applications that would operate their own compositors based on a GPU context and apply shaders to support windowing type tasks... then it's going to be quite impressive and the locks should be a lot less relevant.
From that perspective, I don't see a good solution to the audio problem as I've never seen a sound card which would support the principle of shared resources. I don't think it would be even mildly difficult to design such a device though. The only real issue is that if mixing is moved entirely to hardware, then depending on the scenario, it would be necessary to have at least quite a few relatively long DSP pipelines with support for everything from PCM scaling to filtering. There's the other problem which is that protection faults to trigger interrupts could be an issue unless there's some other creative means of signalling user mode code of buffer states without polling. Audio is relatively unforgiving of buffer starvation.
So, let's start on my pet peeves.
Google's been working on this for some time and they still don't have a system in place for supporting proper languages. C and C++ are nifty for the microkernel itself. But even then, they should have considered Rust or rolling their own language. This world has more than enough shitty C based kernels like Linux and BSD. If you want to search the CVEs and see what percentage of them would never have been an issue if the same code was written in a real programming language, be my guest, but I'm still sitting on WAY TOO MANY unreported critical security holes in things like drivers from VMware, drivers from Cisco, OpenVPN certificate handling code, etc... I absolutely hate looking at C or C++ code because every time I do, unless it's painfully static in nature, it's generally riddled with code injection issues, etc...
And yes, I've been watching Magenta/Fuschia evolve since the first day and I follow the commit logs. It's better than TV. It's like "We have a huge number of 22 year old super hot-shot coders who really kick ass. Look at this great operating system kernel" and it looks like some bastard high school or university project written by people who have little or no concept of history.
Linux is good for many things. It's amazing for many reasons. Linus did an amazing job making it and it's a force of natur
Re: (Score:2)
Nah, there's little content in what you've said. Real programming languages? I'm going to guess that your real programming languages will keep changing over time to follow the current trend. When producing something long lived like an OS, you want to use established technologies where you know the implications and shortcomings, so something like C is a good place to start.
Re:interesting (Score:4, Interesting)
This world has more than enough shitty C based kernels like Linux and BSD. If you want to search the CVEs and see what percentage of them would never have been an issue if the same code was written in a real programming language
This is a very outdated security model, one which any really secure OS has abandoned long ago. Security by eliminating all bugs is just deluding yourself into thinking that's even possible. Relying on a "safe" language to do it for you is even more foolish.
In fact that appears to be why Google is developing this OS. It's designed to be secure, in a way that building sandboxes on top of Linux or Windows can't be. The microkernel is necessary for this.
This security model is proven to work. It's how all modern operating systems try to implement security, but it's tacked on later rather than designed in from the kernel up.
Re:interesting (Score:4, Informative)
The problem with microkernel performance is not due to latency for process switching and message passing.
The problem is the synchronization between different parts. Imagine for instance a multi-threaded filesystem. A filesystem as whole has a certain state. That state describes all the files and directories, file sizes and contents. Now imagine that one of the threads makes a change to the state. The problem is how to get that state update to all the other threads with a minimum of a delay.
In a monolithic kernel, the problem is solved by getting a lock, update the state, and releasing the lock. It's a very simple and efficient operation.
In a microkernel, you need to send messages around. You can optimize the message passing itself, but you'll still have the problem that the receiving thread is doing other things, and only handles the messages at certain points. While it is doing those other things, it's working with an outdated version of the state. Basically you're getting into the design of distributed filesystems/computing, and this is a very hairy subject. The complexity of the problem is much larger than just sticking to simple locking.
The traditional solution is to keep the filesystem (and similar parts of the OS) in a single thread. This may be a viable solution on some platforms (perhaps a phone or tablet), but it will quickly run into scalability problems on a large, general purpose computer.
Re: (Score:3, Insightful)
Did you come here to be an ass?
You do realize most microkernels suffer from those 2 issues. It will be interesting what they do to work around it. You know maybe advance computer science forward a bit? You know by studying it. Even Apples kernel uses bits of ye-ol MACH. Which is a derivative of that. They got around it by putting parts of the user process in kernel space. So not a 'pure' implementation as it were. And yes I may know a bit more about it than you assume.
Re: (Score:2)
As for the license, I believe it's actually more open than Linux.
Re:interesting (Score:5, Informative)
Android is far away from Linux, but it still has the Linux kernel at its core. I recently wrote an app that uses Linux ioctls to talk to a USB device from native code in order to achieve minimal latency. Sure, I have to initially get things going from Java to obtain permissions in Android, but once I've got the file descriptor for the USB device I want to talk to, I'm off to the races.
Re: interesting (Score:2)
Re: interesting (Score:4, Insightful)
Android is a java vm running on a linux operating system. And works.
Fuchsia is googles attempt at writing its own operating system, but like most every bit of software i have ever seen google write, it doesn't actually work.
Re: (Score:2)
It's one of the steps toward that goal. By eliminating the Linux kernel and using only stuff they invented at Google, they can later pull the rug out from under open source software by simply changing the licensing terms to what is now entirely THEIR software.
At the moment, with a Linux kernel underpinning the Android ecosystem, it's impossible for them to completely close the door on open source because plenty of outside Linux developers aren't going to go for that. Get rid of the Linux kernel though and t
Re: interesting (Score:3)
eh, all android userspace is open source, its how we have lineageOS. They have to, its covered under the gpl. The only bits that aren't OS are google apps like the play store, gmail and google maps, which run on any old jvm.
Comment removed (Score:3, Insightful)
The should have called is FINL (Score:2)
FINL is not Linux.
Even better FINAL.
FINAL is not a Linux
Re: (Score:2)
Google is young enough not to remember the demise of the Yggdrasil Linux.
Re: Meanwhile I stick to iOS and Mac OS. (Score:3)
Re: (Score:3)
> Mac OS is certified UNIX dumbass.
MacOS deviates from other Unixen so badly at anything but the lowest level that a MacOS user would find the differences an intolerable level of consistency.
They annoy AIX admins too.
Re: (Score:2)
Not sure about Real Unix (I've only played with the BSDs a little as CLI-only vms) but the differences between OS X and Linux when you hit the command line are pretty interesting - and annoying. Things like "user preference directories for Firefox and VirtualBox and ... are possibly in 3 different places, with no consistency". My Linux workstation died last December, I grabbed a nice older iMac (mid-2011) with 16gb ram and tried using OS X for 2 weeks, using my normal applications since they are all cross
Fuchsia? (Score:3, Insightful)
Um, no. Never heard of it.
Comment removed (Score:5, Funny)
Re: (Score:3)
Translation (Score:2, Troll)
Fuchsia is not Linux
Translation: Fuchsia is Linux. We took Linux and hacked away at it to make Fuchsia. Because Oracle won in court recently, we're being a bit more careful at covering our tracks this time.
Re: (Score:2)
Re: (Score:3)
Nope, Fuchsia is a microkernel inspired by Spring, seL4 and others. The low-level APIs are very different from Linux, as is the structure of the OS. It is able to run the Android Runtime, and can support a POSIX compatibility layer (though that's not what it's designed for).
That said, recent Android's Project Treble moves a load of device drivers out of the Linux kernel and into userspace, which would make it much easier to provide versions that work with both Linux and Fuchsia.
Boots quicker (Score:2)
Google is just asking for it (Score:5, Funny)
Re: (Score:2)
God shall smite thee! And thou shalt be smitten!
Re:Google is just asking for it (Score:4, Funny)
Re: (Score:3)
Naming their manuscript "The Book". I mean God is merciful but taking the same name as His manuscript just might be smiteworthy.
Well, maybe there are a lot of hinduists, budhists and Confucionists working there that do not care to call that "the Book"...
May I sugest calling it the Cathiloic Orange Bible, or better yet, the Catholic Fuschia Bible to avoid any posibility of "Smitening"? ;-)
Re: (Score:3)
I meant this:
https://en.wikipedia.org/wiki/... [wikipedia.org]
Re: (Score:2)
I figured it was traditional. Many Unix based operating systems have a electronic book as their primary reference guide.
Fuchsia Is Not Linux (Score:5, Funny)
...and that's FINL!
Fuchsia kernel (Zircon) is a lot like Windows (Score:2, Informative)
Zircon has a unified system to manage the lifetime of, and control access to, all kernel objects. It feels very much like the Windows kernel. The way Zircon uses handles, and the zx_object_wait_one() and zx_object_wait_many() functions, really show the Windows influence. I personally think this is a Good Thing -- my disagreements with Windows lie mostly in user mode -- but YMMV.
Just to be clear... I'm not saying Zircon is a Windows clone -- just that I see clear influence from Windows.
Re: (Score:3)
FWIW, I mostly agree. NTOSKRNL is very well-designed kernel by 1990 standards, and it still mostly holds up today. The lack of a unified event system, for example (e.g. wait on a socket and a condvar), is one of the outstanding issues in Linux. (For completeness, FreeBSD's kqueue almost does the job, and libevent makes things a bit less painful.)
The main problem with Windows NT is not the kernel design, it's almost everything else.
Re:Fuchsia kernel (Zircon) is a lot like Windows (Score:5, Insightful)
David Cutler likely didn't have to "steal" anything. It was already in his head. All he had to do was just spit it out again.
David Cutler stole David Cutler.
Now there are 3 capability systems, in the works.. (Score:4, Funny)
So, this can join GNU Hurd and Genode in the queue of things that we all need, but nobody (else) knows it yet. I look forward to running on of these, some day, so I can ditch the virus scanners, and surf the web in perfect safety... downloading and running whatever I want without worry.
Re: (Score:2)
If you read the white papers on HURD architecture, they're quite clear that we don't need it, and everybody knows it already. ;)
Patent minefield (Score:2)
When asked, Richard Stallman had this to say: (Score:4, Funny)
"I really must insist you call it GNUschia."
So many possible puns (Score:2)
I think I'll go with microkernels are the fuchsia.
Re: (Score:2)
Licensing (Score:2)
The question is: why make such an effort when Linux is already there and can be modified to your needs.
One reason may be, that there is something you want to do fundamentally different, so it's easier to start a new project than change the old one to your needs.
Another thing may be that they want to get rid of (L)GPL-Licensed parts in their OS, and that may well be the more important motive here.
See here how the android website argues for other licenses than LGPL for User space apps:
https://source.android.c [android.com]
Re: (Score:2)
Re: (Score:3, Funny)
The villagers quaked, dropped their tools and ran for the safety of the caves in the hills, for that most feared of creatures, that most fearsome and angry of bearded protean gods, Richard Stallman, was stirring.
Re: (Score:3)
> ...what need is there ever for Linux? Just use UNIX, right?
I tried back in the day. The commercial Unix distributions didn't support commodity hardware. I would have paid the Iron price for them too. I drew the line at rebuilding my PC with unnecessarily expensive parts.
Re:Will it (finally) prioritise the user ? (Score:5, Insightful)
Well, you're not really asking that the system never have priority over the user. You're asking that your interactive task have priority over everything else. The system is responsible for reading what you type on the keyboard, for example, so in that case the system should have a very high priority so that it can service your interactive task.
I suspect that what is bothering you is a process that is blocked on I/O, or your computer is starved for resources and swapping (which means everything gets blocked on I/O).
Ultimately this comes down to the system attempting to keep all of the promises it's already made to you. Most of the time these promises are buffered writes which it has in RAM, and is pushing to your really slow USB drive or SD card as fast as it can. You interrupt it, but this does not interrupt the promises already made.
Ultimately the fix is adding more expensive hardware, like a disk that won't make you wait.
Re: (Score:2)
Well, you're not really asking that the system never have priority over the user. You're asking that your interactive task have priority over everything else. The system is responsible for reading what you type on the keyboard, for example, so in that case the system should have a very high priority so that it can service your interactive task.
If only it was so simple, but in fact it's far worse than this. Not only does the OP want the interactive task to have priority to all possible resources over everything else, but that this priority inherits from this task to every task that is blocking it, including those access over all possible inter-task-communication methods. At the very minimum, it means that all of those IPC mechanisms need to be 'priority aware' and the kernel needs to arbitrate this correctly. It also means that all tasks must migr
Re: (Score:3)
Re: (Score:3)
Re: Will it (finally) prioritise the user ? (Score:2)
Re: (Score:2, Interesting)
CS 101. You are referring to deadly embraces and wait/stall times queuing depth.
Interrupt handling is a complex thing.
IBM has already mapped all the considerations -thats why ZOS is reliable.
CPU Failure
Power fail
Memory Fail
Quiesce hardware
VM semaphores
SLIP trace
We are still waiting for toy operating systems and garden variety PC chps to catch up to DEC rabbits or VM/CMS,
Re: (Score:3)
Y U argue with Bruce Perens?
I'm amazed that he finds time to waste on /. anymore. Thanks for chiming in Bruce!
Re: Will it (finally) prioritise the user ? (Score:3)
Re: (Score:2)
kill -9 pid
Simple.
Or if it was really you that started it,
kill -9 %1
Get you's' a *nix!
Re: (Score:2)
Re: (Score:3)
Re: (Score:2)
https://github.com/fuchsia-mir... [github.com]
It's an MIT based open source license
Re: (Score:2)
Re: (Score:3)
It wasn't Linux. It was the Java code surrounding it.