May 13, 2016 - Ben Lloyd Pearson
10 Steps to Being Successful in Open Source
No blog is complete without a simplistic numbered list of images, and we’re no exception! Open source methodology can be a complicated subject, but that doesn’t mean we can’t try to boil it down to some easily-digestible snippets. We’re proud to present the 10 simple steps it takes to be successful in open source. All of the images in this article were created by Ibrahim Haddad and are shared under CC-BY-SA-4.0, so feel free to use them in your own work.
1. Setup business infrastructure to support open source
It is extremely challenging for a company to be successful in open source if they haven’t setup the proper infrastructure to allow their employees to interact with an open source community; this includes the establishment of both technical infrastructure as well as organizational infrastructure. You need to make sure your developers have the policies, processes, and tools that are required to contribute code upstream in place, and it’s necessary to make sure everyone involved is properly educated on the use of this infrastructure. This should be completed before any significant open source effort is undertaken as it prepares you to be successful for the long run.
2. Build a team of skilled developers
Open source developers have somewhat different requirements than developers of proprietary software components. For starters, open source development occurs all over the world, and developers are rarely tied to specific geographic locations. This means you will likely need to offer the option to work from home or their current city in order to attract the best individuals. Additionally, their job often requires them to have public interactions with individuals outside the company, and they often serve roles, like maintainerships, outside the requirements of their job and they need to be supported in these efforts. Finally, open source developers typically need to hold periodic in-person meetings with others from the community, which means they often need to travel to events like conferences and technical summits in order to determine the direction of the project. If you want to hire great open source talent, you need to make sure their unique needs are met.
3. Apply collaborative development processes and skills
Collaborative development is at the heart of any open source project, and there are a lot of elements that go into being successful with this type of development. Adopting this development model can require changes to things like company culture, processes, tools, and human resources in order to make sure the company can be accommodating. This effort can pay off in spades if you are successful and your company can reap rewards that far outweigh the initial effort by reducing R&D costs, increasing the speed of innovation, and accelerating product development.
4. Enable collaborative tools
Collaboration in most open source communities is centered around a relatively standardized set of tools. Tools like wikis, IRC, and mailing lists allow members of the community to communicate with each other. Open source communities often rely on things like Bugzilla, git, and file servers to collaborate on code development, and blogs are often used to inform people about community efforts to keep everyone on the same page. Internal policies and infrastructure must be put into place to ensure your developers can adequately interact with open source communities using these tools.
5. Learn how to send code upstream
Sending code upstream can be a challenging process as it often involves multiple rounds of review and revisions and requires that your company adopt an upstream first mentality. Code that is useful to others, follows the coding style of the community, and that includes documentation is much more likely to get accepted. Each community has their own processes and guidelines for getting code accepted upstream; it’s vital to be aware of them from the very beginning and to follow them as closely as possible. The community will need time to review the code and often there are multiple stakeholders that will provide feedback. All feedback must be accommodated before code can be contributed upstream.
6. Improve code quality to meet the standards of the open source community
Open source communities tend to have very high standards for the quality of code that is accepted. Any company that wants to submit code upstream needs to put in the effort required to meet this standard, and there are practices that can be implemented internally to facilitate this effort. For starters, mentor programs where experienced open source developers assist newcomers in getting code accepted to the project can help build new talent. Additionally, programs that teach developers to build code according to the requirements of the open source project and that help developers adopt the lean, agile methodologies of open source can improve both internal code as well as code that is contributed upstream. These programs can be facilitated with clear guidelines and useful tools, and can be tracked through regular performance reviews.
7. Make sure you comply with open source licenses
Open Source initiatives and projects provide companies with a vehicle to accelerate innovation through collaboration with the global community of developers. Important responsibilities come hand-in-hand with the benefits of teaming with the open source community, and companies must ensure compliance with applicable open source license obligations. Open source compliance means that commercial users of open source must observe all the copyright notices and satisfy all the license obligations for the open source software they use. Therefore, it is vital to establish an open source compliance program to ensure that your organization meets the obligations of all open source code included in products.
8. Release early, release often
Release early, release often is a practice that has been integral to open source software for most of its history. This is one of the primary practices that allows open source communities to innovate at a rapid pace with a high quality of code because it creates a much faster feedback loop between developers, testers, and users. Releasing early allows feedback at an earlier stage of development so new ideas can be incorporated while the code is still flexible, and it also allows any potential issues to be flagged more quickly. Releasing often results in smaller changes that are easier to understand, debug, and improve which makes it much easier to maintain a rapid development pace.
9. Track performance metrics
Once you’ve successfully submitted code to upstream projects, you will probably want to keep track of metrics related to your performance. This helps you gauge how effective your interactions with open source projects are and allows you to identify areas you can improve. Quantitative metrics like patch submission and acceptance rate as well as internal collaboration efforts can help compare development efforts between organizations and companies. Qualitative metrics like conference talks, publications, training, and social media outreach can be used to gauge to level of influence your company has on an open source community.
10. Drive open source leadership
Last, but not least, after you’ve successfully accomplished the first 9 steps you can begin to become a leader in the open source community. Good leadership allows you to influence project direction in order to better support your products and is something that must be cultivated over an extended period of time. Open source development requires an ongoing relationship with an open source community, and this relationship must be cultivated through hiring key individuals, contributing to upstream projects, supporting teams to make open source contributions, and encouraging developers to become involved in community outreach. If you follow these practices you should be quite successful in contributing to and influencing open source communities.
About Ben Lloyd Pearson
Ben handles Open Source Operations for the Samsung Open Source Group. He has a background that spans many areas of technology including digital media, audio / video production, web development, IT systems support / administration, and technical writing. In addition to his work for Samsung, he also runs Open Source Today, a news blog that covers developments in the open source industry. He lives in Austin, Texas, a place he and his wife chose to live in order to experience one of the best scenes for food, music, and technology in the world. He is a musician, aspiring amateur chef, DIY mechanic, and avid gamer.