Skip Navigation
10 comments
  • Is it just me or does this article seem a bit over simplified, slightly inaccurate, and rant-y? The author makes a lot or claims I feel need verifying so that's why I haven't answered my question yet.

    For example:

    Computers aren't much faster now than they were a decade ago, and they will probably never again return to the rate of performance improvement they had for 60 years up to the mid-noughties.

    The author goes on to discuss Moore's law being dead and Amdahl's law which is sort of a law of diminishing returns on core counts.

    While we may not be getting performance improvements like we used to, saying that computers now aren't much faster than a decade ago is sort of sensafionalized.

    What does "much" mean in numbers? Take a look at CPU benchmarks and you can see just how much processor speed has improved. I find it noticeable.

    And the author didn't mention microcode optimisation work that's been done since the mid 10's, sort of an odd oversight on the author's part.

    More to the point of the article, another example is the comparison of Project Oberon vs modern Ubuntu meant to demonstrate how bloated code is. The facts cited may well be perfectly accurate and the claim that modern software is bloated is quite likely true, but the comparison is disingenuous for several reasons.

    First, the project was specifically dedicated to making a very lean, understandable system--in the mid 80s when system memory was measured in kilobytes or maybe megabytes.

    Multitasking operating systems of that era couldn't do anywhere near as much as they can now. And computers were almost all text based. Or had very low resolution graphics. Many modern protocols didn't exist then. No HTTP so no web servers. No ssh clients and demons. Etc. So comparing modern Ubuntu to an ancient project intended to be lean for its day isn't useful.

    There's also no mention of size in terms of machine instructions, just source code lines... Between two different languages. So that's also an unfair comparison.

    And there's no mention of what was or wasn't included in the line counts for Ubuntu. Maybe it is the whole distro, maybe all packages, who knows.

    The main claim that systems are too big to understand. I mean that's the whole raison d'etre of a systems engineering and software engineering approaches: Break down complex problems and solutions into manageable chunks and distribute work.

    If we limited ourselves to solutions that a single person could understand in its entirety we would be missing a lot of modern technologies. Like cars, satellites, airplanes, televisions, smartphones, etc.

  • Is the Unix philosophy a good solution to this problem?

    • Depends. On servers a similar concept is called micro-services and it usually increases complexity as now you also need to code all the interaction between formally independent services.

  • Excellent article. I hope the pushback against software complexity grains more momentum. I can only think of a couple other people who rail on this topic, like Drew DeVault's blog posts and Jonathan Blow's talk.

    • There is the entire "suckless" software movement that has also been railing against software complexity, but they have other issues.

  • These projects are so incomprehensibly vast that no human mind can comprehend even one small isolated subset of the entire thing.

    Which means - no human mind can trust them either, and no human programmer alone can conduct a security review.

    Which means they should not be trusted, and should be considered insecure - unless they can be carefully isolated from the environment so that only a trusted surface is exposed.

    My ideal project size: something that an average coder can read in a week or two, and come back to their (possibly anarchist) colleagues saying: "this code looks reliable and won't be leaking buckets".

10 comments