I’ve been writing recently, mostly because our ThreeWiseMen.ca website needs an overhaul for content.
Three Wise Men is my software development company. The core product offering is professional software development services. For about 15 years I’ve personally been leveraging open-source software components to accelerate development of personal and professional projects, and I’ve been rattling around in my head a good way to put what I do onto paper in understandable terms (remember my post the other week).
Reconciling the concept of software developed in an open community, utilized by highly proprietary and private commercial firms takes some getting used to.
I think I’ve been on most sides of the fence.
While none of the original software I’ve written under an open-source license has become popular, it was written to alleviate pain felt in the commercial space. I don’t believe it can become popular simply because it doesn’t solve a common enough problem, and while it was original it was not strictly unique.
I’ve contributed in various ways over the years directly and indirectly to popular (and some not-so-popular) open-source projects. But what does it mean to contribute?
- Use it
- Talk about it with your social community (friends, customers, etc)
- Send feedback or questions to the mailing lists
- Respond to feedback or questions on the mailing lists
- Write or correct documentation for it (hopefully they use a wiki, or send content to the committers)
- Fix problems, send patches to the committers (the person or people who manage the official open-source distribution)
- Become a committer
Many people don’t go much beyond the “Use it” stage, which I believe is still a significant and tangible contribution to the project by raising it’s popularity or number of users. “Talk about it” is actually a short step up, if you don’t open conversation you can certainly continue a conversation about it.
Use it Because They Want You To
People contributing to open-source projects have all kinds of motivations. In my experience, however, one thing has held true – developers like to be proud of their work. Whether they’re getting paid to contribute by a sponsor, or whether they contribute in their spare time, they do this because they like to, something drives them to it, and it’s satisfying when they are successful.
You’re not abusing them, you’re not extorting them, they (the individuals and sponsors) choose to do what they do. Usually because they have some private or commercial gain from their work. If you can too, more power to you.
Sometimes I’ve seen contributors take on attitudes, not unlike the attitudes that can sometimes develop within corporate IT. I’m not entirely sure the underlying reason there, but I expect it’s because they’re overwhelmed, aren’t receiving the help they need to do a “proper job”. That’s a pretty broad brush-stroke, but I don’t think I’m too far outside the lines.
Use it Because They Know What They’re Doing
One of my favourite ideas I originally heard from Simon Phipps, who attributes Bill Joy. It’s the idea that you can’t hire all the good people. They’re just not available to you. A great example of this is the Apache Lucene project.
Go to the Lucene project management committee page, google the names you find there. You’ll find some really smart folks that you’d love to have on your team, but they’re all over the world, often employed, and just simply unavailable. But they know their stuff.
Use it Because It Makes You Harder / Better / Faster / Stronger
Pardon the Daft Punk, but this is what you want in a commercial venture. You want an edge, or at least not to be disadvantaged when others have this edge.
You want fewer bugs. You want more features. You want better optimization. You want more flexibility. So do your customers.
Use it WHEN the License Says You Can
The only thing to watch is the various open-source licenses. There’s a reason there are so many – there are as many as there are motivations for building code.
GPL is great when you intend to give back to the community, other licenses like Apache, BSD, even LGPL are good if you want to simply leverage and embed open-source code in your own projects.
So there you have it, don’t be afraid but be aware, and enjoy the tremendous wealth of open-source projects out there.