Live data from Hacker News

Comparing Fuchsia components and Linux containers [video]

fosdem.org

151–160 of 191 posts

Re: Comparing Fuchsia components and Linux containers [video]

#151
post #97

Earlier quoted context omitted.

> there’s no way you can restrict mysubdomain.foo.com/phonehome vs mysubdomain.foo.com/normal Of course you can! With capabilities you can tell a program: "if you want to communicate with the external world here's the only function you can use : `void postToMySubDomainSlashWhatever(char* payload, size_t size)`

Ok great. Now I put the phone home stuff within payload. It’s a game of whackamole you’re bound to lose. Like I said - if I control both endpoints, it’s going to be very hard for you to simultaneously give me a pipe connecting them while controlling the set of messages I’m allowed to send.

Sure, like you said, having control of the endpoints you could communicate anything if you can transmit bits. That’s unavoidable.

But don’t lose the perspective on the benefits of such an architecture. Considering the networking access example:

* If your process gets compromised it won’t be able to access the attacker’s C&C server. It wouldn’t have access to any other stuff that the process didn’t already have for that matter.

* You wouldn’t be able to use http. It would be https only.

* Your process wouldn’t need a lib to talk HTTP. It would just need to talk the IPC protocol (whose wire-format and related details are standardized in Fuchsia which allows for the binding code for (de)serialization to be auto-generated).

* You wouldn’t be able (for better or worse) to mess with SSL certificates, proxies, DNS resolution, etc.

Consider another example -- file access. Say your app wants to access a photo. It doesn’t have access to the filesystem nor to the user’s folders -- it only has access to, say, an “app framework services” capability (eg. services from an UI-capable OS like Android) whose one of the “sub-capabilities” is requesting a photo. When your app does that request the ‘system’ opens a file selection GUI for the user to pick a photo. Note that the photo picker GUI is running on a different process and your app doesn’t know and can’t access anything about it. All that matters is that your app will receive an opened file handle in the end. The opened file handle is a capability as well. The file handle would be ready-only and wouldn't need to actually exist in any file system. In this example, before handing the file descriptor to your app, the “system” (or whatever process is implementing the ‘photo-picking’ capability) could process the image to remove metadata, blur faces, offer the user to edit the image (and maybe actually save it to a persistent store), log that access for reviewing later, etc.

(We already have something kinda similar in Android, but the implementation is not from first principles, so it’s very complex and prone to issues (requires an obviously non-POSIX Android userspace using lots of security features from the Linux kernel to sort of implement a microkernel/services like architecture)).

EDIT: adding the detail that Fuchsia's IPC lang ecosystem has autogen features due to its standardization.

Re: Comparing Fuchsia components and Linux containers [video]

#152
post #142

Earlier quoted context omitted.

Fuchsia's UI layers are roughly equivalent to Wayland. There is a compositor, but no special alignment to any particular UI toolkit like flutter. Fuchsia is not itself a consumer product, it's an open source project meant to be used to build a product. There is no application runtime for app developers to care about or UI for an end user to see. It would be strange to talk about things like mesa or the Linux kernel t…

> Fuchsia is not itself a consumer product, it's an open source project meant to be used to build a product. There is no application runtime for app developers to care about or UI for an end user to see. It would be strange to talk about things like mesa or the Linux kernel the way you are talking about fuchsia. The difference is that those aren't entirely funded and developed by a single a for-profit entity that pre…

It just feels really cynical to make everything about motivations and incentives. There are plenty of great projects that Google has produced that provide great external value without an interesting internal plan beyond using it to make products better. Golang, flutter, bazel, Gerrit, etc. I understand there are also examples where it uses it with some other intentions, such as the case of tensorflow or kubernetes, but I'm not really sure why one would think fuchsia is closer to those than it is to the former set.

Re: Comparing Fuchsia components and Linux containers [video]

#153
post #61

Earlier quoted context omitted.

It is more moonshot to design an API while Linux devs are constantly pulling the rug under. Microkernels provide nice secure API boundaries and optimizations to reduce performance impact when crossing them on modern CPUs. The monolithic design forces you to stay in either user or kernel mode as much as possible to not lose performance. Adding the API and ABI incompatibility makes it near impossible to maintain. It wi…

You have to wonder why the Linux devs are "pulling the rug under"

They want to keep control. Same reason RMS opposed exposing GCC internals for non-free use.

Re: Comparing Fuchsia components and Linux containers [video]

#154

Earlier quoted context omitted.

Yeah the "was never meant to replace" here sounds exactly like the placation we got with wasm - "it's not meant to replace JavaScript" (it totally is).

> "it's not meant to replace JavaScript" The word meant is doing a lot of heavy lifting here. Meant - by who? The technology itself doesn’t want anything. Do some people want to use wasm instead of JavaScript for websites? Yes. Will JS ever be removed from web browsers? Probably not, no. Wasm isn’t a grand design with a destiny it’s “meant to” reach. It’s actually just some code written by a bunch of people trying to…

> Meant - by who? The technology itself doesn’t want anything.

The people who created the project and who are writing the code, obviously. This is clear from the context; you don't need to nitpick stuff like this.

