Advertisement
Articles

Easy Ways to Contribute to Open-source Projects

by

When the jQuery project first started, I remember how passionate the team was about helping developers use the jQuery JavaScript library. It was a labor of love with all of us putting in countless numbers of hours, day and night, to help grow the project and the developer community. And we did those for free because we just loved doing it. But as the project grew, so did the expectations from the community in terms of features and support. And this is where most open-source efforts fail to scale.

I think most developers that put out OSS software do it for altruistic reasons wanting to give back to the community something that may solve a critical problem.

As community needs grow, you need to find ways to have more time to focus on features. You can do this by growing your team but that's not always a solution. On the jQuery project, we increased team size and delegated work but even so, being a volunteer-based effort meant the project was reliant on other people's availability. And with all of us having full-time jobs and many with family responsibilities, I can say that we managed to accomplish a lot with very little availability.

The other option that manifested was the ability to fund time to focus on working on specific tasks. This typically came in the form of sponsorships from name-brand companies that had made substantial internal investments into jQuery and wanted the project to succeed. This actually worked well because it allowed team members to be able to specifically focus on meeting the community needs and focus their abilities on the tough areas that required a lot of dedicated attention.

Now please don't think this just came about overnight. It took a long time before anyone wanted to contribute to the project and proving the value of the effort was the critical component to that. jQuery is an important part of many sites and products but that following developed over years of hard work and consistency and is not the norm for most OSS projects. And most OSS projects will never enjoy the level of success and notoriety jQuery has simply because of timing or even being "too niche".

And there's absolutely nothing wrong with that. I think most developers that put out OSS software do it for altruistic reasons wanting to give back to the community something that may solve a critical problem. So how do these projects get a leg up like the jQuery project did?

Let's explore this.


OSS Consumers vs. Contributors

I've not met someone (both offline and online) who hasn't used some open-source software. That's a pretty big deal because it shows that OSS is everywhere. Developers rely on it to start-up their next great idea. Companies leverage it to lower costs. And governments use it to ensure their meeting the needs of their communities. To say it's pervasive would be an understatement.

The one thing I've felt for a long time, though, is that there's a definite imbalance between consumers and contributors. The ease with which someone can grab a piece of OSS software and run with it due to flexible licensing and little to no cost makes it incredibly easy to forget that someone out there is actually writing and supporting that software. If you simply consume without considering the time, effort and costs involved in that piece of software, there's a strong likelihood that down the road you'll be impacted when the project fails. The road to OSS is littered with failed and abandoned projects created by developers with all the right intentions but just didn't have the resources to keep it going.


How to Give Back

It's not to say that you need to go all-in like Facebook did with PHP but there are many ways of helping a project from which you've taken something that's valuable to you and your business. Some low hanging fruit are:

  • Contribute code - Most projects use GitHub which makes creating pull requests insanely easy
  • Contribute time - Projects are always looking for people to help with documentation, support and evangelism
  • Write a blog post - Easy enough to write something that makes using a tool easier for others
  • Ask your employer for time - If you're using a piece of OSS software at work, ask your employer for company time to contribute back
  • Ask your employer to donate back code - Along the same lines, if you're extending functionality consider contributing it back under the same license of the project

Many projects have pages similar to this that explain specifically how to contribute.

If for whatever reason you can't offer any of these, you should consider helping to fund some of these efforts. "How?" you ask.


Donating Online

There have been platforms springing up that are designed to solve this problem and we're going to take a look at two of the most populars ones.

Bountysource - The OSS Projects Funding Platform

bountysource-logo

Recently, I came across a fundraiser for RVM (Ruby Version Manager). If you've ever coded in Ruby on Rails, then I'm pretty sure you know how important RVM is. Unfortunately, it's main sponsor was ending its support and the project needed to find another sponsor so they took to a novel site called Bountysource which aims to provide a funding platform for open-source software.

bounty-rvm

I found this totally awesome because there really wasn't a resource like this for the jQuery project (or MooTools, Prototype, et al) that could allow a project to spin up a fundraising page with all the tools to collect donations. And of course, it allows individuals to browser projects they'd like to help fund and donate via PayPal or Google Wallet.

What really impressed me is that fact that a project can list out the things they want to accomplish and through crowdsourcing, the community can help to fund the completion of the specific features through developer payouts (called a "bounty"). So say that you really wanted $.Deferred functionality in Zepto.js. You could contribute to the feature request to entice the community to implement and once it's done, the bounty would be paid out to the person(s) who did it.

bounty-zepto

The service addresses the need of the project, even to the point of breaking down the bounties to specific tasks and values but also allows the community to decide what's important and fund the development of that feature. It's a bit of a KickStarter for open-source. Very cool.

Gittip - Crowdfunding People Who Inspire You

gittip-logo

Gittip is a service I found out about because of John Resig. He's been a real advocate of the service and that says a lot.

gittip-home

To quote John:

I saw a great opportunity for the development team at Khan Academy to give back to the Open Source community in ways that were not just code-related.

