Week 1
Prior to my first Open Source class, I had a pretty strict definition of open source in terms of where it was appropriate to use that word (or not). I had this idea that it had to be some sort of software project that was freely available online, with some sort of source code available online and where people could pitch in their own code.
And to an extent, that was correct, although my first class session expanded my expectations of what counted as open source to include non-programming based things, like Wikipedia and OpenStreetMaps. This first class revealed how much more significant open source was to society beyond a technical field–for example, The Global Seed Vault can be counted as open source, and this vault revealed how important open source was. If there wasn’t any open source projects for plant seeds, humanity could potentially go down a very bad path of just using proprietary GMO seeds (that have some sort of better genetics compared to non-GMO seeds) produced by companies specializing in GMO seeds for all food resources and we would literally have our lives controlled by these companies. Essentially, open source provides an alternative resource to people who may not want or have the means of getting commercialized products.
Furthermore, open source kind of brings back the ethos of yesteryear’s computing, where people are freely able to modify or play around with an open source thing and push things beyond what they were intended for. People are free to modify software so that they can fix an issue they might encounter with a certain combination of hardware or software (or get a direct connection to the maintainers of the software so that they can collaborate with the user to diagnose the issue and figure out how to fix the issue). This ethos also allows people to create open source ways of extending the useful life of their hardware (that the original manufacturer abandoned), unlock new uses for their hardware, and prevent more e-waste from piling up (by creating workarounds to arbitrarily imposed restrictions on software upgrades or providing resources for people to independently create and use repair parts for products that would either be too expensive to repair or otherwise impossible to repair because the supply of parts has been exhausted).
However, one issue open source is the fact that people can more easily poison open source projects. This is probably why most teachers tell students that Wikipedia is not a reliable source–anyone can edit it and some people are nefarious enough to put fake facts in about a topic, which can potentially affect the discourse on a topic (such as the time when Burger King put out an ad to get Google Home speakers to tell viewers what a Whopper is based on a Wikipedia article, but the Wikipedia article would be poisoned to say very inappropriate things about the Whopper). This is also why there was that whole security fiasco with openssh a while back where a contributor was able to socially engineer their peers into trusting the contributor enough to sneak in a backdoor for a potential attack vector. Closed source projects are a bit more secure from getting poisoned, as there are safeguards in place to prevent compromised software to build software from being installed.
Going off of this poison point, I feel like society has become a bit too reliant on open source software, which can be unstable, as developers can quickly delete a open source package off the internet and leave the users of that package out to dry. I remember there was this time when a developer of a Node package that did something super simple decided to delete the repository because of some sort of politics (that I don’t recall at the moment). This broke a lot of other Node packages that were reliant on this one single package, and in turn, a lot of websites that might’ve used some sort of Node package. This issue got bad enough that the maintainers of the Node package manager had to do the unprecedented step of bringing back that package. This instability would most likely not occur with closed source projects, as companies would be in a lot of trouble with different parties (some of which may had signed a contract).
Ultimately, I decided to sign up for this open source class to see why people are motivated to develop open source software in the first place. I know that it can be a hobby thing, but I do want to see the true motivations of this. Maybe there’s a more nefarious thing going on (since there are closed source softwares that are just a light reskin plus a few functionality add of a open source software, like VSCode and Google Chrome). I also wanted to learn and see how something that feels a bit more informal gets organized (as literally anyone can contribute to a open source project, so there’s a real chance people might accidentally work on a fix that was already fixed (but still in pull request limbo)). I’m also taking this course to allow myself to potentially learn a new technology stack to contribute something substantial to a piece of open source software.
A few open source projects I have used are software that would otherwise never exist, mainly for legal reasons. For example, I use Ryujinx, a Nintendo Switch emulator to play Nintendo Switch games that I may otherwise not have access to, or to run games at a performance that the original Nintendo Switch hardware is incapable of. I have also used openBVE, which is a free and open source train simulator software where users can operate any train model on any train line. All assets used in the software are user generated, meaning that people had to go out and recreate real life features and implement them into these models. I have also used a few open source macOS specific software, such as Maccy, a clipboard manager that stores the last n (n can be specified by the user, but defaults at 50) text/media copies (similar to the Windows+V command in Windows 10 and 11), and UTM, a piece of software that allows users to run virtual machines and in turn, other OSes on top of the native macOS experience (this is particularly useful for one of other CS classes).