Open Source.NET
Giving Back to the OSS Community
While we often talk of how we can leverage OSS to deliver a higher-quality product, rarely do we talk about how we can give back to the OSS community.
Open-Source Software (OSS) is one of the greatest assets that can be leveraged in software development. Pick a technology, a tier, or a purpose and you're sure to find many OSS projects that can save you time and effort. Or take a look at the tools you use, and think about how much value has been added to your work.
And while we often talk of how we can leverage OSS to deliver a higher-quality product, delivering value that customers need, rarely do we talk about how we can give back to the OSS community.
OSS developers, for the most part, are driven by a passion for their craft. The question "What if...?" is a powerful driving force, constantly providing valuable one-upmanship. Sometimes OSS can become a yoke, with the project's authors attached; pulling the project forward becomes unpaid work. We all can help share the burden of this yoke, but the contributions we can make don't necessarily have to be financial.
I don't want to be paid for my OSS contributions. Why? Because it isn't work. Unlike a typical work environment, I can create anything I want and share it with the world. Everything I'd like to do at work, but is limited by deadlines, bureaucracy or company standards, is now fair game. Being paid turns my side projects into what I am trying not to do.
That doesn't mean, of course, that helping OSS projects financially wouldn't be greatly appreciated; Web hosting and bandwidth can be expensive. But that's only one way to help.
What other ways are there to help OSS developers? Try some of these simple ones:
- Send the contributors an email thanking them for their work.
- Tell them how their work has affected yours.
- Help out on a mailing list.
- Submit a patch or feature.
- Create unit/integration tests.
- If you meet someone whose work you use and appreciate, buy them a coffee, or lunch.
- Promote their compiled/packaged application, plugin or widget.
- Is there a paid version of the software? Has your usage been worth the cost of the paid versions? If so, consider that avenue.
One of the best, and seemingly paradoxical, ways to show your appreciation for an OSS project is to fork it, try to replace it, or directly compete with it. Competition is one of the best driving forces.
For example, compare and contrast these Inversion of Control containers: Castle Windsor, StructureMap, Ninject, Spring.NET, Autofac, and Funq. You'll see an amazing shared evolution: Features, extensions, conventions, and APIs moving in lockstep, borrowing features and adapting with the advancements in technology. Each project shows very specific behavior and structure based on what came before it. Each framework enriches the ecosystem and gives a new outlook on how we compose applications.
Taking a look at the tools we use every day, we have a lot to be grateful for -- here's a partial list:
- Source Control: Git, Mercurial, Subversion
- JavaScript: Backbone.js, jQuery, Knockout.js
- Web Frameworks: ServiceStack, ASP.NETWebStack, FubuMVC, Nancy
- Cloud: OpenStack, Puppet, Chef
- Misc: Quartz, TopShelf, NLog, NUnit
Making someone's day is very simple and can have profound effects. Hearing someone talk about your work positively can give a tremendous push and make a developer's yoke seem much more bearable. We all need positive reinforcement, and to know that what we do is valued and worthwhile. So go out and tell those whose work is of value to you that you appreciate what they do.
About the Author
Ian Davis is the Master Code Ninja for software architecture and development consulting firm IntelliTechture. A C# MVP, Davis is an expert on the .NET Tramework and co-organizer of the Spokane .NET User Group who frequently speaks at industry events. He spends most of his free time as an open source author and advocate, publishing and working on many open source projects.