Mentoring as a power multiplier in open source

Need more hands to get open source projects done? Consider the power of mentorship.
6 readers like this.
U.S. makes renewable energy software open source

Internet Archive Book Images. Modified by Opensource.com. CC BY-SA 4.0

Many developers struggle with work-life balance. They are overloaded with regular tasks and frequently called upon to solve urgent customer issues. Yet many developers, like me, have ideas they want to promote if only they had time to do so. Sometimes these pet ideas do not make it through the product management feature-selection process. Other times, a developer does not have time to complete the solution end-to-end on their own, yet they know if it could somehow be implemented, the project would benefit.

This is where mentoring comes in. Mentorship has many benefits: It helps the mentee's personal development, and it can improve the mentor's self-confidence and leadership skills. I discussed these benefits in an interview about skillful mentoring in the Red Hat Research Quarterly that includes many tips for a rewarding mentor relationship.

However, in the scenario I just described, mentorship has another very practical benefit: It helps with enrolling developers in the projects the mentor-developer wants to promote. In this article, I will explain how you can use mentoring as a power multiplier in the open source software (OSS) world and create a multi-win situation by mentoring people who further contribute to the open source community.

This article is based on my experience mentoring students as part of the collaboration between my organization and Reichman University, but it can apply to any mentorship situation.

Open source software is a gateway

OSS is a great entry ticket for many people into any of several exciting software community projects. It can help undergraduate and graduate students gain visible experience so they improve their first job search. Or, it can help more experienced programmers find interesting projects (plenty of those are available) or particularly challenging projects (plenty of those as well). In many of these cases, there can be a good match between people who are looking for programming opportunities and the projects looking for more developers.

The first step is leveraging the opportunity.

Building a multi-win combination

Developers have projects they want to push; outside programmers want to contribute to open source projects. But how can they find each other?

There are multiple mechanisms that can be used to match projects with contributors. First, I want to share my mentorship story; then, I will discuss other options.

My story started when I was invited to offer research projects to Reichman University students. In collaboration with industry partners, the university was running a course and lab in which students were offered various projects sponsored by many companies. The students could then implement them with support and mentoring from those companies.

This was the first year the course was running, and our team had little time to prepare. To act quickly, I had to pull some of my backlog projects that I wanted to implement but didn't have the capacity to do on my own. One of the projects we offered was adding a compression layer to the communications path between components in the Ceph software-defined storage product to reduce the cost of deployments on public clouds. This was a complex project because it involved changes in the data path of a large and sophisticated storage system.

As it happened, this was a very good decision. For their presentations at the end of the course, most students were doing research-oriented, nonproduction projects, such as a proof of concept or a simple research project for choosing the best AI algorithm for a specific problem. Our team, on the other hand, offered a more challenging, full-blown feature that would reside in a huge production project. If we had had more time to plan, I am not sure this would have been our decision, but fortunately, necessity led to a great solution. Now we plan to continue mentoring with production projects on purpose.

It is crucial to match the mentee to the task. At Reichman University, there are many grad students returning to the university after spending some years as developers in the software industry. This meant that we could present relatively complex projects. Fortunately for all involved, Maya Gilad chose to implement the compression project and came with this background along with the desire to contribute to open source projects. She was a perfect fit and could start contributing with a relatively small ramp-up.

Following the required course deliverables, Maya—with my help as a business mentor and Or Friedmann's help as a technical mentor—prepared a requirements document and design document and implemented the Ceph compressed communications feature. While working on this feature, we even discovered an additional use case that was not part of the original requirements. By the end of the semester, we had a pull request (PR) ready for Ceph.

The end of this story demonstrates several wins for all involved:

  • During student class presentations, Maya's project was the only one that was actually translated into code in a large production system.
  • From Maya's academic perspective, this was a great success, and she got an A+ grade for this course. Additionally, she was exposed to the Ceph community.
  • The Ceph project got a new feature that is important for deployments on public clouds.
  • Maya is still working and contributing to the open source community.

The road of the PR has just started. This is usually a place where mentees will need a lot of help, since this is likely a new process for them.

As I write this article, we are running the third year of this course. In this round, two students selected another project that I didn't have time to implement myself, this time in Kubernetes. I enrolled a technical mentor that will help me, and our excitement and expectations are very high.

More mentorship opportunities

I am lucky to be involved in an industry-academy collaboration project, but what can you do if you are not involved in such a project?

There are other alternatives for collaboration with students around the world on open source projects. The students are paid for their work, and this is a great opportunity to help students making their first steps in the industry.

The two most popular platforms for making these connections are:

If you are interested in finding interns that will help you, these are very good places to start.

Tip: There is a lot of competition within these platforms, as with the Reichman University projects. Invest some time thinking about how to present your project so that suitable candidates will select it. This is a good marketing exercise, and if you do a good job, it will pay off well.

What are you waiting for?

If this blog piques your interest, here is a summary checklist for a successful mentorship project:

  • Select a well-framed project, and make sure you know and communicate the success criteria for such a project. Make sure it fits the work you plan for the mentees. Both you and the mentees want the project to succeed. Overly complex projects will increase the chances of failure.
    • Make sure the project is well defined.
    • Verify that it can be completed in the desired timeframe.
    • Define timely milestones, and make sure there is a minimal scope, possibly with some additional nice-to-have improvements.
    • If the project is complex, consider breaking it into multiple PRs.
       
  • Make sure you have all the mentor resources you need. You may need some help in mentoring. There is no need to limit yourself to things you can do on your own!
    • Don't forget that you need to merge the PRs—make sure you have enough community support for this step.
       
  • Think of the best way to sell the project to potential mentees—usually, there is strong competition for mentees.
     
  • Find a platform (or platforms) for matching projects and mentees/interns. Study its rules and comply with them.
     
  • Involve the upstream community early. Try to get their feedback on the design as soon as possible; this will pay off when the PR is submitted.

Remember: A successful project with a positive experience for the mentees can lead to additional engagements in OSS communities. A bad mentee experience may do the opposite, so make one of the primary goals of your project a positive mentorship experience that encourages mentees to stay involved.

What to read next
Josh Salomon in Tel Aviv duathlon
Josh is a Senior Principal Software Engineer at Red Hat. Josh has more than 30 years of experience in software development, more than 20 years in architecture positions, and 7 years of experience as an architect in the storage development industry. https://www.linkedin.com/in/joshsalomon/

1 Comment

For many students, internships (or industri-academic projects as is the case here) maybe their first real exposure to open source communities. If they have a positive experience, this can really help them become life-long fans of open source. This is another win-win for everyone :-)

Creative Commons LicenseThis work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.