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."
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!
>> 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.
Oblig. XKCD: http://xkcd.com/927/
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.
HAHAHAHAHAHHAHA!!!!!
When Linux was less 'usable', it was simpler.
Increased usability means more scripts and automation, meaning more things are abstracted.
You can't have it both ways.
I know what the real problem is. I stepped away from Linux/UNIX for about 5 years because of a new job (Went from a Sun/Unix/Oracle shop to a Windows/SQLServer shop). When I got back to Linux, I didn't understand a lot of things, it had changed so much. It took a while to dig into it.
But .. know what??? It was all there. All I had to do was understand how it started up to find all the scripts and then read them. It wasn't that hard.
It just took a little effort. And enough intelligence to actually read scripts and Google things I didn't understand.
If you don't get it .. it is you.
I rarely read replies, it's my opinion and if you thought about your opinion a little more, I'm OK with that.
.
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
This.
I would personally like to see three flavors of Linux:
Server - lean, NO systemd or plug-and-play crap, focus on security
Desktop - includes whatever bells and whistles people need for a modern, useable desktop; focus on productivity
Mobile - similar to desktop, but with a focus on low power consumption and small screens
I don't need a tablet GUI on my desktop, and I don't need hotplug support for webcams and printers on my server.
Actually, there are some that are intent on doing just that despite being labeled "haters" even though their motivations have nothing to do with "hate". Disagreement does not mean hatred. So long as the Linux kernel does not require specific user space software or versions, those of us who prefer a more traditional approach will be fine.
"Insanity is doing the same thing over again expecting a different result."
Rolling your own 'Just like Linus did' may be a little extreme. I don't think you need a whole new kernel!
Just install Linux from scratch and don't put all that *kit, etc.. crap in it. I would imagine you could even get rid of udev and all that stuff if you are willing to run mknode yourself. Roll it like it's 1995.
You will lose out on some convenience if you are using a portable device such as a laptop but on a desktop with fairly static hardware everything should work just fine.
If having your own custom simple Linux isn't good enough for you then take it to the next step and start your own distro that leaves all that stuff out.
I think you're missing the point. Linux is the kernel - and it is very stable, and while it has modern extensions, it still keeps the POSIX interfaces consistent to allow inter-operation as desired. The issue here is not that forks and new versions of Linux distros are an aberration, but how the major distributions have changed and the article is a symptom of those changes towards homogeneity.
The Linux kernel is by definition identically complex on any distro using a given version of the kernel (the variances created by compilation switches notwithstanding). The real variance is in the distros - and I don't think variety is a bad thing, particularly in this day and age when we are having to focus more and more on security, and small applications on different types of devices - from small ARM processor systems, to virtual cluster systems in data centers.
Variety creates a strong ecosystem that is more resilient to security exploitation as a whole; variety is needed now more than ever given the security threats we are seeing. If you look at the history of Linux distributions over time - you'll see that from the very beginning it was a vibrant field with many distros - some that bombed out - some that were forked and then died, and forks and forks of forks that continued on - keeping the parts that seemed to work for those users. Today - I think people perceive what is happening with the major distros as a reduction in choice (if Redhat is essentially identical to Debian, Ubuntu, et al - why bother having different distros?) - a bottleneck in variability; from a security perspective, I think people are worried that a monoculture is emerging that will present a very large and crystallized attack surface after the honeymoon period is over.
If people don't like what is available, if they are concerned about the security implications, then they or their friends need to do something about it. Fork an existing distro, roll your own distro, or if you are really clever - build your own operating system from scratch to provide an answer, and hopefully something better/different in the long run. Progress isn't a bad thing; sitting around doing nothing and complaining about it is.
Lodragan Draoidh
The more you explain it, the more I don't understand it. - Mark Twain
One man's variety is another man's hopelessly confusing goddamn mess.
SJW's don't eliminate discrimination. They just expropriate it for themselves.
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.