Have you ever wanted to contribute to open source but weren't sure how to get started? Marc found himself in just that situation. Sometimes it all comes down to taking that first step.
I've been "programming" in Python for a while now, enough to be dangerous as they say. I've learned enough to be able to help others from time to time, but new enough that I still get distracted by the next shiny package I hear about on a podcast.
I recently decided that, to help progress me further and to give back a little, I would help contribute to a package. I've heard the call to arms a few times, "Update the documentation, fix the bugs, build new features!". It's the Emerald City of the open source world. Being able to give back to the community that gives me something I enjoy so much was something that couldn't be ignored.
But where to start? PyPI has over 100,000 packages, how does one just randomly pick one? Do I pick a well known product? Surely they can always use the help, but the large packages are so refined. With dozens of contributors already helping how could I possibly add something of value? Is it better to go for a smaller package? Find one that still needs work?
Finding the Project
Then I heard about codetriage.com. A website just for people like me who want to help, but need help finding the right place.
So off I went to find someone who I could possibly offer assistance. Pages and pages of packages that needed help, but I couldn’t even understand what half of the issues were. Again came the thought... "Who am I to think I have anything to offer?"
So I backed off again.
Then on my favourite podcast, I heard of a newish package (newish when the episode was released 3 years prior anyway). The package sounded awesome, and the creator was a local to me. How awesome was this, he finished his interview with a call to action: "Come and help us, fix the documentation, fix the bugs, create new features". Yeah, he sounded like everyone else. Then he said the piece that ignited my enthusiasm.
"We want anyone, even if they have no experience, we are happy to mentor them. Contact me directly even".
I was hooked. I got to work, and I looked up the package. I found some PyCon talks and watched them. The same call to arms was repeated. PyCon 2018. PyCon 2019.
Finally, someone who wanted my help and was willing to help me help them.
So I jumped on my gmail and emailed the creator directly. "I’m here, I don’t know much but I want to help". Maybe I said a few more words than that, but that was the gist of it.
I got a reply back the same day (local, but a few hours time difference). "Thanks for contacting us, is there anything you specifically wanted to help with? Do you have any particular skill sets?".
My heart sank.
I had failed at my first break. I realised straight away where I had gone wrong: I hadn't provided any useful information.
So I got back on my email and tried to be more useful. "I’ve got some Python skills, plenty of Windows experience (based on 20 years of desktop experience) but I have a distinct lack of Github experience”.
That was better. In response, I received meaningful direction to a particular part of the package with its own issue log, and a suggestion that I definitely look into Github more.
As much as my first reading of the dev’s email was harsh, it really wasn’t. He was busy, to the point and gave me solid direction. I respect him more now and really want to help his product.
I started the next day. I’m now watching YouTube videos about contributing to open source; am trying out the product to see how it works and am browsing their issue log to see where I can offer any assistance.
The lesson here I really want to pass on (if anything), is that wanting to contribute is great, but take a look at your skill sets first and get them in order. The core devs behind packages run their own lives and work full time jobs on top of the Free and Open Source Software (FOSS) work they do. If you reach out, be concise, clear and direct.
Keep Calm and Code in Python!
See an error in this post? Please submit a pull request on Github.