1. 41
  1.  

  2. 7

    That is a post by a pal of mine, and here is my response to him https://rakhim.org/2018/09/re-software-disenchantment/

    1. 4

      I hope I’m summarising your post fairly: You are pointing out that the economics of software development are not orthogonal to “efficiency, simplicity, and excellence”.

      I think that is fair, but I also think it is sad.

      It is perhaps these forces have driven me out of producing Free Software: I sometimes wish more people would use my software, but not if it means making bad software.

      1. 1

        I’ve found that people interpret orthogonality differently when used in an abstract way. Some tend to think along these lines: 2 issues are orthogonal -> they are parallel -> they are moving together, so, they are related, aiming at the same goal.

        Some think the opposite: 2 issues are orthogonal -> they are parallel -> they have nothing to do with one another. (This makes more sense to me, parallel == not touching one another).

        I assume when you say

        the economics of software development are not orthogonal to “efficiency, simplicity, and excellence”

        you mean the second, as in “those two things are not strongly related”. If so, yes, that’s one of the main points I was trying to make. It, too, makes me sad.

        This reminds me of this weird phenomena that popular things are always bad, and the majority is always wrong…

        1. 1

          The literal meaning of the word “orthogonal” is “right-angled”. It means the exact opposite (in some sense) of parallel. To say that two concerns are orthogonal (when using the word correctly) is to say that they lie along independent axes. I.e. it means that things vary independently of each other – that they are uncorrelated.

          (But is @geocar trying to say economics and quality are necessary correlated (the literal meaning of what he wrote) or that they are uncorrelated (in which case his use of “orthogonal” is wrong)? I am confused about that.)

          1. 1

            Restated, my understanding of freetonik’s position is that economics and “efficiency, simplicity, and excellence” are [likely] correlated: As price efficiency goes up, quality goes down.

            I think it’s a reasonable approximation, but I don’t believe it’s completely accurate. There are clearly multiple saddles in the industry (think about luxury brands), but I can accept this for enterprise software (the vast majority of software created) and mass market software (the second biggest ), which is why I said this is position is fair.

            I was honestly completely unaware anyone had any other definition for “orthogonal”.

    2. 3

      A lot of the examples of bad software cited in this essay are web applications and mobile apps with tracking/advertising bloatware - i.e. software that is hostile to the end user by design anyway, but that is in the interest of the provider of the software to include, in order to make money. A lot of these are also non-Free software, so it’s impossible for programmers to try to make those individual pieces of software better (i.e. have less resource use and latency on human-visible timescales) - and people who are currently making money from that software aren’t incentivized to make it available on four-freedoms-respecting terms. I can’t try to make gmail faster because I don’t control it, Google does, and they have their own business priorities which aren’t mine.

      1. 3

        Yeah, it’s pretty frustrating that software has seemingly gotten as wasteful as it has. I think this is a consequence of the power of abstraction – we’re building on the shoulders of giants on the shoulders of giants. That silky smooth text editor on a 286 was essentially 100% bespoke, with every line of code contributing. Now our text editors are built with GUI toolkits and powerful, yet general purpose edit controls…so we drag in all sorts of stuff that we don’t need. This is the sacrifice we make at the altar of code reuse.

        Whether or not this is a good thing is up for debate. But I think it’s unavoidable with the particular combination of software demand, economies of scale in hardware, and labor pool that we have in this world we’re stuck with.

        1. 4

          It sounds like the challenge going forward is collapsing these towers of dependencies. Like the Zen of Python says:

          Flat is better than nested.

          1. 1

            There are different scales of tradeoff in code reuse, though. Very often, using some third-party library takes more effort than implementing the facilities you were going to use with builtin facilities (particularly if you’re working in a language with a feature-rich standard library, like python) – and this problem gets worse the more bloated the library is. We buy into some framework because of flashy features we will never use, then waste a lot of time learning the framework’s special ways of doing things, and in the end the code we wrote is unportable and the sunk cost fallacy keeps us from doing the sensible thing & throwing it out.

            The most irritating thing, for me, is that good-enough performance isn’t very hard for most common tasks & doesn’t require any special knowledge. If you write something in python and you do it in the most straightforward way possible, with no particular emphasis on optimization, it’s still going to be hard to make it too slow (the example in the post about a python command line script running for 1.5 seconds is sort of absurd, unless it’s doing a bunch of complex math without the help of numpy). Even so, basically everything we use – including most common open source applications – are substantially slower than the minimum acceptable performance, for no clear & defensible reason.

            You can make a milky-smooth text editor in about three lines of python – Tk ships with a fast & powerful text widget that does about 90% of what you want from a rich text editor. In other words, it’s literally easier to make it fast than to make it slow, so long as you are willing to avoid being sucked into dumping cycles into unnecessary facilities.

            1. 1

              Bouncing off of your statement about text editors, I suggest you check out Kakoune, it’s a modal code editor that packs a punch.

              1. 1

                Thanks, I actually gave it a try recently. I’m a recent convert from emacs to sublime and miss the ability to use my editor over an ssh session. I like everything about kakoune but the modal editing is a tough change for me. If kakoune was made as a modern emacs rather than vim it would have been an instant win for me!

            2. 1

              This is a fantastic article highlighting all the issues that are wrong with software today. My personal frustration has started to push me away from alot of tech for this exact reason.