Welcome folks, to my latest Six Degrees column!
Now, I wanted to mix it up a little bit for this one. In previous columns, I have written pieces about trends and patterns in communities and open source. This one is instead designed to provide some practical recommendations of tools you can use today as you build strong and empowered communities.
In recent years, we have seen tremendous growth in communities around the world. Software development, hardware engineering, social activism, crowdsourcing, makers, education—thousands of communities are springing up to get together, have fun, and make a difference. Creating a new community can be daunting, though, and while I obviously stoop to the lowest level of personal promotion by suggesting my book, The Art of Community, as a resource for building community, I want to discuss one particularly difficult component in getting a community up and running: infrastructure and services.
Collaborative communities often involve lots of moving parts. This can include websites, code hosting, bug tracking, communication channels, and more. Deciding which tools and services to use is an important consideration. If we don't have the tools to be successful, it is difficult to have an impact, yet if our tools are too complicated, fewer will be able to figure out how to get involved.
We need the right cocktail of tools and services served up in a simple and accessible way. This column is going to provide a whistlestop tour of community management tools and services that I recommend for open source projects to consider and explore.
Now, to be clear, this list is not designed to be gospel; every community is different and you may find options better suited to your particular communities. So, think of this list as one of recommendations you might begin considering. Also, in providing these recommendations I am presuming that you want to run as little infrastructure yourself as possible. Some communities may want to take the time to set up their own dedicated services and run and maintain them, but I am presuming here that you have little money to spend on infrastructure and would prefer to have it hosted elsewhere.
One final caveat before we get into the list (and some of you will get your knickers in a twist over this): not all of these recommendations are open source. Some folks for whom I have a great deal of respect believe that open source projects should be hosted on open source services. Some even go so far as to suggest that this is so important as to potentially compromise the ease of use or functionality of those tools in serving the community. While I believe software development tools should always be open source, I don't think services need to be. What is necessary, though, is ensuring that (a) the tools are free and available to use for your community members and (b) that you can get your data out of them if you need to, preferably in a format you could re-create elsewhere. This provides the peace of mind of future development if the service goes away. Now, I want to hear your thoughts, so be sure to either leave a comment or tweet at me to @jonobacon with your thoughts on these tools or better tools to suggest!
1. Website: WordPress
Step one in building community infrastructure is putting together a website. Typically you want to start simple and then expand as your community expands. WordPress provides a perfect solution here. Although WordPress is primarily designed as blogging software, you can create a normal, non-blog website with WordPress easily using WordPress pages, which are basically standard web pages. Here you can easily add content, structure your menus and navigation, support comments, create sidebars and layouts, and more.
What's more, there are hundreds of pre-built themes, both free and premium, that can make your site look great. One of the most fantastic elements of WordPress is the huge library of plugins that can provide anything from role management to e-commerce to ratings, and more. This provides extensibility for custom needs. If you don't want to host WordPress yourself, check out WordPress.com, and if you do want to host it, then I recommend you run the stable version out of Subversion. This makes keeping it up to date simple.
2. Comments: Disqus
Most communities use a blogging software (such as WordPress), which is a critical piece of community infrastructure. A blog provides an place where you can disseminate news and information, keep your users up to date, and tend to questions and uncertainties your community may experience. An important part of a blog is the ability for your users to comment—it makes the blog feels more engaging and also keeps people coming back to the blog for more news and discussion.
While many default comment systems in content management systems (such as WordPress) are fine, the Disqus service takes comments to a much more engaging level. It makes having threaded conversations simple, complete with up/down voting, and full moderation tools. I have seen Disqus have a marked effect on the level of discussion (compared to bog standard commenting systems). Disqus has plugins for various content management systems that you can use, so setting it up is simple. Well recommended.
3. Communication: Discourse
So you have your website and blog set up. You now need to get some communication channels up and running.
All communities need a primary area for the community to congregate, converse, debate, and discuss. Now, I could spent this entire article discussing the merits of mailing lists, forums, IRC, and more. I have found forums to be a good all-around solution, particularly for less technical contributors. While the forum software of choice used to be phpBB, we have a new king in town: Discourse.
I am a tremendous fan of Discourse. It takes a lean, elegant, and informed approach to forums. It features a simple user interface, theming, gamification, email response, support for rich content, personalized accounts, categories for splitting your forum up into pieces, private groups, invitation support, and more. The Discourse team does a wonderful job, and I have deployed Discourse in multiple communities with great results. If you want a hosted service, check out Discourse.org (who build Discourse) or DiscourseHosting.com.
Don't want to use a forum and prefer mailing lists? If you need something simple, use a Google Group. If you want to go a step deeper, set up a Mailman server, the gold standard for mailing lists.
4. Wiki: WikiSpaces and DokuWiki
I don't want to be rude to people who build wikis, but I must say that wikis seem to be some of the most confusing tools in the world for such a seemingly simple task: editing a web page. I have tried many different wikis in search of the magical combination of power and ease of use.
Finding these solutions has not been easy, so I am hoping this will save you some work. By far the simplest wiki I have found is a service called WikiSpaces, which started out life providing wikis for educational establishments. They have built a really nice service that is simple to use, powerful, has template support, analytics, and more. In particular, their Private Label service is excellent and also allows you to create multiple segmented wikis.
If you don't want to go for a service and prefer to run your own, I have found the best open source wiki tool to be DokuWiki. Initially, I was a big fan of MediaWiki from the good folks in the Wikipedia community, but I feel DokuWiki now has the edge.
5. Planning: Trello
At this point, you have most of your infrastructure up and running. Now you want to provide tools for managing ways your community will write some rockin' code.
This is where I recommend Trello. Trello is basically a service that follows the kanban approach to project management. Essentially you create different lanes that represent different statuses and you add a series of cards that represent tasks to these different lanes. Multiple people can add cards, edit them, add further data, and collaborate in how the work items move through the development process. You can also tie the cards to calendars and deadlines. It provides a simple, effective, and powerful approach to managing projects, and I have used it for a number of projects in the past. Well recommended.
6. Social Media: Buffer
Social media is an important tool for engaging with your audience as well as disseminating news and information in your community. However, it brings challenges.
There are multiple networks, and each network has different norms regarding which materials gets better results. For example, you can post frequently on Twitter and get good clickthrough and impressions, whereas on Facebook things are a little more conservative.
One thing is clear though: it is important to have a regular stream of material to keep your audience engaged. To help with this you should pre-schedule content to post at the most effective times. This means you schedule your content, and at all times your next week of social media should be in the can, ready to go. You can do this manually using many of the social media networks, but it is a bit of a pain and very repetitive when using multiple networks.
This is where Buffer comes in. Essentially, you set a schedule for how often you want to post to each network, and then you fill Buffer with a big bucket of material to be posted and it posts it for you at the scheduled times you specified for each network. This means you can schedule a week's worth of material once and Buffer takes care of the rest. Oh, and it provides analytics too. This is a great tool for building your audience and keeping people engaged.
7. Code: GitHub
Code hosting is a tricky one. There are lots of different options, both in terms of version control systems as well as different platforms, for managing that code. When assessing tools, I try to determine which will open a community to the greatest number of quality developers.
With this in mind, I recommend you use GitHub. While I have traditionally used Bazaar and Launchpad for development (and Subversion and Trac before that), Git has become the standard version control system that most developers seem to be using for managing code. GitHub has also become the home that most people seem to use for putting their branches somewhere other people can access them and contribute to them.
GitHub provides most of what you need: code hosting, issue tracking, and managing merges and contributions. While not as expansive in terms of release management as Launchpad, GitHub focuses on what it does best: making it simple to find, improve, and contribute great code. And it has a huge community of developers who use it every day.
8. Meetings: Google Hangouts + Freenode
This next category is an interesting mishmash of two technologies.
In most communities, you should have two types of online events. Firstly, you should have meetings to bring the team together to discuss ideas, status, and more. Secondly, I recommend you have public broadcasts where you share updates, news, and other juicy nuggets of information with the wider world.
Google Hangouts has revolutionized video conferencing and provides a useful tool for both of these types of events. The Google Hangouts interface, though, is ... well, a little clunky at times. So I recommend a simple solution to make participation and interaction easier for people.
Put simply, when you set up a Google Hangout On Air, grab the embed code for the hangout and put it on a normal webpage. If your hangout is scheduled, the embedded video will just show a countdown until the broadcast begins. Now, use Kiwi IRC, a web-based IRC client, to display a Freenode IRC channel underneath the hangout. This provides viewers with a means to watch a live video feed and chat with other users who are watching the session.
While this approach is useful for the broadcast events, you can also use it for meetings. The benefit of this is that some of your meeting participants may not want to join a video call, so they can instead watch the hangout and participate in the chat. The only extra step needed here is to put a link to the hangout window on the webpage so people can join the main hangout if they want to.
9. Local Groups: Meetup
Many communities also like to form local groups. Local groups are a great way to grow your open source community around the world. This then raises the question of which tool one should use to schedule meetings and keep local communities engaged.
I have assessed a large number of options here, and meetup.com is by far the best solution I have found. Firstly, meetup allows you to create a group in a matter of minutes and provides tools for scheduling meetings, gathering RSVPs, having discussions within the group, adding polls, sharing files, posting photos, generating name badges, and more.
The real value of meetup, though, is that your community gets exposed to the meetup universe. For example, I created the XPRIZE Think Tank San Francisco and within a matter of hours I had more than 100 people join—with zero promotion on my part.
Now, this has a dark side: it is a closed ecosystem, which I am not a fan of. But the meetup.com folks have a pretty good track record: if they start making bad decisions, people will simply move away in droves. As such, while not perfect, the benefit of the sheer exposure your community will get seems to outweigh the risk of meetup going evil and screwing your members. It is a compromise, but a compromise I am currently happy to make given my experience working with the meetup folks. While this is a paid service (creating a group costs money), on balance it is cheaper than many of the custom platforms for handing local groups if you want to organize many groups around the world. Meetup also provides chapter accounts for managing lots of local groups (which I have used; it works great).
10. Materials: LibreOffice
This one may not seem like a community tool, but I think it is important to mention.
When building a community you should make doing great work as simple as possible for your members. In many cases this means creating downloadable kits of materials that people can share, utilize, and expand upon. For example, if you want to create local user groups, you may want to have a downloadable kit of materials for local events which include presentations, posters, handouts, and more. This is something I have used in my work many times. This means creating material that you will want other people to be able to enhance, change, and edit. Now, you could use Microsoft Office or Google Docs for this, but the former would require your members to have access to paid tools and the latter is not great for creating localized copies.
As such, I recommend LibreOffice. This is an entirely free, cross-platform office suite that provides a tremendous solution for presentations, documents, spreadsheets, and more. Simply create your material in LibreOffice's OpenDocument format; this means that you are not only providing the materials your community needs, but you are also providing it in a way they can modify it with free tools as they see fit.
Well, that's it. I hope you found this little list useful, and be sure to share your thoughts in the comments and tweet to me on Twitter at @jonobacon. Until next time!
This article is part of Jono Bacon's Six Degrees column, where he shares his thoughts and perspectives on culture, communities, and trends in open source.