Recently I delivered a session at Matosinhos.tech about 'contributing to open source' - you can watch the recording below 👇
I had a technical audience - mainly startups and university students - and I was asked to share my personal experience and perspective on why I believe that contributing to open source is a good thing.
While preparing for the session I tried to look back into my own journey and what I experienced before doing my first contribution. I will try to provide as much detail as possible about all the uncertainty, the fear and how I got over it. I hope it can motivate you to find your own path into open source.
What does it mean to contribute to open source?
There is this general perception that you can only contribute to open source if you are an experienced developer, with amazing coding skills but that is not exactly true. You can contribute to open source in many different ways. Code is definitely one of them, but you can also contribute to documentation - and there is a lot of need in this category -, or contribute to the community by helping maintain and grow the project.
I know I started contributing to documentation back in the days, so why can't you?
🐌 Slow start
Using my GitHub contribution graph as reference, looks like I joined GitHub back in 2012 - I had no clue I was part of the GitHub family 10 years ago - but my contributions only started in 2017.
This means that I am in fact a very recent contributor to open source. Still, my journey and dedication to creating assets that others can leverage on their own has brought me here (218 contributions in 2022 already)👇
💭 ...but why did it take so long?
Looking back at the reasons that prevented me from contributing to open source earlier, I can only find one...myself!
I remember not feeling confident enough, being afraid of having other people judging the quality of my code and telling me I wasn't good enough. I guess I only started contributing when I felt I got enough experience on certain topics that I could then teach others.
This is totally fine, and in a way I must confess I still feel like this every time I get involved in something new, but this is also what motivates me to keep learning.
I don't like to feel comfortable and get bored easily, so I'm always looking for opportunities to learn new stuff.
-- Tiago, the same guy writing this blog post
But seriously, let's look into some of the things that I felt (and still feel), and my strategies to overcoming them.
1. Impostor Syndrome
Feeling an impostor constantly is something that is broadly discussed in the tech industry for a long time. It is more common if you work on topics and technologies that are in very early stages, or if you are moving to a new role for instance.
If you would like to know more I recommend you to read this article from FutureWorks on the Impostor Syndrome and how to overcome it.
To be honest, I still feel impostor syndrome in most customer meetings, before opening a pull request, or every time I am speaking at a conference or livestreaming on Twitch. The difference is that now, I can live with it.
There will always be people that know a lot more than you about certain topics, and that's ok. It's impossible to know everything about every technology out there. And each of us has experienced different things even while using the same tech stack.
My checklist to reduce impostor syndrome:
- Research and prepare properly
- Write an FAQ with potential questions that may come up and write down the answers - try to add this information to PRs as well
- Mentally prepare for being proven wrong
- Be open-minded and open to learn
This will not prevent me from feeling an impostor, but at least I own the process and the feeling, which means I can learn and improve for next time.
2. Worrying about what others think
This one is very important for me. I was raised to be the nice kid, to play nice, to not stand out of the crowd, don't be loud, lay low, do like other do - I guess most of us were, right? Or maybe not.
Behaving like this for so long has led me to always doubt myself and wonder about what will be the perception of other people about my actions and decisions. And despite the fact I am aware of this personal feature, I still follow this pattern from time to time.
So my recommendation here is to stop doing this - trust me, it requires a lot of practice if you are like me. You will have people supporting you every step of the way, but you will also have people that will be more judgemental - for valid reasons or not.
My advice is that you use all of this to learn. The preparation from the first step will be very important. It will help you gain confidence and earn trust from your audience, and/or people contributing to the same project if that's the case.
3. Bad actors
We are all aware of bad actors on social media, and unfortunately in our real lives too. If you are exposing yourself more often - doing livestreams, hosting your own Youtube channel, ... - you are a better target than someone who doesn't do it.
I guess that is common sense, but recently I found out that bad actors are also a thing on open source contributions, and there are behaviours I have witnessed that led me to stop contributing to some projects (the GitHub open source survey mentions some of these).
- Dismissive and rude responses
- Unclear rejection
My recommendation here is the same I would give anyone that is affected by comments on social media:
Your time is precious, invest it on something that is worthwhile
If you feel like the project is worth investing your time on, reply back, ask questions and ask for more details. Remember you are not alone, there is a large community watching the same threads and they can support you.
But don't forget...bad actors are everywhere. If you are seeing a behaviour that violates community guidelines and terms use GitHub reporting feature to report a contributor or maintainer of a project.
Or just ignore them...most times that is the solution - requires a bit more practice I confess 😁
🙋♂️ "What's in it for me?"
Well...to be honest, a LOT!
Where else would...
...you be able to look into production code used by thousands or millions of other developers daily, and learn from it?
...you be able to contribute to the same code base as tens or hundreds of other developers from various countries all over the world?
...you be able to contribute to the code base of companies such as Amazon, Microsoft, Google, Facebook, Vercel, and many others, without being their employee?
...you be able to contribute to documentation or code samples that are automatically available to millions of developers?
...you build a public reputation/brand as a developer that will help land your dream job?
If all of these are not enough think that there are +250M active open source projects and +73M active developer accounts on GitHub.
💡 A few ideas to get you started
So you might be wondering that this is a lot of information and you still don't know where to start. Let me help with that!
- Read the open source guide
- Create a GitHub account
- Find a project that is interesting to you
- Submit your first pull request - potentially to project's documentation%[Link]
- Share it with your network and build a reputation
🚀 Still looking for additional motivation?
If learning from more experienced developers, or contributing to projects that will be used by thousands or millions of developers worldwide is not motivation enough, I can tell you that people are being recognized for their contributions all the time.
Some of them have even contributed to software that is being used by NASA's Helicopter in Mars. So...what are you waiting for?