Compatible with SysV and LSB init scripts, Systemd is a system and service manager for Linux. Running as PID 1, it provides parallelization, flexible management of daemons, uses socket and D-Bus activation for starting services, keeps track of processes using cgroups, supports system state snapshotting, maintains mount points and implements a transactional dependency-based service control logic.
Despite all these nice features, Systemd is a very controversial topic. Why is that ?
Who : A story of arrogance
Lennart Poettering, a Red Hat engineer, creator of PulseAudio, Avahi and Systemd just to name a few, has a bad reputation. Well, that’s what the Internet says. But does it ? In fact, reading Lennart’s blog or comments, I found no strong evidence of a bad temper. All I see is a leader with an agenda and a strong opinion on how things should be done in terms of software development.
To be honest, I like him, even if I absolutely don’t share his views on POSIX and The UNIX Way.
Another Red Hat employee, Kay Sievers is known as the guy behind udev and the unification of /lib, /bin and /sbin filesystem trees into /usr. He is facing the same problem than Lennart : he does things, I mean, he is active, producing actual useful code. And as everyone who ever reached a certain level of responsibility in a project, he has to make choices in order to get things done, choices that may make him look bossy at times. I can’t help but understand his position : when you dedicate so much time to something, you can’t afford to hold endless discussions with armchair philosophers.
Lennart Poettering ? A leader with an agenda and strong opinions.
Indeed, you are free to hate these guys. After all, I haven’t read everything they wrote and they may have lost their temper somewhere at one point. One thing is sure though : they are active members of the Linux community trying to make things better. Whether you think their actions are justified or not, you can’t just shrug off their contributions. They may not be the finest of diplomats, but their work deserves some respect.
And don’t forget : you can fork 🙂
Kay and Lennart are active members of the Linux community. You can’t just shrug off their contributions.
Why : To unify and speed up and…
Well, it can’t be denied : Linux is messy. Yes, I said that. Don’t get me wrong, I like this OS, it’s my favorite. I only use Mac OS X for the reason that it’s the best way to enjoy my gorgeous MacBook Air, the best computer I had until now. Yes, I said that too.
There are hundreds of distros and none of them is the same. Custom configuration files, different tools, different package managers, different filesystem trees, different conventions and paradigms… It reminds me of France before school was made compulsory for kids : one official language spoken in Paris and a galaxy of dialects (more than 200) spoken all over the country.
Linux is like France in the 1700s : One country, hundreds of dialects.
…inside a cathedral
There’s a popular legend about Linux that says it is developed by volunteers, friendly hackers seeking respect from their peers, bearded geeks living in stuffy apartments, surviving on Coke and chips. I would love to believe it, but the changelogs on Kernel.org tells a very different story. Samsung, Intel, Redhat, Huawei, ARM… The e-mail addresses of the contributors mostly points to big corporations, as far as can be from the Mythical Garage or the Mighty Bedroom.
The e-mail addresses of the Linux contributors mostly points to big corporations, as far as can be from the Mythical Garage or the Mighty Bedroom.
One init to start them all
Systemd is a consequence of the old age of SysVinit, a part of the UNIX System V from 1983. Simply put, the main responsibility of an init system is to bring up userspace. And userspace has been changing quite a lot, reflecting the evolutions of both hardware and software during these last 10 years.
In 1991, when Linux kernel started to conquer the world, the way we used home computers was simpler : no hotplug of any kind, no plug’n’play, very stable hardware configurations, a very limited number of peripherals and absolutely no standby or sleep mode. Just On or Off. One printer, always on the same port, always connected. Some happy fews had a scanner. Floppy disks were the norm.
Today ? Well, even the cheapest smartphone makes Star Trek look outdated. Computers changed so much that they often doesn’t even look like computers. And their operating systems are very busy : GPS, wireless networks, USB peripherals that come and go, tons of softwares and services running at the same time, going to sleep / waking up in a snap… Asking the antiquated SysVinit to manage all this is like asking your grandmother to twerk.
Asking the antiquated SysVinit to manage todays computers is like asking your grandmother to twerk.
Faster, parallelized boot
Systemd does its best to deserialize the boot process by starting less things, but more at a time. There’s a word for this : parallelization. Lennart Poettering did a very good job explaining the underlying mechanisms used to reach this venerable goal here. Systemd parallelizes socket services, bus services, file system jobs, keeps track of processes, among many other things. An ever increasing number of things.
LenKay OS : No hidden agenda, but a goal that may not be clear to everyone.
Don’t Google it, I just coined it up. The Systemd section of freedesktop.org states that Systemd is « a suite of basic building blocks for a Linux system », but really, you can replace « Linux » with « brand new ». Lennart Poettering and Kay Sievers aren’t just improving Linux, they are creating something entirely different. The long-term goal of Systemd is not to improve Linux, but to replace it : LenKay OS is doing with Linux what OS X did with UNIX.
The long-term goal of Systemd is not to improve Linux, but to replace it : LenKay OS is doing with Linux what OS X did with UNIX.
I can go as far as saying that Systemd is the long due materialization of Linux’s schizophrenia, an internal identity crisis that has been brewing for years, even maybe right from the day of its creation ; a line of tension deep-rooted in both the nature and history of UNIX itself, inherited and amplified by Linux. What I’m talking about are these two irreconcilable cousines : Production and Leisure. UNIX is a big iron production OS that got tweaked, twisted and customized to become somewhat suitable for increasingly ambivalent home computers. But the needs of these two very different worlds that are Production and Leisure eventually got contradictory enough to create a schism within the Linux community : the pro-Systemd and their counterpart. A somewhat paradoxal schism, as the same person can be Systemd-friendly at home and anti-Systemd at work.
Now, for at least a couple of years, two versions of Linux will coexist : Production Linux (without Systemd) and Leisure Linux (LenKay OS, with Systemd). Some might say this kind of have been the case for a long time, which is true, but not to that extent, not that clearly. Later, once Systemd has reached maturity and its codebase is trusted, we might see a fusion between the two. Time will tell.
Where does the money comes from ?
Kay and Lennart both being Red Hat employees, I consider it acceptable to assume Red Hat is funding Systemd, be it in a direct, open manner, or indirectly as, anyway, the result is the same : Red Hat is the company putting food on the table for Lennart and Kay. Is it good or bad ? Well, this seems to be common practice in the Linux world (cf. « A bazaar…inside a cathedral »).
The biggest beta-test ever
On the 9th of September 2014, Apple pushed Songs of Innocence, the most recent album of U2, on 500 millions of devices. Two thoughts came to my mind when I saw the tracks in my music library :
- If Apple can add things in my iPad without my consent, they can also probably do the same in reverse : delete stuff without me knowing,
- What did I do to have such mainstream music pushed down my ears by Big Corp ?
OK, my point : I feel like the same has been done with Systemd. I feel like some high entity decided to force me to use Systemd. I feel like I have no choice. It’s bad. I know what some people may say : « If you don’t like it, don’t use it. » I wish it could be so simple, but I have 200+ production servers running Debian 6. What do I do ? Do I have to start using another distro ? Will this distro still be there in, let’s say, 3 years from now ? And if I decide to switch to Debian 8 without installing anything related to Systemd, how long will this remain possible ?
« If you don’t like it, don’t use it. » I wish it could be so simple, but I have 200+ production servers running Debian 6.
I am sorry, but yes, there is a problem. I mean, is it normal or even barely acceptable that some kind of elite dictate what millions of professional systems administrators will have to use ? Is that kind of top-down decision making meant to be the norm ? What about switching back to bottom-up instead ? I may be wrong, but I think the maintainers of popular Linux distributions like Debian, Fedora, CentOS and Co. should do their best to meet users needs, and not the other way around.
The maintainers of popular Linux distributions should do their best to meet users needs, and not the other way around.
Switch : Should you ?
Systemd is simply not old enough to be considered production-safe. That’s it.
…but it may change.
I know, the paragraph above is way too short, but you have to admit there’s nothing else relevant to say. Like wine, Systemd has to wait for a couple of years in order to reach maturity. And it will !
Now, it all boils down to a simple question : Do we need Systemd ? To me, the answer is a clear yes. SysVinit just doesn’t cut it anymore, it’s too old, antiquated as I said before. Many people got used to it and it is probably fine for production environments, but it has become a liability to the leisure side of things. And like it or not, Linux is now used by a lot of non-tech people who are just expecting it to work very well out-of-the-box.
It all boils down to a simple question : Do we need Systemd ?
Personal computing : Yes !
The more people will use it, the quicker bugs will be fixed and features added. Use Systemd on your laptops, your desktops, your media centers, your Playstations, even your phones. Go for it, Linux Leisure needs something like Systemd and you don’t have much to loose anyway. A crash here, a bug there, no big deal ! The leisure market often serves as a test environment for new technologies before they enter the production market. The bugs you kill at home won’t bother you at work.
Production servers : No !
Make sure Systemd doesn’t get anyway near one of your production servers, it’s not mature enough. Debug at home, not at work.
- Pid Eins
- Frequently Asked Questions
- Systemd : The source code
- The complete documentation
- The Biggest Myths
- The Cathedral and the Bazaar
- Systemd is the best example of Suck
SysVinit vs Systemd