A safe, comprehensible and efficient PID 1/init replacement written in OCaml
github.com
github.com
EDIT: Appears to be a component of a larger "Prismriver" project, but still completely tentative.
I'm not saying this to be a jerk, I'm saying this because, well, "safe" is a high bar for an init replacement! And I'm genuinely interested in the answer.
https://github.com/nerves-project/erlinit
Erlang/Elixir is already structured like modern OS (isolated processes, preemptable, built in tracing, debugging, smp support). So if your project is mostly Erlang skip the regular init and use erlinit right away.
Some example and usage from parent site:
It feels like as a Linux user one has to make the choice between software freedom (and software ethics) and an easily maintained, attractive desktop experience. As a Fedora user, I'm very used to GNOME and all of the comforts that it provides, but I'd consider switching to Gentoo sans systemd for the sake of making a stand against bad practice in the software community.
That's not a violation of the LGPL, but it is a betrayal of the community it represents.
Very? Contrary to the popular meme that suggests that systemd is required for features like automounting hotplugged hardware or roaming network configurations were possible a decade before systemd. Several pre-systemd distros even handled a lot of the work for you automagically, though the UI for some tools wasn't the best (or, rarely, was missing).
> I'm very used to GNOME
That's another matter, unfortunately. GNOME is firmly in the systemd-only, "screw portability"/"it's not a regression when we removing working code because it's 'old'" camp.
That said, Gentoo has implemented a workaround[1]. I haven't tried it (I still use enlightenment DR16), so I don't know if the workaround involves any loss of features, but that might be worth investigating. The install process appears to be a typical level of work for Gentoo.
edit: oops - forgot the URL
I really would like to see at least Debian get to a point where init is actually a swappable component in the real world.
That said, I expect sysvinit to be phased out over time. Debian simply doesn’t have the manpower to find and address bugs with that many combinations.
I said "real world", where Debian is clearly not at that point:
> but there’s very few packages which are being tested with these init systems, so expect to run into trouble.
I've not been involved in a while, but I have trouble believing that the limiting factor for adding in testing for a few inits is available work-hours. Maintainers/packagers' time is far more flexible than that.
I would buy that very few enjoy pain, and the discussion of Systemd in Debian was poisonous enough that using one's scarce fungible time revisiting that isn't something many want to do.
"sinit is a simple init. It was initially based on Rich Felker's minimal init. Why? I wanted to get rid of Busybox init on my toy distro. How? There are 3 signals that sinit will act on.
SIGUSR1: powers off the machine. SIGINT: reboots the machine (or alternatively via ctrl-alt-del). SIGCHLD: reap children"
So, one or more of these could use some better documentation. Or at least more accessible for non-Git users.
EDIT to Add: I like the idea of rewriting key stuff like this in safer, easier-to-maintain languages like Ocaml. Really nice stuff there. Past that, I can't derive the value proposition without a page detailing what it does vs alternatives.
Read the code.
"Anytime you're evaluating solutions to a specific problem in your system or code you should look at all the source code people are posting without expecting a description of what it does. Just read all the source code out there, guess if it meets your needs, and then try whichever looks right."
Kind of dumb way to go about finding 3rd party libraries or tools. Similarly foolish to expect it unless one simply doesn't care about adoption at all. The alternative, which my comment promotes, is to have relevant data in a short summary on each projects' page. Google, HN, or whatever finds users/developers a set of pages like this. At a glance, they can tell what's worth further investigation. Then, they look at its code. Much better way to use limited time to find needles in the massive haystack that is the Web.
And Suckless? Yeah, they're basically the definition of "doesn't care about adoption at all".
Alright, alright haha. Yeah, I did download the code. It was small and seemed understandable. Seemed as there's no telling what assumptions its built against. I've seen code meant to prevent compiler issues, OS issues, timing channels... all sorts of things you wouldn't know just reading the code itself & might have even scrapped. So, I'm still about code coming with a detailed statement of what it does with what environmental assumptions.
On other hand, this could be so plain that the environment or tools don't matter. Maybe.
"And Suckless? Yeah, they're basically the definition of "doesn't care about adoption at all"."
Their page hints at targeting a demographic of pro's tired of bloated BS. I wasn't sure how much they cared. There's some clarification.
If you're going to be in this industry in 2016, git is one of those things with which it's worth getting at least minimal familiarity.
It serves as both a great introduction and a reference.