

Upstream vendors and why they can be harmful - rohshall
http://marc.info/?l=openbsd-tech&m=135220552521529&w=2

======
thaumaturgy
This submission won't make any sense without a little bit of background. (The
comments here at the moment are all predictably confused.)

Start here: <http://lwn.net/Articles/520892/>

Core parts of Gnome (and probably lots of other Linux-y software, I haven't
been following all of it) are all moving to require systemd. Systemd certainly
promises a lot of advantages, like better handling of removable devices (and
more: <https://bbs.archlinux.org/viewtopic.php?pid=1149530#p1149530>), but it
is also replacing the tried-and-trusted rc approach. OpenBSD leaders in
particular are concerned about systemd from a security standpoint; it has a
lot of code that runs as root, it is big and unwieldy and the documentation is
a mess.

So, not only were the OpenBSD developers faced with either auditing the entire
systemd code base -- and then doing it again every time there's a new release
-- or attempting to re-implement it in a compatible way, now they're also
staring down the very short barrel of a nasty gun in which some really big
stuff is going to stop working if they don't deal with it.

It's a real ugly situation, and OpenBSD really doesn't have the resources to
spare to deal with this kind of nonsense. I wouldn't be surprised if this mess
ends up tying up a couple of their core developers at an upcoming hackathon,
where they could instead be working on something more useful than having to
replace a huge part of the system that was working just fine up until Linux
decided to throw it out. (Obviously there are plenty of people that would
argue it wasn't "working just fine", either because they have specific
knowledge about it or because "otherwise we wouldn't have needed systemd".
That's not sufficient justification for forcing other developers to waste
tremendous amounts of effort to re-work what was already working for them.)

Personally, I'm not a huge fan of the switch to systemd. I _liked_ rc scripts.
I've cobbled together my own rc daemon scripts from time to time; I'm not sure
how that will work with systemd. I'm also seeing lots of ugly and persistent
problems in NetworkMangler and whatever they're using for core audio these
days; I'm a little gobsmacked that, rather than fixing those problems, some
people decided to replace the init system.

~~~
pja
I don't understand why systemd is suddenly such a hard requirement: it
suggests that the Gnome developers are simply punching through the abstraction
layer provided by dbus for reasons of convenience. If some part of Gnome needs
a system service, it requests it via dbus and parses the response. How that
service is delivered ought to be irrelevant.

Since systemd _is_ supposed to offer all its services via dbus, is the problem
really "we don't want to implement all these services that a modern desktop
needs". OpenBSD et al could offer a dbus layer that implements the same set of
services, but they don't want (or have the manpower) to do so. In which case,
I'm not really sure they have a leg to stand on: the things systemd offers
really are important for a modern well integrated desktop (or any other system
for that matter) and they weren't well served by initscripts. OpenBSD is free
to implement a service that offers the same dbus interfaces whenever they
want, but complaining about Linuxisms is perhaps a little rich: if you want
your system to remain stuck in the early 1990s then that's fine, but you can't
really expect the rest of the world to hang around waiting for you to catch
up.

~~~
pja
NB If the answer to "why can't you write dbus interfaces" is "we'd love to,
but the Gnome developers keep changing the interfaces every minor point
release" then that's probably a valid retort...

------
meaty
I agree entirely with the sentiment here. If you've ever had to piece together
something external to your distribution you will know the pain involved. This
is amplified considerably if you pick a BSD-related operating system and for
no good reason.

The Linux kernel itself is a remarkably stable system as far as ABI/API is
concerned (Linus you rock here), but the packages gyrating around it are
completely impossibly unstable and unreliable.

A fine example of this is trying to get an SSTP client working with
NetworkManager recently. The whole NetworkManager VPN thing is an epic pile of
hacks with bits of UI and bits of backend sticking out all over the place. If
you're using Debian stable for example, there is no chance in hell you can get
a working configuration unless you go and fix the numerous broken interfaces
all over the place manually and arguing with pkg-config and literally hundreds
of dependencies. How the fuck this ever even worked to start with I don't
know. There are massive API changes with minor versions of packages all
through NetworkManager and Gnome, which is just wrong.

The underlying issue is simply shitty engineering from a large body of open
source projects who don't care about upstream or doing their job properly. To
name and shame: The _entire_ Gnome project, just about anything Ubuntu have
chucked out, the _entire_ KDE project post KDE2.

It's utterly frustrating. I wish they _did_ take a more BSD approach, which is
conservative engineering i.e. think about it, get it right and leave it.

For all the people here whinging about innovation, waah waah, ship old
versions etc, I doubt you've actually had to deal with these issues or build a
project on top of them. There seems to be a large detachment from reality
here.

As an example to back my point up, one of the reasons Windows is so damn
popular is that the API is _incredibly_ stable and software written in the
mid-90s still works fine on current versions without a recompilation or any
API changes. A two week old build of NetworkManager probably will break all
the VPN providers...

~~~
cperciva
_The Linux kernel itself is a remarkably stable system as far as ABI/API is
concerned_

You're joking, right? There have been cases where ABIs have been broken by
security patches, and users have been told that they have to choose between
having a secure system and being able to use their third-party binary drivers.

(And yes, I understand the arguments about how binary drivers are evil; but I
don't think users should be used as pawns in that fight.)

~~~
zimbatm
He was probably talking of the user-space ABI/API. Drivers are internal to the
kernel (or should be) and Linux never made a claim that those APIs where going
to be stable.

~~~
meaty
Yes that is correct.

------
derefr
> Either you're a modern linux with pulseaudio and pam and systemd, or you're
> dying. So much for the pionneer spirit of opensource, where you were free to
> innovate and do cool things, and more or less have interesting software able
> to run on your machine...

What a weird doublespeak paragraph. By "innovate and do cool things," the
author seems to mean "ship, and rely on, old versions of software."

~~~
reidrac
I think he's complaining about the "Linux-centrism" of some projects.

What I find ironic is that those Linux focused projects are turning more like
BSD: a tightly coupled system.

If I want my app to work best with X and I need to interact with some stuff
that it's only available on X, that's it. I may provide an alternate way of
doing things, but I may not.

For example: I may use DBus to speak with NM to see if I the system has
network connectivity, but what if DBus or NM are not available? Some time ago
you would put effort on that possibility, now you may not because... DBus and
NM are everywhere!

That's what is changing I think, although I'm not sure if Espie means exactly
that.

In some cases it's the "brand" thing I can't understand, like "only for
Ubuntu" that started about 2-3 years ago.

~~~
takluyver
> Some time ago you would put effort on that possibility, now you may not
> because... DBus and NM are everywhere!

Which sounds like a good thing. People have put in a lot of effort on things
like DBus and NM, so that applications can use a consistent, reliable API.
That's rather a waste if every application author still has to handle the case
when they're missing. They're valuable precisely because we can build on top
of them.

I'm slightly playing devil's advocate, but that's actually pretty close to my
real view.

~~~
reidrac
Having used DBus in a couple of projects, the "consistent, reliable" part of
your comment made me chuckle :)

I agree with you. Having APIs makes everything easier and it means developers
building on top of them can focus on more productive stuff.

In fact I think freedesktop.org should be more relevant.

------
fafner
The Linux Desktop can't stand still to accommodate some minor platform. I
understand that a move to systemd and in the future to wayland will have
problematic consequences for BSD support. But the changes are made for good
reasons and to bring the Linux and Free Software Desktop forward.

Systemd is much better for Desktop uses. The major reason is that it is fully
designed to support hotplug. Which is something you have to constantly deal
with on Desktop/Laptop systems. Disks are plugged in, Network connection isn't
ready, and so on. It is also much faster and has a lot of other nice features.
The lack of systemd support in *Ubuntu might be the reason for me to switch to
another distribution for my Desktop.

Wayland finally allows us to get rid off all the legacy crap we have to carry
around with X11. There is a reason why it is developed by the Xorg devs.

Pulseaudio had its reasons as well. Such as having useful support for
Bluetooth- or USB-audio. Per-application audio settings and so on.

Of course you can argue with certain details in certain implementations. But I
don't think that we can argue about the problems those solutions solve. Maybe
you are happy with the setup you've been using since the 90s. But for most
people the times are changing.

It is certainly sad that the BSDs don't have the manpower to keep up. However
we can not expect the Linux Desktop to stand still because of them. The Linux
Desktop itself lacks manpower and is fighting an uphill battle. Supporting
minor systems will only drag it down.

~~~
rlpb
> Systemd is much better for Desktop uses. The major reason is that it is
> fully designed to support hotplug.

This is exactly why upstart was invented, long before systemd existed.

> Which is something you have to constantly deal with on Desktop/Laptop
> systems. Disks are plugged in, Network connection isn't ready, and so on. It
> is also much faster and has a lot of other nice features. The lack of
> systemd support in *Ubuntu might be the reason for me to switch to another
> distribution for my Desktop.

Ubuntu uses upstart, which handles everything that you have specified just
fine. You may well have a good reason to switch away, but you have failed to
state your case here.

~~~
ciupicri
> This is exactly why upstart was invented, long before systemd existed.

Except that upstart didn't deliver too much, unlike systemd. Fedora used
upstart (RHEL6 still does) and it wasn't very different from the traditional
SysV init. I also wasn't able to figure out how to use it to its full
potential, it looked too complicated. On the other hand perhaps I'm biased
because Lennart provided a series on systemd for administrators.

~~~
rlpb
There's a pretty comprehensive guide here:
<http://upstart.ubuntu.com/cookbook/>

------
bkor
The development within Linux is going much quicker than anything else can keep
up. Within GNOME only very recently we got some non-Linux using contributors.
Portability just for portabilities sake is not a goal anymore.

This is somewhat ironic, as excluding OpenBSD feels way too similar to how
Linux is/was excluded in favour of Windows. But if almost all the people spend
their time to make their Linux distro better, then this seems like a natural
thing to occur.

------
gillianseed
Hmmm... well I certainly see the problem from 'their end' in that they find
themselves 'incompatible' with external projects on which they have relied on
since they are nowadays increasingly being developed with 'Linux in mind'.

However it's also hard to fault the obvious urge from Linux and the
surrounding Linux-oriented ecosystem of making sure components integrate
better so the result is a 'full system' which takes advantage of advancements
made to the Linux kernel and it's surrounding core components.

I can't say one is right and one is wrong, I guess it's all about which side
of the fence you're on.

------
mixedbit
When OpenBSD was pissed off by proprietary HSRP protocol designed by Cisco,
they decided to implement their own protocol (not compatible with HSRP) and
use the same IP protocol number 114 without IANA approval.
[http://en.wikipedia.org/wiki/Common_Address_Redundancy_Proto...](http://en.wikipedia.org/wiki/Common_Address_Redundancy_Protocol)
This created a serious mess for system administrators and gives a good example
of how to handle compatibility and standards related issues ;)

~~~
papsosouid
I guess IANA should have given them a protocol number like they requested
then, instead of playing politics because cisco employees run the
organization.

~~~
mixedbit
Sure, but OpenBSD could have chosen some reasonably safe number that would not
be in obvious conflict with Cisco equipment and would make users life easier.
Instead they decided to have a childish revenge on Cisco.

~~~
papsosouid
It didn't make our life any harder, and using a different number wouldn't make
our life any easier. We use cisco, juniper and openbsd, this caused exactly
zero problems.

~~~
mixedbit
I'm sorry if this isn't accurate assessment. I based it on the ACM column:
<http://queue.acm.org/detail.cfm?id=2090149>

~~~
papsosouid
Yeah, that is a hilarious attempt to misrepresent the situation. Notice how he
pretends they did it "to strike back", when they actually did exactly what he
wants (try to get a number from IANA) and they refused to give them one
because "that's just VRRP but different, it doesn't deserve its own number".
The right choice was taken away from them, all they could do is use a number
that is either used already, or will be handed out later. They chose the least
bad option of using the number of VRRP, which IANA claimed they were too
similar to.

------
caf
Note that some of these things are grumbled about within the Linux community
too - there's plenty of complaining about pulseaudio, and systemd is very
unlikely to ever be universally used by Linux distributions.

------
olgeni
Starting from small things, it would also be great to stop using #!/bin/bash
in scripts for no apparent reason (hint: "it's my default shell" is not a good
reason.)

~~~
pja
I'd far rather people did that than used #!/bin/sh and assumed that sh was
bash!

~~~
papsosouid
It isn't a choice between "do it wrong A" and "do it wrong B". There are a
whole host of options, one of which is "do it right". Relying on a non-
standard shell to be in /bin is bad, relying on non-standard shell extensions
to be in the standard shell is also bad. So either use the standard shell as
the standard shell, or use whatever nonstandard shell you want by calling env
to find it.

------
gavanwoolery
I would love to see a group of hackers get together to create a real (i.e. not
a weak ARM device) computer and operating system, for profit _, but open
source. It seems like people have mostly given up on this notion, as if its
impossible to create a competing device. In the 70s/80s, a few people launched
brands like Apple, Microsoft, and Amiga; I know things are harder now but it
is far from impossible.

_ Why for profit? So that people have both an incentive and means to work on
the product fulltime.

~~~
dman
Indeed. What we need is a yet to be created firm with the engineering ethos of
Trolltech attacking the problem that Apple is right now.

------
blaze33
Wouldn't it be more appropriate to talk about LinuxDesktopism?

There I see part of an explanation regarding the opposite market shares
between the server/HPC and desktop worlds.

------
zobzu
I'm a 100% Linux user

I find systemd & others are hurting Linux as much as it hurts BSDs.

In fact, just look at the ArchLinux forums, its FILLED with systemd issues.
And most people know by now about the "disable pulseaudio, use pure alsa"
trick to solve "all Linux audio issues". Heh.

------
derleth
The case _for_ Linuxism is that Linux has the underlying tools applications
require to deliver the user experience users want, and if OpenBSD (and this is
from an OpenBSD list) wants to run those applications it should provide the
same tools.

A _better_ case against Linuxism is that portability encourages modularity,
which is good for reasons far beyond portability. Having to do some things in
a different module because they can't be done the same way on all systems
encourages you to separate concerns, which leads to code that's easier to
reason about and, therefore, less likely to be buggy.

The historical perspective is "You think this is bad, sonny, be glad you're
not trying to convince people to play nice with Eunice." (Eunice was a Unix-
like environment running on VAX/VMS.)

