The Riak Community
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.
We've introduced 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 few months we cut a "new release" of the Riak Community. A release will be comprised of updates to how we communicate. The more detailed conversation can occur as release notes. 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. This tagging will signify specific objectives, both internal to Basho and external in our Community. Culture is most powerful when chosen intentionally. Let's choose what type of community we wish to be.
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.
What Should Be Part of a Riak Community Release?
For the purposes of this project, a community release can include anything that's not code specific to Riak products, though work related to code (e.g. releasing a new client library definitely counts). 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
Release Cycles and Versioning
Since community as code will be driven by feel over functionality, 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")
- A combination of new major programs and new processes may justify a major release (i.e. "v2.0" could follow "v1.6")
- 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 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.
This project began with Mark Phillips and it was quiet for a few years after that. I would like to keep it in mind as we reflect on the next steps for the Open Source ecosystem that Riak is a part of. Please send your thoughts to me, @mjbrender on Twitter or to email@example.com.
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 share with us.