Goutham Veeramachaneni, shares how he grew from a summer internship to become a maintainer for Prometheus and Cortex — and a Google Summer of Code mentor.
How did you get interested in cloud native technology?
I was doing my first summer internship at a startup, and they had very poor observability systems. They had to SSH into systems and check the logs and I was tasked with setting up a monitoring system across their 5,000 targets. I evaluated InfluxDB and Prometheus and chose Prometheus for the project. It was at a large scale, and we ran into problems like running out of inodes on disk. I jumped onto the Prometheus mailing list, and the community and maintainers were quick to answer all my questions, and this positive experience made me want to contribute. Unfortunately, I didn’t immediately find time. Six months later, I found out that CNCF was participating in GSoC, and I saw no reason not to contribute. 🙂 Fabian Reinartz was working on a new version of the storage engine and asked me if I could contribute. I jumped at the chance and never really stopped I guess 🙂
Do you remember your first open source contribution?
To Prometheus? Very vividly! It is this PR. I was very new to Go and all the best practices, and I needed to redo my PR several times, but the maintainers were super nice and explained everything clearly. The experience felt very welcome, and after it got merged I remember just going around my college dorm showing it to everyone who’d look. 😛
I did have a little experience contributing to OSS projects before though. I actually learned how to code contributing to Reaction Commerce.
How did your summer internship impact your career path?
So, a confession. I actually didn’t end up accepting the GSoC internship. CoreOS gave me another offer for an internship doing all the same things (contribute to Prometheus full-time), but I could also travel to the Berlin office for a couple of weeks to spend time with the team, and I decided to take that! I contributed to Prometheus and went to Berlin to hang out with the wider Prometheus team as well as the CoreOS team. 🙂 I also gave my first public talk at the Berlin Prometheus meetup!
After this, the community encouraged me to give more conference talks and I did just that. I’ve met and continue to meet so many amazing people in all the conferences! All the conversations I’ve had with the community over IRC, Slack, and in person affected my thought process and career path immensely. In fact, I was hired into Grafana Labs, my current employer, by Tom Wilkie, another Prometheus maintainer whom I met at conferences!
What other open source projects are you working on?
Most of my time today is spent maintaining and contributing to Cortex, another CNCF project that provides a horizontally scalable Prometheus implementation backed by cloud storages. We are currently using Cortex to provide a hosted Prometheus SaaS service at Grafana Labs, which is enabling me to contribute full-time to both the Prometheus and Cortex communities.
I also spent some time setting up and scaling an internal Jaeger cluster, during which I contributed some patches, dashboards, and alerts upstream. 🙂
What do you think are the most important responsibilities of a project maintainer?
Having a healthy and welcoming community! Code can be great, but for adopters and contributors, the first and ensuing interactions with the community will be more important than features and code. A maintainer needs to make sure that there is clear documentation for the project and also that newcomers to the community feel welcome. I think the Prometheus community did a great job at it, which made me come back to it 6 months after my initial interactions. 🙂
Have you worked with GSoC as a mentor since your own internship? What was it like to be on the other side of it?
I did! It was great! I mentored Ganesh Vernekar, and that was one of the most fulfilling things I’ve done in my career. He took over my Prometheus maintainer responsibilities when I started focusing on Cortex and made a ton of valuable contributions to the community in ways I could not have imagined! This is one of the instances where the student definitely surpassed the mentor! He is still very active in the Prometheus community making sure Prometheus and the surrounding community have the fastest and leanest TSDB out there!
Being on the other side was eye-opening. I did not realize the amount of time required to mentor someone, and I definitely leaned on the community to fill the gaps when I was busy. Having said that, it is also the most fulfilling role. 🙂
What advice would you give to the current crop of interns?
I would say once you’re comfortable around the community, start contributing outside just your code. Help users with their questions in Slack, IRC, mailing lists, etc. This will give you unparalleled insight into how people are using the software and even features you’ve built yourself! Also, don’t be afraid to leave a review on PRs. While you won’t catch all the bugs, you’ll still gain a lot of understanding into how reviews are done, and within no time you’ll be doing insightful reviews!
Don’t stop! If you just stop right after GSoC, you won’t fully benefit from the OSS ecosystem. It takes around six months of consistent contributions (they need not be full-time, just spend 10 hours per week, but be consistent) to become a maintainer, and once you become a maintainer you’ll be on a fast track in the software engineering career ladder. You’ll learn how to build communities and how to maintain OSS projects, which will come in handy even in your day job. And more likely you’ll end up getting a job where you’ll be paid to be part of the community you love. 🙂
And finally, make noise around the work and the project! Write blog posts, give conference and meetup talks, and just speak to people about your work. All of your work is open source, which means you can talk about it as much as you want. Do just that and people will start taking notice, and this will help you find potential employers as well.