News for hackers. Stuff that matters.
Re:Don't panic and keep forking Debian by Aloha on Friday November 28, 2014 @08:20PM (#8672736)
I'm for sure not feeling the love for systemd, it seems un-UNIX and a solution looking for a problem, and change for the sake of change. That said, not so big on the idea about a fork, I'd rather see debian do the normal debian thing, and support both things, maximizing freedom. That said, if that can't happen, a fork is inevitable - for the love of god pick a better name.
Re:Don't panic and keep forking Debian by marcosdumay on Friday November 28, 2014 @09:47PM (#8672912)
The problem is that systemd is making it impossible to create a system where you can use either it, or another init. A fork may be the only way to avoid it, and it's quite probable that this fork will lose GNOME in a few years.

I'm still hooting for a EGCC kind of resolution... but the way more likely outcome is that systemd is here to stay.

Re:Don't panic and keep forking Debian by lelandbatey on Friday November 28, 2014 @08:30PM (#8672763)
You seem like someone who's used a variety of init systems, so I have some questions:

1. Why is systemd considered "un-unix"?

2. Why is sysv considered to "follow unix"?

3. Can you provide or point to some explanations on the ideologies that motivate the difference of opinions regarding sysv/systemd?

4. Really, can someone provide some context and history for all this?

Re:Don't panic and keep forking Debian by chubot on Friday November 28, 2014 @09:03PM (#8672829)
Those are good questions, but answering them won't fit in a comment. It takes more like a book.

One of the best books on the Unix philosophy is "The Art of Unix Programming", which is available for free. (I recommend getting a hard copy and reading the whole thing.)

http://www.catb.org/esr/writings/taoup/html/

Other books include The Unix Programming Environment by Pike et. al., though it's less explicit about the philosophy.

Here's one part of the argument: systemd breaks the Unix design style because it's monolithic: http://www.catb.org/esr/writings/taoup/html/ch01s06.html#id2...

But then systemd developers claim it's not monolithic because it's actually composed of multiple processes. They say there is a misconception that all code is contained in PID 1. There are many executables and many processes, so they would say systemd is modular.

But the problem is that all the binaries are released together, without well-defined interfaces. Moreover they are also tightly coupled to kernel features.

If you have 2 binaries A and B, but the interfaces between them is not documented or stable, then it's not really modular, because you can't write your own B' to work with A or A' to work with B.

The recent thread here about dbus is a good example. Traditional Unix is simple text protocols. dbus is this weird text/binary RPC-ish mix which is not documented.

There are lots of other issues with systemd and the Unix philosophy, but that should give you a flavor.

Re:Don't panic and keep forking Debian by the_why_of_y on Saturday November 29, 2014 @06:38AM (#8673580)
> systemd breaks the Unix design style because it's monolithic: > But the problem is that all the binaries are released together, without well-defined interfaces.

So are Xorg and Apache HTTPD, which break module ABI with every release. Postfix and qmail are also monolithic (according to your reasoning), with a modular implementation of multiple processes but no stable interface between them. If you replace of the postfix processes with one of the qmail processes you won't get a working MTA.

Not to mention the Linux, FreeBSD, Solaris etc. kernels themselves.

Why is it then that we see this argument only used against systemd, when your average Linux distro install is primarily composed of software systems that you would consider to be monolithic?

> Moreover they are also tightly coupled to kernel features.

sysvinit is also tied to kernel features: it won't work without Linux procfs.

> dbus is this weird text/binary RPC-ish mix which is not documented.

No idea where you got that idea, is this D-Bus protocol documentation is a figment of my imagination?

http://dbus.freedesktop.org/doc/dbus-specification.html

Re:Don't panic and keep forking Debian by chubot on Saturday November 29, 2014 @01:24PM (#8674547)
This is the dbus post I'm referring to: https://news.ycombinator.com/item?id=8648437

Here's a nice quote right from the doc you linked: The D-Bus protocol is frozen (only compatible extensions are allowed) as of November 8, 2006. However, this specification could still use a fair bit of work to make interoperable reimplementation possible without reference to the D-Bus reference implementation.

The fact that you even NEED a (crappy) doc is a sign it doesn't use the Unix design philosophy.

In contrast, look at the Debian Control File format, which apt metadata is stored in. I parsed and wrote a dependency resolver for it WITHOUT any reference to docs. The format is self-documenting text.

X is Unix style in the sense that you can plug in different window managers, but not Unix style in other ways.

Shared library extension modules (e.g. Apache, Python, etc.) are not "classic" Unix. Classic Unix simply didn't have shared libraries (or threads). Plan 9 and Go explicitly have this heritage; they don't support shared libraries.

