With the new version 17.05, the Genode project moves forward to the goal of becoming more attractive and approachable to a wider audience. On the one hand, the release promises to be a sustainable basis for longer-term projects. With a modern tool chain based on GCC 6.3, Qt 5.8, VirtualBox 5.2.11, and the framework’s finished API modernization, the foreseeable future will be free of disruptions for users. On the other hand, Genode introduced a new approach and tooling for package management to relieve users from low-level technicalities.
Modern operating systems are unthinkable without a package-management solution for installing and updating software. Until now, however, Genode’s work flows were primarily geared towards appliance-like systems that come in the shape of system images. Even though the Genode developers managed to build a day-to-day usable OS (called “Turmvilla”) for their own use on that basis, there is a natural limit of how scalable such systems can be. Even for the developers, installing and updating such a system is a burden. Instead up building and installing a new system image on each update, users universally expect to install software from ready-to-use packages, and to update and configure the system in parts instead of a whole.
The discussion of suitable package-management approaches for Genode reaches several years back. The first step in this direction were custom tools for managing and integrating 3rd-party source code with the framework. But there was no notion of pre-built and easy-to-install packages, nor even a tangible idea of what a package in the context of Genode should represent. During a long period of experimentation, the developers encountered and fell in love with the Nix package manager. This encounter was followed by porting work, mind-bending architectural discussions, and a series of prototype scenarios. However, while those prototypes were technically sophisticated and interesting playgrounds, they were also complicated. A real-world solution remained cloudy.
At one time, it became clear that the universal notions of “software packages” and the role of a package manager made things more complicated than they should be. After all, Nix is designed for Unix-like systems with its existing ecosystem of libraries, build tools, conventions, and methodologies. In contrast, Genode opens up unique opportunities for simplification thanks to its breath of scope that covers the entire software stack including the build system, tool chain, the ABI and API design, the inter-component protocols, the dynamic linker, the system configuration, and the execution runtime. By taking a step back and soul-searching for the actual problem to solve, a strikingly simple new approach emerged. It is undeniably inspired by the virtues of Nix. But it leverages Genode in ways that wouldn’t be possible with a ported version of Nix. For example, it facilitates Genode’s notion of library ABIs to largely decouple libraries from applications and thereby completely eliminates transitive build-time dependencies. Or as another example, by introducing sensible categories of packaged content, the need for a package description language disappeared.
Genode’s release 17.05 contains the new packaging tools. Even though they are still labeled as experimental, the release comes with several examples of modest system scenarios based on them. Other prominent news are a feature-complete version of VirtualBox 5 for the NOVA microkernel, the update of Qt to version 5.8, added support for the Nim programming language, a new tool chain based on GCC 6.3 including Ada support, new tools for monitoring network traffic and CPU load, greatly enhanced flexibility of the init component, and a brand new timeout API. All these topics are covered in detail by the release documentation.
ATM there is no Wikipedia article about Genode… weird huh? https://en.wikipedia.org/wiki/Genode_OS
I was thinking the same thing.
Unrelated, came here to see discussion of Nix, wasn’t disappointed. I really need to check out Genode soon.
That is because we decided not to write our own Wikipedia article, it would most likely sound like an advertisement to us. So maybe, some day, someone else will write one and we would be more than happy to add corrections/clarifications.
Personally, I appreciate your philosophy of modesty, but I think you should add the entry, for the following reasons:
1. No one is in a better position to do it properly
2. Now is probably the best time, since this release stabilizes things enough for the larger community to start playing around with it
@Pro-Competition: If you are up for it, send me an email ([email protected]), maybe we can do this together. It would be really cool to write this from an outside perspective.
Probably because it isn’t the most interesting of subjects…
Quite the contrary – Genode is one of the most interesting research OSes around.
Instead of rehashing the same ideas, they reassessed OS concepts from the ground up, which a special emphasis on trustworthiness, and have achieved impressive results.
If you have any interest in research OSes, you should read up on this one!
(Note: I have no connection to the project, except as an interested hobbyist.)
It’s not that it’s uninteresting: it’s that it’s inaccessible. If the download page would lead to a installer CD image or Virtualbox image more people would get excited (and perhaps involved)
That is probably true. (I have commented before that they should “toot their own horn” a little bit more than they do.)
I suspect they may have been holding back on “mass” publicity because the project has been evolving at a rapid pace, and it would have been a support headache to deal with a lot of users with things constantly breaking.
Interestingly, if you don’t mind installing a few build tools, they provide several example “scenarios” that you can easily build and run. (The build system is very clean, and there’s a how-to toward the beginning of the “Foundations” book.) I just take an empty VirtualBox VM, pop the resulting ISO file into it, and boot it up.
Now that things are stabilizing, the larger community should also begin creating demo ISOs.
Speaking of which, is there a Genode “community” group / website? I’m not aware of anything, except the developer mailing list.
There’s #genode on Freenode.
For those of us in the hobbyist community, this is probably the most important Genode release yet. Not necessarily because of the new features (although the package management is an important piece), but because it consolidates the recent architectural changes and stabilizes the APIs/ABIs. (And, in a display of how well this project is run, the “Foundations” book has been updated to reflect all of this.) This stabilization should remove (most of) the frustration of developing against a “moving target”.
After the previous release, I read through the “Foundations” and played around with the examples a little bit. I found the whole experience to be very smooth, but since the build tools were being reworked, I decided to wait for this release to dig further.
It looks like now is the time!