Tweets About the Situation of User Software in Linux
I liked @Jonathan_Blow’s tweets constructively criticising the state of user software in Linux and thought they would make a good blog post. So here they are concatenated and well formatted. Links to the tweets can be found in the end.
Here is the situation: I like the idea of Linux. I would, in the abstract, prefer an open-source OS to Windows, iOS, etc.
I have been using Linux in one way or another since Slackware in the early 1990s (probably many of the irate Linux advocates tweeting at me we’re not even born yet, then.) I run a business that uses two Linux servers daily, that I personally administer, to get our work done.
As a server Linux is okay. As a user-facing desktop it is poor and has been getting worse over the past several years. Things just don’t work consistently, and there are a few reasons for this, but the main one seems to be that the open source community doesn’t really know how to create unified products or solid experiences. Everything is a jumble of parts, and if something doesn’t work right and I am the maintainer of part A, well, obviously the problem is the fault of parts B, C, or D, it is not my problem, don’t expect me to fix it!
If you want to build high-quality software you need the capability to cross lines of authority for parts A, B, C, D, … Z in order to mold all of them so that they come together to make the proper final shape. This just doesn’t happen in the OSS world… Which means, as Time goes on and software becomes comprised of more and more parts and layers, it becomes increasingly junky, because there is not a culture of seriously molding those parts to work together.
For people who are trying to build high-quality end-user software where frame-to-frame performance is a quality constraint, this becomes a untenable situation, because we are trying to build on something that is developer-hostile to begin with. The reason Linux works better for servers is because server software is simpler (it doesn’t have to integrate with 3D acceleration, for example) and because for some reason the core components work better (in a server Linux install my net connection doesn’t generally flake out, but for along time damned if I could get desktop NetworkManager to keep my wifi up for more an 5 seconds, and let’s not even start with audio.)
Also, Linux advocates: if you care about the OS and want it to thrive, then when people have problems, “Everything works perfectly for me so you are wrong” is not the correct reply. If you actually like Linux you should want to fix the problems, which are obvious and many. Just six months ago I tried to install Linux on two new laptops, and I had to try three distros before one would even install (that took hours), then the trackpad didn’t work, the laptop didn’t suspend consistently, and brightness control was flaky. This is before even trying to use any actual software, at which point one runs into the usual raft of flaky behavior. If you don’t see this you’re in denial, and being in denial is not the way to improve the robustness and reliability of the system! To fix problems you have to be able to see the problems.
Here is the situation: I like the idea of Linux. I would, in the abstract, prefer an open-source OS to Windows, iOS, etc.
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
I have been using Linux in one way or another since Slackware in the early 1990s (probably many of the irate Linux advocates tweeting at me
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
we're not even born yet, then.) I run a business that uses two Linux servers daily, that I personally administer, to get our work done.
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
As a server Linux is okay. As a user-facing desktop it is poor and has been getting worse over the past several years. Things just don't
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
work consistently, and there are a few reasons for this, but the main one seems to be that the open source community doesn't really know
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
how to create unified products or solid experiences. Everything is a jumble of parts, and if something doesn't work right and I am the
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
maintainer of part A, well, obviously the problem is the fault of parts B, C, or D, it is not my problem, don't expect me to fix it!
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
If you want to build high-quality software you need the capability to cross lines of authority for parts A, B, C, D, ... Z in order to mold
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
*all* of them so that they come together to make the proper final shape. This just doesn't happen in the OSS world... Which means, as
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
Time goes on and software becomes comprised of more and more parts and layers, it becomes increasingly junky, because there is not a
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
culture of seriously molding those parts to work together.
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
For people who are trying to build high-quality end-user software where frame-to-frame performance is a quality constraint, this becomes
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
a untenable situation, because we are trying to build on something that is developer-hostile to begin with. The reason Linux works better
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
for servers is because server software is simpler (it doesn't have to integrate with 3D acceleration, for example) and because for some
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
reason the core components work better (in a server Linux install my net connection doesn't generally flake out, but for along time
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
damned if I could get desktop NetworkManager to keep my wifi up for more an 5 seconds, and let's not even start with audio.)
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
Also, Linux advocates: if you care about the OS and want it to thrive, then when people have problems, "Everything works perfectly for me so
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
you are wrong" is not the correct reply. If you actually like Linux you should want to fix the problems, which are obvious and many.
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
Just six months ago I tried to install Linux on two new laptops, and I had to try three distros before one would even install (that took
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
hours), then the trackpad didn't work, the laptop didn't suspend consistently, and brightness control was flaky. This is before even trying
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
to use any actual software, at which point one runs into the usual raft of flaky behavior. If you don't see this you're in denial, and being
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
in denial is not the way to improve the robustness and reliability of the system! To fix problems you have to be able to see the problems.
— Jonathan Blow (@Jonathan_Blow)
July 04, 2015
how to create unified products or solid experiences. Everything is a jumble of parts, and if something doesn't work right and I am the
— Jonathan Blow (@Jonathan_Blow) July 4, 2015