Open Source - What's so "open" about it?

Sept 10, 2018

The first time I heard the term "open source" was in my sophomore year of collage, when I was just beginning to wet my toe into the vast ocean of web development. One of my friends, who were already quite familiar with making websites and what-not, had told me that something I had been trying to accomplish in pure javascript would be much easier to do in jQuery. He also pointed out that jQuery was also "open source", which, at the time, didn't mean much to me. The fact that the word "open" was in the term made me feel like it was something that was open for any one to use - which, after I learned what the term really meant, was sort of right. Sort of. For the time being, it was something that I could use without having to sign up, subscribe or pay for.

The realization of what "open source" actually meant came after I learned to use git and Github. I had been using Github has a means to share code and collaborate with my teammates on code assignments for my classes for a while, but it wasn't until I grew quite comfortable in programming that I realized that fellow programmers were contributing / collaborating on open source projects that I had merely been an inactive user of. I saw that people were discussing about a common issue that they have been having with a javascript library. I saw people were suggesting changes to very specific lines or code, or sometimes, comments on the code. However, even after seeing the contributions made by people that were not listed as "collaborators" of the project, I never had the inclination to become a more active participant in the world of open source.

I have yet to have come across my push / motivation to collaborate, as Vesha Parker did, as she describes in an interview on Medium. But just as Parker says she did before, I have to admit that I do have somewhat of an inferiority complex. It's not about whether I doubt that the suggestions / fixes for bugs that I am making for particular lines of code will be valid / correct. It's that I am unsure whether I know the full extent of a particular open source project - especially if it is a project that is widely used by thousands of people. Usually open source projects that I come across with are ones that are developed by a number of people and are used by thousands of people. This means that the size of the project is not one that I can master in a couple of hours. Some open source libraries that I come across take hours to just to try to learn to use for my own personal projects.

I don't mean to have a pessimistic view about open source projects. I mean to say that I don't think it is as easy as people make it sound to be. In the Medium article, Parker says that you can do "pretty much anything" if you have "a keyboard and a working machine to run whatever you write". You need enough programming knowledge to get a good grasp of what is going on and in order to do so, you also need time to study the code.

Maybe the spirit in open source project is more about the potential to start something small. Maybe it is about creating something "small and sort of clunky" - like many of my incomplete and imperfect Github repos. Probably it is about starting a project with a small group of people, or just yourself, in a space / community where there is a potential for other people all over the world may also be interested in collaborating. All projects on Github (at least the public ones) are "open" to the possibility of continued development, but "open" doesn't necessarily mean easy.

Parker talks about how she thinks the idea of creating an open community where amateurs and non-coders can gather in a place to learn and join th open source project community. She talks about how meeting the contributors and interacting with them in person is a wonderful human experience. Would this be something that is also achievable remotely online? What I mean by this is, in order to welcome new-comers to the world of coding, as well as to open source projects, can we spend a little more of our time in writing up our files or files to be slightly more friendly to non-coders as well? Sure, we can't teach someone how to code through a single readme document. But what if we were to list up more friendly description of the dependancies that the project is running? What if we include a link or to that we find useful to learn the languages / platforms / libraries that the project is using?