I've been a senior developer for quite some time now, yet I've just recently understood some advice I've been given at the very beginning of my career:
Participate in Open Source! It will be great for your career!
Well, as such, this is extremely bad advice.
How to contribute to open-source the WRONG way
I get it. You're a student or a junior developer. It's hard out there and you want to boost your career. You don't know what to do. Or maybe you're just enthusiastic about open-source and want to contribute.
Well, you probably shouldn't.
Let's build a school together!
In French, we have an idiom for contributing: "To bring your stone (brick) to the building".
Imagine if people in your city decided to gather together and build a school for the community. What an inspiring collaborative effort!
So you're arriving on the building site with your brick and enthusiasm in your eyes. And very little knowledge of how building actually works, and even less knowledge on how this particular building is being built.
Well, let's be honest, despite your great intentions you're probably going to be more of a nuisance than anything else here.
Now imagine if, not only you do this, but two thousands other people are coming with you. Not only does this lower the odds of the school ever being built, the end result would probably be a school where no child should ever set foot.
Hacktoberfest and its consequences have been a disaster for the human race
I did Hacktoberfest three times, so I own three of their t-shirts (I'm wearing one right now. Very cozy.)
As you can see on my Github profile (go like and subscribeยฉ) I am a huge open-source contributor. Well, not really. I'm a freelancer and most of my clients open-source their products. That's how I make my living. So that doesn't count, right? (More on that later).
Hacktoberfest is a great, deeply flawed initiative. Trying to make people contribute to open-source is very commendable. It's also something you should absolutely not do. You don't tell people to take their bricks and find a random school to help. You're just going to make everything worse for everyone.
Experienced builders will lose time and patience because of the spam, and young builders will leave bitter, believing open-source is not welcoming and/or not for them.
Hacktoberfest is trying to do good, but it is promoting the very wrong idea that juniors should just go and find a place where to put a brick.
So who should build the school?
The parents whose kids will be at the school, that's who. And the teachers as well. They're the ones who are going to use that school, after all.
Heck, with proper supervision the kids themselves can help too. You can do open source as a beginner, you don't need to be a senior for that.
But you need to be involved in the project and act accordingly, you don't just go and throw bricks around.
Open-source is not about coding
It's hard to get hired as a junior developer. You want to both get more skilled, and show that you're more skilled. Open-source contributions are seen as a potential career-boost, and that's because they are (more on that later). But just because they are, doesn't mean that this is a good reason to contribute.
Why do you build a school? Because you want a school to be built. Because you need a school. Because you believe free, communal schools are important, in a world where education gets more and more expensive.
You build it to enjoy the final product, you don't build it for the sake of building it, or (mostly) to train your building skills. You can enjoy building, that's fine, but that's not the point. Your love for building won't make for a good product in the end.
How to contribute to open-source the RIGHT way
The following point is by far the most important part of this article.
If you don't use it, you lose it
The best thing you can do to contribute to open-source is to actually use open-source products.
By being an open-source user, you open yourself to being an open-source contributor. An annoying bug? Report it, so it can get fixed, so both you and other users can enjoy a better product.
There's a feature you wish the product had? Ask for it!
No one is fixing that bug, no one is adding your feature? Well, guess it's time to get your own hands dirty then.
This is how you do open-source. You follow the purpose of open-source, not just your love for building.
And of course, always ask the other contributors before doing anything (usually via opening an issue). Remember that this is a team effort.
Contributing to open-source means taking responsibility
I'm an Arch Linux user btw, and I only recently started maintaining a package on the AUR (a community-managed collection of packages).
I've been needing this package, but no one was maintaining it. Infuriating! I can't use an unmaintained package! If only there was a solution!
Oh, right, almost forgot. I can do that myself.
You know it's good, useful open-source when it feels like a chore. You do the job because, well, you kinda have to. The fact that it's open source just means other people will enjoy your work for free, and in turn you will enjoy their work for free.
Sidenote: Did you know squirrels can't remember where they store acorns for the winter? They solve this via communal efforts. If all squirrels fill the forest with acorn reserves, then they will easily stumble upon acorns when the winter comes.
To hell with contributing, just make your own thing.
When aspiring junior devs ask me what they should build, I always reply: "Well, what do you need?".
Think hard. You probably need a tool that either:
- do not exist
- or it exists as a paid service
- or it is free but is spying on your data
- or the most common situation, it already exists but got enshittified.
Well, just go and make it, and open your code while you're at it. Congratulation, you're doing open source, and doing it right!
Or just get paid for it
I've been building stuff for the French government for many years now. One of the reasons why I keep working with this client is that all the code we produce is open-sourced by default.
One of the first projects I built was a public API for querying public data. This open-source project has been used by thousands of private companies, one of them even ended up hiring me.
So yeah, open source can indeed help your career. For me, working in open source was both an ideological and career-savvy move. I helped myself while also helping the common good. Just because you get paid for it doesn't mean you aren't doing open source and doing it right.
So I'm keeping those Hacktoberfest t-shirts.
Top comments (7)
Totally agree!
I was going to write a post on this exact same topic. I agree that all the advice to "contribute to open source" - is indeed deeply flawed.
I contribute to open source, sure... but all the projects I've contributed to are things I've used in some way - be that a document that I've read (and found some mistakes in), or a library I used (that I found a bug in), or a browser add-on (that was lacking a Firefox version, or had missing functionality), etc.
I really never saw the point of just 'showing up' to a project and deciding to contribute. I'm not really sure what that achieves - and as you rightly say, you could even end up being more of a hindrance than a help.
If you contribute to something you have used or liked - you probably already have an idea of why you're contributing, and an idea in advance of what you will contribute. Working this way gives you a much greater sense of purpose and satisfaction... rather than just 'ticking a box' of something to put on your resume. You'll also have a story about how you came to contribute to the projects that you have.
...and making your own thing is extremely enjoyable! Do that too!
Some people say you shouldn't re-invent the wheel. Why not? You'll end up with a far greater understanding of wheels, sharpen your wheel-making skills, and might end up making a better wheel than anyone before you!
Programming is (or should be) way more than just plugging off-the-shelf pre-made components together. If you only do that, you're more like a plumber than an engineer.
Be an explorer, a learner, a mad scientist. Enjoy yourself, play!
Your article provided valuable insights and it was great to read.
I have watched so many videos, and while developers often encourage contributing to open sources, no one ever suggested focusing on something that adds some value to us.
Thank you for sharing this. I appreciate your perspective, and it will certainly influence my approach toward contributing from now on!
Yes! Tackling my first issue was difficult. I hindsight I definitely could've improved my approach.
I was a user of the product, MuseScore, which is a good start. But I didn't have the domain knowledge to tackle the problem. It was an engraving issue, which required a lot of communication with the engraving expert and developers.
Although I did successfully tackle the problem. I realised that being a user and having some understanding of the problem should be a prerequisite to open source contribution.
So nowadays I try to tackle problems where I've submitted and issue to or encountered.
It's rewarding to fix a pain you found, knowing this will help others too.
It may help a lot of people too
Really enjoyed reading through this. Thanks!
As always, comments are welcome.