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.
I don't have systemd, yet my Debian install still works fine.
Can someone please tell me what all the fuss is about?
Why is there so much effort going into this broken ass system when Apple made launchd available open source long ago.
On the one hand, this is "the community" at work; someone took up the effort to scratch an itch. Kudos for that.
On the other hand, this itch being scratched is not really an itch, but a cancer of inept arrogance with a hideous political agenda behind it that has been allowed to fester for far too long, is still happily festering. Meaning that "the community" its immune system looks slow and weak; it first has to let itself get thoroughly sick before it can start to get better. And even if this succeeds, we'll end up with a lot of totally unnecessary scar tissue.
That scar tissue? Even if only this daemon remains, it is still a bunch of code to patch to a complete failure at software design that we won't be able to get rid of. Yes, even if boiled down to the bare essentials. The failure remains.
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.
Good to see the udev functionality being removed. Not only was its functionality irrelevant to the purpose of the code that subsumed it, udev apparently introduced too many other issues inappropriate for a PID=1 process.
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();
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?
Come on, tell me that this is a real project. It sounds like someone's idea of "I don't need it".
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.
Sounds a lot like the old assembly programmer's complaint of "too much waste". Well, we eventually developed software hundreds of times more quickly when we permitted the waste of using C, and even faster than that when we permitted the waste of using Java. Note that when the waste grew painful, we optimized it away (Java is now within the performance range of C++ in many use scenarios), we didn't revert back to our earlier techniques.
Should we take this seriously? The name is "use-less-daemon." Thoughts?
Only the dead have seen the end of War. - Plato
I would re-fork it just to change the stupid name, before integrating it into my OS.
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.
There was an argument the other day about weird/stupid names for free software...
You multiple account using sockpuppetmaster scum http://slashdot.org/~BarbaraHu... = http://slashdot.org/~tomhudson... + http://slashdot.org/~Barbara%2... ?
If systemd has too much code, you need to use less code. Use less. Uselessd.
Interestingly, the author does not want to even reveal his name. The uselessd homepage just says this:
"Only one person. A total nobody. The boycottsystemd.org page itself was spontaneously conjured on IRC by multiple people, but the uselessd project is the work of only one of them. You can find me on the Dark n’ Edgy forums as V.R. and I go by commit logs as The Initfinder General. No, I am not Billy Estes. He only owns the boycottsystemd.org domain."
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
That is a bizarre link indeed! WTF is up with that.
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.
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
... 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.
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.
Ever since Debian switched to systemd, I can't hibernate. systemd doesn't allow resume from a LUKS encrypted swap.
Well google have BoringSSL, perhaps it's a trend of stupid names for forks in seeking to discredit the upstream...
... is Gobolinux's Init and Done.
Two scripts -- so simple and easy!
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
To prevent it over-relying on the monolithic systemd and becoming more like windo... hmm
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.
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.
in the self-ironic naming of open source software.
Lennart Poettering, Kay Sievers, Harald Hoyer, Daniel Mack, Tom Gundersen, David Herrmann, and others
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.
And Apple also exited the server space, where most of the complaining about init systems originate from. In fact most of the complainers say systemd is ignoring the needs of server users in the interest of the ever 'right around the corner' miracle of 'the Year of Linux on the Desktop.' See the similarity? See how you are making their arguments for them by bringing Apple into this argument?
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.
" and it's even being ported to BSD."
DEATH IS COMING
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.
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.
Why the BSD side have a negative view of systemd.
The question I am asking is : Are some of the BSD people oppose or hostile to GNU/Linux?
Assuming they don't have the best interest for GNU/Linux, then what they say against systemd means that systemd is good for GNU/Linux.
What I am saying is that if systemd make GNU/Linux better, then the opposite team should undermined systemd for their own advantage.
I hope i am wrong on this.
Wait... what? I'm gobsmacked. What made you say that? Are you trolling?
kill -1 is used daily by experienced professional system administrators to implement reconfigurations without service interruptions. It has exactly nothing to do with problem resolution.
Instead of creating yet another pointlessly unique command to gracefully manage a multiuser service, highly competent programmers implement a standard HUP signal handler. Note that all the really hard core deep infrastructure services that the Internet relies on (DNS, LDAP, NTP, syslog, etc) and even the more professional user-interactive stuff (webservers, database daemons, etc.) does this - it's a good signifier of extremely highly reliable software. No signal handlers? It's playskool.
Real Internet servers (as opposed to personal computers) often need to be reconfigured during working hours. They might need a new stanza in the logging subsystem due to implementation of a new service, or you might bring up several new web sites during a week, or you might be changing the naming or numbering of a large group of dynamically addressed client systems such as SIP phones. Instead of having to learn many redundant commands to do the same job, you do all these the same way - change the configuration file appropriately, and kill -1 the service daemon. Any other method either makes the end-users cry, or is unnecessarily complicated.
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!
The sooner Poettering and his army of technically inept trolls go back to Windows the sooner we can wipe away the damage.
I missed the unix wars, but from what I have read ... this seems familiar.
>> 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.
Could someone please explain what the problem with systemd is to someone who can barely navigate bash?