There are many components to a successful open source software project. Code (and code quality) is only the first of many, and lot of times it's not the most important (for better or for worse). A Community is built around the code to help foster its growth, maturity, and adoption. Like the code, it needs to evolve, and unless it's moving forward and being refined continuously, it ceases to be valuable.
I want to introduce the idea of "The Riak Community" as a releasable product. Why not approach community development like you would code? What if there were scheduled "releases" comprised of new "features" and "bug fixes"?
The idea is simple: each month we cut a "new release" of the Riak Community. A release will be comprised of a list of contributions stored in a new set of release notes. Contributions will be listed as short descriptions of what was accomplished along with a the name of whomever contributed it.
- The latest Release Notes are v0.5, which cover July 1 through July 31. If you would like to contribute something to a past or future release, the overly-complex process is here.
The goal is to periodically tag and release "versions" of The Riak Community. New versions will be packed with accomplishments and contributions from various community members. With each new release, we'll have advanced the Community in myriad ways (even if we didn't have a set "road map").
Each subsequent release will represent the evolution of the Community: new docs will have been written; new talks will have been given; new slide decks will have been created; process flaws will have been unearthed and rectified. All of this moves the community forward and makes it a better place to work and play.
Finally, this will be a way for us to track the progression of the community over time and build the community in a more collaborative, transparent way. There are people all over the world contributing to the growth of Riak in endless ways. This is an attempt at capturing and showcasing that growth.
For the purposes of this project, a community release can include anything that's not code, though work related to code (e.g. releasing a new client library definitely counts). Basically anything that contributes to the advancement of the community as a whole. A partial list of examples:
- A blog post about your team's Riak usage
- A presentation at a local meetup and accompanying slide deck
- Releasing your PHP ORM and open sourcing it
- Documentation you contributed for the Python client
- A screencast Basho made to show new Riak Search features
- The 30 minutes you spent in the Mailing List to help a newcomer
- Adding the Powered By Riak badge to your site
We probably won't get too in-depth with the versioning and release cycles. For now:
- A new release of the Riak Community will happen on the first work day of each month (time and resource-permitting)
- Each new version will be a minor version increase (i.e. "v0.2" will follow "v0.1")
- Open a pull request with details on your (or someone else's) contribution. Your contribution should be added to the appropriate release notes (they are all dated) and should be be a short description of what you're adding with a link to related materials
- Someone with commit rights to the repo will close the PR and you and your contribution will be added to the forthcoming Riak Community Release
We'll see how this goes. It might fail miserably, but I don't think it'll be a total disaster. Also, if you think this idea is ruining the internet, or if there is a way to do this more effectively, please email me - email@example.com.