Interesting how all of the same liberal yuppies who endorsed last year's hot summer, with the authorities bowing before the rioters and tolerating breakaway microstates, have now turned into Thermidorian counterrevolutionaries demanding that the last futile attempt by Americans to make sure their country remains a country, rather than a global shopping mall, be punished with utmost strictness.
A good time as any to quote Joseph de Maistre:
"Every man has certain duties to perform, and the extent of these duties depends on his position in society and the extent of his means. The same action is by no means equally culpable when committed by two different men. Not to stray from our subject, the same act which results only from a mistake or a foolish characteristic in an obscure person, thrust suddenly into unlimited power, could be a foul crime in a bishop or a duke or a peer.
Indeed, some actions, which are excusable and even praiseworthy from an ordinary point of view, are fundamentally infinitely criminal. For example, if someone says, I have espoused the cause of the French Revolution in good faith, through a pure love of liberty and my country; I have believed in my soul and conscience that it would lead to the reform of abuses and to the general good, we have nothing to say in reply. But the eye of him who sees into every heart discerns the stain of sin; he discovers in a ridiculous misunderstanding, in a small puncturing of pride, in a base or criminal passion, the prime moving force behind those ambitions we wish to present to the world as noble: and for him the crime is compounded by grafting the falsehood of hypocrisy onto treason. But let us look at the nation in general.
One of the greatest possible crimes is undoubtedly an attack upon sovereignty, no other having such terrible consequences. If sovereignty resides in one man and this man falls victim to an outrage, the crime of lese-majesty augments the atrocity. But if this sovereign has not deserved his fate through any fault of his own, if his very virtues have strengthened the guilty against him, the crime is beyond description. This is the case in the death of Louis XVI; but what is important to note is that never has such a great crime had more accomplices. The death of Charles I had far fewer, even though it was possible to bring charges against him that Louis XVI did not merit. Yet many proofs were given of the most tender and courageous concern for him; even the executioner, who was obliged to obey, did not dare to make himself known. But in France, Louis XVI marched to his death in the middle of 60,000 armed men who did not have a single shot for their king, not a voice was raised for the unfortunate monarch, and the provinces were as silent as the capital. We would expose ourselves, it was said. Frenchmen - if you find this a good reason, talk no more of your courage or admit that you misuse it!"
All of my views come straight from primary sources which I meticulously uncovered, including Debian mailing lists.
I realize that you have been one of the more visible members of the pro-systemd side for years now, so I'd definitely like a more coherent rebuttal to both the historical and technical sections.
Of course, you'd probably consider any kind of response to be undignified, and I understand.
I participated in those discussions first-hand, and recall them rather well. At no point was "we don't have a choice" taken seriously as an argument; even most of the pro-systemd folks didn't consider that a valid argument for systemd, and many of the most judicious and respected voices in the discussion called out such arguments as being unhelpful. Debian is large enough and stubborn enough that they're more than willing (occasionally entirely too willing) to do their own thing if they think they have a better path.
As for the rest, I consider https://news.ycombinator.com/item?id=23062725 a good start. systemd was successful because it provided working code that people (including distribution maintainers) wanted to use, for a variety of reasons. This is the type of problem where no amount of architecture-in-a-vacuum discussions make up for actually doing the work and handling all the myriad cases that come up when people use it in practice. systemd did that; the next init system after systemd will need to do that as well.
Many people have compared free software to communism. I always used to dismiss it. But, in a way, they were right. Both are movements with a self-conceited historicist endeavor to eliminate exploiting classes ('it is inevitable that the tendency for the rate of profit to fall to produce immiseration as capitalists can no longer profitably invest, leading to a proletarian seizure of power' versus 'it is inevitable that proprietary walled garden development models stagnate as they're overtaken by decentralized communities pooling their knowledge and labor into the most optimal end' and create a perfectly equitable free association of producers no longer having their surplus value be seized by exploiters.
One degenerates into a repressive bureaucratic collectivist (I'm not a Trotskyist, but it's a good term) mechanism for reproducing surplus through either direct requisition or coercive planning. The other degenerates into a way for large-scale cloud providers to appropriate the free labor of volunteers so as to reinvest it back in their walled gardens.
Stalin represented the Leninist wing against ultra-leftists, anarchists and other factions who were against tight top-down organization in favor of 'spontaneous' organizing, and the GNOME/Freedesktop/Red Hat nexus is against the faction in free software that insists on a loosely coordinated and loosely coupled bazaar without a central vision. But in no sense has systemd abolished this, it has only reduced a few nodes at best.
EDIT: Actually I should point out that 'free software' per se is a deontological argument, and it's 'open source' specifically which specifically uses these historicist arguments to justify itself. But then open source was unabashedly an effort for corporate sanitization of free software, which most people forgot after it mostly crowded out 'free software.'
The problem with this straightforward thesis is twofold: firstly, distribution developers did not have any coherent position on the disadvantages of sysvinit or initscripts; secondly, the problem was mostly an iatrogenic one, as the very attempts to 'solve' or 'reform' it made things even less sustainable.
When it comes to Upstart, it was almost never used except as a wrapper around initscripts. Effectively you booted from Upstart which greedily synthesized all of its 'events' on startup that in turn triggered initscripts, which brought some degree of parallelism and that was about it. The reverse-dependency 'start/stop on' model was too esoteric, and Upstart's state machine brittle. Hilariously enough, the only system to actually use Upstart to its fullest (still does) is ChromeOS.
Prior to systemd and Upstart, as I discuss in chapter 1, distro developers either simply added various preprocessors for initscripts to introduce dependency headers, or they had these vague hunches of 'waiting for Godot' that we could either replace init entirely with D-Bus, put D-Bus interfaces in initscripts, or some other roundabout way that involved grafting D-Bus. Much of this was owing to the 'irrational exuberance' of Linux developers wanting to hotplug the world after 2003-4, but it always remains an on-and-off effort with the people behind it never certain what they want.
Indeed, besides grunt work of optimizing initscripts, I point out that as late as 2009 distros like Debian were still very concerned about LSB-compliance, and that even when they were willing to adopt a new fancy event-driven init like Upstart, it was conditional on reusing tools like insserv to parse LSB headers, and on incorporating initscripts for service management. Also the entire bizarre diversion that the Debian group had of using a Perl script to generate initscripts.
So far as I know, the daemontools approach was never influential. The available dichotomy was between putting lipstick on a pig, and utopian dreaming.
The paradox remains: how can we trust that the same people who did the Wrong Thing so persistently then suddenly turned out and did the Right Thing like they hit jackpot? If anything, 'jackpot' is the right analogy -- it was a fluke. And the same integration failures that were had with sysvinit have now been shifted into wrestling systemd's job model.
"Unification" was a folly, as the distro is still the place that gets its finger pointed at if upstream can't deliver, and upstream insists it's "just" offering a bunch of "modular tools," which ironically was supposed to be the problem to be addressed! Besides, there is still a whole world of Linux devices out there running Busybox, musl, OpenWrt, etc. that are outside the systemd bubble. Or think of all the container images running Alpine (which is also the basis of postmarketOS). Linux is still the same bazaar it always logically must be, but with a new class distinction added to the mix.
The distro has historically always been the place that gets pointed at because they are the ones who distribute to end users. No system-level component is going to change this, ever.
I am also confused why you're complaining about the job model and all its churn and conceptual problems when the whole point is that systemd was offering to handle that for the distros, which is exactly what they did and are continuing to do now. You can claim they are doing a bad job (which is probably true in some sense because of the impossibly large scope of the task) but the previous alternative was that nothing was being done about it at all. Which you did acknowledge, but then you went back to the same criticism as before. Why? It seems obvious to me that the gritty technical aspects and/or perceptions and fears about some kind of false dichotomy are not what could have ever influenced this kind of decision. Nobody else is invested enough in it for that to have happened.
The other reality I've seen is that there is no standard way to actually implement a daemon. Nobody does it in quite the same way and using things like daemon(3) don't help. So you can choose to A. patch all your daemons, or B. you can attempt to simplify the task by writing more tooling. Every single Linux distro I've seen, when given the choice, has chosen option B. So really, I don't see anything here that is surprising or farcical at all.
The 'job model' is the wrong abstraction, as is the unit concept which tries to reduce things that have irreducible differences. I'm also rather amused how you're conceding that they're doing a "bad job," but still shrug it off as better than nothing. If you're offering a mediocre solution to an "impossibly large scope" of a task, then you ought to rethink things. Even then, a poorly implemented feature can be worse than none at all.
I would also point out OpenWrt's procd as an example of how to have hotplug-capable service management at a fraction of the complexity: https://openwrt.org/docs/techref/procd
Now, this rethinking did indeed come with HAL, when the idea of a master daemon and ad-hoc service manager reacting to hardware state changes was unanimously rejected by the Linux patriciate as wrong. Perhaps with systemd they will one day reach the same epiphany for system and user services. Either way, I'm not terribly personally invested in this anymore -- I just figured I'd wrap my thoughts up on an issue that occupied a good deal of my time years ago.
The entire purpose of designing models is to reduce things that have irreducible differences and then tell people to shut up and deal with it. There is nothing else there. What is it exactly that you think IT gets paid to do other than this? We have finite time on this planet.
Also, things are constantly being rethought. That is quite literally what the churn encompasses. You can't complain about this while asking for it at the same time. I have seen all these lists of other init systems and while they are interesting, they are completely missing where the actual discussions are happening and what is actually being discussed. The core problem has already moved to a different area and that's why it really doesn't matter if they are doing a bad job. I can see you hinting at this in your article but it's not good to dwell so much on things that happened in the past and are already history. I am very grateful that you actually quoted all your sources though, so thank you for that.
The comparison of init to HAL seems not relevant to me; if anything that has made it obvious that they had the right idea but it was in the wrong place, and that init was the right place to put this type of logic after all. Adding to that it also seems very unlikely that the kernel developers will change their position on the responsibilities of an init any time soon.
And about the idiomatic way to daemonize, nobody follows those guides. Nobody. Seriously. It's a complete clusterfuck and writing more guides doesn't help either. There are an absurd number of programs out there that still use pidfiles. Go and do a search on github for "pidfile" and be horrified.
All models are wrong, some are useful, others not so much. There's no need to treat me with these banalities. The job model ought to have died with Upstart. It did not. Oh well.
> The core problem has already moved to a different area and that's why it really doesn't matter if they are doing a bad job.
Yes, I agree.
Still, the losers of history deserve their voice, too.
"Nobody" is a significant overstatement. A lot of (certainly not all) daemons that used to only support double-forking and PID files were fixed in the wake of daemontools. systemd and other init systems benefited from this work when they appeared. Still, PID files are subject to TOCTTOU regardless of what you use, so that's a given.
Sorry for the glibness I am just really bored with these complaints, it really feels like the same old bikeshedding. As far as I know there is no way to make a transactional state machine without having the concept of a single, reordable work unit. Daemontools did not solve this or present a different model that was more workable. For every developer that rewrote their daemon to get rid of forking, we got more new developers with outdated learning material coming over who expected services to work like they did on some other crazy environment like Microsoft Windows.
I don't particularly care about who was a "winner" or a "loser" either. In general you cannot get away from TOCTOU on Unix without taking extreme care and avoiding things that would seem reasonable, like storing filenames in other files or using the "kill" command. In practical use I have seen no inits that make any concerned effort to solve these issues at all. That is a situation in which we all lose.
> As far as I know there is no way to make a transactional state machine without having the concept of a single, reordable work unit.
You're basically taking systemd's architecture as an axiomatic premise, so no surprise your conclusion is obvious. I reject the premise, and the fruits of it I go into detail in chapter 3.
For the record I am mostly a Unix-hater, so your complaints about Unix are things I agree with. systemd, however, is simply more New Jersey design with unwarranted pretensions.
systemd, in a way, is exactly the init system that a community as infantile and disordered as Linux rightfully deserves. May they enjoy it.
No I am not commenting on systemd or Linux at all. The fact is that if you implement a dependency graph, you must track and resolve state. There is no way around this. Add in support for event listeners and one-shot syscalls out to hardware (because remember, udev or some equivalent is still a critical piece in all this and there is no HAL to handle this for us) and now you have to deal with transactions. Try to parallelize it and now you have work units. That's the way it goes. Even in microkernels you will find all these things scattered around and they aren't going to be less painful just because you wrote them in eBPF. I liked the third chapter but it left me a bit disappointed because it didn't mention anything other than a critique of the wrong way to do it.
Not for long, probably. I drifted out of this sphere years ago, and came back specifically for systemd's 10 year anniversary, as I felt obligated to at least do that.
Judging by the tone of the comments, 10 years later is still too soon to discuss systemd dispassionately, but when I come back in 10 more years I'll see if things have changed.
If we can't ever perfectly adhere to an ideal, then I guess we ought to go full on with the connivery and deceit, then.
Regardless, I did have at least some expectation that people would actually focus on the original post and not brawl in the comment section over tangents that often aren't even part of it.
Oh, well. And hey, if other people down the road read this and it makes something click for them, I'll be happy with that.
Well, my point is that (for instance) the specifics of its dependency model are still fairly obscure and undocumented knowledge. So I would say the statement is quite justified. And it also has a fascinating history that often gets reduced to culture war-related soundbites, which too deserved to be told.
Criticisms of mathematical modeling in economics were most definitely given by Mises and Hayek. Historian of economic thought Mark Blaug was also very critical of how neoclassical production theory (particularly Edgeworth's formulation) distorted the meaning of "competition" from a dynamic process to a quantity. Ironically, it is the same far-left heterodox demagogues like Varoufakis (though he's hardly the worst) who nevertheless use it in this sense to argue for mercantilist programs. Neoclassical when it suits them, heterodox when it doesn't.
Anyone who uses the term "neoliberalism" is a charlatan. It is an absurd conspiracy theory that has since blown into an amorphous meme out of Marxist historiographers who struggle with the explanatory power (or lack thereof) of their framework.
Mathematical models do have their uses in formalizing assumptions and analyzing dependencies, so they're not all bad, even if the Cowles Commission did go overboard.
(Also let's not forget that the modern methodology of economics came as a result of the Keynesian research program, particularly since Hicks (1937)'s introduction of IS-LM, first modeled by Keynes himself in 1933 as four simultaneous equations.)
What makes the use of the term 'neoliberalism' to be a conspiracy theory? I thought it was a blanket term for the sorts of laissez-faire capitalist ideologies that sprang up since the 1980s, and whose proponents did have a big thing for namechecking Adam Smith and other classical liberal economists of the 19th century. You're surely not going to deny that there has been some sort of ideological drive in favour of free market reforms, privatization and "free trade" agreements of the WTO/TTIP ilk, are you?
I don't think people who use the term think it refers specifically to shadowy cabal of free marketeers conspiring with each other over some hidden agenda. It's just a term for what a bunch of people, many of whom are in positions of power, happen to openly think and do.
One reason is that the term is exclusively used by the ideological opponents of this "neoliberalism", and as a result it is necessarily ill-defined. A lot of people describe themselves as libertarians of various types, or even as classical liberals, but I've never met a person calling herself a neoliberal. Outlining a difference between these ideologies might be a good start, and would at least give the term some meaning, without it though it is nothing more than handwaving at people the speaker doesn't like. Had that actually been done, I might even call myself a neoliberal one day -- but as it stands, I can't, because no one knows what it is :)
> A lot of people describe themselves as libertarians of various types, or even as classical liberals, but I've never met a person calling herself a neoliberal.
Which says a lot more about who you do (and don't) know than it says about anything else.
Thanks for the references, these are good articles, and I am happy to see that I was wrong and there are in fact some defenders of the term. Still, it is very predominantly seen in a critical context -- quite unlike, for example, "libertarianism" or "economic liberalism" or "classical liberalism".
But, even here it does not look well-defined at all: at best, authors simply classify specific policies as "neoliberal".
Even if everything you just said is true, not one word of it justifies the use of the term 'conspiracy theory' - which, in turn, is almost always a term used by the detractors of conspiracists. (And, of course, that doesn't mean the term 'conspiracy theory' isn't useful)
"Neoliberalism" is just an Americanism for economic liberalism, because the word liberalism is overloaded in the U.S., and is an autoantonym. That part of vezzy-fnord's comment is just a reflexive libertarian expulsion.
Not sure at all -- a lot of critique I've seen directed at "neoliberals" (and the term is exclusively used by critics), seems to target policies that are decidedly non-libertarian.
It is always used to critisize things from the left, which creates an impression that the term describes economically right-of-center ideologies, but that's IMO just because of the difference in vocabulary between different groups -- e.g. you may see the same thing described as neoliberal by the left, liberal by the right, and "statist" by the libertarians.
Thinking about it, "statist" is a similarly empty term used exclusively by opponents -- I've never seen anyone calling herself a "statist" either.
> Anyone who uses the term "neoliberalism" is a charlatan.
> It is an absurd conspiracy theory that has since blown into an amorphous meme out of Marxist historiographers who struggle with the explanatory power (or lack thereof) of their framework.
"neoliberalism" as a term is no more (and, arguably, much less) an invention of Marxist historiography than is "capitalism"; its true that both terms were coined by critics of the systems they describe, but that's not uncommon.
If theirs is a drive-by misrepresentation, yours is a sycophancy and an adulation.
The argument from bad people is a false one, largely because bad people are people and hence do everything that people in general do. As a result, it can be applied to anything. If it's a universally valid point for the prohibition of anything, then it is cognitively meaningless.
Nor is it all absurd to believe that a ruler is ambivalent over their subjects. Why would such a thing be absurd? The state and political power are not instrumentalist concepts. We must apply behavioral symmetry to all power elites.
(It's also amusing to see "incomplete information" brought up again. That's the same pseudohistory used to justify Iraq in retrospect.)
A good time as any to quote Joseph de Maistre:
"Every man has certain duties to perform, and the extent of these duties depends on his position in society and the extent of his means. The same action is by no means equally culpable when committed by two different men. Not to stray from our subject, the same act which results only from a mistake or a foolish characteristic in an obscure person, thrust suddenly into unlimited power, could be a foul crime in a bishop or a duke or a peer.
Indeed, some actions, which are excusable and even praiseworthy from an ordinary point of view, are fundamentally infinitely criminal. For example, if someone says, I have espoused the cause of the French Revolution in good faith, through a pure love of liberty and my country; I have believed in my soul and conscience that it would lead to the reform of abuses and to the general good, we have nothing to say in reply. But the eye of him who sees into every heart discerns the stain of sin; he discovers in a ridiculous misunderstanding, in a small puncturing of pride, in a base or criminal passion, the prime moving force behind those ambitions we wish to present to the world as noble: and for him the crime is compounded by grafting the falsehood of hypocrisy onto treason. But let us look at the nation in general.
One of the greatest possible crimes is undoubtedly an attack upon sovereignty, no other having such terrible consequences. If sovereignty resides in one man and this man falls victim to an outrage, the crime of lese-majesty augments the atrocity. But if this sovereign has not deserved his fate through any fault of his own, if his very virtues have strengthened the guilty against him, the crime is beyond description. This is the case in the death of Louis XVI; but what is important to note is that never has such a great crime had more accomplices. The death of Charles I had far fewer, even though it was possible to bring charges against him that Louis XVI did not merit. Yet many proofs were given of the most tender and courageous concern for him; even the executioner, who was obliged to obey, did not dare to make himself known. But in France, Louis XVI marched to his death in the middle of 60,000 armed men who did not have a single shot for their king, not a voice was raised for the unfortunate monarch, and the provinces were as silent as the capital. We would expose ourselves, it was said. Frenchmen - if you find this a good reason, talk no more of your courage or admit that you misuse it!"
s/French Revolution/BLM