Week 1 Open Source at a Glance
Overview
When I first heard about the term “open source” a few years ago, I thought it was just what its name suggests: making the source code of the project available to the general public. I was surprised find out later that not only does open source allow people to view the code, but also makes it possible for anyone to contribute to the project. To be honest, I have never considered contributing to open source before although I knew that it would be a great way of learning for computer science students, for the reason that I always thought that open source was only for the geeks and programming geniuses. I decided to register for this class after browsing the course websites from previous semesters. What interested me most was that this class could prepare me to become an active participant in open source projects. Besides, it sounded exciting to be able to meet with speakers who are actually involved in the open source community. After the first week of lectures, I now have a more comprehensive understanding of open source.
Pros and Cons
For me, the primary advantage of open source is that it saves a lot of time and effort for developers. Without all these open source tools available, developers will have to implement a feature on their own each time, which can be quite time-consuming. Open source allows developers to integrate the project into their code with ease. For example, Parsley.js makes HTML form validation possible without having to write a single line of JavaScript, and passport provides a simple solution to user authentication for Node.js. Also, the communities of open source projects are generally accessible to users. They are willing to help users figure out what’s how an issue can be fixed, and that’s why I usually find the issues page on GitHub very useful when working with open source tools.
A major con of open source, as we have discussed in class, is that it is hard to ensure that the project is not used for evil purposes. Some licenses have tried to add restrictions on what cannot be done with the software, such as the JSON License which states that the software shall not be used for evil. However, this can be against the nature of open source, and it is also hard to define what “evil” exactly refers to. Another drawback of open source projects is that many of them lack user-friendly interfaces. Here I am not talking about the well-known projects like Android and WordPress that comes with nice GUI and websites with step-by-step instructions, but many other open source projects that are not targeting users without prior knowledge. Even for people with a coding background, it can still take a long time for them to figure out what is going on. On the contrary, closed-source softwares are usually much more user-friendly than open source softwares.
Projects
The open source project I use the most frequently is Selenium. It is a browser automation framework that enables tasks such as web scraping and automated website testing. It makes the scraping of dynamic & JavaScript-powered websites and testing of web applications much easier. In my current position as a research assistant, I have been using Selenium to build web scraping scripts in Python for a project that collects daily jail data all over the country and compiles the data into one of the largest databases of criminal case records ever. I have also done automated testing with Selenium for a web application I built.
Another open source tool I use regularly for web scraping is Python’s Requests library. It allows users to send HTTP requests easily and can be useful when scraping static webpages (generally faster than Selenium).
Homebrew is among the first open source tools I’ve encountered. It is a package manager for macOS which is easy to use but very powerful.
Express is a minimalist web application framework for Node.js which I used to power my final project of Applied Internet Technology last year.