> Wasm isn’t a grand design with a destiny it’s “meant to” reach.

Yes it is. The destiny is being able to create dynamic websites with languages other than Javascript. The first step was Asm.js which allowed compiling other languages to Javascript. Then we got WASM which compiles them to a binary format instead. But you still need some Javascript glue to interact with the DOM APIs. And now there are extensions in progress that will remove that requirement (GC, reference types etc).

> Rust was never meant to be a high performance systems language by its original creator.

Yeah citation needed. The very first compiler release already described it as "a strongly-typed systems programming language with a focus on memory safety and concurrency."

https://web.archive.org/web/20130728230358/https://mail.mozi...

Even before that the website described it as "a programming language for low-level, safe code."

https://web.archive.org/web/20110924054534/http://www.rust-l...

Re: Comparing Fuchsia components and Linux containers [video]

#155
post #48

Earlier quoted context omitted.

> A micro-kernel with a clearly defined device driver API would mean that Google could update the kernel and android version, while continuing to let old device drivers work without update. A monolithic kernel with a clearly defined device driver API would do the same thing. Linux is explicitly not that, of course. Maintaining backwards-compatibility in an API is a non-trivial amount of work regardless of whether the…

I would love to have an open source microkernel OS that works as well as Linux on modern hardware even if the API wasn't stable. I am making assumptions that you could have ZFS and secure boot at the same time without jumping through hoops, containerization without needing fictitious UIDs for every user, and other things of that nature. The monolithic kernel is very frustrating with some things.

The hoops that ZFS has to go through are twofold: licensing and unstable internal API. I don't see how a microkernel (on its own) fixes either of those things.

Re: Comparing Fuchsia components and Linux containers [video]

#156
post #99

Earlier quoted context omitted.

You got the high drama stories with the timelines re-arranged to fit the narrative :D Fuchsias underlying goals are to be a great platform for computing. This is distilled in its current incantation into a short tagline on fuchsia.dev: simple, secure, updatable, performant. The details of how when and where Fuchsia might fit / gets exercised are nuanced and far more often about other factors than those which make gre…

Look I understand the context here but if you're going to go around saying "a great platform for computing" it's not really telling me much about the project.

fuchsia.dev has literally hundreds of pages of detailed content, I’m not going to rewrite it all in an HN comment

Re: Comparing Fuchsia components and Linux containers [video]

#157
post #142

Earlier quoted context omitted.

> Fuchsia is not itself a consumer product, it's an open source project meant to be used to build a product. There is no application runtime for app developers to care about or UI for an end user to see. It would be strange to talk about things like mesa or the Linux kernel the way you are talking about fuchsia. The difference is that those aren't entirely funded and developed by a single a for-profit entity that pre…

It just feels really cynical to make everything about motivations and incentives. There are plenty of great projects that Google has produced that provide great external value without an interesting internal plan beyond using it to make products better. Golang, flutter, bazel, Gerrit, etc. I understand there are also examples where it uses it with some other intentions, such as the case of tensorflow or kubernetes, b…

It's certainly a bit cynical to view for-profit companies as being solely profit motivated, but I don't think it's _that_ cynical. To me, it almost seems a bit naive to assume that a company like Google would be doing something for purely altruistic motives in the absence of any evidence one way or another. I'm not a subscriber to Friedman's view that corporations are _required_ to maximize profits for their shareholders, but I do think that they all inevitably end up there in the absence of mitigating factors.

Re: Comparing Fuchsia components and Linux containers [video]

#158

Earlier quoted context omitted.

Thanks for the info. For those of us not familiar with it, what were the main motivations for building Fuchsia instead of just using Linux?

The goal is to make devices more controlled by google and less FOSS. The many GPL violations happening around drivers are telling.

Shipping toybox instead of busybox is even more telling of that exact mindset.

Re: Comparing Fuchsia components and Linux containers [video]

#159

Earlier quoted context omitted.

Thanks for the info. For those of us not familiar with it, what were the main motivations for building Fuchsia instead of just using Linux?

The reasons are pretty obvious IMO: 1. Control. It's pretty awkward if your main product depends on an open source community who might say "no" (or "fuck off you worthless imbecile") to half the things you want. You'll end up with a fork (they did!) which has serious downsides. 2. Stable driver ABI. 3. Modern security design. A microkernel, and Rust is used extensively.

[deleted]

Re: Comparing Fuchsia components and Linux containers [video]

#160

I haven’t watched this talk, but I worked on Fuchsia from the start (I’m no longer at Google) and want to clear up some common questions and misconceptions: 1. Fuchsia is a general-purpose operating system built to support Google’s consumer hardware. 2. It’s not designed to compete with or replace Android. Its goal is to replace Linux, which Android is built on. One big challenge it addresses is Linux’s driver proble…

Instead of a moonshot micro kernel, why didn't Google just build and maintain a new Linux driver API/ABI layer with backwards compatibility and security? Not an easy endeavor, but is it harder than Fuchsia?

Because they get the bonus of no GPL and owning the copyright as a bonus with Fuchsia.
Post reply on HN