THIS GUIDE IS UNFINISHED AND IS A WORK IN PROGRESS
The Ubuntu community is an impressive place to be. We have a huge diverse community spanning the entire globe in which volunteers of every discipline work together to create an awesome free software platform. The Ubuntu community is a great example of free software community in action, and is arguable one of the greatest examples of free software community in the world.
The aim of this document is to provide some help and guidance about creating a well structured, productive community team. This guide applies to every Ubuntu team, and every team can learn from some of the concepts in here. The aim is simple - ensure your team is a happy, productive, open place to be. This demands good leadership, processes and activities.
This document is deliberately concise - no-one wants to read 200 pages of "how to run a community" information. So let's stick to some core concepts and flesh those out. Feel free to send feedback about this document to the Ubuntu Community Manager Jono Bacon at jono AT ubuntu DOT com.
Create open and accessible resources
Every team needs certain resources to be productive. This includes places to scribe information such as a wiki and communication channels such as mailing lists and IRC. It is recommended you set up the following resources as a bare minimum:
Email based discussion that is publicly archived
Mailing lists are hosted by Canonical at http://lists.ubuntu.com/ and each team should have a mailing list. To get a list created, email email@example.com to request the creation of your mailing list. When emailing this address, specify the following information:
The name of the list (this should be ubuntu-<teamname> e.g. ubuntu-art)
- The purpose of this list - outline what your team is doing
- The name and email address address of the person maintaining the mailing list
Before requesting a mailing list, it is strongly recommended that you review the existing list of Ubuntu mailing lists to see if your project can use an existing list. Using existing lists is more efficient and assists with collaboration. Your mailing list request may be declined if it is more appropriate to use an existing list.
Launchpad offers free hosted mailing lists. It is ultimately intended to adopt Launchpad for the Ubuntu lists, but at the moment we still prefer to host Ubuntu lists on https://lists.ubuntu.com. While you can request that a list be set up on Launchpad, we prefer Ubuntu community discussions to happen on Ubuntu mailing lists and the Launchpad list administrators are likely to refer Ubuntu list requests to the Ubuntu list administrators.
IRC is an excellent means of having real-time discussion about your team, and is an essential resource. Much great work happens on IRC, and it really does create a sense of community.
Ubuntu IRC discussion happens on the Freenode network. This is how you register and run your IRC channel:
Register your nickname with a password: /msg NickServ register <password> <email-address>
or if already registered:/msg NickServ identify <password>
Create the channel by joining it for the first time: /join #ubuntu-<yourteam> Be sure to check the channel naming guidelines here: IRC/ChannelNaming
Register the channel according to the channel creation guidelines: IRC/CreatingChannels
Invite the Chanserv bot so your channel doesn't disappear: /msg chanserv set #ubuntu-<yourteam> guard on
For more help with Ubuntu IRC matters, you can enquire on #ubuntu-irc
Web page content for the team, useful for outlining processes and practise
When starting your team, we recommend you create pages on wiki.ubuntu.com which can act as your team homepage. Although it is tempting to create a CMS driven website, we really do urge you just use the Ubuntu wiki as it makes it much easier to get content online that everyone can edit and also prevents you spending weeks getting a separate website online which does largely the same thing - the aim here is to be as productive as possible, and we want to prevent wasting time setting up resources.
Create your main page on https://wiki.ubuntu.com/TeamName (replace TeamName with your actual team name e.g. https://wiki.ubuntu.com/ArtTeam). This front page should be simple and easy to read and contain a summary of what your team aims to do. You should then add a number of additional pages:
- Getting Involved - provide details of how new members can join the Mailing List, IRC channel etc. Also provide details about how people can get started with the team - outline what they need to do to make a successful contribution.
- Online Meetings - you should have a page that gives details of the next online IRC meeting. This page should be used to say when the next meeting is, where it is help (which IRC channel) and what the agenda is.
- Roadmap - what goals does the team have. Here you should indicate the kind of ideas and goals you want to achieve. It is often nice to use a Roadmap page as a place for all members to note down ideas activities for the group to work on.
- Links - Link to all the information you have gathered inside and outside of the wiki.
It is best to create these pages as subpages to your main page. So as an example, https://wiki.ubuntu.com/TeamName/GettingInvolved.
It's not a good idea to translate Ubuntu's Wiki pages directly into other languages, because they change often.
Add CategoryTeam to your main page, and add your own CategoryYourTeam tag to all your pages.
Creating good processes for a team is essential. This means understanding what kind of things your team needs to do, documenting it and trying to make the processes as clear and easy as possible. When creating processes, it is essential you try to make them as simple and unobtrusive as possible - teams with too many rules and regulations feel too bureaucratic. The aim here is to create processes that act as guides to making the team run effectively - lets not wrap people up in picky rules, but determine simple and clear methods of working that are easy to understand and follow.
There will be many processes specific to your team, but there are some generic to all teams that are useful to adhere to:
Have regular IRC meetings - Schedule regular IRC meetings and ensure there is an agenda on a wiki page for each meeting. Regular IRC meetings ensure the team is open to discussion, and provide an excellent way for the team to decide direction and what to do. They also provide an excellent means of resolving problems. Also, ensure your meeting is logged and the logs are placed online on your wiki pages - this ensures those who could not attend can get up to speed.
Define a roadmap and update it regularly - A roadmap is key in determining what your team wants to do. Always keep your roadmap up to date, and schedule IRC meetings to discuss what to add to your roadmap if needed.
Document everything - The wiki is a great place to document things easily, and you should document everything about your team.
Suggested Rules for Minimizing Legal Liability
These should prevent most legal issues and solve most of the rest:
- Do the right thing. Always tell the truth. A decent respect for the freedom and well-being of others and the simple application of the Golden Rule will be your best guides and keep you out of the most trouble.
- Don't allow alcohol at your meetings unless someone with a liquor license is present to sell the alcohol. They've been well-schooled on how to handle the situation and what the laws are. Go to your local restaurant or pub, have the event catered, or just skip the booze. In any event, don't allow anyone to be drunk.
- If you disagree, speak up but don't be disagreeable. Allow others the freedom to be passionate. Ignore slights and insults against you.
- No physical confrontations--If at a meeting a heated argument arises about vi vs emac, gnome vs kde, free vs open, Eben vs Tim, the Red Sox vs the Yankees, soccer vs football, or anything else that causes blood to boil, change the subject and send the combatants back to their blogs.
- Stay a voluntary community. Don't become a legal organization or set up bank accounts. It will only give the lawyers an entity to sue and another bank account to collect from. Besides, if you are following 1 above, it's pointless expense.
- Make sure there is plenty food, water, and bathroom facilities at meetings. It's amazing how many problems are caused by hunger, thirst, and a need to pee.
- Accommodate the handicapped, the disabled, and anyone else that just could use some help. Accept help graciously. See 1 above.
- Be transparent. "Open" should be the watchword in finances, deliberations, and meetings.
- Be a good citizen so that no one wants to sue you in the first place. Don't tear up the place, and clean up after yourself.
- Don't charge dues or fees, but be self-supporting through voluntary contributions.
- Neither a borrower nor a lender be. Pay in immediately available funds, keep the receipt, and show it to anyone who asks. See 8 above.
- No resentments. Don't give if you don't want to give, and don't force or expect others to give. Forgive others and admit your own mistakes. Remember that it's a voluntary organization.
- TODO page.
- Keep it up to date.
Use something like DesktopTeam/TODO:
## ||<rowbgcolor="#CCFFCC"> This task is done || somebody || || ## ||<rowbgcolor="#FFFFCC"> This task is assigned || somebody || <status> || ## ||<rowbgcolor="#FFEBBB"> This task isn't || ... || || ## ||<rowbgcolor="#FFCCCC"> This task is blocked on something || somebody || <explanation> ||
Use editmoin to keep it up to date:
daniel@bert:~$ cat bin/desktopteam-add echo "||<rowbgcolor=\"#FFEBBB\"> $1 || || ||" | EDITOR="cat >>" editmoin https://wiki.ubuntu.com/DesktopTeam/WeeklyTODO daniel@bert:~$
- Urgent things and plans for the future.
- Maybe even list the issues you already solved in a separate section, to increase the feeling of "We're getting things done!"
tag it as CategoryTeamTODOPage.
- Keep it up to date.
- Idea Pool:
- Write your ideas and plans down, as specific as possible, so things will actually be discussed and solved earlier. (Link to team specifications.)
- Have an "easy-to-be-fixed" section, so people new to your team have something to do to get in.
- Specify all the necessary information:
- Bug tracker links.
- Upstream resources.
- Upstream IRC channels.
- Make sure the team is bug contact for packages you take care of.
- Tag bugs to categorize work items.
- Make a release check list for your team.