GNU Shepherd 0.6.0
lists.gnu.org
lists.gnu.org
Also note that the info file format is independent from the GNU info viewer, that most people associate with, and there are other viewers for it, including pinfo and tkinfo (Tcl/Tk viewer) and some other help systems have support for it, like GNOME's and KDE's help viewers. And yes, there is also support for it on Emacs (which AFAIK is the only viewer with image support). FWIW personally i like using tkinfo.
Sure. Nothing against texinfo (a bit dated, but perfectly acceptable). My problem is with the ridiculous "info" documentation format for which no browser seems to be even remotely usable. The only one I can cope with is "pinfo", but then again I'm always lost at the stupid hierarchy of "nodes", and no way to do global search/next.
Note that info does allow for global search, if anything searching is one of its main strengths over a bunch of HTML files in a directory, and it even allows both for arbitrary text search and for index-based search (where documents can place invisible index markers mid-text and searching for the text of markers as keywords you jump to the exact text position).
Of course this relies on the info viewer to implement. In the default GNU info viewer the / key does a search in the current page only, Alt-/ does a search in the current page and any pages linked as subpages (so you can do a search across pages but only at the current node - e.g. if you are in a book about a programming language and you are in the reference section you can search the entire reference, but ignore any tutorials or guides that may be placed in sections adjacent to the reference), i does a search in the index (here the prompt can do entry completion for you by pressing tab) and jumps to the appropriate entry and finally I (shift+i) does a search in the index and displays the results in a generated node (page) with links to each target (you can search this generated node using the / too).
Tkinfo provides similar functionality although i do not have an installation at the moment available to ensure (i'm under Windows where i have GNU info via msys2 but not tkinfo). Being a GUI application it does provide a few niceties like displaying the index and search results in separate windows and you also can choose to open links in separate windows (no tab support though).
I haven't used pinfo much, although IIRC from the little i used it (mainly to see how an info file i was working on looked there) despite it colorfulness it was a bit limited compared to other viewers.
And there's my main problem. I do not want a hierarchical documentation, or anything to do with "pages". I want a single document with the whole documentation, where I can move and search normally, by myself.
There's an example in the docs which gives a good idea (https://www.gnu.org/software/shepherd/manual/shepherd.html#S...), but it helps to hear the experiences of people who use it in practice.
If so, what makes it different?
If not, what's it for?
I'd suspect that you with ease can programmatically interface with both of them using guile as well.
As a scheme fanboy I like the idea of being able to use a proper programming language (opinions may differ) for my startup scripts
Edit: read about how guix uses services here: https://www.gnu.org/software/guix/manual/en/html_node/Defini...
I don't know. I rather like the NixOS way, where a proper programming language generates the startup scripts (or, in that case, systemd units), but then those scripts are dumb and obvious. Many things are better when they're dumb and obvious.
Most shepherd service definitions are simple and stupid, but as always it is a matter of taste.
IMO this is usually the result of eg a Debian package that also ships sysvinit startup scripts, and thus they share some logic.
If it’s not that case I wonder why the cleanup can’t just be handled in the unit directly.
https://nixos.org/nixpkgs/manual/#sec-language-ruby
Trying to figure my way around installing ruby/python libraries just was too hard most of the time without a good amount of work that it wasn't worth it in the long run.
Guix has been on my radar to try and install and play with in-depth soon. If their installer will work with a VM without a days worth of research to work around any quirks I'm all in for checking it out.
https://www.gnu.org/software/guix/manual/en/html_node/Instal...
Sysvinit scripts showed us what happens when you give startup authors more power.
Even if you hate systemd’s politics/etc the actual units themselves are objectively better IMO because they’re declarative.
(make <service>
#:provides '(blahblah)
#:start (...)
#:stop (...)))
The difference is that start/stop must be guile procedures that starts or stops a command. I suspect there is a nice macro for just running a regular shell command, but I'm not sure.If you (the project) cant show a full example service definition to start something why would anyone bother going forward.
It's a pity the overall system is so inflexible and brittle. Well, that and the 'death by a thousand (theoretically independent but tightly coupled) systemd components'.
Shepherd service definitions also don’t appear to be declarative, and they’re written in guile, a language I can best sum up as someone’s “hold my beer” response when told Perl was too hard for causal users to understand.
Searching for examples of shepherd service definitions gives me one such example: the skeleton example without any details for “Apache”.
So sorry but no. Regardless of systemd’s issues those are not comparable alternatives.
I agree with this, but for different reasons. I have various machines, with various distros, using various init/daemon-managers, including a number of fairly complicated setups (multiple LUKS drives, ZFS, etc.). The systemd systems are invariably more burdensome to maintain, and it's nearly always systemd that's the issue.
> and they’re written in guile, a language I can best sum up as someone’s “hold my beer” response when told Perl was too hard for causal users to understand.
I agree that the current shepherd configuration itself seems more opaque than one would like, but to compare guile to perl in this fashion is ridiculous. Guile is a Scheme, which means it has consistent, simple syntax and is more easily understandable than C, much less perl.
It's GNU, others aren't.
There will be other well reasoned arguments in favour of Shepherd but it essentially boils down to the same reason Hurd (the kernel) is a thing when GNU/Linux is already widespread.
That all said, I don't see the harm in competing solutions. Better to have a choice rather than lock ins.
That's not to say Guix shouldn't be developed or that Shepherd is bad, it's just that I would definitely call Guix niche.
It replaces the init & service management features of systemd.