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.'"
No problems here. Slackware seems to keep things simple. Granted, I haven't tried to mount a camera with DigiKam in a couple of years.
I was reading through the article's comments and saw this thread of discussion. Well, it's hard to call it a thread of discussion because John apparently put an end to it right away. The first comment in that thread is totally right though. It is systemd and Gnome 3 that are causing so many of these problems with Linux today. I don't use Debian, but I do use another distro that switched to systemd, and it is in fact the problem here. My workstation doesn't work anywhere as well as it did a couple of years ago, before systemd got installed. So when somebody blames systemd for these kinds of problems, that person is totally correct. I don't get why John would censor the discussion like that. I also don't get why he'd label somebody who points out the real problem as being a 'troll'. John needs to admit that the real problem here is not the people who are against systemd. These people are actually the ones who are right, and who have the solution to John's problems! The comment I linked to says 'Systemd needs to be removed from Debian immediately.', and that's totally right. But I think we need to expand it to 'Systemd needs to be removed from all Linux distros immediately.' If we want Linux to be usable again, systemd does need to go. It's just as simple as that. Censoring any and all discussion of the real problem here, systemd, sure isn't going to get these problems resolved any quicker!
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.
>> it was simple; only two pieces to fit together
To me, the Linux experience has been based around the use of simple, command-line oriented tools that could be easily scripted together. That's the opposite of "only two pieces fit together" - just like Legos you have thousands of pieces that could fit together to make billions of different things.
On the other hands, mounting USB storage "just works" now on Linux.
Oblig. XKCD: http://xkcd.com/927/
.
But now Linux seems to be getting closer to fog than clarity.
One example:
Last week I installed opensuse. When I tried to send an email using the mail command, Postfix was giving me odd permission errors for maildrop. So I went to look at the Postfix log, and there was none that I could find.
One step closer to the fog of Windows, where the system is hidden behind magical portals that only a few know how to access....
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.
Simplicity needs to be the new goal in a FOSS OS project like Linux. 20 years ago it was all about getting an alternative to systems that cost north of 100 000$ up and running to be able to do the stuff we all wanted to do but couldn't afford to.
Today leading FOSS solutions and extremely powerful hardware is available in abundance, as are network and cyperpunk-working-coding-and-collaboration resources. It is now that we need to push for simplicity and perhaps even an own hardware standard.
To be honest, putting emphasis on FOSS hardware might even provide the right incentive for exactly that simplicity. Apple won all the Unixers over a decade ago, because it offered exactly that. Zero-fuss out-of-the-box FOSS-*nix functionality. It started losing them ever since the golden cage starting to close and lock. This is a gap the FOSS community needs to fill.
It is, in my opinion, high time for FOSS hardware to move into the limelight. We need to start crowdfunding our own NixBook Airs, flashy pro desktops and servers. ... The librem 15 is a step in the right direction - we need more of that.
We suffer more in our imagination than in reality. - Seneca
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.
- Use text whenever possible
- Performance is not paramount, so use C
- And do one thing at a time but do it well - connect small specialized tools to build complex applications
- Documentation, while terse, should cover all features
- The filesystem is a simple tree starting with /
Let's see what modern Linux does:
- Lots of binary stuff everywhere, where text would do
- You'll boot up faster with systemd, oooh yeah baby, totally rad!
- Oooh, and it's more integrated, one single process does everything!
- Look for processes with stranges names running on your machine, then try to find any documentation on them
- gphoto2://[usb:008,044]/store_00010001
The last one makes me angry. It's VMS all over again: is anyone here old enough to remember host::disk$1:[directory]file.ext;version? I can't find another way of accessing my phone data. I can't, for the life of me, mount it the way I would mount another volume.
Guys like Poettering couldn't care less. They have a vision, for sure, and they have good ideas sometimes. But there are really two issues here: a good idea is not sufficient when you engineer a system, and their vision is not Unix. To hell with simplicity, to hell with consistency.
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/
of the tenets of UNIX. Yes, I realize we are in the modern era, and UNIX is over 40 years old, but the tenets that made UNIX great are still valid to this day.
The tenet I wanted to touch on is the tenet of UNIX that suggests we "keep it simple". Complexity is not only the enemy of this tenet, it's also the enemy of security and common sense.
I have, in the last year, begun a move of my critical machines to BSD variants, namely FreeBSD and OpenBSD. OpenBSD in particular, exemplifies the tenets of UNIX better than any other OS that is in use. Theo and team correctly understand the issues of complexity and security and their product reflects the care they take. I liken their work to that of a gardener and his bonsai trees.
FreeBSD is rapidly becoming the "go to" OS for those who are disillusioned with what Linux as become -- namely bloated, complicated, and difficult to deal with. Linux, while intentionally what it is in terms of choices, has become fractured internally what with respected long-standing developers leaving for this or that reasons. Some of this is because of systemd, some of it for other reasons.
Let's be honest for a minute. Linux is not a bad ecosystem. It's has become a difficult maze of kernel, weird and varied frameworks, too many user land utilities and DE/WMs, and the legacy stuff that Windows and Apple were accused of is there for all who have eyes to see. Nothing is perfect, obviously, but the creep is evident and obvious. I'm severely disappointed with the notion of binary blobs, something OpenBSD correctly rejects out of hand.
For me and my IT shop, we are headed towards the BSD camp because of the above and because I value stability and engineering above all else. BSD has always cared more about being "correct" than cool. BSD is engineered, while Linux seems haphazard. My .02.
@Anonymous Coward: 'You can always tell when lines like "it used to be", "there was a time", and "I remember when" are used. Things change, and when software changes it typically gets more complex. Just take REO Speedwagon's advice and roll with the changes!'
No, it sounds like a Linux Developer has some very valid points to make:
John Goerzen: I believe that Modern Linux Becoming Too Complex?
Anonymous: Of course you would say because you're getting too old.
John Goerzen: How about addressing the arguments I gave to support my position?
Anonymous: Doesn't count, you're too old so anything you can say on Linux complexity is therefore invalidated.