Matteo Collina is an active leader in the open source community - renowned for his work on Node.js, Fastify, and much more. With over 15 years of experience, the Ovio team was excited to join him for a chat on the maintainer journey and contributing to open source at large.
Ovio: Greetings, Matteo! We're thrilled to have you. Please tell us a bit more about how you became a maintainer.
So, this is a very, very long story. But overall, this is the gist of it. I’m based in Italy, where there isn’t, or wasn’t very much of a tech scene. Working in a local company, I found myself developing software with very outdated technology. I realized this wasn’t what I wanted to do with my time, I wanted to create new things and innovate. In this dilemma, I almost strayed away from tech and was going to do an MBA.
This was until a friend showed me some stuff online about what other people were doing with technology, speaking in tech conferences, and working with open source. Like this, I was fascinated with the idea of open source software built by people, not necessarily grand tech companies. This was a wake-up call, that I could use open source technology and the technology conference scene to go beyond the Italian market.
Ovio: Incredible, what a journey! So, what does being a maintainer look like for you and how do you decide how to spend your time?
It is two things: phenomenal and tiring. My work as a maintainer consists of a lot of Github notifications and going through the new stuff that comes in every day. I try to prioritize anything that is of impact to colleagues or if I have any sponsorships. From this, I move on to other work I do beyond being a maintainer.
Ovio: Interesting, thanks for the honest response. So going off this tiring side, what do you think the community can do to make your job easier as a maintainer?
I think the biggest problem that we face as maintainers is ineffective communication. The reality is that a lot of people open up issues not knowing what the problem is. Even though we’re professionals and are here to help, we find it hard when contributors don’t paint a clear picture of the problem. One recommendation I can give to solve this is to make sure, as a contributor, to write a minimal reproducible example of the problem. This allows us, maintainers, to reproduce what you’re seeing. Without this, it is usually impossible to understand the problem you’re talking about. So this is one way to make this easier, as well as following through and being kind throughout the process.
Ovio: That’s a great rec! I’m sure developers out there will appreciate the tip. So, on the flip side, what are some things maintainers can do to make developers’ jobs easier?
This is fairly straightforward: a lot of documentation. Examples and being as clear as possible with the skills and procedures needed can go a long way towards helping developers. It’s something a lot of us can struggle to do, and time-consuming, but definitely helpful.
Ovio: Agreed! There are always ways in which both parties can improve. We will also note we have a relevant resource here for maintainers on how to create a contributor-friendly experience. Keeping with the maintainer experience, how would you say maintainers can balance welcoming contributors while keeping a high standard of quality?
This is definitely possible, yet not easy. If you want to keep high quality in your project, you have to be okay with spending a lot of time reviewing your code. Reviewing pull requests, and after that hoping contributors carry through after your review. Another way to do this is by using GitHub to find your top contributors. Through the insight page, you can find your most helpful contributors. By finding these prolific people who consistently drive your projects, you gain valuable maintainers and peers.
Ovio: That’s amazing. It must be a rewarding journey to see contributors turn into maintainers. On another note, what behaviors do you believe are annoying in the open source space? And how do you think a good, productive community can be created around a project?
It is rewarding, indeed. I think entitlement is the most annoying trait in the open source space. Asking too much from maintainers and lacking humility and compassion can hurt an otherwise collaborative environment. This also increases the bigger a project becomes. This happens very often: even developers from listed tech companies are asking for free work from volunteers. I usually handle all those requests asking for a contribution - I will never ever do your job, and all open source software comes with no warranties. To set up a good community, you can’t have self-centeredness. These two things do not work together. To prevent this, I encourage maintainers to be humble and helpful to others. In this way, they can be an example of altruism and compassion for their projects’ contributors. Beyond that, other ways to create productive communities are setting up clear boundaries, telling people how to grow within the community, and keep reviewing prs and fixing problems. My recipe for this is simple: help those who are willing to contribute back, and leave all “leechers” in the cold.
Ovio: Very helpful. Here at Ovio we also strive to create a collaborative, helpful environment so we really appreciate your insights. Finally, we’ve discussed a lot, good and bad. So to end on a happy note, what is the best part of being a maintainer?
The best thing to me is always the impact I can achieve. When I receive a message or see someone at a conference and get told I changed their lives, this is unparalleled. That is where I find that I can make a meaningful impact on people’s lives. For instance, a past student of mine from a Node.js course is now an engineering manager with a fantastic career. Seeing him working at a top-tier technology company and knowing I was a little part of this journey is always a reward. So, yes, this is the absolute best part of my job and what makes it all worth it.
Ovio: There you have it, folks. Hope you are all as enlightened by these amazing tips and experiences as we were! Thank you Matteo for answering all our questions!