systemd in Exherbo – what’s happened so far…

It has been quite a while since I last wrote something about my work on systemd in Exherbo, so here’s an update:

What has been accomplished so far:

  • The Exherbo patches are done. Do NOT try to submit them upstream yet, though. I’ll take care of that when the time is ripe.
  • Lots of services are done.
  • You can boot and run most systems using systemd now.
  • I’ve built new amd64 and x86 stages without any init system so you can start out without the baselayout-1/sysvinit cruft.
  • The installation guide has been updated.

Every systemd service is implemented natively and we’re not using anything from baselayout-1 or sysvinit anymore. Instead, all the important stuff has been moved to skeleton-filesystem-layout. systemd’s dependencies have been updated accordingly.

Thus, for people using systemd, baselayout-1 and sysvinit are now obsolete. YAY!

What still needs to be done:

  • Improve existing service definitions for systemd.
  • Create socket definitions for several of the existing service definitions. (And new ones, of course.)
  • Create systemd service files for missing services.

Rules for new service files:

  • Please make sure they’re implemented natively. I won’t accept non-native service files unless you can convince me there’s definitely no other solution.
  • If you convinced me, scripts go to /usr/${LIBDIR}/systemd.
  • EnvironmentFiles (configuration) go to /etc/conf.d and end in .conf. We do NOT create a configuration file for every single service but create (grep-able) logical units, e. g. now-obsolete font@.service and keymap@.service used to use console.conf).
  • You can reference environment variables from configuration files in service. If you have to quote the values in the configuration file, you need to use $FOO; if you don’t quote them (preferred), you use ${FOO}. This is probably a bug (and known to upstream) but for now that’s how it is.
  • Services and their (potentially) accompanying files must not collide with baselayout-1.

Requirements:

  • You have to run Linux kernel >=2.6.36-rc1 (I’m using 2.6.36-rc6; latest NVidia-Drivers work fine and there are patches for the VMWare modules available.).

How to get started with systemd:

Read this.

Conclusion:

Since both systemd and its exheres have now reached an acceptable degree of stability, I don’t intend on breaking things anymore as I’ve done over the last months from time to time.

In fact, systemd is so usable these days, I’m writing this on a systemd-initialised system! This means as well that I can live without baselayout-1 and sysvinit. YAY! πŸ™‚

