Stallman and the FSF help encourage and motivate its use.
There are obviously some successes, but in general GPL license is not popular - overwhelming majority of the software is not released under GPL and sometimes never released to the public.
Apache and commercial no-cost is not the same. If the vendor decides to cut support for a piece of software and introduce something new, bloated and costs more. I have the choice to hire a programmer to maintain the current thing with GPL and Apache if it is worth it. That is a very important benefit, I have the choice, many business owners do not understand that, but the IT people they hire do and can use that to protect their employer (and their jobs) from exploitative practices. The GPL ensures it stays that way years down the road while Apache suffers from the MIT issue Stallman had when he maintained a Lisp system on his own. His competitor took his MIT licensed code and did not give back.
Those 'no-cost' licenses often become cost and very-costly in the future if they become popular enough with future versions.
As for the software products: they are still very common. Look at Flatpak or Snap stores. Krita made quite a bit of money on the Microsoft store believe it or not. Paid for and free Linux distro products dominate the server market that run Linux and GPL userland tools. Some Apache licensed web components (Grafana) is moved over to the AGPL.
They are the same in the sense that they are both not GPL. They just illustrate the spectrum of licenses that are not ideologically aligned with FSF, but may still do the job.
> As for the software products: they are still very common.
I will just repeat myself: there are some successes, but this is not the majority of the software. It’s just the tip of the iceberg. There’s enormous pile of proprietary software, that is absolutely not free or open source. Think of Google, Facebook or Salesforce codebase. Think of all the banking or military software. Even some Linux distro can be dwarfed by those applications.
Now if you want to talk about real bloat, like JavaScript libraries, then you are citing a malignant practice anyways. There is no world in which we should compromise libre software principles so we can mindlessly continue using Javascript bloat, which should be taken out back and shot even if you aren't concerned about libre philosophy.
I understand this too well. You say: “one canary developer”. If our software was built in hope that someone will bring the canary to ensure quality, we would have terrible software. It is surely nice to have this opportunity, but you don’t have to release your software under GPL for that. Hiring QA or white hat team could work even better. I’m not saying that open source software does not work: there are of course some successful projects. It is just minority of the entire codebase, and not all open source software is released under licenses endorsed by FSF. If we care about our rights, we should think what could be the appropriate way to build trust in the software made by Google, Okta or Salesforce, because open source battle is lost there.
> Now if you want to talk about real bloat, like JavaScript libraries…
No, I do not want to talk about that mess. That particular example won’t prove anything. Sorry. :)
I feel this. You should be able to understand your computer.
The point: computers are different from everything else. Pre-writing man is a fundamentally different character to literate, historical man. (I do believe there’s an Egyptian dialogue on the matter.) And in the same manner, computing man is a fundamentally different character from pre-computing man. However, most people, despite their USE of computers, cannot really compute, because they can only get their computers to do what other people have told them to do, and not what they themselves have told their computers to do. In other words, to them the computer is an appliance. Now, not everyone can read Ulysses, or Durants history, and I don’t think it would be fair to expect that of people. But most people can read, and they can read the whole book if they choose. The qualitative shift of computational man finds that what he has read can be made into action, simply by it having been written, yet this does not hold true for a person who is handed Durants history of the world, or Livy’s history of Rome (before having been taught Latin, even!) and being told, you have knowledge, even though you can’t get through it all.
You start people with shorter books. Even picture books. You start them with simpler computers, with simpler software, and then more complex computers which do more complex things. And even in the professional world, of fully literate adults, you only break out the really complicated stuff for the really complicated things.
Software should be comprehensible, because it is meant to be comprehensible, it is not just execution but elocution, and is the explanation of its own intent.
I think you have much too high a regard for your own interests and craft. I can guarantee you a cabinetmaker, machinist, pilot, doctor, or lawyer can make any and more of the same style of arguments. A little bit of computational knowledge? Yes it's very useful, and that's what low-code tools like Excel/spreadsheets are for. Akin to learning the basics of reading. More than that? No I think you overestimate the usefulness of computing, and most people only have a working knowledge of reading and writing. The world is full of complexity everywhere. Computing isn't the only thing with this force multiplier effect for humanity.
I’m allowed to be idealistic about some things. Aren’t we all?
And we all know bored developers will make up work for themselves and bikeshed themselves to death.
> a strategy
I don't think it's conspiratorial, so much as emergent. All structures which persist have means of ensuring their persistence. Institutions (including open ones) will push for things that further their existence, status, funding, and ultimately their power. They will make themselves indispensable, regardless of their actual value-added.
In a modern product engineering process we in fact fight the increasing complexity by selecting for the implementation only features that have the biggest business impact. That code is created because someone is going to use it to address some user need, not to confuse a potential reader. Nobody thinks at the moment of the roadmap planning about harming free software, this idea is just absurd.
With the evolving supply chain attacks, US Government advised companies to better understand their software supply chains. With transparent and repeatable builds this goal would be much more simple using the approach documented above.
We can innovate on more ideas for making more transparent software. We can have signed dependencies, pre-built trusted (signed, hashes) dependency chains.
Security only explains why _some_ people should be able to understand how software works, and this is a different story. You do not need to make software open source or free for that, there can exist entire spectrum of various licenses and accesses. This is what I mean by delegating the work to institutions: you let someone you trust to audit the code for you. This can be a dedicated team in your company, a 3rd party expert or a government agency, the important part is only those people really need access to the code, because only they can understand it.
This is a very small subset of end users that can do that and will want to do that. Even software engineers may not dare to touch the code and seek for workarounds or ways to report the bug with less effort instead. The programming language and APIs can be unfamiliar, there can be lack of context etc. The distance between general computer science literacy and ability to read the code of a large product is very big - experts often tend to underestimate it. For the majority of other people value of this possibility is literally zero: they would prefer to have a warranty from vendor. There's very little consolation for them in having weak guarantees from community of volunteers that discovered bugs will be some day fixed.