Jumping into Open Source … Like a Junior Dev.

Kelly Miller
Jul 24, 2017 · 7 min read

Maybe you’ve been programming for twenty years, maybe just two, or maybe like me you’ve been programming about six months. No matter who you are or where you are in your coding journey you can contribute to open source — and if it’s your first time trying to contribute you might be feeling a little like this:

If you can relate a little too much to Urkle in the gym, then I hope this article can be helpful to you. (But really if you’ve really been coding for twenty years… this post probably won’t be of much help to you, read at your own time-wasting risk.)

Who am I? What do I know about open source?

I am a student in my last couple of weeks at Turing School of Software and Design. Seven months ago my most meaningful coding experience had come from my middle school Myspace account. I chose to attend Turing because I was not interested in spending another four years earning a second degree but I did want a rigorous education that prepared me to make a meaningful difference when I finished. With just a few weeks remaining before we graduate our instructors gave us an assignment to better prepare us for what we might face “in the real world”. Jumping into a pre-existing and rather large code base, we were asked to make a pull request that resolves an issue on the sites Github. Up until this point we had been creating from nothing fully functioning SMALL apps.

The project:

My group was assigned the vets.gov repo which had a number of issues a beginner might be able to handle as well as AMAZING (if sometimes slightly outdated) documentation for setting up. The goal of the project is to create a front-end website for the VA that is easier to use than the current website, va.gov, which is like most government websites and not very intuitive.

By far my favorite part of this project was working on something that matters.

We have made to-do boxes, idea-boxes, link lists, grocery lists, wish lists, chat apps, and just about every ‘beginners’ app there seems to be. And it has been purposeful. What I have learned through these projects has made me a better developer. BUT working on an actual website, that is actively serving a group of people to make their lives easier is the very reason I pursued this career. It was exhilarating but it was also extremely intimidating.

How do you even get started?

The first step of this process is finding your codebase. The benefit of being in school is that sometimes these steps are done for you. My group was assigned vets.gov — BUT a quick google search can serve as your instructors in this case. A search for “open source repos for beginners” yielded many results. Once in a repo Github allows you to search for issues that have been tagged for a beginner. Here’s a journey from google search to beginner appropriate issues:

Once you’ve selected the repo and maybe an issue or two you want to tackle it is important to pull the repo down to your computer and get it running so that you can spend some time getting acclimated to the folder/file organization. Remember when I said that until this point my projects had been small. My largest project had a total of 47 files. The vets.gov project has over 2000 files. Welcome to the real world, I guess. Most of this site is accomplished using React and Redux, both of which my group and I are luckily familiar with. Being familiar with how these frameworks work was nice, but it did not make this especially easy. It took my group a better part of two days to simply figure out all the pieces we needed to fix ONE issue. My three biggest takeaways from this process are:

  1. Use your developer tools to find class names and id’s of the elements you want to work with, then make ‘command-shift-f’ your very best friend.
  2. Grab a real-life human friend to pair with so you have another set of eyes to help you figure out what in the world is going on.
  3. Find a site with a great README that makes getting the site building and locally hosted a breeze, or at the very least manageable.

What about what you don’t know?

Riddle: Four junior devs open a repo and look for the html. What do they find?

Answer: Markdowns. Many, many, many markdowns. Taking my own advice from the first takeaway above, my group used our text editor’s find all tool to look for the classes and id we identified using our chrome developer tools. And we found markdown. Using takeaway number three we went back to the README to learn a little bit about Metalsmith. The README even links to the Metalsmith API.

Metalsmith is a ‘pluggable static site generator’ it will read all the files in a source director, use a series of plugins to manipulate the files, and write the results to their destination directory. It seems the plugins can range from very simple — say for a single blog post:

simple example from Metalsmith API

to much more complex depending on what you need. The reality is for the issue we were tasked to solve knowing the nitty-gritty of Metalsmith was not necessary, understanding it enough to navigate the folder/file organization was all we needed.

Riddle: I just jumped into an open source project for the first time and I have no idea what half of this ‘stuff’ is! What do I do?

Answer: It probably doesn’t make sense to spend weeks learning every technology/language the project is using. Use the project’s README along with the different technologies’ docs to achieve a basic understanding that allows you to move forward at a reasonable pace in solving the issue at hand. Then with all the free time you have go back and LEARN!! Truly I am so excited to have a beginners understanding of Metalsmith and plan to learn more about it soon.

I can solve problems?

After you’ve parsed through the code, made sense of the parts that are completely new to you. It’s time to solve the problem. Remember you’ve purposely filtered to issues made for beginners. You selected an issue within your capabilities. YOU CAN DO THIS! Use your coding network to help and remember you are just making a pull request. They do not have to accept your help and even if they don’t maybe you’ve made it easier for someone else to solve the problem in the future. Anything you provide is helpful. Make the PR, making it clear which issue you solved, what steps you took, and anything that a reviewer might need to be aware of.

You did it!

Keep reading to see exactly how we did it:

Here’s a picture of the issue my group chose:

First we commented on the issue using a script from our instructor Brittany Storoz:

We were also advised not to take an issue and leave it unresolved for more than a week. If after a week you’re still not able to come up with a solution, politely leave a follow up comment and find another issue.

We then found the issue on the site:

As you can see, the site would allow one to add empty cards to their education history.

Here is how we solved it in the code:

And the result was:

does not create card without any values

That’s it, we did it, it does exactly what we want it to do now, except wait…

OH NO WE BROKE A TEST!!

We did in fact break a test. The test that broke was written to count a function being called. That function was called when an education card was added. Since we were no longer allowing cards to be added without any values being changed this was EXACTLY WHAT WE WANTED! However after a couple of hours struggling with trying to re-write the test we decided to waive a white flag. We decided not to let it stop us from creating a pull request, but we did make sure to acknowledge that a test did break in a predictable fashion.

And Remember — your first jump does not have to be out of an airplane, it can be on a rock.

Don’t be afraid to start small.

Start small: change a font color, make something bold, removed an old link, there is so much a beginner can do to 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