Deep Bugs
One of the most monumental works on open source software is Eric Raymond’s The Cathedral and the Bazaar. I say monumental because it ushered in an understanding of how open source software provides and inherent benefit compared to proprietary/commercial software. In attempts to draw comparisons, Raymond often quotes the work of Frederic Brooks, The Mythical Man-Month. As someone who has read both publications and scrutinized the tenets, I daresay that Raymond provides an understanding of the inner workings of the open software models that is unparalleled. Notably, Brooks gives examples from his prestigious experience working on the OS/360 team to help elaborate the correlation between increasing the labor pool and increased complexity of the project. During these investigations, Brooks gets his hand dirty with examples, calculations, and even graphs to determine an exponential correlations; I find it interesting because of its counter-intuitiveness.
However, Eric Raymond professess an architecture that alleviates that problem and mitigates complexity: no architecture. Raymond expounds an architecture where there is a bustling marketplace, a Bazaar, and people spontaneously contribute to it to make it self-sustaining. Unlike a cathedral that takes years to build with careful crafting and planning, Bazaars spring up almost overnight. As long as people follow certain tenets, this model of software development is bound to be more successful than the Cathedral model. Eric Raymond, then, gives the example of software projects like the Linux Kernel that drastically changed the operating system space and how we think about software development as a whole.
Given enough eyeballs, all bugs are shallow
Hexapod
As a visual person, I compare Raymond’s idea of software development to a deep (machine) learning algorithm. There are so many variables to keep track of in certain cases, that it is best to leave the machine learning model determine what they are. In recent years, with the help of proper hardware, deep learning has been able to achieve unimaginable things. From defeating world champions in board games to composing custom music. What allows these feats? Simple. I consider it to be a natural, spontaneous, and harmonious trend that allows something to act together in unison. When communities are formed based on individuals who share a common goal, they become something more than the sum of their parts; they become alive like the deep learning model, or the amoeba. They begin to move, interact, and grow in ways that is beneficial for the community as a whole. Eric Raymond argues that the same principle could be applied to software development, reducing the need – and cost – of micromanaging each task.
Exterminator
As a strong believer in Raymond’s ideology of the Bazaar model of development, I embarked on a perilious journey through the world of open source software: to squash a bug. Unfortunately, it was easier said than done.
In my efforts to uncover the cause of this bug, I was both appalled by and mesmerized by open source software.
The hunt began on the Mozilla Common Voice repository. As I was looking for issues to contribute to, I came across a bug that caught my eye instantly. It was titled “Datasets do not download in Chrome”. Now, downloading datasets is one of the premier features of the application, and I was shocked to see that it was not working on a platform that occupies the majority market share.
So, I dove right in.
At first, I fired up my Chromium instance – I do not use Google’s modified Chrome browser – and navigated to the problematic site. Lo and behold! the problem is alive! I immediately opened React DevTools since I knew the application to be using React. Since it was the production environment, I could not get much details; except, I thought it was because React was passing the data in read-only mode.
Clearly, I needed to set up a development version of the application. However, that was not easy. At first, I tried establishing a local setup by downloading the database program, installing dependencies through yarn
, and executing scripts through yarn start
. And… Nothing. The app did not allow me to navigate to the problematic page. So, I tried once more through another approach.
I installed docker
and docker-compose
. Then, I navigated to the project directory and executed docker-compose up
which ran an automated script that connected with some proxies to an Amazon S3 instance I configured. Voila! I could now reproduce the problem. But, a fix was still far away and the bug still eluded me.
to be continued…