Live data from Hacker News

The Shepherd 1.0.0 released

guix.gnu.org

21–30 of 58 posts

Re: The Shepherd 1.0.0 released

#21

"give a man an inch and they'll take a mile" and what not, but, I wonder how hard this would be to port to Hoot, a web assembly/wasm-ified Guile Scheme. https://spritely.institute/hoot/ It would be neat to have some real management APIs for the things running on a page, to be able to manage long running processes & workers. A bit more niche than for general webapps, but systemgo comes to mind; a re-impl of some of sy…

> I wonder how hard this would be to port to Hoot

It would be interesting, though I don't know if it would make sense. In any case, the way to do it would be to extract all the code that does POSIX things into an abstraction layer. Shepherd is built on the Fibers async system which Hoot supports so that part shouldn't be an issue.

Re: The Shepherd 1.0.0 released

#22

"give a man an inch and they'll take a mile" and what not, but, I wonder how hard this would be to port to Hoot, a web assembly/wasm-ified Guile Scheme. https://spritely.institute/hoot/ It would be neat to have some real management APIs for the things running on a page, to be able to manage long running processes & workers. A bit more niche than for general webapps, but systemgo comes to mind; a re-impl of some of sy…

Amusingly enough, the main direction Shepherd is exploring right now is integrating Spritely Goblins (the folks that are also writing Hoot), so that it would have a distributed, capability-based process manager. I wouldn't say running Shepherd with Hoot is a direct goal of this, but it may fall out naturally from it.

Shepherd may actually work in Hoot right now -- I know the Spritely team were working on getting Guile's fibers library to work in WASM, and that's probably the biggest lift.

Re: The Shepherd 1.0.0 released

#23

"give a man an inch and they'll take a mile" and what not, but, I wonder how hard this would be to port to Hoot, a web assembly/wasm-ified Guile Scheme. https://spritely.institute/hoot/ It would be neat to have some real management APIs for the things running on a page, to be able to manage long running processes & workers. A bit more niche than for general webapps, but systemgo comes to mind; a re-impl of some of sy…

Amusingly enough, the main direction Shepherd is exploring right now is integrating Spritely Goblins (the folks that are also writing Hoot), so that it would have a distributed, capability-based process manager. I wouldn't say running Shepherd with Hoot is a direct goal of this, but it may fall out naturally from it. Shepherd may actually work in Hoot right now -- I know the Spritely team were working on getting Guil…

It may be possible to get Shepherd to work with Hoot eventually! I'm not sure what on earth it would mean though. What daemons would you manage in the browser? But it's indeed a fun idea!

Re: The Shepherd 1.0.0 released

#24

Shepherd is a wonderful little service manager. The project has been integrating the good features of systemd (socket activation, timers, etc.) while retaining the hackability of using a fully featured programming language for configuration. Been happily using it with Guix for over a decade! NLnet has funded a really cool project to turn Shepherd into a distributed system that enables a fleet of Shepherds to cooperat…

Also a note since there are a number of comments on here about this being a rival for Systemd: Shepherd precedes Systemd by quite a bit! Shepherd was previously known as "dmd", the "daemon for managing daemons", which was made in 2003! So in that sense, if anything was imitating anything (and not claiming anything was), it would be the reverse :)

Re: The Shepherd 1.0.0 released

#25

Shepherd is a wonderful little service manager. The project has been integrating the good features of systemd (socket activation, timers, etc.) while retaining the hackability of using a fully featured programming language for configuration. Been happily using it with Guix for over a decade! NLnet has funded a really cool project to turn Shepherd into a distributed system that enables a fleet of Shepherds to cooperat…

You've been using Guix for over a decade? Is there somewhere I can read more about your experience? I think Guix is a cooler version of nix but I've been put off by the lack of packages and smaller community.

Re: The Shepherd 1.0.0 released

#26
post #7
post #2

