This article is a part of a series on using open source in business:
- An Introduction to the Open Source Development Model
- The Technical Value of Open Source Software
- The Business Value of Open Source Software
- The Business Obligations of Open Source Software
- Common Characteristics of an Open Source Community
- Common Tools Used in Open Source Development
Up to this point, this guide has focused on the fundamental characteristics of open source communities and how these communities are organized. One of the major reasons these communities have organized around a relatively standard set of practices is because of the tools that are available to get work done in a distributed community. These tools must support individuals from diverse backgrounds who each have their own unique needs.
This article will describe the tools that are commonly used in an open source community and will explain the roles they play in an open source community. Additionally, it will provide some insight into how to get the most out of them.
Communication and Problem Solving
Development in an open source community includes people from numerous timezones and cultures around the world. The tools used for communication in these communities must be designed in a way that allows for these differences and makes it easier for them to be bridged. There are two types of classifications for these tools: asynchronous and synchronous communications.
Email mailing lists are one of the most widely used tools in an open source community because they create a good environment for in-depth, technical discussions. Most people already use email in their day-to-day work, and a mailing list makes it easy for large, distributed groups of people, who have a shared interest, to come together in a singular effort. In many communities, the mailing list serves as the official documentation of community decisions.
The asynchronous nature of mailing lists have an added benefit of making it easier for people of different ethnic backgrounds to participate because they give individuals more time to evaluate the statements of others and construct their own questions and replies. This is particularly beneficial to individuals that speak a native language that’s different from the language used in the open source community because they can avoid disrupting the flow of the conversation as they take the time necessary to understand everything.
Forums serve a very similar role as email mailing lists; the choice between the two comes down mostly to personal or community choice, and it’s common for communities to use both. With that said, there are a few key differences in how these tools are best used.
Forums are much easier to organize into structured content based on specific areas of information. It’s often easier for users to navigate and search forums, making it much easier for visitors to learn if someone else has had the same problem before them and if that problem has been resolved. Finally, forums also make it much easier to embed supplementary assets like images and videos.
On the other hand, it is much harder to branch off conversations in a forum. When the topic changes in a mailing list discussion, creating a new conversation branch is as simple as changing the email subject line. On a forum, someone must create an entirely new discussion in the forum that includes the information which led to the branch or they risk diluting the original conversation. Additionally, since most people use email daily, it’s more likely for them to make quick replies to other people on a mailing list, which can result in a more organic discussion. A forum requires users to login to a specific site and this increased barrier to participation can reduce user involvement.
The most common real-time communication method used in open source communities is IRC. Most open source communities have IRC rooms dedicated to the project or specific subsystems of the project; there are even web services that offer free IRC rooms for open source communities.
Chat rooms can be valuable to an open source community in a number of ways. For starters, it is often a great method for someone to get quick responses to simpler questions that don’t need to be sent out to the entire community in an email. For example, new users or developers can use it to get quick help from the community if they are having trouble finding specific project resources, or they can also be used to solve minor technical problems.
Chat rooms also help build a sense of community by providing an informal location for participants to meet and have discussions. They can be a good environment for people from various organizations, companies, and backgrounds to come together in a single place. Lastly, chat rooms provide a good venue for scheduled and ad-hoc online meetings.
One final important consideration for chat rooms is that the conversations are typically not documented as well as forums or mailing lists. Mailing lists often serve a second purpose as documentation of project decisions because they are easier to review after the fact. For this reason, in-depth conversations that take place in chat rooms related to design and development decisions should be summarized and communicated to the entire community via asynchronous channels.
Code Development and Distribution
After discussions have taken place, the community needs to coordinate their efforts towards writing code. Fortunately, there are a plethora of tools designed to facilitate code development in distributed environments. No open source community can be successful without an established system for sharing source code, collaborating on improving the existing code base, and contributing new code.
A code repository is a public system for storing and downloading source code; the primary purpose of which is to make sure that all developers are working on the same code base. Anyone that plans to submit code to an open source project absolutely must make sure they are working with the latest code found in the project’s repository. Git has become the de-facto standard for code repositories in the open source industry as the greater majority of open source communities rely on it for sharing code.
Anyone is free to download code from the repository or to submit recommended changes to the source code, otherwise known as a pull request. Typically, the ability to accept pull requests and commit code the the upstream project is limited to a select group of trusted individuals.
Bug & Feature Development Tracking
Bugs and feature requests go hand-in-hand with any software development project, open source is no different in this regard. However, bug and feature tracking in an open source community differ from proprietary development in one key way. In an open source community, all users and developersare free to browse the project’s issue tracker and to contribute information via testing or suggesting new features. This empowers users to get more involved in the development process because they can track it through each step of the process and contribute information related to their specific use.
Once project decisions have been made and development work has occurred, it is vital for a members of the community to document all important materials. Everything including events, developer reference documentation, technical demonstrations, governance decisions, and so on must be documented in some way because this is the only way for large groups of individuals to coordinate their efforts.
In many open source communities, the wiki excels at providing information in a form that’s easy to read and manipulate making them the primary resource for individuals to learn about the inner workings of an open source project. In many communities all participants can edit the wiki; this allows both users and developers to get involved in updating and maintaining the project documentation. The wiki is often considered the de-facto standard for a project. There is a large variety of wiki software designed to fit a range of use cases, and communities pick wiki software based on how well they fit the community’s specific needs.
Collaborative Editing Platform
In recent years, collaborative editing applications that allow multiple individuals to work on the same document at the same time have become much more common, especially in distributed communities. These make it easy for groups of people to share information in real-time and can be a great supplement to a chat room by allowing participants to quickly share smaller amounts of information. These are best used for ad-hoc collaborations and are not typically suitable for official documentation.
A public website ties everything together by serving as a centralized location that makes it easy for people to find important project resources. Additionally, a website can be a great resource for informing newcomers about the project and explaining why they might want to use or contribute to it.
Coming Up Next: The Value of Open Source
This article concludes the first section of this guide: A Definition of the Open Source Development Model. The purpose of this section is to provide context for the rest of the guide by defining what an open source community is and how it operates.
The next section will explain how open source exceeds proprietary development in a number of ways including development efficiency, security, quality, and more. It will then go on to outline the business reasons for open source in an effort to demonstrate why it can be valuable for a business to use and contribute to an open source project.