Contributing to open source
This post documents my first public experience contributing to open source. In other words, it is about my first open source contributions linked to my name. Using my name to contribute to open source was intimidating because my identity would be attached to my work, allowing others to assess my skills, abilities, and lack thereof.
Before this, I contributed through accounts that did not use my real name, which allowed me the freedom of failure without jeopardizing my brand. However, I decided to attach myself to these contributions because I was worried I would never create a public portfolio if I did not overcome this fear.
Open source at RIT
I made these contributions for a class I took during my freshman year at the Rochester Institute of Technology (RIT): Humanitarian Free and Open Source Software Development (HFOSS). It remains one of my favorite classes.
I contributed three times for class:
The goal of this project was to contribute to an open source community by remediating a bug fix request.
Where to start contributing to open source?
First, I looked on Fedora and Ovio for “help wanted” posts. I saw that TigerOS—a Linux distribution created by students at RIT—had a few issues listed on Fedora’s easy-fix page. I liked the idea of contributing to a local project. Additionally, I resonated with the idea that RIT students have a school-specific Linux distribution. The installation process allows students to select their major. Then, the operating system will install all of the software required for their first-year courses.
The issue that I picked was to update the TigerOS website to link to the latest release of TigerOS. I often need to create custom HTML for my blog, so I thought I would be capable of fixing that issue. The contact listed on the request was Tim Zabel, the current maintainer of TigerOS.
Both Zabel and I are part of RIT’s Free and Open Source Software group chat, so it was easy to introduce myself through that commonality. I contacted Zabel on Telegram.
I asked Zabel if I could work on TigerOS for my bugfix, and he agreed. We planned a call to review TigerOS’s setup and the changes that I would make.
🌸👋🏻 Let’s take this to your inbox. You’ll receive occasional emails about whatever’s on my mind—offensive security, open source, academics, boats, software freedom, you get the idea.
During the call, I learned that I will need to learn how to use Git to push my changes to GitHub, which is where TigerOS’s hosts their website. I thought this was interesting because the code for the TigerOS Linux distribution is stored on GitLab. However, I recognize that if I continue contributing to open source, Git and GitHub would be the primary tool I would be using.
After learning some of the basic Git commands, I forked the GitHub repository and merged my changes on 31 March 2021.
Zabel (@Tjzabel) reviewed and approved my changes on 31 March 2021. Also on 31 March 2021, my merge was accepted into the main project branch. After that, Zabel updated the mirrors page, so the most recent release can be downloaded here.
I enjoyed working with TigerOS. It was simple, fun and involved RIT students. I also gained confidence in my abilities as a contributor. Lastly, I asked Zabel if I could take on larger requests, so I could make a larger contribution.
My first contribution
My next assignment was to make a larger contribution.
TigerOS is a small project, so there are many help requests. Thus, I had many opportunities to work on the project. Tim Zabel sent me a help request on Telegram. Zabel said that an installation guide would be useful for the project.
Contributing to open source for beginners
I would like to note is that programming experience is not required for many open source projects. My installation guide is a great example of that, so are many of contributions tagged on GitHub as #beginner-friendly.
As a result, I decided to create a TigerOS installation guide. I thought it would be a good idea to include a multitude of things in the guide:
- Formatting and partitioning USBs (for live booting and installing)
- Creating the live ISO on Windows, MacOS, and Linux
- Live boot vs installing
- Why live boot first?
- Check wifi, keyboard, mouse, printer, etc…
- Preparing to install (missing) necessary drivers
- Why live boot first?
- Customization after install
- Installing necessary drivers
- Icon / GNOME themes
I am including these topics because I had difficulty understanding them when I first installed Linux.
As a beginner, it took me hours to figure out what was going wrong when I ran into roadblocks. I lacked the fundamental understanding of why things did not work, and what I needed to learn in order to fix them. However, after I read the Debian Administrator’s Manual, I gained the knowledge I needed to competently install Linux. For example, I learned that a lot of the issues I encountered were because some programs cannot run on Windows or MacOS, and that many hardware drivers are not pre-installed on Linux ISOs.
If install guides would have explained why live booting Linux does not always work out-of-the-box, I would have had a much easier time installing Linux.
This guide will take me a while to finish, so I will continue to work on the guide for my second contribution. You can view the current progress of my guide here.
After my guide is complete, I will push it to TigerOS’s main documentation branch.
I think my guide will be useful for live booting and installing many Linux distributions. I am doing my best to include the knowledge that took me years to learn, so that people encountering technical issues can effectively resolve those issues.
When making my guide, I wanted to install TigerOS myself, so that I could screenshot each step in the process. This would allow me to give the reader clear instructions. Unfortunately, I had some issues installing the ISO.
On 17 April 2021, I called Tim Zabel to resolve these technical difficulties. Specifically, I tried to build the TigerOS ISO in a virtual machine (VM) by using the commands listed on TigerOS’s GitHub repository.
# allow users to execute the shell script chmod u+x make-iso.sh # execute the shell script ./make-iso.sh
I could not run the commands in my VM because they would freezed my computer. In other words, the commands somehow affected my VM and my computer.
Fortunately, Zabel explained that I did not need to build the ISO, and I could download the ISO from another website without building it. This meant that I would need to import the ISO into a VM.
Thus, I ran my TigerOS ISO in a VM and all of my problems resolved. I could continue making my installation guide.
On 9 May 2021, I sent Zabel a Telegram message with a link to my installation guide. I asked Zabel to review my guide to see if I should change anything.
Overall, I am proud of my guide, and I am excited to publish it. You can view my guide here.
Thank you for reading my “Contributing to Open Source Communities at RIT” post! If you enjoyed this article about contributing to open source software, checkout my posts tagged with open source software and HFOSS, like FarmBot’s Community Architecture. I also recommend My Common App Essay.
This post used to be three separate posts on the HFOSS ’21 blog. After the HFOSS ’21 blog shut down, I hosted them on my website. On 7 October 2022, I combined the posts, so that I only need to send one link when I want to share my experience with someone.