When you encounter an open source group for the first time, it may be a bewildering experience. Whether posting to a mailing list for the first time, blogging about the project you’re taking on or hanging out on a chat channel - the way people interact, and what they expect from each other is pretty different than in classroom or with friends and family.
Openness and Sharing
Open source communication can vary a lot. A core value held in common is that sharing code is good. Regardless of license, language or indentation style, open source developers create, share and modify source code together.
Working on code together means a lot of things: transparency, directness and cooperation are words that are often mentioned by developers when describing the process. It can involve bug reports, code refactoring, implementing new features, documentation, project management and advocacy.
Amazingly, the ways in which people actually share code are as varied as the individuals involved. Even if you have previous experience with other open source projects, keep in mind that you still need to take the time to learn how the new open source project works, and acquaint yourself with their particular brand of sharing.
One aspect of “open culture” is that people are informal. People address each other by first name. They tend to speak directly to one another, regardless of social status or formal title. Disagreements about code, whether as profound as which algorithm is most appropriate, or as seemingly mundane as how many spaces are used for indentation, are aired in public. This process is very intimidating to newcomers, who might be concerned about having their words immortalized on the Internet, and worse, saying something wrong or embarrassing. The only way to get over this fear is to practice and participate publicly.
Although “open culture” is generally informal, it is important to remember that you still need to mind your manners when participating in conversations.
Most open source communities have their own Code of Conduct (formally or informally). Be sure you are aware of the Code of Conduct and are treating everyone with respect.
Many projects involve individuals who are working not only in different cities, countries and continents, but collaborating across major cultural and language differences. And rather than having procedures or policies on how to interact with one another handed down from HR departments or other authorities, communication practices evolve between individuals over time.
Because there are few rules around working together on open source projects, there is a lot of freedom to share directly with one another. This freedom is at the core of what attracts many people to open source software. Multi-cultural projects offer an incredible opportunity to share knowledge between individuals directly. With sharing, however, comes a responsibility to inform new participants about expectations for communication and ways to solve misunderstandings to the benefit of all.
Be mindful of cultural assumptions about race, gender, sexual orientation and disability. People often make assumptions, have stereotypes or are biased in ways that no one can control. The best practice is to assume that people don’t mean any harm, and when they’re told respectfully that they’ve offended or hurt someone, that they’ll stop whatever it is that they are doing that is harmful.
All that tolerant rhetoric aside, it is never productive for an open source project to allow individuals who consistently try to cause harm to others to do so. If you are causing undue problems don’t be surprised if you are asked to discontinue your participation regardless of your contributions. It’s often better for an open source project to ask someone to leave, than to allow them to harm others and in turn, cause other productive members of your team to depart.
Abbreviations and Slang
People come up with abbreviations and slang that are meaningful inside the group, but not necessarily to outsiders. Ask questions when you don’t understand a term, a joke or some arcane bit of project lore.
Here are a few useful resources for teasing out meaning from initialisms, acronyms and abbreviations:
- Urban Dictionary (http://www.urbandictionary.com)
- Webster’s Online Dictionary (http://www.websters-online-dictionary.org/)
- The Jargon File (http://www.catb.org/jargon/html/)
- Acronym Finder (http://www.acronymfinder.com/)
- A to Z word finder (http://www.a2zwordfinder.com/)
Volunteerism and Gift Economies
Donated time is the life blood of open source projects. Many individuals contribute their time and energy without any expectation of compensation or even a simple “thank you” in return.
Contributions to projects are often self-directed, with developers having a personal itch to scratch in the form of a new feature, by correcting a bug that they’ve encountered or by implementing something from a TODO list. Projects operating in this way may seem chaotic if you are only familiar with top-down management - where teachers, professors or bosses tell you what to do and when. Of course, some projects do have clearly defined project management, with milestones and tasks meted out carefully.
Because many (or in some cases all) community members are volunteering, methods of coercion available to businesses are not available. The best way to collaborate is to behave in a way that encourages others, and ultimately, makes people want to contribute. Some easy ways to encourage volunteerism include:
- Saying thank you
- Giving compliments when they are deserved, regularly and in public
- Publicizing cool hacks and features as they are implemented, in blog posts and on the mailing lists
- Promptly committing useful code
- Responding promptly to requests for information
- Clearly defining ways to contribute to your project (TODO lists are great!)
Consider treating every patch like it is a gift. Being grateful is good for both the giver and the receiver, and invigorates the cycle of virtuous giving.
Overall, your goal is to help create and maintain an atmosphere around contribution that is enjoyable. What that means will vary significantly depending on the project, but certainly the above points apply to any project.