Week 15 - Final Reflections
Overall, I’m glad that this class was a forcing function for me to contribute to open source. It’s been something I’ve been wanting to do more meaningfully for a while, and I’m proud of the contributions I made to Gleam.
CS '25
Overall, I’m glad that this class was a forcing function for me to contribute to open source. It’s been something I’ve been wanting to do more meaningfully for a while, and I’m proud of the contributions I made to Gleam.
This week in class, the groups working on Preswald and Huggingface presented on their contributions to their respective projects. Both groups were incredibly productive in the short time that they had, and I’m very impressed.
In class this week, we discussed the role of open source in business. This is particularly interesting to me, as I like to think about business strategies and we’re all beneficiaries of open source. The most interesting discussion to me was around open source and business models.
Eric Raymond’s essay The Cathedral and the Bazaar proposes two modes of software development: the cathedral representing a top-down mode and the bazaar representing a bottom-up mode. When building cathedral-style, decisions are made by a few core contributors and limited to outside contribution. When building bazaar-style, a wide base of contributors work on a project. True in 1999 and still true today, both modes are practiced in successful projects.
After getting more familiar with the Gleam language and the compiler’s code base, I’ve started working on the language server. While not the most interesting part of the Gleam project, the language server is the most underdeveloped and approachable as a first-time contributor. I originally tried working on gleam#4280, a feature request for displaying constant values on hover, but I closed my PR after realizing that some design decisions for the feature hadn’t been finalized yet. Although overlooking that was embarrassing, working on the feature led me to realize that the Gleam language server didn’t support hovering custom types. I opened gleam#4451 and have been working on it since.
My OSSD group has decided on Gleam as our project to contribute to for the rest of the semester. Gleam is a young functional programming language that compiles to JavaScript and Erlang. The Gleam project includes a lot of components, including the compiler, the language server, and the website, but we’re targeting working on the compiler specifically. My teammate and I both find working on the compiler super exciting.
I’ve opted to make code contributions After evaluating Ghostty to be a good project to work on last week, I’ve been working on contributions to the project. While working on any large project is initially daunting, Ghostty’s codebase is remarkably well written. It helps that the main contributor has some experience writing industry-standard cloud infra tools like Consul, Vault, and Terraform.
This week, I have been scouting the open source expanse for a project to work on. My criteria are straightforward: the ideal project is active, useful to me, and in a domain I have experience in. In my brief search, I’ve found a few projects that seem promising.
Understanding the intricacies of Git is an underrated talent that I wish I had. I’ve had to search up rebasing vs merging dozens of times because I never seem to remember which one is which. Nevertheless, you don’t need to be an expert at Git to derive value from it. In fact, it can be as simple as three commands if you want it to be: git init
, git add
, git commit
. If you want to learn more, here are some exercises that serve as a walkthrough of some basic commands. Very useful.
Our team is making a Google Chrome extension called Color1ze. Inspired by a daydream of Nyan Cat, Color1ze is a gag extension that changes the default color of text on a website to a flashy rainbow. Since our team is mainly comprised of members with little JavaScript experience, our goal was more so to build something fun than to build something useful.
Code of conducts are useful in fostering the type of communities different organizations desire.
For example, the Go Project has a code of conduct based on the Contributor Covenant Code of Conduct. Relatively terse, the document’s main points are community participants to be positive and engaging in interactions and to be inclusive as a community. While Go’s code of conduct is similar to its predecessor in its broad strokes, Go’s code of conduct makes additions like providing context for why a code of conduct is needed and summarizing the salient points at the end. These additions make the document more approachable, and in a project as large as Go, this is important in order to minimize bad behavior from participants spanning different cultures.
Open source is great because it makes software cheaper.
In a 2024 Harvard Business School paper, researchers estimated that firms would spend 3.5 times more to build software were in not for open source software (OSS) 0. This is good news to more than just MBA-types. This is also good news to us, regular consumers, because the relationship between software costs and software output is superlinear: cheaper software leads to more software 1. As an optimistic software engineer, this means being able to solve more problems with fewer bugs given the same time and budget. As a result, I think OSS makes our world more fruitful.