How I got started with Open Source and you can do too.
This is in no way going to be a comprehensive guide on how to get started with open source; its going to be more of a description of my journey.
This might help you if you’re a beginner struggling to make your way into open source.
My realisations/experiences in a chronological order :
Realisation #1 : If you’ve never contributed to a project before, its going to be extremely difficult to contribute to someone else’s code
I spent weeks trying to find a project that was interesting and easy to contribute to. Sure, I was able to find some issues and fix typos in documentation, but what I really wanted to do was contribute code.
Only after many weeks did the thought of building a project myself came to my mind.
Realisation #2 : Building a project on your own is a good way of jump starting some kind of open source work
After weeks of toiling hard to find a project, I started building my own project with hopes of learning along the way.
I started building a music downloader and my first few commits were ugly pieces of code that would never get merged into any major project’s code base.
Realisation #3 : If you’re humble and ready to learn, random people on the internet will go miles to help you
After I had roughly built a working version of my music downloader I posted it on various python/programming related subreddits.
I was surprised to see that random people on the internet reviewed my code, told me what was wrong and then provided me with resources to fix things.
Few people started sending pull requests and issues which helped me learn how to manage a project.
The end result turned out to be a music downloader that downloaded songs with metadata.
Realisation #4 : (Some problem -> write code to solve it) = Success + Satisfaction
I soon got bored of my initial project because all it did was download songs and the problem that I now faced was adding metadata to my existing songs.
So I switched to building something similar that made use of some of my previous code.
I started building a tool that would add metadata, album name and other details to existing music files.
Realisation #5 : Knowledge grows exponentially
As I started writing more code I realised that I was able to understand and apply concepts faster than before.
Having become accustomed to looking for answers on Google and Stack Overflow, I was no longer afraid of learning new modules and libraries.
During this time I had also started building a few other projects. I was actively managing 3–4 projects.
Realisation #6 : Results show if you keep at it
Remember that second project that I built to add metadata to existing files? I posted it on reddit to receive feedback and turns out people actually liked it.
The next few weeks went towards fixing issues, managing pull requests and adding features. These weeks turned out to be the most valuable.
The project peeked at 450+ stars on GitHub and even trended on the main page!
I was in no way an expert programmer at this stage, but I was definitely not a beginner anymore.
This success gave me a major boost and I started spending even more time on writing better code.
Realisation #7 : Contributing to other’s code doesn’t feel impossible now
Over the last few months I had built numerous projects and I was surrounded by a lot of code. I started looking for projects that interested me and started fixing issues and adding features.
Turns out the thought process behind contributing to some project was :
- Hmm, this project seems interesting
- *Opens issues*
- Reads the code and tries understanding what it does.
- Fiddles with code and tries solving a issue.
These points would make no sense to me 6 months ago because I was looking for a recipe that could give me the power to contribute to open source.
But that’s not how it works.
Just keep building stuff and show it to people.
It took me more than 6 months to finally settle in and be comfortable with open source.
Even though all this post did was describe my journey, I feel it conveys that it takes time to get a grip on open source and the only way to settle in is by writing a lot of code and building stuff.
I’d like to end with a quote that perfectly describes programming in general.
“The more I learn, the more I realise how much I don’t know.”
- Albert Einstein
If you felt this post helped you, give it a ❤. Follow me on twitter for more.