Open Source CultureWhen a student encounters 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 they're taking on or hanging out on an IRC channel - the way people interact, and what they expect from each other is pretty different than a classroom, or their friends and families. This chapter is about helping you identify things about open source culture that may need to be explained and made explicit to newcomers. This information is useful for students, but also is important for interacting with the wider world. One advantage that mentoring organizations have is they help define these aspects of their organization to the wider world, not just for students. Openness and SharingOpen source projects vary a lot. A core value they hold in common is that sharing code is good. Regardless of license, indentation style or language chosen, 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, re-factoring, implementing new features, documentation, project management and advocacy. Amazingly, the ways in which people actually share code are as varied as the individuals involved. Orienting students to your project's practices will not necessarily prepare them for how other projects operate. Keep this in mind if you are integrating a new person that may have had previous open source experience -- you still need to take the time to show them around, and acquaint them with your particular brand of sharing. One aspect of the "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 is to practice, and you as a mentor need to encourage students to participate publicly. Remote CommunicationMany 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's 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 to allow individuals who consistently try to cause harm to others to do so. If a person is causing undue problems, consider removing them from your project. It's often better 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 SlangGroups of humans come up with abbreviations and slang that are meaningful inside the group, but not necessarily to outsiders. Encourage newcomers to ask questions when they don't understand a term, a joke or some arcane bit of project lore. Remember that you were the newbie once too, and take a few minutes to explain. The best jokes are the ones that everyone is in on. Letting your students in on these jokes helps makes them feel more included in your community. Here are a few useful resources for teasing out meaning from initialisms, acronyms and abbreviations:
Volunteerism and Gift EconomiesDonated and free time are 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. This culture may be unfamiliar to students, and require explanation. 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 be seen as chaotic by people only familiar with top-down management - where teachers, professors or bosses tell them what to do and when. Of course, some projects do have clearly defined project management, with milestones and tasks meted out carefully. Regardless of your organization's style, it's best to just help students see that your group is productive the way that it is. Obviously, the group got far enough to be involved in the Google Summer of Code, so they must have done something right! Help students by introducing them to the right people and processes, and by answering their questions promptly. Because many (or in some cases all) contributors 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:
Overall, your goal should be to create 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. Consider treating every patch like it is a gift. Someone put time and energy into creating it, and even if you don't ever use it, recognize that effort. Being grateful is good for both the giver and the receiver, and invigorates the cycle of virtuous giving. |