Why Contribute to Open Source Software?
In other words, what is the value in contributing to Open Source?
- It will make you better in your field
- better software developer
- better designer
- better QA person
- better technical writer
- It will make the world a better place.
- It is fun
For juniors / people new to a field
- Gain experience in real-world projects.
- Gain experience working with other people in the industry.
- Get (free) feedback from others.
- Become part of a community.
- Create a “portfolio” of contributions you can show to potential employer.
- Create contacts in the industry.
- Many companies will look at your contribution history and you will have better chances to get employed.
Mid-level developers / designers / etc. (a few years experience)
- Gain experience as maintainer, project manager.
- Help others get started.
- Design projects.
- Improve your collaboration skills.
- Get deeper understanding of projects.
- Improve communication skills (in writing in English).
- Experience asynchronous work.
As a senior
- Become an architect.
- Mentor others.
- Improve communication skills.
- Improve leadership skills.
Quotes from people
I think for many engineers it is a great way to get experience outside of the current responsibilities, and to get feedback and guidance from more experienced engineers while also contributing to better the ecosystem overall. Free code reviews from people who have decades more experience than you have is a great way to become a better engineer.
It makes you a better programmer, you contribute to the community, and ramp up your communication skills
My current life is in large part due to open source, so it’s only natural that I contribute back.
Bruno André Rodrigues Coelho
While contributing to some FOSS projects I liked that I was able to work at my own pace, without any hard deadlines. This is something that I never had at my day job, at my day job my main goal is to get the task done, the fact that I learn from it is a side effect, whereas while contributing to FOSS my main goal is to gain knowledge and the completion of the task is a side effect. It is much more relaxed. I also felt that when you contribute to FOSS, you get a wider perspective about the project at hand. For example, if I am using a library at work, then I am more likely to be focused on how to use this library in the domain I am working in, but when I contribute to this library (or even just go through the list of existing issues) I get to know how people are using this library in other domains, there is always some knowledge exchange, sometimes/often I apply that knowledge at my day job.
- If I need something myself, and there’s likely to be value in it to someone else, I’m happy to open-source it. I’ve benefited greatly from other people’s open source work in my career and personal life, so I’m happy to give back whatever I can - it’s only fair.
- It’s not unusual to receive bug fixes and new feature implementations etc on projects I’ve open sourced - that’s stuff I’d have had to do myself if I hadn’t made it available as open source.
- Often when I need a thing, I’ll find an open sourced thing that does at least mostly what I need; if I need to submit a PR to add whatever is missing, it’s likely quicker than me building it from scratch - even if it’s abandoned and I end up adopting it, as seems to have happened several times for me on CPAN
- It’s even better than a CV - a portfolio of CPAN distributions / other open source contributions is better than a CV claiming you know what you’re doing IME, both from a hiring and being hired prospective. If I’m interviewing someone, I won’t discount them for not having any demonstrable open source contributions, but if they have, it’s a massive immediate thing in their favour.
- Being exposed to other people’s code is a good way to learn new tricks you might not have seen otherwise, and get used to different styles - if you’re ever going to have to be a maintenance programmer (and let’s face it, aren’t we all, to some degree at least!) then demonstrable ability to work on different codebases with different styles and coding standards is going to be a requirement
- Knowing that your code is going to be released to the public and possibly read by people whose opinion of you is valuable is a good motivator to write clean, readable and maintainable code, rather than being tempted to chuck something together with a “meh, it’ll do, nobody’s ever going to see this” attitude
- I find it satisfying when you realise that your code is proving useful to other people too.
I like having good. free software alternatives available, so I gotta do my part.
Exposing yourself to public ridicule concentrates the mind wonderfully.
All companies should force their devs release non-core parts of their code to open source 😉 … I have seen at least 3 proprietary web frameworks written in Perl which with some polishing would have made at least a medium splash had they been released in the mid-1990s when they were written … and with the danger of public ridicule they would have been improved.
I release my own stuff as open source for two main reasons. First, it means other people can do some of the work for me. Second, it’s my portfolio. I contribute to other peoples projects when they almost do what I want. Patching in my change is quicker and easier than writing my own version from scratch.
I mess around with code for fun. The fact that someone else might find it useful is a bonus.
Open source gave me a career and I feel like I should give back if I can. Also by helping to grow the ecosystem of software I indirectly help myself. Win Win.
It’s great because it’s a very large community, all working together, to move things forward. It’s also great when someone thanks you for your contributions.