systemd won the Linux init system and service supervision game because a side-effect of being a monolith is being a "no assembly required" solution.
This is probably the most important lesson I took away from the unfortunate way that played out.
If you're making an s6, runit, or perp, and you want to win over a systemd, you need to understand that systemd is playing an entirely different game than you.
You are designing the best LEGO pieces for building a castle - you're thinking how to elegantly decompose service supervision, socket activation, cgroup management, and all the other things, to make the pieces that best enable a user like you to build exactly the castle you want. Systemd is shipping a premade castle - they're throwing it all into one project and showing users how easily they can do each of those things with a config line.
So design your LEGOs, sure. Wax poetic in your docs and blogs about how elegantly minimal and composable your LEGOs are to your heart's content. Bask in that subtly morally and intellectually elitist satisfaction of building a toolset which maximizes flexibility and freedom for the power user who wants to understand and control each piece.
Then take all your LEGOs, build an opinionated all-features-included castle out of them, build it so that it makes it easy to do all those things without grokking the elegance and vision of how all your LEGOs fit together. That competes with systemd. That's what you market to the mass of users.
Because when most system admins or developers come to you, they don't want to understand your LEGOs, how to put them together, which separately released pieces to install for those features, or how to bootstrap a system from them, either just because they don't care, or because they don't have the time. Or if they do, the rest of their team certainly doesn't.
Monoliths win the quick-and-dirty, good-enough, 20%-effort-for-80%-of-the-result, I-just-want-this-to-just-work usability game.
If you want to beat the monoliths with LEGOs, pre-assemble the LEGOs into a better monolith, then market that monolith the way monoliths market themselves - on features, efficiency, operational ease, and so on.
Save the UNIX philosophy for the philosophers.









