top | item 42366916

The Shepherd 1.0.0 released: the init system written in Scheme

19 points| civodul | 1 year ago |gnu.org

3 comments

order

ryukafalz|1 year ago

Shepherd is one of those things that put me off a little bit when I first started using Guix (just because I wasn't used to it yet), but I've really grown to appreciate it.

The other init systems I'm most familiar with are systemd and sysvinit. Systemd is nice and easy from a user's perspective, but it's not all that flexible if you want to do something systemd doesn't already support. Sysvinit on the other hand is minimal and flexible, but I have no desire to write a classic init script at all.

Shepherd is somewhere in between. It's extremely flexible (for example Guix added a containerization feature to use in Shepherd services, and due to Shepherd's design that's just a module within Guix; it doesn't have to go in upstream Shepherd) and yet writing services is pretty simple.

civodul|1 year ago

(Author here.) I'm biased but I do think that the blending between Guix and Shepherd is unique and supports a level of integration beyond what's usually achieved in distros.

The services-in-containers extension you mention is a good example of that: it is implemented on the distro side (in Guix) without any modification to the Shepherd itself. The good thing is that the distro is in a good position to determine how to set up that container since it knows about the package being run, its configuration, and so on.

nxobject|1 year ago

As an aside, it's pleasant to see how the projects like Shepherd that fit in the umbrella Guix project are approximating the original idea of a GNU OS based on a *nix with innovations thrown in.