Getting Onboard with Open Source

John Binning
Jul 24, 2017 · 3 min read

As a junior developer, contributing to an open source codebase for the first time can seem particularly intimidating. One of my final assignments as a student at Turing was to do exactly that, contribute to a large open source project. As with most projects during my time at Turing, I knew I could do it, but that didn’t make it any less daunting.

My group was assigned to contribute to the Department of Veterans Affairs website https://github.com/department-of-veterans-affairs/vets-website.

We cloned down the repo, and went about setting up our environment. This part seemed particularly intimidating and we thought it might take a very long time. The repo contained more dependencies than any of us had ever worked with before, many of which I had not heard of. Despite our nervousness however, this part actually proved to be fairly easy. It took a little bit of tinkering, but after about 20 minutes we had the site running locally and all tests passing.

After a little bit of celebration -

It was time to get back to work and figure out how the code actually worked. This would prove to be possibly the most challenging part. We decided to tackle issue #3434 https://github.com/department-of-veterans-affairs/vets-website/issues/3434. This particular issue is about a bug where when applying for education benefits, users can add a new card of education info without actually filling out any info. The issue contained a static image cropped from the site, but no url or description of how to reproduce the issue. It took us considerable time to simply reproduce the issue. Once we could, we set out trying to find the appropriate file to edit code in. The page had a “add another” button, and this button seemed to be the one causing the issue.

Great, we’ve found it, let’s console.log some things and get moving. However, none of our console.logs are working. We felt sure we had the right button, so we tried taking a look into the html files. Except there weren’t really any html files. The html we needed was in a markdown file. None of us had ever encountered using markdown as html before, but some digging showed us that the project used metalsmith to convert markdown files into an html bundle.

At this point, we were feeling a bit intimidated. We couldn’t even console.log things, and we felt that we were under qualified to be contributing to the project. However, we were determined to get our feet wet with open source, so we pushed on.

We made some headway when we realized that there were multiple “add another” buttons, and we were able to figure out which one was correct for our issue. We wrote some code that seemed like it solved the problem, but it revealed yet another bug, — and it broke a test.

We realized that the test should be breaking (the test was asserting something that was no longer intended to be true), and tried to figure out how to write a new test. We spend hours trying to rewrite the test, even calling in one of our very experienced instructors for help. Even with her help, we were unfortunately unable to fix the test. She ultimately advised us to submit a pull request anyway, and explain the issue we had with the test.

I ended up submitting the pull request that night https://github.com/department-of-veterans-affairs/vets-website/pull/6072, and proceeded to be very nervous about having it closed.

Me seconds after hitting “open pull request”

Then I realized that it didn’t really matter too much if it was closed. Sure, it would be great if it was merged, but even if it wasn’t, I still had an opportunity to learn quite a bit about working in a large codebase, and now I have something to contribute to conversations about open source. I got excited, and emailed the maintainer of another project I have been interested asking if I could contribute. He said sure thing, and I’ve been working on updating some documentation for him in my spare time.

Ultimately, I learned that even as a junior developer, you have plenty you can contribute to open source projects, and the maintainers of those projects are often more than happy to have your help.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade