News for hackers. Stuff that matters.
Re:Results of the Debian systemd survey by qznc on Tuesday May 28, 2013 @08:02AM (#5779401)
The anxious parties are mostly the BSDs and maybe Ubuntu.

Other using systemd is not a problem for anybody. The problems start once the higher-level stuff (X.org,Wayland,Gnome,KDE,gdm,etc) requires systemd. The question is whether the anxious parties have enough devpower to maintain portability layers and especially the BSDs may not.

However, by Adams Law of Slow-Moving Disasters [0] these problems will be resolved in time.

[0] http://www.dilbert.com/blog/entry/fact_checking_adams_law_of...

Re:Results of the Debian systemd survey by nitrogen on Tuesday May 28, 2013 @09:24AM (#5779819)
One of my concerns with systemd is that kernel interfaces for input and display devices will begin to assume its presence, negatively affecting my ability to use /dev/input/event* or /dev/fb* in embedded systems.
Re:Results of the Debian systemd survey by bitwize on Tuesday May 28, 2013 @12:50PM (#5781076)
Nobody cares about the old, portable, loosely coupled Unix Way of developing software. That's just not how modern apps are written anymore.
Re:Results of the Debian systemd survey by anonyfuss on Tuesday May 28, 2013 @01:20PM (#5781241)
That's the way Mac OS X is written. They certainly haven't bundled the entire universe into a single master "system daemon" project.

A few, off the top of my head:

configd: A configuration store that handles storing (and monitoring changes to) configuration. It supports arbitrary plugins, such that other dependent systems can inject their own implementation code if necessary. It depends on kernel notification APIs and network notification APIs that are implemented at a different level.

launchd: Starting/stopping/restarting services, on-demand and on a schedule, per-user and system-wide.

diskarbitrationd: Handles mounting/unmounting of file systems, and notifies clients of changes to mounted file systems.

opendirectoryd: Handles namespacing of local and remote user/data directories. This includes LDAP, local user accounts, etc.

mDNSResponder: Used to be just the mdns daemon, now handles all name resolution and local caching.

All of these things have been iterated on independently over time, are loosely coupled with each other, and do not create tight bindings between Mac OS X and open source software, nor do they require huge non-portable changes to open-source software.

The precursor to opendirectoryd was netinfo, which also used to handle name resolution and caching. Later releases of Mac OS X moved name resolution into directory services, and then eventually into mDNSResponder. launchd replaced system starter (similar to initd/rc), cron, and a number of other services, but maintained 'perfect' backwards compatibility with the standard configuration file formats (eg, crontab(5)).

These are just a few of the (independently maintained, internally) projects/daemons that Mac OS X layers together to produce the desktop. You don't need a huge monolthic project to tackle all these problem domains, as evidenced by the fact that Mac OS X works.

You also benefit from laying these projects cleanly, as it allows them to tackle what they're good at, provide a stable interface, or even be swapped out entirely later.

Re:Results of the Debian systemd survey by bitwize on Tuesday May 28, 2013 @01:53PM (#5781450)
That's the way Mac OS X is written. They certainly haven't bundled the entire universe into a single master "system daemon" project.

Actually, launchd replaces init, inetd, crond, atd, and watchdogd.

I mean where do you think systemd got the idea from? :)

Re:Results of the Debian systemd survey by anonyfuss on Tuesday May 28, 2013 @02:20PM (#5781653)
> Actually, launchd replaces init, inetd, crond, atd, and watchdogd.

That's not a "system daemon". Let's break it down:

- init: start/stop services

- inet: start/stop services

- cron: start jobs on a schedule

- atd: start jobs on a schedule

- watchdogd: restart services

Notice the commonality? launchd launches services, possibly on a schedule.

> I mean where do you think systemd got the idea from? :)

systemd is monolithic and system-invasive in ways that launchd never could be, or that anyone wants it to be. Just take a look at the systemd feature list[1]: Quota handling, swap handling, encrypted disk handling, kernel module loading, graphical UI, syslog replacement, console/keyboard configuration, X11 integration, fsck handling, serial console handling, and more!

Systemd is a crazy kitchen sink of a project. It's no wonder that it's non-portable, and I can't imagine trying to evolve the components of a system that came to rely on it. The minute you want to change how an OS subsystem works (eg, such as the automounter), you'll have to dig into the non-portable/non-abstracted systemd code.

[1] http://0pointer.de/blog/projects/why.html

Re:Results of the Debian systemd survey by bitwize on Tuesday May 28, 2013 @02:52PM (#5781875)
Yes, but... five second boot time!

Notice the commonality? launchd launches services, possibly on a schedule.

And so does systemd. The other stuff is handled by separate daemons that are part of the overall systemd project. See? Separate processes! That means it's not tightly coupled at all!

Personally, I feel that systemd is a shitfest -- so bad I switched back to slackware from Arch, being more than willing to sacrifice bleeding-edge distro releases and dependency management just to avoid it -- and that the unix way is how things should be developed. It's been a while since I've really been on top of Mac OS X internals, but if what you say is true they're doing a much better job of remaining modular and loosely coupled than Lennart has been.

But the CADT hivemind has declared the traditional Unix model obsolete. They tend to do a lot of throwing out babies with the bathwater, then rationalize it by saying obviously they were children no one wanted, and aren't we overpopulated enough as it is. I don't think Lennart is particularly innovative in this regard; he learned the game from the GNOME team. When the rationale for your black hole in my /usr/lib is called "Let's Make Unix Not Suck", you know you're a special breed of arrogant.

Re:Results of the Debian systemd survey by bkor on Tuesday May 28, 2013 @04:00PM (#5782350)
systemd can boot quite a bit faster than just 5 seconds. In any case, do you have any specific complaints? Your post is pretty long but lacks specifics.
Re:Results of the Debian systemd survey by bitwize on Tuesday May 28, 2013 @04:25PM (#5782514)
Pid 1 does a lot.

You lost me right there.

Beyond that, the fact that the basic fundamental underpinnings of a Linux system are large monsters that try to do everything, and depend on dbus and libthis and libthat, is deeply offensive. So is the fact that despite there being many daemons in "systemd", they all depend on each other so that to get the benefits of one you have to take them all. It's the GNOME style of programming. I've hated GNOME since 1999 when it first came out, but I didn't worry too much about it since I never used it. But if this crap becomes the norm at a basic system level, it obviates the reason I got into Linux in the first place: to have a clean and useful Unix system that does the minimum it needs to do and otherwise stays the hell out of my way.

Re:Results of the Debian systemd survey by anonyfuss on Tuesday May 28, 2013 @04:14PM (#5782438)
> systemd can boot quite a bit faster than just 5 seconds.

So can other operating systems, no monolithic kitchen sink of systemd required [1].

[1] I realize that having 69 totally interdependent and non-portable daemons is considered "non-monolithic" in systemd-land, but I live in the real universe.

Re:Results of the Debian systemd survey by jeltz on Tuesday May 28, 2013 @07:50PM (#5783643)
Other init systems are just as bad. It is not like the scripts and executables used in sysvinit or upstart are any more portable than the systemd executables (which are not daemons). They are usually less portable since many of them are distro specific.

If anything you should call systemd out for inventing another standard to solve the problem of there being too many standards.

Re:Results of the Debian systemd survey by anonyfuss on Tuesday May 28, 2013 @09:05PM (#5783968)
> Other init systems are just as bad.

Hardly. Other init systems don't bolt together everything from a (mandatory) syslog replacement to an NFS automounter to a kernel module loader.

Re:Results of the Debian systemd survey by gonzo on Tuesday May 28, 2013 @10:01AM (#5780066)
Why are the BSDs anxious about systemd?
Re:Results of the Debian systemd survey by noselasd on Tuesday May 28, 2013 @10:16AM (#5780164)
Because, as the parent said, as higher level projects, starts requiring systemd, the BSDs will either have to port over systemd and replace their init system, or keep around patches to go around systemd requirments for every application that needs it. Neither is desirable and would take non-trivial effort.
Re:Results of the Debian systemd survey by jeltz on Tuesday May 28, 2013 @10:19AM (#5780183)
Because (as qznc stated) they are worried that various applications will start to rely on systemd features so that BSD either will have to maintain a compatibility layer or be stuck with old software.
Re:Results of the Debian systemd survey by zokier on Tuesday May 28, 2013 @10:11AM (#5780140)
Because systemd doesn't run on BSD, and probably never will.
Re:Results of the Debian systemd survey by anonyfuss on Tuesday May 28, 2013 @11:40AM (#5780648)
footnote: because the maintainer (Lennart Poettering) is religiously anti-portability.

This is a shame, because it makes for brittle software, even when targeting the same platform where APIs do shift and improve over time.

To quote:

> In fact, the way I see things the Linux API has been taking the role of the POSIX API and Linux is the focal point of all Free Software development. Due to that I can only recommend developers to try to hack with only Linux in mind and experience the freedom and the opportunities this offers you. So, get yourself a copy of The Linux Programming Interface, ignore everything it says about POSIX compatibility and hack away your amazing Linux software. It's quite relieving!

I find this to be extremely cringe-worthy; I can only hope that a Linux monoculture isn't the future of open source development.

Re:Results of the Debian systemd survey by npsimons on Tuesday May 28, 2013 @12:33PM (#5780983)
I hate with a passion having to work on just about any platform besides Debian/Linux. Call it what you will, I'm just very comfortable and satisfied with how Debian/Linux works. That being said, to be anti-portability is just plain unprofessional. Just having a second non-gcc compiler to test against for, say C++, is a blessing in that it's bound to make you rethink how you code and to catch problems well before they happen. The more platforms you can test against, the better your code will be. And much as I love Linux, I would hate to see it stagnate and become the only OSS option. I think Poettering has had an attitude problem for quite some time, and unfortunately he doesn't seem to be getting any better.
Re:Results of the Debian systemd survey by bkor on Tuesday May 28, 2013 @04:01PM (#5782361)
Do you really think BSD would replace their init system with something not BSD licensed? Seems like a pointless exercise to slow down progress just for theoretical usecase.
Re:Results of the Debian systemd survey by npsimons on Tuesday May 28, 2013 @11:21PM (#5784383)
Which is part of my point; although BSD is not my personal license of choice, I really think it would be a bad idea to have Linux distros (or apps higher in the stack) be incompatible with the BSDs, eg by requiring something Linux specific (eg, systemd). I'm not a big fan of systemd; I really think is too wide in scope, and making the logs binary doesn't make sense to me. It might be more acceptable to me if they dual licensed it (GPLv3 and BSD) so that it could be ported to and used in the BSDs (among other systems); that would also give the bonus of improving the code (which making it portable almost always does). Alas, none of these concerns are likely to be addressed satisfactorily.

PS - So-called "theoretical" use cases have probably been the number one source of bugs (especially security holes) in the history of software. "Oh, don't worry about checking array bounds, nobody would be stupid enough to write too much data!"

Re:Results of the Debian systemd survey by mseepgood on Tuesday May 28, 2013 @11:50AM (#5780707)
> This is a shame, because it makes for brittle software

The opposite is true: Abundant use of #ifdefs makes for unmaintainable and brittle software.

Re:Results of the Debian systemd survey by msbarnett on Tuesday May 28, 2013 @12:12PM (#5780867)
The choice between 'portability' and 'ifdefs' is a false dichotomy. There are far cleaner ways to achieve portability, and ifdefs are almost always a sign of 'doing it wrong'.

See, for example, Kernighan and Pike talking about portability in The Practice of Programming.

Re:Results of the Debian systemd survey by bkor on Tuesday May 28, 2013 @04:03PM (#5782367)
BSD doesn't support a bunch of stuff. How would you deal with that concretely. How would you ensure that all those different code paths are tested?
Re:Results of the Debian systemd survey by npsimons on Tuesday May 28, 2013 @11:42PM (#5784461)
Code coverage tools are available. Porting software to other platforms is just one crude, but very effective way of testing different code paths, some you can't even see (unless you are in the habit of stopping at each compile stage and checking things such as the compiler's assembler output . . . ).
Re:Results of the Debian systemd survey by anonyfuss on Tuesday May 28, 2013 @04:23PM (#5782504)
> BSD doesn't support a bunch of stuff. How would you deal with that concretely. How would you ensure that all those different code paths are tested?

You could start by explaining "a bunch of stuff" -- and why it's necessary -- concretely.

Re:Results of the Debian systemd survey by anonyfuss on Tuesday May 28, 2013 @11:55AM (#5780737)
> The opposite is true: Abundant use of #ifdefs makes for unmaintainable and brittle software.

False dichotomy; simply don't make abundant use of #ifdefs.

Most large, portable projects don't use #ifdefs across the codebase. They abstract the core concepts out into interfaces that can be implemented atop different APIs, and then maintain distinct implementations where necessary.

The advantage is that this also insulates you from changes to the underlying system APIs, creates testable code, and provides clean well-defined points of interaction between subsystems.

Re:Results of the Debian systemd survey by mseepgood on Tuesday May 28, 2013 @12:14PM (#5780877)
> They abstract the core concepts out into interfaces that can be implemented atop different APIs

This is exactly what systemd's D-Bus API is for.

Re:Results of the Debian systemd survey by anonyfuss on Tuesday May 28, 2013 @12:25PM (#5780936)
D-bus isn't a software architecture and doesn't somehow magically make systemd more maintainable.
Re:Results of the Debian systemd survey by bkor on Tuesday May 28, 2013 @04:04PM (#5782379)
Another layer of abstraction just results in more complicated code, more bugs, more difficulty testing the different code paths. Might be fine for a lot of projects, but this is just something to boot up your system.
Re:Results of the Debian systemd survey by anonyfuss on Tuesday May 28, 2013 @04:21PM (#5782490)
> Another layer of abstraction just results in more complicated code, more bugs, more difficulty testing the different code paths.

No. A proper approach to abstraction:

- Reduces complexity by reducing interdependency between subsystems.

- Facilitates testing by reducing interdependency between subsystems, and reduces bugs by facilitating testing.

- Allows for iterating components of the code base independently, and more easily adapting to changes to underlying components and subsystems, whether in the software themselves, or part of the system(s) the software relies on.

> Might be fine for a lot of projects, but this is just something to boot up your system.

Actually, this isn't just something to boot up your system (and if it was, it would be even easier to keep portable).

Instead, systemd a kitchen-sink-replace-everything-daemon that introduces massive cross-system/cross-module dependencies.