Why does it seem, to me at least, that the vast body of developers will actively use software that has been contributed through open source efforts but will do nothing to add to that wealth and instead continue to rely on the efforts of others? How can we try to change that behaviour and get more developers contributing in some way?
I wrote about a similar topic some years ago and I referred to it as a type of welfare. Perhaps it was a bit harsh because it tends to infer that these developers are taking advantage of those contributing, whereas instead they are just enjoying the fruits of what those people have contributed and, more importantly, freely given for such purposes. In a way it is a bit like art in the public gallery/domain, in that once the code/software has been written and released freely, anyone can use it without diminishing the pleasure of it for someone else.
So why do some developers not contribute? I've tried to come up with some reasons I think may be the case, based on conversations I have had, and added my responses.
It's all about the money!
You believe that these projects make millions as suggested by this cartoon and you don't want to give your valuable time for free so someone else can make money? https://commons.wikimedia.org/wiki/File:ME_439_OpenSource.png
It is something to consider I suppose and there are some projects where a number of service companies have spun up around supporting the project/product in the commercial space but these projects are rare when considered against the number of open source projects out there, well known perhaps, but still rare. Though we should consider that when we use an open source projects in our own code we are saving millions for ourselves and our employers and clients and that is nearly as good as making millions. According to the open hub network the popular Json.NET package has taken 33 person years of effort with an estimated cost of $1.8m. I personally believe the cost is much higher.
Where do I start?
You do not know where to start or even if your contribution would be accepted? I suppose it can be a little scary but also a little exciting as well when you submit that first pull request, most projects have guidelines that help any new contributers to a project and it is unlikely that a submission is rejected outright. It maybe be pushed back a bit due to things like testing or coding style but that is all part of the learning process and the things that we do every day when we join new teams. There are a few initiatives out there that aim to get beginners involved in contributing to open source projects e.g. first timers only and though there are not many issues using the 'first-timers-only' tag at the moment, it is a start.
I first started to contribute to projects that solve, or nearly solve, my own issues (I would say that is still where the majority of my own efforts go) and just dived in and gave it a go; if I didn't fix it, well, who was to know except my own ego.
Will my bosses let me?
You are unsure about your legal obligations when to comes to contributions to open source projects? This is a tough one and right now I am going to use that irritating phrase that people use when they are about to talk something legal, I am not a lawyer (IANAL) but...
If you have an employment contract read it over and look for relevant clauses - a lot of these contracts have clauses from a bygone era and just haven't changed to keep up with the time, talk it over with your bosses explain them the benefits of contributing e.g.
- Fixing an issue that affects your day to day work and would in turn make you more effective or the software you are developing for them better.
- Personal and professional development by working on software and concepts that are not normally part of your day to day work, improving those skills will have a beneficial impact on your work.
- You'll work on it in your own time, though you may need to get permission to use company resources e.g. laptop/software. You should try to get an agreement about when you use company time vs personal time i.e. if the issue you are addressing is directly related to work then you can use company time, treat it as part of the project and encourage others to contribute.
As long as you are not contributing to a open source product that rivals your company's business, most employers I'd have thought, will agree to some level of contribution - some more pro-arguments for contributing can found in this blog article.
What about my rights?
Some projects have a Community Licence Agreement for contributions and these agreements are more about protecting the project and making sure that your contribution can be used without restriction for both the project and for yourself. Open source projects often don't have the dollars to fight any legal battles and so this way these projects protect themselves from any predatory legal action. It is highly unlikely you will be divulging any trade secrets through any contribution you make and it would/should be pretty obvious to yourself if you are treading the thin line. Just like when you use an open source project, or pull a package from nuget, you should look at the licence that comes with it to make sure that you usage complies with your business activities, again IANAL so you may want to have it checked out if you are unsure.
I just don't have the time!
And this is probably the main crux of it all, it is tough finding time to learn outside of work especially with family obligations and keeping up with those social connections that we do, contrary to popular opinion regarding software engineers, actually have.
So this is my big ask, if you use open source projects in your work or personal projects all I want from you 4 hours a month.
Yes, less than 1 hour a week on average is all I am asking of you to try and contribute, hopefully you are doing more than this anyway for personal development and improving your craft. Perhaps integrate it as part of that development; want to learn a new programming language and hate just working through code samples? Find a project and just pitch in, it'll probably more fun and rewarding than just following trite "hello world" examples. Also, though not an argument you may want to use with your employers, it is useful to show your contributions to prospective future employers as it demonstrates a willingness to learn and grow that go far beyond the stock "I have a Pluralsight subscription" (as good as it is by the way but along as long as you actually use it) responses during interviews. Not all of us have website portfolios to demonstrate our capability and it goes far beyond the code challenges that we are often presented with as we move from role to role, so consider it an investment in the future you.
As always your thoughts are appreciated.