May 09 2020

An Open Source Utopia

The software industry is a bit of an anomaly: we as programmers are the makers of our own tools. Most of these tools exist with open source licensing, making it easier than ever to contribute. It’s with good reason that most of these tools exist on the command line: it’s more efficient. Nevertheless, it is important to recognize the slew of industries that suffer from not being able to make use of these tools. In short, software engineers are blessed with efficiency constrained by their own imagination and ability to use the command line, while many other areas lack this privilege.

Open source always evolves. ed was a simple editor released in the 70s. ed was able to evolve into ex, which then turned into vi: a program installed on most Linux machines. It didn’t stop there either! vi became vim, and vim became neovim.

The open source ecosystem starkly contrasts with business: In competition, companies rise and inevitably fall, while open source just evolves. Let’s think of a simple thought experiment. Let’s say that ed, ex, vi, vim, and neovim were all products of one or more companies. Let’s also assume that these companies charged a premium for these wonderful programs. Now consider the number of years that it would take to progress from ed to neovim in a competition-based ecosystem. I am fairly certain, without compromising quality, the evolution of editors would take an order of magnitude longer (if at all).

Fortunately, the open source ecosystem is more forgiving. Each project can build off of another. Source code can be referenced, modified, repackaged, etc. This is quite an extaordinary blessing. Even closed source software can leverage these packages to boost their velocity as well. Open source is the backbone of almost every modern, successful software product.

Open source is a gift that should be praised and bolstered in the consumer space. I operate Linux, neovim (with many plugins), mutt, khard, khal, offlineimap… I could keep listing them, but it would take all day. In fact, each of these programs have dependencies which are open source too. Integrating these programs into my daily work-flow has lead to an immensely high productivity level. On another note, it’s also no coincidence that the above tools I listed are all command line tools. A keyboard allows a user to use their muscle memory – a mouse does not.

So if a cloud-based, close source (probably React app) GUI has a greater tendency to be commercialized and lack quality, while the command line tends to have more freedom and efficiency, it’s fair to say that the command line should be here to help everyone. I don’t intend to conflate open source with command line. I realize that there is a plethora of open source GUI tools and many of them are great at what they do. I personally use FreeMind to manage my jiu jitsu mind map. Graphical user interfaces can be preferable for certain tasks – however little knowledge of the command line can create an unmatched efficiency for a large swath of use cases. I propose that command line be essential in either high school or college.

If there were to be a greater adoption of the command line, software engineers could write better tools at a lower cost. After all, computers by definition process data. Their original intent was not graphics coupled with point-and-click, nor should it. I’m not saying that it’s appropriate to ditch the last 30 years in graphical user interface work, but there should certainly be less attention towards it.

Is this my utopia? It sure is. We probably won’t come close to a wide-spread adoption of the command line. In being a realist, I foresee a greater push towards closed source browser-based software. However, this won’t stop me from building efficient tools for people who are willing to keep an open mind.