15 votes

Is the FOSS world’s desire for ‘simplicity’ really just anti-intellectualism?

12 comments

  1. [4]
    skybrian
    Link
    The question doesn't seem specific enough to be meaningful. Does a unified FOSS community exist that can be said to desire any one thing? Do different people mean the same thing by simplicity?...

    The question doesn't seem specific enough to be meaningful. Does a unified FOSS community exist that can be said to desire any one thing? Do different people mean the same thing by simplicity? Does pure anti-intellectualism exist anywhere?

    11 votes
    1. [3]
      acdw
      Link Parent
      I agree that "anti-intellectualism" is the wrong word here. That being said, I agree with the main thrust of the article, at least as I understand it: a lot of "simplistic" software is software...

      I agree that "anti-intellectualism" is the wrong word here. That being said, I agree with the main thrust of the article, at least as I understand it: a lot of "simplistic" software is software that doesn't actually work. As an example, see the article discussed here, where the author can't get Bluetooth or ___ to work, but decides they don't actually help them compute -- though if those things did work, I'm sure they'd be used.

      I think that "simplicity" or "minimalism" in software, as a trend, prioritizes the wrong things -- SLOC or low package counts or what have you -- since those are easier to measure than something nebulous, like "ease of use" or "expressivity," which is really the measure of an operating system or programming language. So not "anti-intellectualism," per se, but an oversimplification of the problems computers are built to solve.

      11 votes
      1. [2]
        skybrian
        Link Parent
        I may not join them but I think it's good that someone is seeing if it's feasible to do without X for almost any X, and seeing what the alternatives and compensating advantages are. Sometimes the...

        I may not join them but I think it's good that someone is seeing if it's feasible to do without X for almost any X, and seeing what the alternatives and compensating advantages are. Sometimes the rhetoric is a bit much, where they say everyone should be doing things their way. Often these things aren't ready for wide adoption. But it's still good to experiment.

        7 votes
        1. acdw
          Link Parent
          I agree with you 100%!

          I agree with you 100%!

          4 votes
  2. [7]
    arp242
    (edited )
    Link
    The mistake in thinking here is that every software project should solve the needs for everyone. Why should it? It's perfectly fine to only cater to maybe 5% of the population, especially if that...

    If you’re writing real software, for real people, you can’t just ignore the hard questions for the sake of “avoiding complexity”

    The mistake in thinking here is that every software project should solve the needs for everyone. Why should it? It's perfectly fine to only cater to maybe 5% of the population, especially if that will save you 80% of the complexity.

    I'm reminded by a quote from one of the Microsoft Word designers: "most people only use 5% of Word, but everyone uses a different 5%".

    A lot of these projects are created by programmers, for themselves and other programmers, who are also "real people" with real computing needs and want "real software" to solve them. This may perhaps not be software suitable for everyone, but that doesn't mean they don't solve real problems for real people.

    This is very far removed from anti-intellectualism, it's a DIY attitude.

    If it hadn’t been for version control, package managers, testing, fuzzing, and other tooling innovations, we wouldn’t be where we are today.

    Which is why those kind of tooling is used by practically all projects, including many minimalistic ones.

    You can’t ignore the billions of users whose native languages don’t fit in ASCII and keyboards aren’t the en_US design

    UTF-8 was invented by 2 programmers with a rather "minimalistic" mindset, who went on to invent the minimalistic Go language which supports Unicode pretty much everywhere, including identifiers (albeit with some caveats).

    Why is C still as popular as it is amongst free-software-hacker types? Why are command-line interfaces treated as the one true way to control a computer by many of these same people? Should IRC still be popular, despite missing lots of functionality that centralized chat platforms have had for years? Why am I writing this in Vim on the console?

    Because they work, at least for certain use cases for certain people. Besides, with ~440,000 lines of C code and ~311,000 lines of VimScript, Vim is hardly "simple" or "minimalistic"; it's quite a complex piece of software with many features.

    Viable C replacements are actually quite a recent thing; sure, we've had C++, the dynamic languages, and some experimental languages that never really took off (for whatever reason). Only in the last decade has there been a resurgence of language design with Rust, Swift, Go, and a few lesser-known ones like Zig which sit in roughly the same space as C. Even today, replacing C can be a bit tricky due to wealth of C-first libraries that have been developed over the last decades; you don't "just" replace that.

    IRC is fundamentally different from e.g. Slack by being decentralized. I don't really care so much about it myself, but many people do, which is perfectly reasonable. Again, viable mature alternatives are quite a recent thing.

    CLI tools just work well for many people; they're not "simpler" really, they just work better exactly because you can do complex things with them like scripting and piping stuff together.

    10 votes
    1. [6]
      wirelyre
      Link Parent
      I wonder if this is correlated with LLVM's popularity. Why didn't this new generation of languages tend to use GCC as a backend? Licensing? API? IR?

      Only in the last decade has there been a resurgence of language design

      I wonder if this is correlated with LLVM's popularity.

      Why didn't this new generation of languages tend to use GCC as a backend? Licensing? API? IR?

      2 votes
      1. [3]
        arp242
        Link Parent
        From what I read, there were (are?) a number of technical and cultural concerns; see for example: https://undeadly.org/cgi?action=article&sid=20070915195203#pid_52 That was 2007; I don't know how...

        From what I read, there were (are?) a number of technical and cultural concerns; see for example: https://undeadly.org/cgi?action=article&sid=20070915195203#pid_52

        That was 2007; I don't know how accurately this reflects the current situation. Some issues (like the warnings) have since improved.

        Cross-compiling stuff with gcc is rather hard; for Go, you can build a Windows binary by using GOOS=windows GOARCH=amd64 go build. This works for every OS/arch combination on any system; it's pretty neat. There's the gccgo frontend as well, and the cross-compile workflow for that looks much harder.

        2 votes
        1. [2]
          wirelyre
          Link Parent
          Yeah, I've read about those cultural concerns before. There's also notably this thread where Stallman refuses to budge on dumping GCC's AST because it might expose some of GCC's work such that...

          Yeah, I've read about those cultural concerns before.

          There's also notably this thread where Stallman refuses to budge on dumping GCC's AST because it might expose some of GCC's work such that non-free programs could benefit from it. But this was already well after LLVM became prominent.

          I'm wondering how relatively hard it is to make a new GCC front-end ― or maybe how hard it was. Clearly LLVM's API is far more well documented, but skimming through the Go front-end it doesn't seem too weird.

          Maybe it's important that LLVM was always supposed to be used as a library, while GCC was always a monolith.

          1 vote
          1. arp242
            Link Parent
            You have to remember that GNU (and thus GCC) is just as much of a political project as it is an engineering project. You'll be rather disappointed if you expect solid engineering choices to come...

            You have to remember that GNU (and thus GCC) is just as much of a political project as it is an engineering project. You'll be rather disappointed if you expect solid engineering choices to come from a political project, so it's probably best not to ;-)

            4 votes
      2. [2]
        sigma
        Link Parent
        IR basically. LLVM's magic sauce is that it splits the processing into two parts. Its second magic sauce is that somehow its native C/C++ compiler every bit as good as GNU's compiler for most...

        IR basically. LLVM's magic sauce is that it splits the processing into two parts. Its second magic sauce is that somehow its native C/C++ compiler every bit as good as GNU's compiler for most programmers, and offers valuable optimizations and tricks that GNU doesn't for very very performance sensitive programmers, which despite sounding not that hard is enormously so especially given GNU's strict licensing rules.

        I think the resurgence of language design comes down mostly to a new generation of programmers being used to code reading more naturally to humans, allowing everyone to be programmers, as opposed to code doing exactly what you expect it to do at the cost of an extremely complicated set of rules and procedures you have to follow in order to get performance (C, C++). Its really been Python leading this front, with some languages finding minor niches. C/C++ is far from a general coding language for the vast majority of programmers unless you work in HPC, low latency, writing compilers, systems programming or do competitive programming.

        2 votes
        1. wirelyre
          Link Parent
          Thanks, that makes a lot of sense: LLVM grew with this generation, rather than conducting it.

          comes down mostly to a new generation of programmers being used to code reading more naturally to humans

          Thanks, that makes a lot of sense: LLVM grew with this generation, rather than conducting it.

          1 vote
  3. mrbig
    Link
    I wonder if a comparison to artistic tendencies make sense? Like the difference between minimalism and maximalism, for example.

    I wonder if a comparison to artistic tendencies make sense? Like the difference between minimalism and maximalism, for example.