Stack Overflow has an awesome set of badges that recognizes a persons contribution to the community and allows an individual's capabilities to grow the more he contributes.

What techniques can I use for open-source or coding projects? For example, a person's contribution to the code base earns them badges along with ever-increasing set of capabilities on the project?

Moderator note

Providing a link to a recommendation is not enough: please provide detailed answers about how to incorporate gamification elements into an open-source project. Any answer that doesn't do this will be deleted.

See Good Subjective, Bad Subjective for more information about the types of questions, and the types of answers, we're looking for on Programmers.

  • 3
    I don't think I've ever heard of that, but it's an interesting idea.
    – Adam Lear
    May 19, 2011 at 13:17
  • 1
    @FrustratedWithFormsDesigner The question references SO badges to provide context, but it's not about SO. It doesn't belong on meta.
    – Adam Lear
    May 19, 2011 at 13:23
  • @Frustrated - why? Apart from using SO as an example it's got nothing to do with Stack Exchange.
    – ChrisF
    May 19, 2011 at 13:23
  • 1
    It shouldn't be on meta because it is about HOW we create code and promote code in a project. The question here is ... can we create code in a way that empowers the community in a similar way that stack overflow does. May 19, 2011 at 13:32

5 Answers 5


Actually badges on SE are more of achievements, they don't really say much of your contribution but more to how much of the site have you used (in the bronze badges) or how committed are you (for the silver and gold badges) and there are the few that are about getting a really good question or answer.

What you want is more similar to the reputation system on the site, there was a similar question in the past in which one of the answers recommended the book Building Online Reputation Systems, to be honest I haven't read the book but the answer was upvoted enough so I believe it's good.


I've always considered making it into the about dialog as a sort of badge. Likewise getting committer status, having your first bug assigned to you and then completed in the bug tracker, memberships in groups, responsibility over a subsystem, etc. These sorts of things are easily discoverable. Launchpad even has a "karma" listed for each contributor.


Sounds like a fun project :)

I might start with a small set of badges (or even one) that can be given out through some automated method. Catching events such as a user's first commit would be a fairly trivial.

Let's say you have n users (if you don't know the number of contributors, say if your source is hosted externally, you could run through all commits for a list of distinct users to build your own proxy list). Using your source control's hooks (i.e. githooks), you could catch when a user is new - if the committer isn't already in your proxy list of users, an entry is made in the proxy list and they are automatically given their first award.

Using hooks, you can automate any number of things (Are all of the committer's functions commented? Are all comments in an expected format, i.e. Javadoc? Is this user n's 1000th commit?, etc etc etc) and award the committer with whatever badge you want to.

Of course, these are all just thoughts off the top of my head and so I'm kinda talking outta my rear, but I think this sounds feasible :)


Another way of including badges is to have a voting option into the bug database and badges based on the class of bugs fixed. This way, people can vote on something they really want and whoever fixes them gets the badges! You can similarly track the mailing list /forums too.

I love the githooks answer above too.


UserInfuser is an open source gamification platform that is released under GPLv3. It runs on Google App Engine and has bindings for python, php, java, and ruby. With it you can reward badges and points. The API returns widgets to let your users see where they rank and what badges they hold. http://google.code.com/p/userinfuser

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.