How to create an open source community
Community. This little nine-letter word is the lifeblood of open source. Barely a day goes by without some aspect of it impacting our lives, be that via Linux, a local book club, your closest group of friends or any one of a million other places. In an age when anyone over 45 seems to have stories about the end of local communities, the open source community is thriving.
But there's not a huge blob of people called 'the open source community'. Instead, there are thousands of smaller groups, each interested in a specific portion of the wider community - such as documentation, translations, local advocacy, mapping, testing, gaming or programming. There's a phenomenal diversity of contributions, despite our common aims. And while each group focuses in on its particular area, each segment fits together like a jigsaw puzzle to form the global open source movement we know and love.
Most of us enter this community by installing Linux, playing around with it and realising we want to contribute. Then we figure out what kind of contributions interest us and look for a community that suits our preferences. Often, we find the perfect place to contribute, but sometimes we reach a dead end or, even worse, stumble upon a community that's doing nothing.
Here, we'll look at how to build a community. Whether you want to help an existing but struggling one get back on its feet or create an entirely new group, the next six pages are designed for you. Everything here can be applied to both online and offline communities, from technical software communities to local book clubs. So go grab yourself a cup of coffee, sneak a biscuit, and get ready to build an empire...
We're going to use a Linux User Group (LUG) here as an example of a community group to create. LUGs are locally orientated collections of enthusiastic Linux fans who get together to talk about Linux and open source projects, get technical support from each other, and spread the word about Linux in their area. When I first got involved in open source, I created the Wolverhampton LUG and setting it up was a hugely rewarding experience. So, in the interests of my future Oscar nomination, I'll assume the role of Jono Bacon who lives in Hill Valley, a town devoid of a LUG. But I'm about to set one up to rock the worlds of local Linux fans, which involves three primary tasks:
- Setting up resources We need to set up the tools and resources that our group requires to function, such as methods of communication, a website and so on.
- Planning some projects The greatest communities work together and do it well, so we'll discuss how to plan and run collaborative projects.
- Building buzz With a home set up and some projects in place, we need to tell the world about our group and get people pumped up about joining us.
While each of these elements will be discussed in the context of setting up our Hill Valley Linux User Group (HVLUG), the approaches outlined here can be applied to any community you want to set up.
Once you've decided on what you want your community to do as its primary focus (such as providing support and advocacy in the case of HVLUG, or creating new software for a software development group), you need to figure out which resources you need to provide for the group to get set up and running. All communities need a home - a way to communicate, and tools to do their work - so this is our first order of business. Because of space limitations, we won't go into the technical details of how to get a home space and these resources set up, but will instead point out the major tools our community is likely to need, provide some pointers and highlight a few potential pitfalls. For the vast majority of communities, we need to satisfy the following requirements:
- A place to communicate We need to ensure that everyone can communicate in a way that's simple, free and convenient.
- A place to collaborate We need a place where the group can create content together.
- A place to present the group online This is typically a homepage, preferably one that's regularly updated with news and details about what the group does, and how people can get involved with it.
With these elements brought together, you have everything you need to communicate, work on projects as a group and have a public presence so that others can find you and get involved. Let's take a spin through each of these elements now.
Ottawa’s Linux User Group, seen gathered together here for a group picnic.
Communication is critical in a community. When people can communicate freely and easily, communities feel like vibrant, thriving places. However, when communication is unclear, clunky or restrictive, groups feel boring and devoid of life. Setting up great communication channels involves picking a suitable medium and then building a culture of positive tone in your group. Let's look at choosing the medium first. Fortunately, we have a range of different media available to us, such as:
- Mailing lists Email discussion lists provide a means for members to send a message to a single email address so that the communiqué is then sent on to everyone in the group. Mailing lists are fantastic for those comfortable with email, are low-bandwidth and messages are delivered directly to you, as opposed to you having to look at a communication channel manually. Mailing lists are common within open source communities, and particularly popular with software development groups. Free mailing list services are available from Google Groups.
- Discussion forums These are essentially online bulletin boards where conversations happen chronologically on a web page. Forums are a popular choice for many end-user communities, because they're simple to use, but are not particularly common among developer communities, who prefer the convenience of mailing lists.
- Internet relay chat (IRC) This is a text-based chat medium that's great for conversational and social discussions in real time. IRC has become popular in the open source world and Freenode is a good choice for your projects.
Of these three, by far the most popular method is the mailing list. It's therefore recommended that you set up a mailing list as your main communication medium. You may also want an IRC channel for more interactive discussions.
Once you've chosen your communication media, strive to keep things active and pleasant to be a part of (see box below for more detail).
Keeping the communication flowing
The early days of a community are a make or break time. Vibrant, active communities attract people, while quiet, inactive ones don’t. At first, the founder needs to go out of their way to keep conversation going before enough momentum builds with others in the group to generate discussion. Work to keep the conversation rolling and make people feel welcome.
Communities are also supposed to be fun, exciting and positive environments. Unfortunately, the internet can attract shouty, impolite people who bring down the tone of the group. Inspire and enforce a positive and exciting environment by setting a great example to others and not tolerating rude, offensive discussion.
Finally, communication channels are wasted if no one knows about them. New members will want to join and talk to other members, so make sure your website includes simple, accurate instructions on how to participate via your communication channels.
Many communities, particularly those in the open source world, collaborate on projects to produce content. There's a huge range of tools out there for a variety of types of collaboration (such as programming, writing, testing, design and translations). You should assess which tools your community needs to do its work and provide simple, freely available access to them.
As an example, if you're a software development community, you'll likely need code hosting, bug tracking, and translation tools. A number of free online software development sites provide these services, such as Launchpad and SourceForge. On the topic of external sites providing the tools you need, always be a little wary of being sucked into hosting your own tools. While you probably have the skill to provide your own self-hosted tools, I strongly recommend you use a third-party site instead. This way, you have the support of a team that ensures the site stays online, has security fixes, and will protect your data. When you maintain hosted tools, you'll get busy at some point and it'll become a burden.
For HVLUG, we're most likely to collaborate on creating documentation and content (such as how-to guides for our group, other documentation, and promotional literature about Linux). For these collaborative documentation needs, a wiki is a perfect solution. Wikis provide an editable web page that anyone can contribute to, and they're simple to use. A great free wiki service is Wikia. If you really want to host your own, the best two wiki systems I've found are MediaWiki, which runs Wikipedia, and MoinMoin, which runs a variety of wiki-driven websites.
Your online home
A website is essential for any community group. First of all, they're how people will find you. They also provide a vessel to share your group's benefits to prospective members and a means to distribute important details about events or other group activities to the members of your community.
Unfortunately, setting up a website is where many Linux communities experience their first problems. The reason for this is largely due to the personality trait that knits us all together: we're geeks, and we like to debate software preferences. Unfortunately, this can often descend into weeks of discussion about the respective benefits of one content management system (CMS) versus another and other inane chatter. In these situations, it's wise to remember that the content is more important than the management system. In other words: pick something and move on. Some people may be unhappy, but you should stress the importance of making progress and moving the group forward.
There's a range of great free providers for getting a website online, and I would strongly recommend WordPress, which is a mature and popular CMS. It provides the means for multiple authors to post content and the service is reliable. Whether you choose to use WordPress or something else, find a provider, get your site online and start creating content.
When creating your website, there are some must-have pieces of content that most visitors will look for. These are:
- Purpose Explain what your group does. For HVLUG, we should add details about the technical support and Linux advocacy we provide to the Hill Valley area. We should also talk about some of our projects and community work. As an example, if we've handed Linux CDs out to people in downtown Hill Valley, we should put up some photos and text about that work. Remember, we want to sell our group to people and have them join us, so make it sound like a fun, vibrant and interesting place to be.
- How to join Make it really easy to understand how to join the group. For most LUGs, this is as simple as joining your mailing list or IRC channel. Explain how to get connected and how to subscribe to the mailing list.
- Contact There will always be situations where someone has questions or problems about getting involved in the group and needs a hand. Provide one or more primary points of contact for these cases.
A common mistake many new communities make when creating a website is to use language that's overly complicated, which is unattractive. At HVLUG, for example, we welcome the full spectrum of Linux users. As such, we should ensure the language on the website is simple and accessible for the range of users, or some will get confused, grow bored and move on. A great way of preventing this is to get feedback from new members: ask them what they thought of the website and if anything needs to be improved, then tweak your group's site accordingly.
Choose your focus
Every community has a mission and a purpose. Linux User Groups advocate Linux in their area, Gnome and KDE produce desktop environments, OpenStreepMap creates free maps for everyone to use and so on.
Before you create a new community, pick what kind of theme you want to focus on. The fact that you’re reading this article would suggest you probably already have an idea in mind of what this purpose could be.
Whatever it is, check to see if an active community already exists that does the same thing. There’s nothing worse than spending oodles of time and effort building a new community when you could just join forces with an existing community instead and make progress much faster.
With your resources and communication channels in place, the next step is to decide what projects your group wants to work on. For some groups, this will be obvious - for instance, a software development group will focus its efforts on a software project, while a documentation group will write content. For others, this isn't as clear cut. There's a range of potential projects HVLUG could work on, for example, such as different advocacy campaigns, local events, creating promotional materials and more.
One of the challenges every community faces is the ability to coordinate which goals and ambitions the team is going to work on and to unite the group around an agreed set of projects. Traditionally, this has been a rather ad hoc process; people join a group and work on whatever they like. One of the best elements of a community is that there's no manager telling you what to do, and this environment produces an incredible sense of creativity. You should find that your community is soon knee-deep in ideas that sound rewarding and ultimately satisfy the purpose of the group.
Ideas are ten-a-penny, though, and for most communities to be productive, coordinating this work can be complex. Some projects require coordination across many people with different skill sets, availability and resources. For instance, if HVLUG wants to produce a regionally focused booklet that explains what Linux is and provides an introductory tutorial, the project needs skilled people to occupy the following roles:
- Writer Someone to write the content in the booklet.
- Artist Your booklet needs to look good.
- Content providers You may need a number of people to produce content for the booklet on different topics.
- Printer You'll need someone who knows how to get the booklet printed.
- Distributors With the booklets ready, outgoing people need to get out there and hand them to strangers.
Many communities don't take a particularly organised approach to these projects, which can kill motivation. If there's one thing that will cause a community to struggle, it's a sense that nothing happens or gets done. You can provide a more structured way of organising projects by producing a specification that documents how the projects will work and who's working on each part. This has the following benefits:
- Direction One of the biggest complaints in teams is about a lack of direction. If the group gets into the habit of creating a specification at the beginning of a project, it gives everyone a sense of focus and direction.
- Commitments A common rule in project management is that actions assigned to people in a shared document are more effective than ad hoc or privately made commitments.
- Feeling of success Regularly revisiting a specification and checking off completed items can develop a strong feeling of progress and success. It makes a team feel productive.
The first step is to open up a discussion with your team to talk about the things you'd like to do. The most effective way of having this conversation is to produce a wiki page where people can jot down their ideas and work on them together. This process provides the foundation for converting popular ideas into more specific and concrete items. Keep the discussion focused on the project and what's doable. Also, make sure you have these discussions out in the open in your team's communication channels.
When you have a set of ideas for a particular project, drill the ideas down into a specification for each project. This is a set of commitments that outlines what's involved in completing the project and who's going to be doing what. A wiki is a great place to do this as well.
I've developed a useful format for documenting these plans. For each project, note down:
- The objective A goal, or set of goals, that you want to achieve. Summarise your objective in a sentence.
- Success criteria This is a statement that can be used to determine success in the above objective. It needs to be as clear as possible. While this may seem unnecessary, it's a great way for the team to be clear on what success looks like, which can be inconsistent in many community projects.
- Required actions This is a set of steps that needs to be executed to achieve the objective. If someone volunteers to deliver on an action, put their name in brackets afterwards. There can be multiple actions needed to reach an objective.
- Driver If someone's coordinating this objective and helping those involved to deliver on their actions, list that person here.
To illustrate the elements, here's an example of a simple plan for running a demo event at Hill Valley Library:
- Objective Demonstrate Linux at Hill Valley Library.
- Success criteria Perform a Linux demonstration to Hill Valley Library attendees.
- Confirm booth space with librarians (Jon Smith)
- Burn CDs with copies of Ubuntu (Dave Jones)
- Develop artwork for main banner sign, staff badges, flyers (Sarah Gilbert)
- Provide demonstration laptops (two laptops - Dave Jones and Jon Smith)
- Prepare demonstration speaking script (Andy Gibson)
- Print fliers to promote the event and put them up in the library (Sarah Gilbert)
- Driver Sarah Gilbert
Although it may take a bit of extra work to put together your plan for a project, it will dramatically improve its chances of success and make the group feel effective.
Spread the word
Plans and specifications are a great way to ensure project work is spread out across the team and well structured, but they won't guarantee a project's success, or the growth of the group, by themselves. To keep on track, you need to get the team together regularly and focus their efforts on current projects. You should highlight problems, solve them, and talk about new ideas and challenges together. A great way to do this is to have regular meetings (see the box below for how to get started).
Keeping on track with meetings
Online meetings are a great way to keep on track, and IRC provides an ideal medium to host it. I recommend you schedule an IRC meeting at least once every two weeks. Create an agenda page on your wiki for this purpose, and encourage community members not only to join the meetings but also to add agenda items that are of particular interest to them.
When you schedule these meetings, be sure to promote them within your community and also outwards too – they’re a great way to get prospective members to join the group.
When you begin each meeting, paste a link to the agenda page and then go through each item one by one, discussing it and reaching any suitable conclusions. If actions are generated, note them down on the wiki with who agreed to perform the action. When you run out of time, bump any remaining agenda items to the next meeting. Finally, you should save a log of the meeting and put it on the wiki too.
The Shanghai Linux User Group uses Google Groups to talk about Linux and help each other with queries.
With your team up and running, resources in place and things to work on, now is the time to build some buzz about the group and encourage more people to join you. Thanks to the work you've already done in putting together your website and communication channels, you have plenty of interesting things to show off to prospective members. Now is the time to make some noise, my friends.
Fortunately, there are plenty of options for spreading the word about our community, both on- and offline. Before we talk about techniques, though, we need to create the messages and content that you'll spread. This content divides into two broad areas:
- Physical If you're a local community, your target audience is based nearby, so it makes sense to produce physical content, such as fliers and posters, that can be put up in the area. These should be bright, eye-catching and preferably use a noticeable symbol that immediately grabs the eye of a Linux user, such as a big penguin or distribution logo.
- Online All technical communities can spread a huge amount of buzz online. This kind of content can include banner ads and images, written content and web pages on your website that you can point people towards when announcing specific projects and initiatives.
Generate some buzz
Decide what kind of content is most appropriate for your group and work together as a team to produce it. As each piece of content is completed, make sure it's available to the whole group so everyone can use it to spread the word.
Now it's time to get out there and spread this content. There's a huge variety of ways of building buzz online and offline. Let's start with some online ideas:
- Social networking Twitter, Facebook and so on are all good places to spread awareness. Create a Facebook fan page and ask all your Facebook friends to become fans. Microblogging sites are fantastic locations to mention your site's address and the work the group is doing. People will then retweet your messages to their followers. Another interesting approach with social networking sites is to come up with a fun, witty or slightly unusual concept and aim for some viral marketing as people spread your message far and wide.
- Blogging Many of your members are likely to have existing blogs that they can use to encourage people to join the group. Ask different people to blog about different things, so that there's plenty of diversity in the message. If you're an existing blogger who's syndicated on a planet (a website that provides a rolling list of blogs about the same subject) use your blog as a primary method of building up buzz.
- Banners and buttons Many people would be happy to put a button or banner on their site linking to your community. These kinds of images are fairly simple to create in a tool such as Gimp. You could also provide a page on your website with a variety of button options that people can choose from to fit in with their design. Provide the HTML so that they can paste these into their site and link back to yours.
- Forums and mailing lists Another brilliant way to spread the word is to mention your community in various forums and mailing lists, but make sure that your message is both relevant and on-topic.
- Podcast bumpers There are many open source and Linux-based podcasts out there, so you could record a 20-second ad about your group and then see if one of these is willing to add it to the show.
The Open Rights Group exhibiting at Lugradio Live.
There are also some great offline ways to build buzz, which you should be aware of:
- Posters and fliers These are a wonderful way to spread the word, particularly for a locally orientated group.
- Magazines Computing magazines may be interested in publishing news about your group. Send them short, snappy text about your community and what it is you do, and include a high-resolution photo of the team as well. You never know, it might just get published.
- Local radio If your group is doing great work and is of general interest, why not call your local radio station and see if they'll mention your group or maybe even do an interview with you?
Note that not all these approaches will generate new members and not all will be successful, but the more places you try to raise awareness of the group, the greater the potential for people joining you becomes.
In this article, we've explored many elements of how to get a productive and fun community group up and running, but we've merely scratched the surface. Communities are large and complex beasts that involve many different skills, and while some of the core elements been covered here, there's a lot more to learn. If you want to delve deeper, I humbly suggest The Art of Community, published by O'Reilly (ISBN: 978-0-596-15671-8). It's also available as a free PDF, which you can access at www.artofcommunityonline.org.
First published in Linux Format magazine