Apache is Unix style because it uses stable protocols between application and server, like CGI, FastCGI, etc. It also uses textual logs, unlike systemd.

I would also argue that systemd encompasses more diverse functionality than either X or Apache, which is saying a lot. The bigger a system is, the worse a monolithic architecture is.

But you're right that modern Unix doesn't follow Unix style in many ways. I am not arguing for purity -- shared libraries are useful, and graphics don't fit well within Unix style. But I do think it is worth understanding the Unix style, for very a practical reason. That reason being: you simply end up with less code when your systems are modular and composable.

Re:Don't panic and keep forking Debian by the_why_of_y on Sunday November 30, 2014 @06:57AM (#8676617)
> This is the dbus post I'm referring to: https://news.ycombinator.com/item?id=8648437

Oh right, somebody looked at the spec for 15 minutes, mis-read it completely (confusing the authentication protocol with the actual IPC protocol) and wrote a blog rant about their failure in reading comprehension. Very compelling.

> The fact that you even NEED a (crappy) doc is a sign it doesn't use the Unix design philosophy.

So HTTP is against the UNIX philosophy too? Or did you also happen to implement that without ever looking at the specification?

> In contrast, look at the Debian Control File format, which apt metadata is stored in.

In other words, apples make better apple juice than oranges.

> That reason being: you simply end up with less code when your systems are modular and composable.

You seem to be under the mis-apprehension that monolithic is somehow an antonym of modular. systemd is both modular and monolithic (in your meaning of that term).

Re:Don't panic and keep forking Debian by dandelion_lover on Saturday November 29, 2014 @12:25PM (#8674305)
Not the parent, but willing to answer.

> Why is it then that we see this argument only used against systemd

WIth systemd we see the changes against Unix design, whereas your other examples already exist.

Re:Don't panic and keep forking Debian by GFK_of_xmaspast on Friday November 28, 2014 @09:24PM (#8672872)
Eric Raymond is not worth taking seriously except as a bad example.

That aside, poking around I found this: http://www.freedesktop.org/wiki/Software/systemd/InterfacePo... which looks like reasonably well-defined interfaces?

Also not really seeing the problem with a binary protocol, works fine for tcp/ip.

Re:Don't panic and keep forking Debian by chubot on Friday November 28, 2014 @09:32PM (#8672889)
If you don't think the content of that book is relevant to the systemd debate, then you haven't read it. I'd like to see you point to a better book about the Unix philosophy.

http://en.wikipedia.org/wiki/Ad_hominem

Re:Don't panic and keep forking Debian by GFK_of_xmaspast on Saturday November 29, 2014 @09:39AM (#8673805)
I've been using unices for over 20 years now (first was ultrix, then truos, sunos, solaris, hpux, aix, linux, netbsd, freebsd, osx) and I don't believe there is such a thing as a unix philosophy.
Re:Don't panic and keep forking Debian by chubot on Saturday November 29, 2014 @01:00PM (#8674431)
Give the Art of Unix Programming and honest read, and I'm sure you will come around.

If you have ONLY used Unices, then I could understand why the philosophy is invisible.

