I am both excited and humbled to announce that I was accepted into Outreachy Round 14! I will be working with my mentor Randy Barlow (bowlofeggs) to improve Bodhi: the web-system that publishes updates for Fedora. We will hash out the plans in greater detail next week, so I’ll post an update after that meeting. As of now, the plan is to make improvements to the Bodhi CLI — more specifically, command completion.
If you’re thinking, “Okay, wait — what’s Outreachy?” Let me give you a brief summary: Outreachy is a wonderful internship opportunity for underrepresented groups in FOSS. Its primary goal is to encourage underrepresented groups to become FOSS contributors. An Outreachy participant is paired with a kmentor (supplied by the FOSS organization) to work on a project. The projects range from Linux Kernel development to designing a coloring book. There’s truly a project for everyone. Outreachy is hosted by the Software Freedom Conservancy, with help from RedHat and the GNOME Foundation. If you’re interested in learning more–especially if you’re a member of an underrepresented group in FOSS–you can find more information here.
How I came to apply to Outreachy
I’ve been mustering up the courage to apply for Outreachy for over a year. During rounds 11-13 I ended up with intense feelings imposter syndrome a day or two before the deadline, and thus never submitted an application before Round 14. This round, I started and powered through the application tasks only a few days before the deadline (no time for imposter syndrome to set in). I reminded myself that It’s only impossible to get in if you don’t apply and that internships are meant to be learning opportunities. I held my breath through the application process and got in. (I have to keep reminding myself because I’m still in shock, :D.) I will outline my initial contributions (i.e., application tasks) below.
My first contribution to Fedora was also my first FOSS code contribution. This contribution consisted of fixing a bug in Bodhi. When an update reaches the required time in testing, Bodhi comments to alert the user that it can be pushed. The user can edit this update anytime, including after Bodhi comments that the update can be pushed. After a build is updated, the karma counts and the number of days in testing are reset, and thus the ability for the update to be pushed is also reset. If the karma or days in testing threshold is reached, the user should yet again be able to push the update. Bodhi should comment to notify the user of the recent ability to push. The error occurred when Bodhi did not post a comment notifying the user that the update could be pushed if Bodhi already commented that the update could be pushed prior to the karma (and thus, days in testing) reset. This error occurred because the method met_testing_requirements() determined whether the testing requirements were met based on Bodhi’s push approval message prior to the recent edit. I fixed this error by creating a new method to only retrieve the comments since the most recent update. The methods that determine the amount of karma and whether the testing requirements were met used the new method I created instead of simply retrieving all comments. I also wrote a test to ensure that this type of error won’t occur in the future. My initial contribution can be found here: https://github.com/fedora-infra/bodhi/pull/1396. The commit can be found here: https://github.com/fedora-infra/bodhi/commit/ceaf533d9a2dd0dd3496a2c12030689956f453a7.
My second code contribution was also to Fedora’s Bodhi. This contribution entailed sharing the –notes-file parameter between the new and edit CLI commands (i.e., a new update and an edited update). This allows the user to specify a file in which the update’s notes are contained. First, this required adding the option of using the –notes-file parameter in the CLI. Now that the user can use –notes-file as a parameter, the –notes-file parameter must actually retrieve these notes from the notes file. In order to achieve this, the file would need to be opened, read, and placed into the notes variable. This required making a function to get and/or process the notes, which was aptly named “_get_notes”. Such a change also required substantive testing. I created a test to ensure that the –notes-file parameter would be properly handled when creating an edit request. I created another test to assert that providing both the –notes-file and the –notes parameters to an otherwise successful updates edit request would result in an error. Finally, I placed a note in the man pages concerning this change. You can find this contribution here: https://github.com/fedora-infra/bodhi/commit/305f9aa8663ede691ccdd10cef005124276cbd21.
My most recent contribution was my third contribution (also to Fedora’s Bodhi). I have ensured that when an exit code of a process is zero, the standard error (if any) will be logged at the info level on the bodhi logger. If the exit code of a process is non-zero, the standard error will be logged at the error level on the bodhi logger. This was in response to a bug that resulted when emails were sent containing standard error output of processes with a zero exit code. Note that standard error does not always indicate an error has occurred — only when there is a non-zero exit code can we be sure that an error has actually occurred. I also wrote tests to ensure that this bug will never reoccur. This contribution can be found here: https://github.com/fedora-infra/bodhi/pull/1417.
General advice to prospective interns as an incoming intern:
If you’re a prospective Outreachy applicant, and if you find the application process a bit daunting, you’re not alone. But hey, you’ve got this! Take a few deep breaths and remember: the only way you absolutely cannot get in is if you don’t apply! Your mentors and the community are there to help you, so don’t be afraid to ask any questions. The program is aimed at newcomers who want to make their first contributions, so please remember that if you begin to feel inadequate in any way. I know that it can feel impossible if you start comparing yourself to the people who have committed over a million lines of code to a project. Always remember that they had to start somewhere!
If you have any questions about my experience with the application process, want some pointers or just a confidence boost, PLEASE don’t hesitate to contact me. If I can get accepted, you can too!