It's very different from Bountysource in that it's meant to offer small weekly cash gifts to individuals that you feel are providing you a value. You can give any amount you want up to $100 per week. This is actually a great resource for those single-man projects where the lone coder is adding features, answering support emails and working the community. It might seem inconsequential but even donating five dollars per week to that developer may be what he/she needs to ensure they know their work is appreciated.

There are over 650 communities listed on Gittip and choosing one will display all of the top givers and receivers:

gittip-js

This also allows you to drill-down into individual profile pages to allow you to contribute to some who inspires you:

gittip-resig

And in keeping inline with its OSS ethos, Gittip even allows you to checkout its source code via its Github repo.


More "Do" than "How"

The point of this article is to drive home the importance of contributing back to open-source. If you're a consumer, then you should seriously evaluate how valuable that library or tool is to you and figure out how to support it. If the project isn't on Bountysource or Gittip, why not reach out to the project owner and ask them to join so you can donate.

And just because you may not be interested in contributing code doesn't mean you can't leverage other skills to help a project grow. In my opinion, the single biggest need of an open-source project are people who know how to work with a community. Soft skills are so important and from my experiences, sorely lacking.

The main thing is that there really is no excuse not to contribute back when you find something valuable. Just because it's "free" doesn't mean that a lot of investment wasn't placed into it and if you don't support it, it may just go away some day.

Related Posts
  • Game Development
    Business
    How to Fund Your Indie GameHow to fund your indie game
    Developing a game can require a huge amount of effort—and as if that weren't enough, most indie game studios aren't exactly flush with financial resources. Thus, most development teams are resigned to seek outside funding sources. Thankfully, raising startup funds isn't quite the mission impossible it was back in the dial-up age. In this article, I'll explain how to get the funds you need.Read More…
  • Code
    Mobile Development
    In the Spotlight: Brian LeRouxPreview image@2x
    The explosive growth of the mobile space has accelerated the search for a robust and viable cross-platform solution. In 2008, shortly after the introduction of the iPhone SDK and after fiddling with Cocoa and Objective-C, Brian LeRoux and his colleagues at Nitobi decided that their time was better spent building a cross-platform solution than building native mobile applications.Read More…
  • Code
    Articles
    Interview With Eric Bowman of Gilt.comEric bowman retina preview
    While most of us have built really cool websites, realistically speaking, few developers have had to worry about the complexities of managing and scaling incredibly large websites. One thing is putting up a site for a small company to ensure they have a great presence and another is trying to figure out how to scale your site so it won't buckle under the load of thousands of users. I was fortunate enough to chat with the folks a flash-sale site Gilt.com which has received quite a bit of press over the years and seen tremendous growth. It's opportunities like these that allow us to probe the team that manages these sites and learn how they handle their day-to-day business and technology. In this interview, Eric Bowman, VP Architecture at Gilt Groupe takes us through some of the background behind the site and the technology decisions behind keeping the service running smoothly.Read More…
  • Code
    Articles
    Interview With Brian Leroux of Adobe's PhoneGap TeamBrian interview retina preview
    Mobile web development is tough especially when you're trying to offer native-like experiences to users. Several years ago, a small company called Nitobi took on the effort of simplifying building native mobile apps using traditional web development skills. Ambitious and sometimes controversial, the effort known as PhoneGap grew out of this need and one converts left and right. One of the main masterminds behind the framework is Brian Leroux who apart from being well-respected for his development skills and incredibly likeable personality is also one of the savviest mobile developers around. Considering the number of mobile devices PhoneGap targets, you have to be pretty well-versed in a variety of devices and OSs. Nitobi has since been acquired by Adobe and the PhoneGap codebase donated to the Apache Software Foundation to continue its development as the Apache Cordova project. Brian moved over to Adobe and continues to steward the codebase. In this interview, we'll chat with Brian about how PhoneGap came about and what the future of mobile web holds.Read More…
  • Code
    Tools & Tips
    How to Collaborate On GitHubGithub collab retina preview
    If you don't already know, GitHub is an incredibly effective way to collaborate on development projects. Providing a place for anyone with an internet connection to have an avenue where they can share code with the world for free (not to mention the robust supporting tools for source inspection and easy viewing of commit histories). GitHub has been adopted by many large open-source projects as their primary home for collaboration and contribution. But how do you join in and contribute to a project? Sure, you know how to use Git to track changes to files and push those files to a server. But there are major benefits to getting involved in larger open-source projects, and GitHub is arguably the best place to start. Today, we will discuss a few rules of the road for collaborating on open source projects, and give you the knowledge and intuition you will need to get involved.Read More…
  • Code
    Interviews
    Interview With David WalshDavid walsh retina preview
    Have you ever meet a brash punk kid that annoys you to no end but he's so damn talented that you can't help but want to work with him? That's how I felt when I first met David Walsh several years ago. Since then, I've seen him mature into a respected and often quoted software developer and most recently, a new dad. He hasn't lost his snark and feistiness and he continues to hone his skills daily, often sharing his best tips on his awesome namesake blog.Read More…