Is Modern Linux Becoming Too Complex?
An anonymous reader writes: Debian developer John Goerzen asks whether Linux has become so complex that it has lost some of its defining characteristics. "I used to be able to say Linux was clean, logical, well put-together, and organized. I can’t really say this anymore. Users and groups are not really determinitive for permissions, now that we have things like polkit running around. (Yes, by the way, I am a member of plugdev.) Error messages are unhelpful (WHY was I not authorized?) and logs are nowhere to be found. Traditionally, one could twiddle who could mount devices via /etc/fstab lines and perhaps some sudo rules. Granted, you had to know where to look, but when you did, it was simple; only two pieces to fit together. I've even spent time figuring out where to look and STILL have no idea what to do."
Just like Linus did.
Yes, yes it is. We have too many redundant frameworks. Sadly, systemd is the only effort to unify them that seems to have traction.
There should be one facility for each function on the system. I don't need my network interfaces being diddled by bizarre and obscure programs. Example, libvirt doesn't use /etc/network/interfaces, this is stupid and complicates firewalling scripts and so on. And it insists on running its own copies of dnsmasq, rather than just dropping some files in /etc/dnsmasq.d. What a PITA. Use the goddamned operating system, that's what it's there for.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
Look, you can joke all about how I'm just too stupid to use it but the fact is I am an IT professional and I'm not incompetent at what I do. Which means that technical concepts do not leave me in the dust by default.
And yet, every few years when I try to get into the swing of all things Linux, it ends in utter frustration.
Make of that what you will. And when you tell me I am at fault because I am unwilling or incapable of hurdling that learning curve, I will throw back in your face that a good product is also defined by usability considerations.
Linux is a pain in the ass. It is good at a broad variety of tasks, but so are other OSs that make my life less of a living hell.
On the other hands, mounting USB storage "just works" now on Linux.
Because, as experience shows time and again, systemd discussions tend to get out of control. Note that I don't like systemd (I don't like most of things FreeDesktop either), but I'm with John on this one.
> I also don't get why he'd label somebody who points out the real problem as being a 'troll'.
Read again:
> The systemd and GNOME 3 communities (theyâ(TM)re pretty much one and the same) are the problem here. Theyâ(TM)re killing the Debian project.
This *is* trollish. It's finger-pointing. There are people out there that *like* systemd and GNOME3 (gasp!) and they deserve all the respect each of us deserves. Live and let live. Find ways to cooperate.
Me, I won't install systemd on my machines or those I'll be responsible for -- but I won't insult systemd developers (or assume bad intentions on their part). They're working on free software after all, dammit.
That's all user space.
Honestly, I thought this was going to be a kernel rant, and I came loaded for bear: there's a lot that needs fixed about the Linux kernel and the processes and relationships between stakeholders.
But let's address the subject of the blog post instead, because there's a lot of fodder there too.
Everything complained about in the blog post is not a Linux problem, it's a Linux distribution problem, since the distributions are what add the user space components that are doing things like automatically mounting his phone so that something else in user space can't talk to the second control channel on the USB interface (because the phone uses the primary command channel to switch to the second command channel, and it's in use by the mount).
This is basically the problem you are going to face on a distribution without an overall architectural design for the user/kernel interaction, and interaction between user space components that allow for layered access.
For the "It's a camera! It's a phone! It's a mass storage device!" problem, I don't have a specific answer; I'll note that uugetty solved the contention for typed use of a resource problem for modems ("It's an inbound modem! It's an outbound modem!") in the 1980's in HoneyDanBer UUCP. And they did it by having an integrated model that all the consumers used. IT's called a layered approach to software development.
I think the big driver for user space problems is that a lot of Open Source people believe that *their* program is the most important thing your computer can possibly be running, and if it interferes with someone else's use of something, so what? The computer is still performing it's *most* important function, which is to run *their* work product.
Even Apple is not immune from these problems; there are third party phone tools that can do nifty things with pretty much any cell phone and come with all sorts of USB cable ends that plug into this USB cable adapter, but the OS grabs the phones out from under the software, and you have to hack the device ID list in a plist to get it to work like it's supposed to (then iPhoto, etc., can no longer see the phone). But at least on Apple systems, there's one place to go to to fix it, the fix is well known, and when Apple is informed of the problem, they generally fix their software to "get out of the way" (or tell the third party how to do it temporarily so their software will work).
What's really missing for Linux distributions, honestly is...
(1) An architect with a holistic vision ...in other words, if you want it to look like a commercial OS distribution, you have to approach it as one. And that's not happening.
(2) A project manager for the components
(3) Productization - people in Open Source only want to work on fun stuff, not on boring stuff that makes stuff actually usable
(4) Usability engineering
(5) Interface contracts which don't change over time
(6) A way to shunt third party installed software (i.e. "apt get", etc. stuff) off into an isolated hierarchy so it doesn't screw with normal operation
(7) Documentation that doesn't have to change over time
In case you're recently joining us in Linux after a long hiatus, or are coming from the sanity that is BSD, its worth clarifying a few points and I as a formal neckbeard am here to help
The kids: this has been a problem since Subversion but it rears its ugly head now and again with the sun mircosystems crowd that insists the network is the system. These kids dont want to be bothered by man pages or perldoc, so instead they ship a stub with a reference to their CSS/HTML5/Web 5.0 project discovery special snowflake site. The page includes a full colour mascot, links to all the social sites for the project, and videos of the latest con/talk/pep speech the kid with the most pogs/pokemon badges for the project gave with ample references to cats, cheeseburgers, and memes. Loading it up in links gets you a neat scrabble game. Let me be clear: linking your webpage in the absence of man is a waste of time. it is literally the Unix ethos equivalent of "check out my mixtape"
2. The god damn pottering man:
Hes controversially steamrolled most major distros into giving up everything from competent init scripts to non binary logs and even the bootloader in favour of 1 single process capable of doing everything, forever. The backlash was delayed but as of recent, its been pretty consistent. The root of the problem is new developers with a raging hardon for Apple design philosophy. At its peak, this madness turned gnome into a screaming hell-mouth of fades, pans, jiggles, wiggles, and performance tests for even the beefiest video cards. Everything comes with a widget now, and even the console eats 30 megs of ram. configuring gnome or kde with simple text files is now totally impossible, because modern developers have created a MacOS UI managed by a Windows XP system of registry values and control touples. What we gained from this is a frustrating ecosystem of security-questionable user switching and a network stack thats controlled by the user with the mouse. Perfect if you're about to load up team fortress, but crazier than a shithouse rat if you need to, say, run a production firewall.
that having been said ive had enough and you should too. Come join Gentoo, or Arch, or any BSD with more sanity than Unity (Ubuntu.) Gain back that big goose egg we all remember as freedom 0: to run the application the way you want. And on behalf of the POSIX community, the Unix geezers and the hackers, get these goddamned kids off my lawn.
Good people go to bed earlier.
I know that post, but while I think he has a point, I also think it's too defeatist. If everyone took that attitude, nothing would ever get done.
Of course some of the vagueness is precisely because things happen mysteriously, and systemd has a habit of doing unexpected mysterious things. Of course it's not alone, you have quite a few subsystems all deciding to be a bit 'automagic', with systemd and associates just being the most prominent. As a consequence, if you manually do something like reconfigure a network device using the underlying tools, something can mysteriously redo them later when it thinks something has happened like a lease expiry, even though dhclient no longer runs. Or a time change event at boot causes dhclient and some mysterious third party to disagree about when lease goes away. dhclient isn't renewing lease, but some third party decided that a lease wasn't renewed and deconfigures the adapter. It makes no sense, but someone in some random component thought something wasn't proper and decided to 'help' take care of something that wasn't their business.
XML is like violence. If it doesn't solve the problem, use more.
Every time I've played with it I had things like weird locking issues - but this was maybe a year ago when I last tried it.
What bothers/worries me about it are the devs behind it. Poettering was bitching about how hostile the community was before but he completely deserved every bit of criticism. All the major devs on that project are known to have abandoned other projects. Several times they made mainline commits which completely broke things. They constantly pushed barely tested and poor quality code (which is why Linus got angry at one of them and banned them from making pull requests till they got their sh*t together). On top of that the design of systemd is not very *nix like so it does seem an odd fit. All this makes me uneasy, and I don't think I'm the only one, because from this I am expecting a big lump of poorly tested experimental play code that the lead devs will just abandon once they get interested in another project.
You either have not looked or you are trolling. Try google("systemd sucks"). There really are very few unsubstantiated rants about systemd, most comments are fact-based and explain what is wrong with it. The systemd proponents are waging a war against a large part of a whole community.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
I used to be able to say Linux was clean, logical, well put-together, and organized.
You would only say that because you were used to the previous organization. It has always been a mess of "catering to old UNIX paradigms" while also "trying to squeeze in the latest new thing." Old UNIX guys have always complained whenever the GNU tools had a different behavior from what they were used to, including changes that you take for granted. Bash was once new, and some people still don't like it.
Do you remember the first time you saw a UNIX filesystem? Think back. You have directories like etc, usr, and var. "usr" doesn't really contain user information. "etc" doesn't include miscellaneous files. "var"? WTF is "var"?
None of that shit ever made sense. It's what you were used to. If we set out today to make a sensible, orderly, logical, clean system, it would not look like modern Linux, and it would not look like old Linux.
You're creating a false dichotomy though. It is possible that none of the competing standards are adequate, but people create a new standard for the wrong reasons. Some people are motivated to create new standards or solutions simply motivated by, "There are too many standards, we need to unify them," without actually addressing the inadequacies. That seems to be the attitude the comic is addressing (whether intentional or not), not that we shouldn't ever make new standards.
When vague anecdotes start to pile up (and they do for systemd unreliability), they become facts in themselves. Add to that that systemd problems are exceptionally hard to debug (you have to look into complex C source code for many) and the development team is unhelpful, and you get a pattern: The reason many, many people are reporting vague anecdotes about their system being unstable from systemd is not that they are lying, or fantasizing or on drugs, the reason is that systemd does indeed break reliability and on top is very hard to debug and fix.
Some very old engineering failure analysis wisdom applies here: To really break things, you have to screw up in two major aspects. Systemd manages to do this easily by being unreliable and so hard to debug that most people fail at it. People are scared of it and angry at it, because they cannot master this complexity. And they are right to fight it: A decent OS has no business at all being complex in any place where it is avoidable and in particular, it has no business at all replacing simple things that work with complex ones, regardless of whether they work or not. If Linux is not kept free of high complexity in core components, it will implode.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
It isn't just Linux; it's the nature of modern systems to become "too complex". Back in the days of my youth, it was possible for one person to grok an entire operating system, but it simply isn't possible anymore, unless it's a tightly-focused and built-to-purpose system.
http://alternatives.rzero.com/