I am and have been working on quite a few F/OSS projects:
  • Exherbo (Nick: Philantrop)
  • Gentoo (Nick: Philantrop)
  • Calibre plugin iOS reader applications
  • Calibre plugin Marvin XD
  • chroot-manager
  • stuff on github
  • Lots of other projects
  • If you like my work, feel free to donate. πŸ™‚

    systemd in Exherbo – Rules of Engagement

    As you may have noticed, I’ve recently added systemd to ::philantrop for use in Exherbo. I’m writing this to

    • warn you that I will break systemd (and consequently your boot process) until further notice recklessly, repeatedly and without prior warning to anyone
    • make clear what I intend to do with systemd in Exherbo
    • make a plan for myself.

    What I want to do first is get a feeling for systemd and see if it might have the potential to replace baselayout-1 (bl-1) and, at least for myself, be used instead of the init-system-that-is-not-to-be. πŸ˜‰

    As I really want to replace bl-1, I’m not going to go the Gentoo way of simply adding a handful of pseudo-units that essentially just call the openrc init scripts. If you want that, you’re on your own and I won’t accept patches that do that. Instead, I’m aiming for:

    • a full native set of systemd units not tainted by anything else
    • a minimal set of non-native configuration files (what we currently have in /etc/conf.d; I don’t think it will be possible to avoid them completely but I will if I can)
    • staying as near to upstream as possible and I’ll try to submit my patches upstream even though the DISTRO_PORTING instructions don’t exactly make inclusion seem likely
    • the units included in the systemd package will at most get you to some kind of login (either graphical or console)
    • all additional units for services like sshd should eventually be added to their respective packages, possibly using a “systemd” option.

    The process to make systemd really usable in Exherbo will be a slow one. One that I expect to take till autumn this year because:

    • I’m really busy at work,
    • this summer seems to become a damn hot one again and I spend quite some time after work in our pool,
    • I’ll be on holidays in France for most of July.

    The steps I intend to take:

    • finalise the Exherbo patches for systemd (90% done, ETA: Mid June)
    • create and enhance a basic set of units for booting (5% done)
    • create units for other services

    How you can help:

    • Remind me of the stuff I’ve forgotten due to a power outage here. πŸ™‚
    • Make yourself acquainted with systemd units.
    • Once I’ve pushed the Exherbo patches, test systemd and
    • submit patches for the missing units. πŸ™‚
    • Leave comments here or on the dev mailinglist so that I can consider your input, comments and concerns.
    I am and have been working on quite a few F/OSS projects:
  • Exherbo (Nick: Philantrop)
  • Gentoo (Nick: Philantrop)
  • Calibre plugin iOS reader applications
  • Calibre plugin Marvin XD
  • chroot-manager
  • stuff on github
  • Lots of other projects
  • If you like my work, feel free to donate. πŸ™‚

    Exherbo – what we’re good at, what we should improve

    Exherbo has developed nicely since we went public about it two years ago and even though we haven’t yet accomplished all of our major goals yet, I think we’re doing well. In this post, I’d like to comment on a few things that we’ve accomplished, some we’re still working on and some which we yet have to deal with. This is, of course, just my personal point of view and not necessarily shared by any other Exherbo developer.

    I’m writing this in the hope that some of you might want to help with the open issues and to remind myself of what we did and what we have yet to do. πŸ™‚

    Distributed development

    I really like how we do distributed development: Our contributors just add their git format-patch to our patch-tracking bot hacchi, we’ll review the patch and if it meets our quality standards, we can just apply it locally and push it. If the patch needs improvements, we point those out to the submitter. Like that, we’re not only getting quality exheres but we help our contributors to learn good practices (which often can be applied to non-Exherbo shell scripting as well). Not only do Exherbo core devs review such patches but even other contributors do regularly. Our peer-reviewing practices are certainly one of our strong points.

    There’s one issue with this, though: Peer-reviews take time and there are usually only a handful of Exherbo core devs who take care of such patches. This we certainly could improve at. I’d love to see all of us with push access to the official repositories to regularly check the patches on hacchi and work on them. This is what I believe to be part of our responsibility to our contributors.

    Multi-lib / multibuild / multi-ABI

    We don’t yet have a fully integrated mutlibuild system. We’re working on a system for 64-bit/32-bit multibuild but it’s in its own branches and it is currently being revamped by Saleem “compnerd” Abdulrasool. This could benefit from getting more attention. Asking those of us to work on multibuild for obscure arches like MIPS is fine but won’t get anything done. If you care, please help us actively with it. There’s #exherbo-multibuild, btw.

    RepositoryRepository

    Adding new repositories is not as easy as it could/should be. What some of us envisioned is the ability to query, install, uninstall and upgrade repositories just like any exheres. As far as I know, nobody is working on it at the moment – maybe this your chance for eternal glory? πŸ˜‰

    Init system / Genesis

    I’ve been looking into many init systems over the years and specifically again lately. This was mostly due to the fact that Genesis, Exherbo’s own init system, was very much delayed. Let’s face it – most init systems that were/are not SysV-compatible have failed (some don’t know that yet, though πŸ˜‰ ) and, to be honest, I wouldn’t bet on Genesis to succeed. Thus, while we have baselayout-1 (among other options) at the moment, I’ve been looking into Upstart again. I became curious about it again when I saw that several major distributions are moving to use it and so I set up a virtual machine, switched it to using Upstart and experimented a bit with it.

    Things are looking good and so I’m probably going to create native Upstart jobs soon.

    Writing a Developer’s Manual

    I still want to create a Developer’s Manual as well. I like Gentoo’s DevManual and I might use that as a starting point. Or maybe not. Not sure yet but if anyone has a good idea about it…

    For more great ideas to work on, see http://dev.exherbo.org/~kloeri/gsoc2010/ideas.html.

    I am and have been working on quite a few F/OSS projects:
  • Exherbo (Nick: Philantrop)
  • Gentoo (Nick: Philantrop)
  • Calibre plugin iOS reader applications
  • Calibre plugin Marvin XD
  • chroot-manager
  • stuff on github
  • Lots of other projects
  • If you like my work, feel free to donate. πŸ™‚

    Gentoo packs it up – joins Exherbo

    In an unexpected move, the Gentoo trustees have contacted us, Exherbo, recently with a suggestion. Disappointed with the intense internal quarreling among Gentoo developers (which Gentoo has been famous for anyway), the general inability of the current Gentoo council to provide the necessary vision and strategic governance for Gentoo as a whole as well as the lack of implementation of newer EAPIs in Portage, the trustees deemed it necessary to step in.

    Gentoo Foundation, Inc.’s president, Roy “NeddySeagoon” Bamford being a regular in our IRC channel #exherbo on Freenode discussed the current state of Gentoo with his most trusted advisors, Denis “Calchan” Dupeyron (already an active Exherbo contributor) and Thomas “tanderson” Anderson (Exherbo dev). All three of them had first-hand experience with Exherbo and the way we work – distributedly, with strong peer-review and almost every single user contributing to Exherbo.

    This effectiveness, the overall quality of Exherbo as well as the fast-paced development of both our exheres-0 format, the amazing speed of Paludis development (Paludis being Exherbo’s package manager) and, last but not least, Ciaran McCreesh’s latest information about the move to cave and egress, a Portage-UI-compatible Paludis client, convinced them to boldly go on with their plan to strengthen Gentoo: To join forces with Exherbo.

    Of course, the transition of both resources and developers will be a slow process. While the merger with Gentoo is to become effective as of today, April 1st 2010, the announcement on the Gentoo website might lag a bit behind as Gentoo’s PR project is unfortunately somewhat overworked. It should be noted as well that not all Gentoo developers are likely to make the transition. Some have, let’s say, rather strong feelings about Exherbo, some feel they’re not up to a fast-growing, fast-paced modern Linux distribution and some might simply not notice before next year.

    I’m sure there will be some friction yet to overcome yet but, all in all, I think Gentoo does the best thing possible – moving in with us, under the ultimate supervision of Bryan “kloeri” Østergaard (who once served Gentoo as head of Developer Relations and, thus, is well-suited for the job) as the “benevolent dictator” Daniel Robbins once was, will make good old Gentoo find back its way to former glory albeit under a new name – but, as the saying goes, what’s in a name? (Speaking of which: The name “Gentoo” is a trademark of Gentoo Foundation, Inc. until that is changed, too, and this site is not part of the Gentoo project and is not directed or managed by Gentoo Foundation, Inc.)

    I am and have been working on quite a few F/OSS projects:
  • Exherbo (Nick: Philantrop)
  • Gentoo (Nick: Philantrop)
  • Calibre plugin iOS reader applications
  • Calibre plugin Marvin XD
  • chroot-manager
  • stuff on github
  • Lots of other projects
  • If you like my work, feel free to donate. πŸ™‚

    Recognition

    What keeps me doing things in my life are primarily two factors: Money and recognition. Not necessarily in that order.

    In my job, I’m being paid to do what I do but I couldn’t ever be satisfied with just that. What really thrills me is being recognised for the professional I am. Receiving an email from a customer that simply said “Thank you. You’re one of the few persons I can always rely on.” made my day. I don’t get that from receiving my pay-cheque.

    In my private life, I’m mostly a father, a husband and, last but not least, a guy who loves to work on Linux. A machine that just works is a boring machine. Thus, I really love working on Exherbo.

    Working on Exherbo allows me to do and try everything, make things work exactly the way I want them to, give back to the FOSS community – and being recognised for the professional I am. πŸ™‚

    Recognition, thus, is very important for me. Now,Β Bryan “kloeri” Østergaard, has decided to remove Exherbo’s “Developers” page which lists all the core developers in favour of a simple list of all contributors ever.

    This in itself is fine with me. What I really don’t like about it is the fact, that those of us who do most of the work on Exherbo will be buried somewhere in that rather huge list (after all, Exherbo currently has about 95 contributors).

    I have Exherbo in my CV as well but am I supposed to send recruiters to a list of everyone and their dog and find me in there with no indication of my level of involvement?

    As much of a trifle this may look, it annoys me and so I’m now using gitstats to create statistics and a list of authors myself. It’s not hosted on exherbo.org (linked from our “Resources” page, though) but on my own server:

    http://www.mailstation.de/egitstats/

    I’m going to add a few more graphs and stuff over time (like changes per package directory, category, etc.).

    If you have any suggestions (preferredly upstream-able ones), please let me know.

    I am and have been working on quite a few F/OSS projects:
  • Exherbo (Nick: Philantrop)
  • Gentoo (Nick: Philantrop)
  • Calibre plugin iOS reader applications
  • Calibre plugin Marvin XD
  • chroot-manager
  • stuff on github
  • Lots of other projects
  • If you like my work, feel free to donate. πŸ™‚