Fork of Systemd Leads To Lightweight Uselessd
An anonymous reader writes A boycott of systemd and other backlash around systemd's feature-creep has led to the creation of Uselessd, a new init daemon. Uselessd is a fork of systemd 208 that strips away functionality considered irrelevant to an init system like the systemd journal and udev. Uselessd also adds in functionality not accepted in upstream systemd like support for alternative C libraries (namely uClibc and musl) and it's even being ported to BSD.
If it still doesn't adequately support the "kill -1" functionality of initd (which kills and resets all processes init manages, especially the getty processes on the terminals), I still don't want it.
Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
That's how the free open source community works. If you don't like something, it's pointless to just spend a lot of time bitching about it (like many linux users have done about systemd). Just go out and make your own version. Everyone who's been complaining about systemd better contribute to this thing.
Wait for jessie
CLI paste? paste.pr0.tips!
Why is there so much effort going into this broken ass system when Apple made launchd available open source long ago.
Over the past 3 decades, versions of the inittab syntax allowed for things in the 2nd and 3rd fields to say things could be run in the background or depend on other named states which is why the 1st field is a name.
It is amazing how many properly run systems can cope with a "kill -1 -1" to reset everything without a reboot.
If you use a stable version, eventually you will have systemd if you ever upgrade.
If you use sid/unstable, it looks depressingly like sometime down the road you'll have it, unless you go out of your way to avoid it.
My sid/unstable doesn't have it yet, but I'm exploring options for leaving Debian since its developers for the most part seem to be pushing systemd.
The OpenBSD project, in my view, has a much better way of approaching this: don't replace init at all, just create independent lightweight daemons for compatibility with the various systemd "services" (hostnamed, localed, timedated, et. al.) and make them dependencies of the relevant packages instead of putting it in the base system.
All the contenders that didn't 'make the cut*' for the likes of Debian and recent converts to SystemD, namely Upstart and OpenRC... Why reinvent the wheel when the work is already half done?
Either way, I wish the project well. Though the name "Use Less D" or "Useless D" could have been better.
*I still don't see how SystemD is more ready for primetime than anything else (or sheesh, even sysvinit) but we've discussed that here already.
do() || do_not();
Should we take this seriously? The name is "use-less-daemon." Thoughts?
Only the dead have seen the end of War. - Plato
At least they have switch the default desktop to the XFCE.
All hope abandon ye who enter here.
Ok, so the ARM is about to be poised to take over lots of systems (cell phones, etc), and you rip out (to save space) a portable embedded tiny clibrary?
In fact the article says that uselessd adds support for compiling it under musl and uClibc
Phoronix take on this is hilarious. A "boycott of systemd" led to the development of uselessd? Rather it looks to me like the uselessd developers saw that systemd had some very good ideas, and they wanted to have that, minus some parts they didn't like, on systems that aren't glibc, and aren't linux. This is part evolution, part competition. Either way it enhances Lenardts' position all along, that traditional script-based system v init is horribly broken. For even uselessd now supports socket activation (systemd's main feature) and process supervision, the latter being sorely lacking from sys v init for many years.
In any event, this is all great news. If anything it paves the way to support modern operating system features on non-linux systems, and non-gnu systems. Part of what's required to finally port modern GUI systems like Gnome 3 to other platforms.
Since when did udev run as PID=1? As far as I'm aware, it doesn't under systemd.
My sid/unstable doesn't have it yet, but I'm exploring options for leaving Debian since its developers for the most part seem to be pushing systemd.
Switch to what? I want relatively up-to-date Debian based system with relatively good KDE integration.
Anyway, the way I'm using Debian at home, I do not really care what init system it has. In office, systemd and the rest of the RedHat/GNOME aberrations are simply not applicable and not employed.
All hope abandon ye who enter here.
Errr... the default desktop is still not decided as far as I can tell from the Default Desktop Qualification process.
(Please remember, making XFCE the default was just a test..... a test that based on the preconditions stated before this change has shown that XFCE as default has failed.) /Debian Developer and contributor to one of the desktop options.
FUD again. The udev module of systemd does not run under PID=1! Please take a look at how systemd is organized before you post something like this.
systemd encompasses many things that used to be separate, but that doesn't mean they all run in the same process. Functionality is still kept modular, and you can update systemd without requiring a reboot most of the time. systemctl --daemon-reexec will reload the updated modules.
I'm not a fan of *ctl commands (hard to type, they don't roll off the fingers), but they are okay.
I use Windows at home, I don't care what OS as long as it works. That's what your statement sounds like. It's not "wrong", but in the context of using OpenSource, it's like selling your soul.
They need to take SystemD and break it into a bunch of smaller processes instead of a monolithic design that is more prone to failure for something like init. init is an extremely simple concept, but they decided to just merge everything together. Why not just put your kernel and all of your programs all into SystemD? Because it's better to keep certain things separate.
There is nothing wrong with what they're doing, it's how they're doing it. Compartmentalize and separate unrelated features, so if one fails, it doesn't take down the entire system. As it stands, an unhandled exception in something as stupid as your timezone changing could crash your entire computer. Sounds freaking great.
tip: ps axf | grep [s]ystemd
If systemd has too much code, you need to use less code. Use less. Uselessd.
go and read this first http://0pointer.de/blog/projec..., there is a section on monolithic design
"The hands that help are better far than lips that pray." - Robert Ingersoll (1833-1899)
tip: you want to put that in quotes
This project is indeed useless:-)
First it implements the PID1 part of systemd, cutting out things like hostname, date and time management and logind. So this does *not* ship the things that are needed to run Gnome (or soon any other desktop environment). So you need systemd anyway... or a systemd shim or systembsd or whatever to provide the functionality that is missing.
It removes journald... and with it really nice features like systemctl status whatever showing the last bit of output from that unit. That is a huge step back, especially since much of the journald code still needs to stick around: It is the "internal" logging interface used in systemd. It just feeds it on to syslog now instead of writing it to disk, something you could do with one line of configuration.
Removal of udev? You need that functionality, so again you will need to install "real" systemd or some other piece of code replacing that. Again you could just reconfigure the "real" systemd to use any alternative implementation in place of its own.
Then it advertises that it is portable. The developer apparently spend time to make this run on FreeBSD, which is nice, but has anybody in that came ever asked for that? AFAIK they are working on something like Apples launchd. Any other of the BSDs that want systemd? Not that I am aware of.
Then it is portable to other compilers but gcc. Systemd uses gcc extensions that make for more robust code (e.g. destructors for variables). Ripping that out will just lead to more bugs, especially in the error-paths. Not sure that is worth the trouble.
Finally it is portable to other libcs. That is actually somewhat nice... even though glibc is the dominant libc implementation on linux systems (that are not android:-).
Then it removes some really convenient functionality like the timer units. Do we really want to go back to the cryptic crontab syntax? If the job there is somewhat complex it will most likely start a systemd unit anyway (for the security features, resource management, the way better logging or just the better job control). PID1-systemd needs to know the time anyway, and it needs to start jobs, so why not have it start jobs based on the current time? That is definitely less code -- and probably better tested, too -- than running an extra daemon for that rather trivial job.
It also removes the support for the security frameworks... "to stick to a more clearly defined purpose, one that is agnostic of such elements". Wow, that is just plain stupid. If you want to use these frameworks, then you want to have them in use *everywhere*. That is the whole purpose of those frameworks.
Regards, Tobias
Yes. No. Wait - yes. No... no. Uh....
The systemd has modular design.
But monolithic architecture.
Literally everything inside systemd is intertwined using the D-Bus.
So yes, a crash of one of the systemd daemons might cause deadlock/hang or even crash of the rest of the systemd, and consequently affect the processes running under it.
The systemd's design is pretty bad. This is not an exaggeration, when people call it Windows-like: MSWindows OS has very very similar atructure as the systemd. Windows "Event Log" is really cherry topping.
On-topic: uselessd doesn't fix this problem. It lessens it, but doesn't fix it.
All hope abandon ye who enter here.
Regardless of the particulars of this project, it's good people are waking up and realizing what a bloated feature-creeped rube goldberg contraption systemd is, a non-Unix non-Unix-way solution no serious Linux/Unix admin wants, it hinders troubleshooting and configuration. Systemd is what happens when inexperienced people with high IQ fly off on a tagent without engineering ability.
Pfft less sucks. I'm going to fork this fork and call it usemored instead.
The reason why XFCE was mentioned as a possible default desktop in Debian is the install media size — In order to ship a self-contained distribution that can give you a functional desktop in one CD, GNOME is no longer an option.
But yes, there are several active discussions on how to better achieve this. It's not that Debian has decided XFCE suits us better than GNOME.
(said with a Debian Developer hat on — No, I'm not a desktop guy, nor work in the debian-installer, but do follow the discussions)
I have no idea why Redhat made so many changes in their most recent release, but it is so vast that it may as well be a completely new distro. To name a FEW:
Anaconda RHEL installer completely redesigned /bin, /sbin, /liband /lib64are now all under the /usrdirectory
Legacy GRUB boot loader replaced by GRUB2
Procedure for bypassing root password prompt at boot completely different
SysV init system and all related tools replaced by systemd
ext4 replaced by xfs as default filesystem type
Directories
Network interfaces have a new naming scheme based on physical device location (e.g., eth0might become enp0s3)
ntpdreplaced by chronydas the default network time protocol daemon
GNOME2 replaced by GNOME3 as default desktop environment
System registration and subscription now handled exclusively with Red Hat Subscription Management (RHSM)
MySQL replaced by Mariadb
tgtdreplaced by targetcli
High Availability Add-On: RGManager removed as resource-management option (in favor of Pacemaker)
ifconfigand routecommands are further deprecated in favor of ip
netstatfurther deprecated in favor of ss
System user UID range extended from 0-499 to 0-999
locateno longer available by default; (available as mlocatepackage)
nc(netcat) replaced by nmap-ncat
Systemd is pain to use for me and feels backwards... I find troubleshooting processes with it to be more frustrating than anything else Redhat has done in the past 20 years... Well, almost.
... seems to work adequately for the 70+ million OS X installs out there.
I run: Windows, OS X, Linux, FreeBSD. Just because you have a hammer, doesn't mean everything is a nail.
Or is it complex simply because it takes complexity to do things better? Gnome is more complex than twm for example, but many people find extra functionality useful. Is traditional script-based init a good match for cell phones, watches, robotics, other new devices that Linux needs to support to remain relevant?
I fully understand that there should be server and education oriented Linux distributions where simplicity and ease of customization are more important than boot time milliseconds. Just don't think that others are doing anything wrong by catering to their own needs.
Yet I love XFCE4 and although I run Gentoo as a software developer who needs to freeze various C/C++ libraries in certain versions without crippling my systems update capability, I actually love XCFE4 for it's simplicity and ability to be modified.
I'd rather run XFCE4 and add a bunch of various extra toolbar plugins for a lot of eye candy. Because XFCE4 is lighter weight I don't feel bad having cpu graphs, temp sensors, mem/net/disk indicators, weather, etc all flashing away because it's still less load average than sitting idle on a Gnome3 desktop which oddly needs 6 mouse clicks to get anything to happen.
Gentoo + XFCE4 + OpenRC is how things have been for me and how things will remain.
I have many GCC/GDB versions installed, valgrind, a specific /etc/portage/package.mask which freezes various libraries I code against, yet I can still update my system and stop any changes I do not like. Since the distro is source based it works around these changes unlike a binary distribution where someone else hardcodes their C++ libs into your packages and crosses their fingers you haven't mucked with it.
I clearly used to think Gentoo was a joke in the server world purely due to it's update cycle but honestly I don't think RedHat or anyone else for that matter is really doing it better. I'm starting to think Gentoo with a manual portage overlay on a bunch of servers is what I will switch to next. CentOS isn't cutting it these days and systemd isn't coming to my servers. Not as long as my $$$$ are behind that risk.
But the kernel is monolithic, [...]
Wrong. Linux kernel has modular architecture, but monolithic design. The precise opposite of the systemd.
I know that the uninitiated see the kernel as a big black box. But actually Linux very well structured and highly hierarchical.
systemd can monitor dæmons (only if they use the systemd watchdog facilities) and automatically restart them if they stop talking.
The question here is about the case when systemd itself "stops talking".
Some time ago that would have been theoretical question, but actually there were already such bugs in systemd where it was simply stuck because the daemons which compromise it couldn't understand with each other. This is precisely the consequence of monolithic architecture in combination with modular design: the singular logic is spread across many "modules" (the *-systemd binaries) and when the modules do not agree with each other, things go south pretty quickly.
All hope abandon ye who enter here.
We’re opinionated and socially maladjusted dwellers who lead monotonous lives and are trying to bring some variety in our existences by seeing if we can win a Darwin Award, or at least rustle your jimmies.
I'm in.
When all you have is a hammer, every problem starts to look like a thumb.
Don't the "haters" regard systemd as some all-encompassing Hurd-like wannabe, except whereas Hurd runs on top of a microkernel (mach), systemd bootstraps linux? :-)
A "Hird of Unix-Replacing Daemons" might otherwise be a good description of systemd...
Well google have BoringSSL, perhaps it's a trend of stupid names for forks in seeking to discredit the upstream...
That particular blog has been fairly well deconstructed in this thread.
In short, just because the author calls something a myth, doesn't mean it's actually a myth.
"First they came for the slanderers and i said nothing."
Cron has specific semantics about batch scheduling of tasks or periodic, non-overlapping tasks. It runs them in a particular execution context, and I like knowing that it logs it an very identifiable way (both through the audit log and cron logs). Syntax of a cron job file is very low on the totem pole of things I care about when it comes to batch or periodic tasks. This is not a trivial task, as you say, and it deserves a closed system, especially if it must be targeted by cross-platform products needing such a facility.
Black holes are where the Matrix raised SIGFPE
I wonder if you realize that your post boils down to a longer version of this:
In other words, it appears that you've been so indoctrinated by Systemd that you can't even conceive that there are structural alternatives possible for each feature X.
Well there are, unlimited numbers of them. :P
I am in no way talking about features of any replacement init. I am talking about interfaces other applications are depending on.
This may be udev, or the hostname/data/time configuration or logind or whatever else. Fact is that gnome is depending on some of these interfaces. KDE announced that they will do the same -- at the very least for wayland. I doubt that the other DEs will be far behind, especially now that ubuntu wants to move to systemd, too. These interfaces are apparently not all bad, so developers want to use them.
So if you want to run any of these applications, then you need to provide these interfaces in one way or another. This can be by either using systemd, or systemd-shim or systembsd or whatever implementation. There are quite a few to choose from at this point:-) For a new project to remove all that code and claim it is not needed is naive at best.
The features provided by the init system itself or how those are implemented is irrelevant to my point.
Regards, Tobias
No one thinks udev is PID 1 , but there are people who think POS is so integrated it might as well be. Calling udev PID 1 is just people trying to win an argument. Like "debunking" a bunch of "myths" no one holds while ignoring real and valid complaints. It's about WINNING for them.
Samsung took back my unlocked bootloader because Google wants me to rent movies. They're both evil.
mod up please, I'm so tired of seeing that irrelevant myth blog trotted out as if it's a trump card.
Samsung took back my unlocked bootloader because Google wants me to rent movies. They're both evil.
All those users that don't directly interact with init scripts might suddenly find that they need to when systemd causes things to break that used to just work.
This is a big deal to more than just admins.
"Wrong. Linux kernel has modular architecture, but monolithic design. The precise opposite of the systemd" - i don't see the difference
"The question here is about the case when systemd itself "stops talking"." - the question is when "init" itself stops talking
"This is precisely the consequence of monolithic architecture in combination with modular design: the singular logic is spread across many "modules" (the *-systemd binaries) and when the modules do not agree with each other, things go south pretty quickly." - thats the case for all things, its all the same but different
"The hands that help are better far than lips that pray." - Robert Ingersoll (1833-1899)
Unless someone is going to dispute his responses to the myths with good arguments and real life repeatable cases then his blog response is more valid than a bunch of whiners repeating shit without checking it out.
"The hands that help are better far than lips that pray." - Robert Ingersoll (1833-1899)
it does trump most of the shit pumped out repeatedly - please explain what's irrelevant about his responses to the myths.
"The hands that help are better far than lips that pray." - Robert Ingersoll (1833-1899)
Unless someone is going to dispute his responses to the myths with good arguments and real life repeatable cases then his blog response is more valid than a bunch of whiners repeating shit without checking it out.
That's not a very good argument, I might as well say, "unless he's going to write code that's not crap, he's just a whiner." Woohoo, a point that makes no sense.
For specific, easy to see problems with the blog post, start by noticing that he actually agrees with many of the points that he calls myths. You don't even need to dig deep! The following are quotes from the actual post:
Myth: systemd is difficult.
This also is entire non-sense.......systemd certainly comes with a learning curve.
Myth: systemd is a freedesktop.org project.
yes, we host our stuff at [freedesktop.org]
Myth: systemd is not UNIX.
There's certainly some truth in that.
Myth: systemd is complex.
There's certainly some truth in that.
Myth: systemd is a feature creep.
Well, systemd certainly covers more ground that it used to......
"First they came for the slanderers and i said nothing."
So, in the year 2014, long after the subversion of source control, and submissive UIs all jokes about man/woman or more/less are still so hot that a core process of a unix like system needs to be called "useless"? Erm, I typoed: uselessd ...
Lucky that I no longer have to convince managers to use 'subversion' (eeeek, what that?) but can propose git.
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
...the init process needs to be really minimalistic and offload everything else with a simple and well documented (better: obvious) interface. "systemd" should have been named "borgd" a long time ago and by now it has gone completely wild assimilating a lot of things it thinks a problem needs to be solved. http://boycottsystemd.org/ summarizes the issues very well.
You know. I could not care less about systemd, journald or wayland.
Wayland is just a piece of crap that supposedly should bring the desktop to Linux. Well, here's a reminder: the 'desktop' has been available for Unix like operating systems for the past 30 years or so. It's called X. But the developers of Wayland (or Mir) don't like X. The fact that it is a f****ng UNIX standard does not even come to mind! Instead, they decide to reinvent the wheel. Twice! But... Remote X sessions? No way José!
I have played around with systemd and journald. It's sort of fun. Until you realize it breaks the very thing that it is supposed to provide: a standardized way of booting up your system. Again, someone tried to reinvent the wheel. And now twice as well!
And why the hell do I need dbus? Come on, can't people invent an IPC mechanism that is even marginally more useful than that and at least more well-programmed and well-behaved? What do I need dbus for if all I am doing with my system is say, running sendmail?
Anyway, enough with the ranting. Uselessd is a fitting name. Even so, adopting it (or systemd) requires a change of philosophy, one that I am not willing to make. Linux (and UNIX in general) is supposed to be an open system with a intelligible interface. Hell, all init is supposed to do is run a shell script! It is not supposed to be this big binary blob that only takes up memory. Memory that I could be using for other things, like say, run sendmail...
And on the Eighth Day, Man created God.
This is just more anti-systemd FUD very light on actual facts.
First you assert that it's somehow a bad thing that systemd uses a standard, established IPC mechanism (D-Bus). Would it have been better if it had invented its own?
Then you claim that a crash of one systemd daemon "might" cause deadlocks/hangs/crashes, but you don't give any example. What daemons are intertwined in such a way that a failure of one would bring down the system? As far as I know, you can kill any systemd daemon (other than PID 1, obviously), and systemd will notice and restart it. Daemons like systemd-journald even use systemd's watchdog mechanism to ensure that they get restarted in case of a hang. In other words, systemd provides a much stronger basis for a reliable system than SysV init.
Fun fact: I just did a "kill -9 -1" to kill every process in a NixOS VM except PID 1. Systemd restarted every system service perfectly. Try that on SysV init.
You missed out some relevant bits in your redaction which illustrates the problem, detractor just cherry pick and take out of context the bits they want to fit their pre-conception. So i think he did a good enough job in his blog post to dispel the myths. Most of that so called deconstruction you linked to is full of personal attacks on him and full of things that are still wrong
....systemd certainly comes with a learning curve.
Myth: systemd is difficult. This also is entire non-sense..."A systemd platform is actually much simpler than traditional Linuxes"
Myth: systemd is a freedesktop.org project. yes, we host our stuff at [freedesktop.org] - "Well, systemd is certainly hosted at fdo, but freedesktop.org is little else but a repository for code and documentation".
Myth: systemd is not UNIX. There's certainly some truth in that. "systemd's sources do not contain a single line of code originating from original UNIX. However, we derive inspiration from UNIX, and thus there's a ton of UNIX in systemd."
Myth: systemd is complex. There's certainly some truth in that. "However, systemd is certainly not more complex than prior implementations of the same components".
Myth: systemd is a feature creep. Well, systemd certainly covers more ground that it used to......"but we carefully make sure to keep most of the features optional. You can turn a lot off at compile time, and even more at runtime. Thus you can choose freely how much feature creeping you want".
"The hands that help are better far than lips that pray." - Robert Ingersoll (1833-1899)
So i think he did a good enough job in his blog post to dispel the myths.
I don't.
"First they came for the slanderers and i said nothing."
Good idea! Thanks.
Myth: systemd is complex......rebuttal: systemd is certainly not more complex than prior implementations of the same components".
Do you see how that's not actually a rebuttal? All he's said is, "it's not complex." But the criticisms are that it is more complex. He hasn't said anything to address the criticisms, except that he disagrees with them!
Does it really surprise you that he disagrees? I hope not.
"First they came for the slanderers and i said nothing."
i don't see the difference
Then go read a book. "I am ignorant" is not a counter-argument.
But the developers of X don't like X either, that's why Wayland has come about. Whether its been developed well is another matter, but X has reached its end of life. And you can still "remote desktop" with Wayland with just as much performance as X, because X nowadays sends bitmaps over the wire anyway thanks to the desktop compositors we all run now.
in the self-ironic naming of open source software.
At some point it will happen, should uselessd get any traction.
It has all the hallmarks of a school-yard taunt, and eventually distro maintainers will ask them to grow up.
I thought systemd was the useless one.
Buck Feta. You know what to do.
I have run into cases where the system, due to load or a busy daemon, resulted in a daemon not responding to systemd in time. This caused systemd to kill the daemon and restart it, which then had to start its task over again, which caused systemd to kill it when the daemon took too long. Basically, systemd gets impatient and will kill off busy daemons who take too long to respond or return. This makes systemd completely unsable with some daemons and means the daemon needs to be re-written or systemd needs to be removed from the position of daemon manager.
Obviously we need Jack Black to come in here and write a song about the epic conflict unfolding here.
My ism, it's full of beliefs.
Angry computer nerds gathering up their toys and going to play by themselves in the corner because someone decided to play in a way they deemed unacceptable.
Wrong question - is software and the choices of people in using it so unreliable and prone to disaster that "kill -1" is useful? The answer is yes on multi-user systems when one person's stuff hogs all resources and can neither progress or let other tasks progress, or even if you accidently set your graphics program to open a hundred huge images at once and you stop yourself doing much more than preparing for a six month wait until is sorts it all out, unless you can kill it or reboot.
It's not quite a high school level thing to consider, but it comes close, so presumably it's late at night or you've had a few drinks before posting.
So the people that build the system do not care about it. *plonk*
Regards, Tobias
Anyway, enough with the ranting. Uselessd is a fitting name. Even so, adopting it (or systemd) requires a change of philosophy, one that I am not willing to make. Linux (and UNIX in general) is supposed to be an open system with a intelligible interface. Hell, all init is supposed to do is run a shell script! It is not supposed to be this big binary blob that only takes up memory. Memory that I could be using for other things, like say, run sendmail...
Hehe. I had a good chuckle that "run sendmail" is in the sentences just following "Linux (and UNIX in general) is supposed to be an open system with a intelligible interface."
From the horrors that are sendmail config, it sounds like there is already some wiggle room in that philosophy :-)
No need to repeat. Pretty well summed up here: http://linux.slashdot.org/comments.pl?sid=5620493&cid=47812373
Let's rephrase that - I don't understand what point you are making with that number unless it's about hibernate being better than it used to be on most hardware or something else I've missed.
> Ripping out udev? Have fun with you init scripts no longer knowing anything
> about device state change. Sure, might be useful if you could guarantee that
> devices don't drop in and out of a system, but that's not been true for at least five
> years now. I constantly plug and unplug my phone into my laptop (often just
> to charge the battery, but sometimes for file transfer or for music) so you're
> not capturing the desktop market either. Servers need it for hot swap. Exactly
> what benefits are gained in which market? If you can list them, then we will know.
Udev can be replaced by mdev which comes as part of busybox. See https://wiki.gentoo.org/wiki/M... and also https://wiki.gentoo.org/wiki/M... Yes, folks, automounting+autounmounting USB keys, without X running, let alone GNOME or KDE. Yes, mdev *CAN* handle device state change. It sets /proc/sys/kernel/hotplug to point to /sbin/mdev
I'm not repeating myself
I'm an X window user; I'm an ex-Windows user
That's crazy. A great many of the "Myths" in the article were never under dispute to start with.
For example:
Postulate: "Myth: it was not written in C" Rebuttal: "It was written in C. In factTo which the only reasonable answer is: "No one said it wasn't written in C in the first place!" (sounds stupid, no?)
One can prove the merit of just about anything with this kind of roundabout argument.
The whole "Debunking the myths" article is one big red herring.
Systemd may be a great technological accomplishment, and may have many amazing features- and here we are using some silly "false myth" debunking article to try to prove it's technical merit. It's demeaning.
You noticed that huh? ;-)
And on the Eighth Day, Man created God.
My main problem with systemd is the lack of robustness in its design and implementation. It seems like an attempt at reimplementing Solaris' SMF, but poorly. Even the SMF itself could probably be called 'overengineered', however, it is certainly a more sophisticated, less monolithic design that provides a much higher level of fault-tolerance.
/* FIXME: we need to do something here */
systemd is basically a huge pile of modules compiled into the PID 1 init process. The problem with that is, that if PID 1 dies, the system stops (e.g., kernel panic). On Solaris, a small basic init process starts the SMF master restarter (svc.startd), which is responsible for starting, stopping or restarting the other components of the SMF as well as all services managed by the SMF. If a component of the SMF fails (maybe it just dies/SEGVs, or say, you kill it, cause it hangs), the master restarter will respawn it. Even if the master restarter goes south, that small basic init process will respawn the entire SMF, and you're still up and running.
Then, let's take a look at the implementation of systemd:
static int socket_spawn(Socket *s, ExecCommand *c, pid_t *_pid) {
_cleanup_free_ char **argv = NULL;
...snip...
r = socket_arm_timer(s);
if (r < 0)
goto fail;
...snip... (function call with lots of undocumented arguments, returning r)
if (r < 0)
goto fail;
r = unit_watch_pid(UNIT(s), pid);
if (r < 0)
goto fail;
*_pid = pid;
return 0;
fail: s->timer_event_source = sd_event_source_unref(s->timer_event_source);
return r;
}
Actual code from systemd-216; see full source at src/core/socket.c
Most of the systemd source code looks like this.
Virtually no comments; lots of single-letter variable names, confusingly similar names like "_pid" and "pid"; throwing 'int' return codes back up five calls, where the original caller cannot even remember what all the possible return codes might be (how about enum?); lots of arbitrary goto- and return-jumps out of the middle of somewhere; lots of break and continue, even mixed in the same loop; even substantial amounts of three-star-programming (never heard of it? google it, it's funny); etc.
Okay, I have to add, that the code of lots of the "good, old, reliable UNIX codebase" does not look a lot better (and upstart, or even the Linux kernel, are guilty of at least some of the same bad coding habits). But we have paid the price for writing code that way numerous times, and it seems we did not learn from history.
Coding like that is probably okay if you're writing a nice, little command line utility. But if systemd wants to be THE new init system, it had better look like it had been written by the inventor of reliability engineering.
Right now, the systemd source looks like it violates virtually all of the best practices for writing reliable code. Take a look at what those people who know their craft recommend - e.g., the Federal Aviation Association, European Space Agency, Lockheed Martin's avionics section, etc. - and compare that to systemd's source.
It's like a disaster waiting to happen.
Many people (also from the BSD world) actually like Wayland, because it is actually not useless but replacing really awful X APIs. I don't know if you have ever written a program for raw X API. It is even worse than Win32 (which already is a total mess!), in my opinion. X is even more than just mess, it is bloat, full of things you will never need and uses quite old concepts that are not compatible with sane minds of today's programmers. It is a real improvement to graphical desktops on all systems. Wayland will be ported, because it is something many have waited for long time.
systemd is different. It makes a generic API unportable and provides users with functionality (mainly for desktops), but which is also totally weird and seems to workaround all the failures in software design that have been introduced a while ago. It does not solve them, it makes them even worse and more complex. The worst about it is that there are still people want to use these APIs and break portability. And for what? For something you don't even need and never expected to change.
The only major distribution that doesn't use systemd is Gentoo and that's because they have their own very interesting init replacement. There is no boycott. There are objections to a decision that's been made by some isolated individuals who object.
Yes. No. Wait - yes. No... no. Uh....
The systemd has modular design.
But monolithic architecture.
Literally everything inside systemd is intertwined using the D-Bus.
So yes, a crash of one of the systemd daemons might cause deadlock/hang or even crash of the rest of the systemd, and consequently affect the processes running under it.
The systemd's design is pretty bad. This is not an exaggeration, when people call it Windows-like: MSWindows OS has very very similar atructure as the systemd. Windows "Event Log" is really cherry topping.
On-topic: uselessd doesn't fix this problem. It lessens it, but doesn't fix it.
AFAICT, uselessd strips out everything that isn't part of init from systemd, including journald. So exactly which daemons are left that are intertwined with each other?
Most human behaviour can be explained in terms of identity.
Quite the opposite!
Kill -1 tells a service daemon that is handling hundreds of thousands of simultaneous connections that it needs to re-read its configuration file, without interrupting service even momentarily.
Kiddie stuff doesn't need kill -1. It's only the ultra-reliable stuff in mission-critical roles that needs it.
Suppose you, personally, have a piece of software that controls your artificial heart. Your doctor has discovered that there's a security vulnerability in the silicon, but luckily it can be remediated with a change to the software configuration, so that you don't have to get your chest cracked to fix it. He uploads the new configuration and kill -1's the running software, and it picks up the changes between one beat and the next, never causing you to, you know, die.
OK, maybe that was an unnecessarily dramatic example. A more mundane one would be adding a new web site - you enter the new A, AAA, SPF and MX records, put the new config in the httpd.conf and access.conf files, then you kill -1 the DNS and httpd servers, and none of your other customers have to have their web sites shut down while the new one is being brought up. This happens ten thousand times a day at web service providers all over the world.
It does not matter what Apple does - there is tight controls on the system and code contributed to Darwin might never see life as part of the actual Mac OSX released by Apple.
The init process in Unix and Linux is a very special thing - if it ever crashes, so does the whole machine. It is the first process started by the Kernel after it finishes initializing the system and mounting the root filesystem and is the "parent" of any process that deliberately orphans it's child-processes before exiting itself. It is also in charge of "reaping" any zombie processes. With each addition to its duties the area for an error to happen increases, which increases the risk that the system will just suddenly crash.
This is a problem that people lambasted Microsoft for from the birth of Windows through it's transition to a 32 bit system and still continues to this day for an extent - that they had one piece of the system doing a lot of work and having a wide surface for errors but still critical for everything to work properly. I am loathe to praise Microsoft for anything, but I must praise them for this - they have been moving away from that and I have actually found Windows 7 to be pleasantly stable - to the point of actually being able to recover from the graphics drivers crashing and managing to recover and re-load and re-initialize the system without losing any data. They have turned things around and begun to compartmentalize things to an extremely high degree - lowering the amount of code in each component, raising the ability of their programmers to actively find and fix the bugs during development and lowering the chance that a user will actually hit one of those bugs.
That compartmentalization and modularity (of the userspace, at least) was a hallmark of the design of Unix - each piece did exactly one job and did it well - as well as being as small as possible to reduce the amount of space there was for an error to be in. Yet with this "systemd" we see Lennart Poettering leading the charge to turn that around in order to save some small fraction of time during the boot process. That he created "Pulse Audio" - which appears to have flopped severely and, at least for me, was the cause of a lot of problems (not just for me - I remember finding thousands of people finding that problems were being solved when they got rid of Pulse Audio when I first started having those problems) - seems to be lost on people.
No, one mistake does not make everything someone does wrong, but in this case sacrificing simplicity and modularity so you can "do the boot process faster" is a wonderful idea. Extending the system that does that so it subsumes some of those processes it used to start in parallel for a faster boot time is just idiocy. What's next? Am I going to find that I can send a "draw an ASCII art of a kitchen sink" command to systemd and have it take over the current TTY to do just that?
If systemd was just a system for organizing the boot process, adding some complexity to simplify much more and making sure that daemons providing services get run in parallel to boot the systems boot time... Well, I'd have absolutely no objection to it. Instead it has subsumed separate projects and forced people to fork them or recreate them if they do not want to use systemd. Further, it appears that people that don't like systemd but like Gnome will soon lose the option to run new versions of Gnome because several key components of Gnome now have a hard dependency for systemd or one of it's sub-projects. Open Source is supposed to be about choice and by forcing people to use something that they might not want to that choice is being taken away.
So, with all the sarcasm I can muster, all those systemd supporters out there and it's creator have my hearty applause for doing something that goes against one of the key tenets of the Open Source movement. Bravo! You've successfully taken away something from people that you claim to be supporting. What a show of hypocracy!
>> Take a look at what those people who know their craft recommend - e.g., the Federal Aviation Association,
Lol. As someone who worked develping software for avionics for 8 years I can tell you that the FAA standards e.g. DO178B are bizarrely clueless, and most avionics companies have enough fingers in the pie to get any old piece of shit through FAA certification. Unfortuantely the FAA have decided to be completely reliant on the fox for advice on watching the hen house.
I've seen some bad code in my 35 years as a developer, but truly all the worst sutff was for avionics supposedly written to FAA procedures/standards.
Most of the US avionics industry is so stagnant and full of truly clueless managers and beancounters with wrongehaded priorities enforcing retarded metrics that I simply refuse to ever work in avionics again.