Hi Aristomenis ! Thanks for your comments. My replies in-line.
1) The S6 docs (http://skarnet.org/software/s6/ <http://skarnet.org/software/s6/>) direct me to read the INSTALL file in a tarball, and then link to 10(!) different s6-* subprograms. This is too much to digest. I'd love to see a quick start guide.
I agree. The existing documentation is intended as a reference, and it is perfectly accessible to people who have heard of supervision before and know more or less what to expect; however, if you are new to supervision, I understand that it can be confusing. What is lacking is an overview, a tutorial and a step-by-step guide. I'm not good at writing those - and, to be perfectly honest, working on more documentation instead of the next piece of code (which should make all of this simpler to use) sounds like a daunting task to me. You're not the first one to report the difficulty of getting past the initial bump; I know it's there, and I should address it. It's just a question of mustering up the time and the courage to do it, because writing a good tutorial is hard, and time-consuming. A simple overview should help already; I'll try and write one sooner rather than later.
2) Mirroring the S6 code to Github is a nice idea which Laurent mentioned in the previous thread. Laurent, may we start posting issues to the https://github.com/skarnet/s6/ <https://github.com/skarnet/s6/> repo? In particular, I'm having some trouble which I describe in a later bullet point.
I would rather centralize the discussions here, on this mailing-list. (Or on the skaware mailing-list for technical details.) I think that scattering information and resources would be detrimental, at least at this stage of the project. Also, I really don't want to depend on github for anything else than visibility.
3) I understand the reasons behind breaking S6 up into a large set of simple utilities, but the current state of affairs is pretty extreme. ;ss /usr/bin |grep s6-* | wc -l reports 55 different utilities.
Please check your installation. It should be 56. :) (Plus ucspilogd, s6lockd and s6lockd-helper.)
Have you considered breaking s6 up into multiple packages, for example "core" and extras? That may not be feasible, so my main feedback is that the larger the number of utilities provided, the greater the handholding necessary to get users up to speed.
Yes, I understand. s6 had a lot less executables up until the recent releases, because, as you said, it was more broken up: all the Unix domain socket management stuff was in the s6-networking package. The addition of the s6-fdholder series of programs, which was necessary to claim that s6 can perform "socket activation", forced me to integrate more executables into the s6 package itself. I can't say I like it, but it's really a lot simpler that way. And I agree with your conclusion: a tutorial would help. At some point, I'll get around to writing one, I promise. 4) I tried compiling s6 in an
Ubuntu container. ./configure froze while looking for /dev/random. You can ctrl+c through this step, but this won't work when running docker build, because it's noninteractive. Is there a way to bypass this step?
Give the --enable-force-devr option to ./configure when compiling skalibs. 5) For major distributions and usage mediums (Ubuntu,
docker, OS X, and perhaps Alpine/busybox), the docs should provide clearer steps for installation and usage. John recently posted an Alpine package, which is great. But the version available in Ubuntu is extremely old - 0.47. Have you considered adding a Launchpad PPA?
Sorry, but this is a can of worms I'm not going to open. The world of Linux distributions is a shark tank, and my very strong opinion is that the sheer amount of them - as well as the politics and corporate that govern most of them - is hurting software a lot, and ultimately is hurting users. I could ramble for days about why I think so, but the point is that I will not explicitly support or favor one distribution over another. If I added a Ubuntu Launchpad PPA, I would have to add equivalent support for every distribution out there, and not only the mainstream ones. This is simply not feasible. Providing working tarballs and possibly a git repository is the job of software authors, and I will do my best to ensure that the software works, and to listen to suggestions. Providing packages is the job of *packagers* (duh), and I have neither the time nor the inclination to be a packager. If anyone wants to provide a Launchpad PPA for s6, or the equivalent for any other distribution, I'll be very happy and grateful about it, of course. John's work of providing s6-based container images for various distributions is invaluable.
6) Gorak/John: None of the s6/skalibs images are explicit about /etc/leapseconds.dat. This confuses me. When reading through the build scripts, the file is usually copied into the image, but I can't find the original leapseconds.txt. Is the original, out-of-date version from libtai being used? If so, this needs to be updated.
When you install skalibs, it provides its own version of /etc/leapsecs.dat. It is up-to-date. The file provided in the overlays should be the one coming from skalibs. 7) s6-svwait (and possibly other s6-* utils) throws a really
unhelpful error if run against a directory which hasn't yet had s6-svscan run against it: "fatal: unable to subscribe to events for/service: No such file or directory".
Yes, it is a programming error to run s6-svwait on a service directory s6-supervise is not yet running on. I will make it clearer.
It was also initially unclear to me that svwait should be run against the individual service directory, rather than the parent services directory.
I will make it clearer as well. Thanks for the feedback.
8) I'm really struggling to get a "simple" flow up. (...)
Getting things to work in both interactive and noninteractive case, while allowing people to both run commands inside a container and simply start a container without running a command, is Complicated (tm). We have been working on it in the past few weeks; it's still a WIP. If you are using s6-overlay-builder, https://github.com/just-containers/s6-overlay-builder then it should work as intended if you are using /init as ENTRYPOINT. For questions specific to that overlay, you can use the github Issues thingy, since that's where it's hosted ;)
9) This has already been discussed a bit, but I'd like to add another vote for allowing s6-svscan to run a command.
You can't quite use s6-svscan as a direct ENTRYPOINT, you have to perform a little work around it; this is the point of /init. (Indeed, if you use s6-svscan as ENTRYPOINT, the whole supervision tree will get your terminal as a controlling terminal, if you launch the container with one; this is not what you want.) The s6-overlay-builder project should provide you with the features you need, if you use /init as an ENTRYPOINT. Gorka will have more details than I do about the specifics of the overlay, and the images created via this overlay. Thanks again for your comments; they will be taken into account. I doubt my answers have been very helpful, but if you have specific questions about s6, feel free to ask ! -- Laurent