Taking a quick look at this, the first thing I notice is that the configuration file syntax is obtuse and nigh-illegible unless you already know what things are, and even then it's cumbersome and looks frustrating to write. e.g. instead of systemd's simple: Exec=/path/to/ntpd -n -c /etc/ntpd.conf -u ntpd -g We have this mess: #:start (make-forkexec-constructor (list "…/bin/ntpd" "-n" "-c" "/…/…-ntpd.conf" "-u" "ntpd"…

I think this may be just due to unfamiliarity. Like, if that mess you shared was written as follows: { start: makeForkexecConstructor(["…/bin/ntpd", "-n", "-c", "/…/…-ntpd.conf", "-u", "ntpd", "-g"]), logFile: "/var/log/ntpd.log" } this wouldn't bat an eye. Even though I've never used Guile, just familiarity with Elisp makes that example pretty straightforward. Lisp-adjacent people would all pretty quickly grok this…

Eh, I'm a Schemer (not Guile though) but the above is dramatically less readable and, at a glance, understandable than the equivalent systemd .target file. The problem with Lisps (but especially Schemes) is there's magic everywhere that makes no sense without having a sizeable context of the program you're working in.

Re: The Shepherd 1.0.0 released

#27
My main remark is: please do consider DESKTOP more than HPC etc, Guix System have a great potential to surpass NixOS for good but can't until the desktop will be the main driver, because before working on a system we enjoy it personally, and personally means desktops and homeservers...

Re: The Shepherd 1.0.0 released

#28
post #7

Earlier quoted context omitted.

I think this may be just due to unfamiliarity. Like, if that mess you shared was written as follows: { start: makeForkexecConstructor(["…/bin/ntpd", "-n", "-c", "/…/…-ntpd.conf", "-u", "ntpd", "-g"]), logFile: "/var/log/ntpd.log" } this wouldn't bat an eye. Even though I've never used Guile, just familiarity with Elisp makes that example pretty straightforward. Lisp-adjacent people would all pretty quickly grok this…

Eh, I'm a Schemer (not Guile though) but the above is dramatically less readable and, at a glance, understandable than the equivalent systemd .target file. The problem with Lisps (but especially Schemes) is there's magic everywhere that makes no sense without having a sizeable context of the program you're working in.

IMO in this example there seems too be to little magic.

Re: The Shepherd 1.0.0 released

#29

Earlier quoted context omitted.

Amusingly enough, the main direction Shepherd is exploring right now is integrating Spritely Goblins (the folks that are also writing Hoot), so that it would have a distributed, capability-based process manager. I wouldn't say running Shepherd with Hoot is a direct goal of this, but it may fall out naturally from it. Shepherd may actually work in Hoot right now -- I know the Spritely team were working on getting Guil…

It may be possible to get Shepherd to work with Hoot eventually! I'm not sure what on earth it would mean though. What daemons would you manage in the browser? But it's indeed a fun idea!

If you could configure a fleet of machines from a browser window, over the network; that would be pretty cool. No clue how that would work in practice here though.

Re: The Shepherd 1.0.0 released

#30

"give a man an inch and they'll take a mile" and what not, but, I wonder how hard this would be to port to Hoot, a web assembly/wasm-ified Guile Scheme. https://spritely.institute/hoot/ It would be neat to have some real management APIs for the things running on a page, to be able to manage long running processes & workers. A bit more niche than for general webapps, but systemgo comes to mind; a re-impl of some of sy…

Amusingly enough, the main direction Shepherd is exploring right now is integrating Spritely Goblins (the folks that are also writing Hoot), so that it would have a distributed, capability-based process manager. I wouldn't say running Shepherd with Hoot is a direct goal of this, but it may fall out naturally from it. Shepherd may actually work in Hoot right now -- I know the Spritely team were working on getting Guil…

Wow, that's a very fun reply! Nice.

Fingers crossed that the Stack Switching spec gets adopted & serves Guile Hoot's needs for fibers. https://github.com/WebAssembly/stack-switching

Post reply on HN