Open source communities can be vast, have an extremely fast rate of development, and have numerous companies and individuals who influence the project’s direction. Because of this diversity and speed it can be very easy for a company’s contributions to be lost in the shuffle, and it’s vital for any company that wants to contribute significant code upstream to establish themselves within the community.
We’ve worked hard to establish a strong open source engineering team here at Samsung, and we’ve learned a lot about what it takes to be successful at this along the way. Without further ado, here are 10 tips to help you improve your company’s success at contributing code to the an open source community.
- Hire key developers and maintainers from the community. This is a critical step that allows you to gain skills and expertise. Two or three people from any given project are enough to make a serious impact.
- Setup a mentorship program where senior and more experienced developers provide guidance to junior and less experienced developers. Typically, the mentorship program runs for 3 to 6 months. The mentor will supervise the work of the mentee, assign tasks, and ensure proper results. The mentor should review code the mentee produces and provide feedback before it’s proposed to the open source community.
- Create an open source developer track in your HR system. This provides open source developers inside your company with a good sense of how their career will progress. Performance-based bonuses need to be adjusted for a different set of goals specifically tailored to open source developers.
- Develop and offer internal training to open source developers. Training should involve three primary components:
- Technical training for specific subsystems and domains. Typically, maintainers or senior developers will provide this training.
- Open source development methodology course that teach junior staff how open source development works and how to best engage the community.
- Open source compliance course that teaches staff the basics of compliance principles and open source licenses. This should also inform them of the company’s policy and process.
- Participate in community events. Send your developers to community events and support them in presenting their work. Conferences, meetups, summits, and hackathons are all valuable events that help your developers get more deeply involved in the community’s development efforts.
- Provide proper, hassle-free IT infrastructure that will allow your developers to communicate with and participate in the open source community. For example, access to IRC servers is key so staff can have live communications with other developers from the community.
- Join vital open source foundations. These provides access to beneficial open source resources, services, events, and leadership.
- Create an internal system to track developer contributions and impact. Tools like GrimoireLab and gitdm can be used to extract valuable information from the source code such as what individuals are contributing the most code and what companies are influencing the codebase. Examples of items to track (per developer):
- Number of patches submitted
- Acceptance rate (Patches submitted / Patches accepted)
- Type of patch (new feature, enhancing existing functionality, bug fix, documentation, other)
- Time taken to merge code upstream
- Contribute to areas that are useful to more than one business unit. This will provide more value to the company and provide an ROI to more than one business unit, increasing your chances of getting more funding and support.
- Create collaboration projects with other business units related to the open source project. Initially, the open source engineering team can deliver training to the developers working for the business units, and then follow up with workshops. The goal is to understand the pain points and challenges business units have with the project so the open source engineering team can support and solve these issues. Creating this collaboration is very critical to understanding business needs so the open source team can be more effective at fulfilling them.
These 10 steps should go a long way towards improving your success within any open source community. If there is anything you think we’ve missed, please share it in the comments!