[go: up one dir, main page]

|
|
Log in / Subscribe / Register

Devuan Jessie beta released

Devuan Jessie beta released

Posted Apr 30, 2016 21:40 UTC (Sat) by anselm (subscriber, #2796)
In reply to: Devuan Jessie beta released by flussence
Parent article: Devuan Jessie beta released

Devuan is unique among Linux distributions in that it defines itself primarily by what it doesn't contain.

System-V init was just as much of a “mistake” in the 1980s as systemd is today. Exactly the same sort of people condemned it at the time as overengineered, error-prone and generally unnecessary. It's just that if you've been brought up on the thing you won't necessarily notice this, and yesterday's obvious mistake becomes today's revered tradition. Which isn't always bad – there are loads of mistakes in Unix/Linux that we have learned to live with – but shouldn't preclude the adoption of new, better solutions, especially if the problem space has changed (as it has in the case of 2010s Linux vs. 1980s Unix).


to post comments

Devuan Jessie beta released

Posted May 1, 2016 1:22 UTC (Sun) by rgmoore (✭ supporter ✭, #75) [Link] (1 responses)

Devuan is unique among Linux distributions in that it defines itself primarily by what it doesn't contain.

That's not really true. There are also distributions that define themselves in terms of eliminating all non-free software, including things like firmware blobs. That seems like defining themselves in terms of what they leave out.

Devuan Jessie beta released

Posted May 1, 2016 3:35 UTC (Sun) by sfeam (subscriber, #2841) [Link]

Not to mention the various tiny/damn-small/nano/reduction-of-your-choice linux variants that are designed to leave out as many things as possible while still fulfilling a target niche.

Devuan Jessie beta released

Posted May 1, 2016 12:55 UTC (Sun) by ksandstr (guest, #60862) [Link] (10 responses)

>System-V init was just as much of a “mistake” in the 1980s as systemd is today. Exactly the same sort of people condemned it at the time as overengineered, error-prone and generally unnecessary. It's just that if you've been brought up on the thing you won't necessarily notice this, and yesterday's obvious mistake becomes today's revered tradition.

This implies that systemd is being opposed for not being sysvinit. Nothing could be further from the truth -- it's rather that systemd is so bad, by for example causing things to break and otherwise become worse than before systemd, that it is worse than sysvinit. Regardless of how one rates sysvinit, systemd is worse: things worked before systemd, after systemd they do not.

But as propaganda pieces go it's nearly impeccable. "The same sort of people", indeed. Let's forget the technological details in favour of equivocating not generations-apart instances of overengineering itself, or even claims thereof, but the pundit's stereotype of his opponents! If this is the best-of-breed systemd advocacy, then it must be teetering on its foundation.

Devuan Jessie beta released

Posted May 1, 2016 13:52 UTC (Sun) by anselm (subscriber, #2796) [Link] (9 responses)

This implies that systemd is being opposed for not being sysvinit.

There's nothing wrong with System-V init. It was a great idea in its time, which was the 1980s, and was a huge improvement on what came before. The issue with System-V init today is that it is now 30+ years old, and during these three decades the problem it was designed to solve has changed considerably. System-V init has patently failed to evolve to address these changes in the problem space, and is therefore ripe for replacement by something that was written to work well in the 2010s (and hopefully beyond). By broad consensus this seems to be systemd.

Regardless of how one rates sysvinit, systemd is worse: things worked before systemd, after systemd they do not.

I don't think this is in fact as black and white as you make it out to be. Lots of things work better now than they used to. (Remember how people used to have to put random “sleep” commands into their init scripts to mitigate race conditions, which are now being solved by actual infrastructure.) Things that actually don't work tend to get fixed as bugs. After a number of years of bugfixing there are in fact very few things left that used to work before but now don't, while there are many things that work more consistently or are in fact convenient to do when, before, they were a huge hassle to implement.

This is on top of a number of other advantages of systemd, including (but not limited to):

  • The various components of systemd actually follow a common design, unlike the traditional setup (System-V init and init scripts, inetd, cron, …), which was assembled out of random pieces from a variety of unrelated sources with no overarching idea of a cohesive design.
  • Systemd has done a lot to unify “basic plumbing” between Linux distributions, leaving distributions' maintainers free to concentrate on other areas that provide value to users, and making it easier for upstream developers to include systemd configuration files that are more likely to work across a large variety of Linux distributions, thereby reducing distribution maintainers' work even further.
  • All systemd configuration files “smell” the same, while in the traditional setup no two configuration files have the same format (/etc/inittab vs. /etc/fstab vs. /etc/inetd.conf vs. /etc/crontab vs. …). This is on top of init scripts being essentially free-form shell scripts that consist of 90% boilerplate but are still specific to individual Linux distributions. This makes systemd-based Linux systems a lot easier to learn, teach, understand, maintain, and customise than Linux systems following the traditional approach. (I used to make a living teaching people Linux system administration, and believe me I never met anyone in my classes who didn't like the idea of making Linux system administration easier to learn and understand.)
  • Continuing from the previous point, all the various components of the traditional setup use different ways of starting processes (e.g., init vs. init scripts vs. cron vs. at vs. inetd). These subprocesses can have wildly different setups (environment, working directory, capabilities, I/O setup, …) depending on which service started them, and a system administrator must be aware of these differences and take them into account when configuring, e.g., cron jobs vs. at jobs. With systemd, the same mechanism is used in every case, which not only makes a subprocess's environment, resource limits, security attributes, … more straightforward to configure but also leads to less code to debug and hence fewer bugs.
  • Systemd removes the necessity for system services started from init scripts to go through an elaborate song-and-dance routine in order to dissociate themselves from the script that started them and be adopted by the init process. In fact, systemd has a much clearer picture of which services are running and which aren't and is able to restart services that fail, which is something that System-V init ignores completely – a system administrator has to add their own infrastructure, not usually provided by default by Linux distributions, simply to ensure that a service once started by System-V init actually remains up and running.
  • Systemd is designed to make systems more maintainable by enforcing a clear separation between configuration provided by the distribution and configuration provided by the local administrator. This makes it a lot easier to identify what was in fact changed locally, and to carry local setup across distribution upgrades. The traditional setup has nothing to offer in this regard. For example, if you want to change the way your system starts a service like Apache, then in the traditional setup you are reduced to figuring out the (distribution-specific) Apache init script and customising it to suit your requirements by hacking shell code, even for basically very simple things like running several independent copies of Apache on the same system. These customisations must then be carefully preserved against the case that the distribution ever decides to upgrade Apache (and its init script) because there is only one place on the system where init scripts can go and it belongs to the distribution.

In general, the tradeoff between the traditional setup and systemd tends to come out in systemd's favour, which is the reason why so many distributions decided to base themselves on systemd rather than the traditional setup (they didn't do it because they love Lennart Poettering so much or because Red Hat was bribing them, after all – they did it because they evaluated systemd and liked what they saw). It is of course possible to deny all of this, but doing so is likely to make the deniers look progressively more ridiculous as time marches on.

Devuan Jessie beta released

Posted May 1, 2016 17:08 UTC (Sun) by darwish (guest, #102479) [Link]

Not to mention how KDE and gnome adopted systemd session management and user session bootup (soon), etc.. not because of any "conspiracy" of course, but rather .. guess what, the actual developers who do the actual work find it termendously useful:

http://blog.davidedmundson.co.uk/blog/systemd-and-plasma
https://blog.martin-graesslin.com/blog/2014/10/libinput-i...

Or that we can now run Xorg and other daemons without roout access, thanks to systemd-logind session management:

https://dvdhrm.wordpress.com/2013/08/24/how-vt-switching-...

Or how the Arch Linux developers chose to migrate to it, back in 2012, for very concrete reasons:

https://bbs.archlinux.org/viewtopic.php?pid=1149530#p1149530

Or how that finally, after a very long time, the Linux userspace is gaining funding and care by the same companies who contribute to the kernel .. why? Because the "bag of bits" approach, the old-school admins so fond of, does not work in the new world of vertically integrated stacks and containerization (that is, iOS and Android .. by far now the most used computing platform out of the server domain) ..

But the anti- systemd community has just been defind by its "NO" stance.. no to any change or progress.. But progress is always better than standing still, even if we're "progressing" into wrong directions at times ..

Devuan Jessie beta released

Posted May 3, 2016 7:36 UTC (Tue) by alankila (guest, #47141) [Link] (5 responses)

The only real issue I have with systemd is that unit files have become horribly complicated. I would like them to have approximately 10 different directives, max, as opposed to the approximately 100 seen here: https://www.freedesktop.org/software/systemd/man/systemd....

I have a persistent feeling that forking a daemon and keeping it running isn't so complicated that it should need all that flexibility, and I will probably never personally learn except the most minimal set of directives -- just enough to get something up and then to keep it running until I tell it to stop.

Devuan Jessie beta released

Posted May 3, 2016 8:27 UTC (Tue) by Cyberax (✭ supporter ✭, #52523) [Link] (1 responses)

Perhaps systemd can switch to something like (but not necessarily) JSON for more hierarchical configuration. Additionally, it'd be useful to have a more powerful template engine for command snippets.

But these features can be added backwards-compatibly later, perhaps in a couple of years if the number of options becomes too large.

Devuan Jessie beta released

Posted May 6, 2016 18:29 UTC (Fri) by imMute (guest, #96323) [Link]

You can do this *today*. All you have to do is write a systemd-generator (https://www.freedesktop.org/wiki/Software/systemd/Generat...) that parses your JSON configuration schema.

This is how systemd handles "legacy" configuration files like /etc/fstab (https://www.freedesktop.org/software/systemd/man/systemd-...) and /etc/init.d/ sysv scripts (https://www.freedesktop.org/software/systemd/man/systemd-...).

Devuan Jessie beta released

Posted May 3, 2016 10:06 UTC (Tue) by anselm (subscriber, #2796) [Link] (2 responses)

That list looks more intimidating than it actually should because very many directives are specific to particular types of unit. There is a certain number of directives that potentially apply to all units but the various unit types have their own sets of directives which makes things slightly more logical. Also, some of the directives cover fairly obscure use cases.

Devuan Jessie beta released

Posted May 3, 2016 10:46 UTC (Tue) by itvirta (guest, #49997) [Link] (1 responses)

Well, TBH, hierarchical keyword names might not be bad at that point.

Devuan Jessie beta released

Posted May 3, 2016 11:24 UTC (Tue) by anselm (subscriber, #2796) [Link]

Systemd effectively has this to a degree because of the structure of unit files, which are split into “sections” each of which can only contain a certain (limited) set of directives. For example, here's /lib/systemd/system/ssh.service from my system:

[Unit]
Description=OpenBSD Secure Shell server
After=network.target auditd.service
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run

[Service]
EnvironmentFile=-/etc/default/ssh
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Type=notify

[Install]
WantedBy=multi-user.target
Alias=sshd.service
All units can have the Unit and Install sections, which essentially describe the unit itself (including dependendices and conditions under which it should be considered) and how it is to be installed, respectively. The Service section is specific to services and describes how a background service is supposed to be run. (Socket units, for example, would instead include a Socket section containing directives that talk about communication channels.)

One advantage of this scheme is that it is easy to override individual directives by creating a file under (for example) /etc/systemd/system/ssh.service.d/override.conf that contains just the directives one would like changed, as in

[Unit]
Description=A silly example of overriding a directive
Systemd knows how to piece together the “effective” unit file from the basic version in /lib and any overrides in /etc, and that helps in future-proofing local changes because they are cleanly separated from the default configuration provided by the distribution. (It also includes tools that let you look at the “effective” unit file and how it is assembled.) In my opinion this is a big improvement on the “my way or the highway” approach taken by System-V init's init scripts.

Devuan Jessie beta released

Posted May 3, 2016 21:08 UTC (Tue) by flussence (guest, #85566) [Link] (1 responses)

> All systemd configuration files “smell” the same, while in the traditional setup no two configuration files have the same format (/etc/inittab vs. /etc/fstab vs. /etc/inetd.conf vs. /etc/crontab vs. …). This is on top of init scripts being essentially free-form shell scripts that consist of 90% boilerplate but are still specific to individual Linux distributions. This makes systemd-based Linux systems a lot easier to learn, teach, understand, maintain, and customise than Linux systems following the traditional approach.

I prefer the “different things should look different” approach. Killing off LSB's awful rc script “standard” is a positive change I won't argue with, but there was nothing wrong with the tabular declarative config files elsewhere — the only thing that's been achieved there is making /etc/ smell like a COBOL peg hammered into a .ini hole.

Devuan Jessie beta released

Posted May 3, 2016 21:56 UTC (Tue) by anselm (subscriber, #2796) [Link]

I prefer the “different things should look different” approach.

Different types of systemd unit files do look different, to a certain degree, because they support different sections with different directives. There is still an advantage in using the same underlying syntax and semantics since that means the overall cognitive load is less. You only need to learn it once and then you can use it everywhere. (This is basically why general-purpose programming languages such as Python are popular.)

In addition, much of what the traditional configuration files – /etc/inittab, init scripts, /etc/inetd.conf, /etc/crontab and so on – describe isn't really that different, from one file to the next. At the end of the day they are all about starting subprocesses. There is no particular reason why there should be eleven different ways of specifying how a subprocess is to be started, but even so /etc/inittab lets you restart a service if it crashes but init scripts don't. /etc/crontab lets you specify environment variables for services but /etc/inetd.conf doesn't. And so on.


Copyright © 2026, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds