r0ml, aka Robert Lefkowitz was interviewed for usesthis.com and said “I decided to stop using open source software whenever possible and use any available alternatives…”, and this article is his explanation of why:
This explanation is narrowly focused on the question of using open source software — which is distinct from my ideas on writing open source software or distributing open source software or reading open source software or modifying open source software or copying open source software. Furthermore, the using which is at issue is running it, as opposed to using it by having it be a dependency in a software project I’m building. This is about being a user of software, not a builder thereof. There are good reasons for considering open source software if you are building software. I’m not sure the same is true if you are using software.
This term of “lithification” echoes some of the redmonk posts, so I added lithification as the tag there.
There is one more digression before summarizing the conclusions to this experiment. And that is explaining a phenomenon in software development which I call lithification. I describe this in my 2017 talk at linux.conf.au
Lithification is a term from geology which refers to the process by which loose materials are converted into coherent solid rock by compaction or cementation. In the software world, the analogous process is the one in which lots of little bits of functionality get absorbed into a larger software substrate. So, for example, there was a time when there were lots of little barcode scanner libraries and apps, and eventually android and iOS just built barcode scanning in as a feature of the operating system. In the 1980’s one would purchase a networking stack which was purchased separately because the operating system didn’t include networking. Somewhere along the way, networking software got built into the operating system. Go back further and things like support for sound cards involved separately installed drivers, since the operating system did not have built in sound support. More recently, things like machine learning, or virtual reality or raytracing are being cemented or compacted into the operating system. That’s lithification. It can happen with development environments — over the years they have had lithification occurring with features like version control and syntax coloring and integration with cloud deployment and so on. Each of these features at one time was a separate application which was eventually subsumed.
(various discussions on how open source is bad at this)
On a Macintosh computer or phone, if you’re logged into iCloud, you’re logged into iCloud in every application you’re using. Every application can share with every application using the same share facility. Keyboard shortcuts are the same everywhere (mostly).
The open source crowd think that having plugins and extensions and individually installed libraries is a benefit — it increases freedom. But it also increases cognitive load and incompatibilities and upgrade complexity. It increases software transaction costs. Eventually the costs get to the point where the best strategy is to retrench and use proprietary software which is lithifying. The evolution of separate applications into pre-installed hardware features is one of the ways in which lithification manifests. When Microsoft first attempted this with Internet Explorer, to lithify a web browser into the operating system, they were sued by the government. Today, every platform includes a built-in web browser. And other built in functions as well. Like photography. Video player. Text messaging. All of these were separately purchased applications at one time.
The impact of lithification is not just felt at the application level. It also impacts the software development process. If I use a modern platform, the platform includes data and video compression libraries, cryptographic libraries, image processing libraries. It includes interfaces for software installation and updates, for backups and authentication and networking and handwriting recognition. Not only does it make it easier for the developer to create software, but applications developed by different people or organizations will be consistent in ways in which applications developed using open source libraries will not.
It also means that as the operating system continues to evolve and lithify additional functionality into itself, those software packages that disdain to advantage themselves of the hardware capabilities will constantly be falling behind those that do.