4 ms·
Would appreciate anyone summarising the key differences here as I can't watch the video at the moment.
by thornjm 2y ago
Would appreciate anyone summarising the key differences here as I can't watch the video at the moment.
- warkdarrior 2y agoFrom the slide deck, it seems that Fuchsia components have the following characteristics, which make them different from Linux containers: * Capability-centric design * Single machine scope * Tree of sandboxes * Weaker inter-sandbox fault tolerance * Standardized IPC system * Model powers low-level OS features * More detailed inputs/outputs from sandbox * Configuration and building in separate files * Sandboxes can encapsulate other sandboxes
- jackpeterfletch 2y agoIs it similar to NixOS? Recent convert, would be interested to read a comparison to fuchsia from someone in the know of both. If it’s anywhere close Google might be sat on a huge opportunity to tread the same ground while solving the ergonomic issues that NixOS has. (I’ve never been more happy with a distro, but I’ll admit it took me months to crack)
- gryn 2y agoNixOs is built on Linux kernel, Fushia is built on a new (micro-ish) kernel called zircon, they are not interchangable. They are working on some components/layer to run things from Linux, but you would not expect all things built to work directly or as well as thing designed from the get-go for Fushia in mind.
- jackpeterfletch 2y agoThanks - I figure its step away in terms of target platform. I meant a little more in the way that software is packaged and run. My understanding is that theres a similar mechanism for storing and linking shared libraries that means multiple versions can go exist and be independently linked depending on the requirements of the calling package.
- __MatrixMan__ 2y agoIt seems like Fuchsia components have less that they can assume about their environment and require the caller to be more explicit about what the component can do ("capabilities"). So for instance a docker container might just decide--without the user's say-so--that it wants to write a debug log file to /foo/bar/baz and then it would be up to the user to go find that file if they care. By contrast a Fuchsia component would not by default have the capability to write anywhere, so the user would have to pass in a handle that says "write your logs to this place" if they wanted logs to exist at all. Linux folk are familiar with working with file descriptors--one just writes to stdout and leaves it to the caller to decide where that actually goes--so that was the example used but it seems like this sort of thing is done with other resources too. It looks like a design that limits the ways programs can be surprising because they're not capable of doing anything that they weren't explicitly asked to do. Like, (I'm extrapolating here) they couldn't phone home all sneaky like because the only way for them to be able to do that is for the caller to hand them a phone. It's got strong "dependency injection" vibes. I like it.
- vlovich123 2y agoSure, but it is allowed, at least as far as I understand, to phone home if it otherwise needs network access. In practice it’s really hard to prevent unauthorized semantic network access once you allow any network access. The main benefit is that kernel space is drastically smaller which means that the opportunity for a kernel-level exploit is minimal vs something like the Linux kernel that a single device exploit compromises your entire machine.
- bestorworse 2y agoThe joy of having a properly implemented capability system is that, well, you can create arbitrary capabilities. You don't need to give a process/component the “unrestricted network access capability” -- you could give it a capability to eg “have https access to this (sub)domain only” where the process wouldn't be able to change stuff like SSL certificates. EDIT: and to be clear, fuchsia implements capabilities very well. Like, apart from low-level stuff, all capabilities are created by normal processes/components. So all sorts of fine-grained accesses can be created without touching the kernel. Note that in fuchsia a process that creates/provides a capability has no control on where/to who that capability will be available -- that's up to the system configuration to decide.