If, like me, you had used Windows exclusively for a decade, and then Unix for a decade, then the Unix philosophy would knock you up side the head. The systems could not be more different. (Despite the fact that they run mostly the same applications. http://www.joelonsoftware.com/articles/Biculturalism.html is the review that got me to read it).

Re:Don't panic and keep forking Debian by GFK_of_xmaspast on Saturday November 29, 2014 @06:02PM (#8675380)
Of course I haven't only used unices, how is that even possible in this world.
Re:Don't panic and keep forking Debian by digi_owl on Saturday November 29, 2014 @10:20AM (#8673927)
That is the interface between the systemd sub-daemons and third party code.

There is no such promise about the interfaces between said sub-daemons and systemd-init.

Re:Don't panic and keep forking Debian by ja30278 on Friday November 28, 2014 @08:57PM (#8672814)
With the caveat that I haven't kept up closely with systemd

1. It is attempting to unify a bunch of previously disconnected functionality into a single program. Typically unix is composed of small single-purpose utilities that perform a single function, rather than a giant monolithic blob of code (with obvious exceptions, like emacs).

2. Partially because it has been around for so long and has so much history, and partially because it follows a unix tradition of using plain text configuration and shell scripting to solve problems.

3. The systemd folks believe that sysv init isn't capable of doing things that are important to modern systems (ex. dependencies between services, reacting to devices coming and going, intelligent daemon management, etc), and that doing those things correctly requires that an init system be 'more' than people previously thought it needed to be. They are also very....confident in their ideas, and don't hesitate to re-implement functionality (like logging) if it makes is easier to interoperate with their other code.

People opposed to systemd believe that it is too complex for such a critical piece of system functionality. They also resent the fact that systemd seems to require tight coupling to the rest of the system, and that it is aggressively pushing into so many linux systems. Many of them also probably have a long history with sysv init, and are comfortable with the way that it works. (Some portion also probably recall pulseaudio, which had similar grand visions, was similarly aggressively pushed into use before it was fully baked).

4. I think 1-3 probably cover most of this.

Re:Don't panic and keep forking Debian by nieve on Sunday November 30, 2014 @07:04AM (#8676629)
I was one of those burned by Pulseaudio and the way Lenart basically dumped the project as soon as it got enough traction and before it was stable or truly functional. The design was, as you point out, very reminiscent of systemd - one giant, poorly documented and not very well tested audio system was supposed to replace all other parts of the Linux audio stack (above the kernel drivers) and give us near-realtime performance and a lot of fancy device management and dynamic control. Short form: it didn't until he had already moved on.

He still trots that disaster out as proof of his fitness to lead, so it's hard for me to trust that systemd is both well-designed and likely to not be abandoned by him for his next shiny pursuit of Windows. The involvement of other devs helps, but not enough to convince me systemd is worth getting near. Two years of audio fail made a good object lesson for me about Lenart's professionalism and dedication.

Re:Don't panic and keep forking Debian by digi_owl on Saturday November 29, 2014 @10:26AM (#8673944)
>and don't hesitate to re-implement functionality (like logging) if it makes is easier to interoperate with their other code.

And in the process makes old mistakes.

http://seclists.org/oss-sec/2014/q4/592

What is the saying again? Those that don't learn from history is doomed to repeat it?

Re:Don't panic and keep forking Debian by newscracker on Friday November 28, 2014 @09:31PM (#8672887)
Quoting a few points from http://boycottsystemd.org/

"1. systemd flies in the face of the Unix philosophy: "do one thing and do it well," representing a complex collection of dozens of tightly coupled binaries1. Its responsibilities grossly exceed that of an init system, as it goes on to handle power management, device management, mount points, cron, disk encryption, socket API/inetd, syslog, network configuration, login/session management, readahead, GPT partition discovery, container registration, hostname/locale/time management, mDNS/DNS-SD, the Linux console and other things all wrapped into one.

...

3. Since systemd is very tightly welded with the Linux kernel API, different systemd versions are incompatible with different kernel versions and portability is unnecessarily hampered in many components. This is an isolationist policy that essentially binds the Linux ecosystem into its own cage, serving as an obstacle to developing software portable with both Linux variations and other Unix-like systems. It also raises some issues backporting patches and maintaining long-term stable systems.

...

7. systemd is viral by its very nature, due to its auxiliaries exposing APIs, while being bound to systemd's init. Its scope in functionality and creeping in as a dependency to lots of packages means that distro maintainers will have to necessitate a conversion, or suffer a drift. As an example, the GNOME environment often makes use of systemd components, such as logind, and support for non-systemd systems is becoming increasingly difficult.

...

9. systemd is designed with glibc in mind, and doesn't take kindly to supporting other libcs all that much14. In general, the systemd developers' idea of a standard libc is one that has bug-for-bug compatibility with glibc."

For more information, read through:

http://boycottsystemd.org/ - lot of links to follow

http://en.wikipedia.org/wiki/Systemd

Re:Don't panic and keep forking Debian by uselessdguy on Friday November 28, 2014 @08:42PM (#8672792)
I don't think anyone really considers sysvinit to "follow Unix". In fact, I'd say sysvinit is more of a historical accident than anything. An actual example of a service manager that follows the Unix philosophy would probably be daemontools and its derivatives (s6, perp, nosh, daemontools-encore and runit).
Re:Don't panic and keep forking Debian by krylon on Friday November 28, 2014 @08:55PM (#8672812)
When I first started using Linux, I found SysV init very intimidating (along with the rest of the system). When I eventually stumbled upon Slackware, and then FreeBSD, I was euphoric about how simple it was to configure system startup.

Which, I guess, is why the BSDs feel a lot less pressure to replace their init/rc system than Linux distros.

Re:Don't panic and keep forking Debian by beedogs on Sunday November 30, 2014 @11:20PM (#8679485)
> it seems un-UNIX and a solution looking for a problem

Go figure that it was written by one of the same dudes responsible for Pulse Audio, which was possibly the worst thing about most Linux distributions, up until now.