Why do I contribute to open source

Posted on Fri 23 August 2024 in FOSS

Recently, a student I was mentoring asked me what I do and why I do it. In the process of responding to this question I was obliged to confront it myself. This post outlines my thinking on the topic.

What do I do?

At time of writing (summer 2024) I am employed as a "data engineer/oceanographer" at the Voice of the Ocean foundation. When I describe my job to people though, I rarely use any of those words. My work typically consists of:

  • Read and act on automated error reports
  • SSH into various servers to keep data pipelines and websites working
  • Debug CI systems on GitHub
  • Manage Issues and Pull Requests
  • Contribute to open source projects directly and less directly related to my work
  • Give occasional directions to our fleet of autonomous robots

Basically, I am a programmer (though patio11 would tell me to call myself anything else). I haven't done any oceanography in the classic sense since I finished my PhD. I don't really miss it to be honest. Occasionally other more interesting duties come up like going to sea, contributing to scientific papers in a small way and, my personal favourite, teaching and mentoring through projects like OceanHackWeek and Google Summer of Code.

Why do I do it?

When I started this job, fresh from my PhD, I had a lot of freedom to define it. There are benefits to being a data department of one person! I decided from the start that I would use and contribute to open source software as much as possible. This was partly an ideological choice. I believe and openness, giving and collaboration for their own sake. When the time came for me to give the traditional final-year PhD student departmental seminar, I used my 40 minutes to promote the use of open source within oceanography, rather than presenting the results on my PhD.

I enjoy a position of great privilege, I have a steady open ended contract (thanks unions!), no pressure to publish and freedom to choose whatever tech stack I want as long as I keep the data flowing and the websites up for the requisite number of 9s. I have used my working hours to improve and expand various libraries that our dataflow depends on, like pyglider, ERDDAP and erddapy. I have also dedicated a lot of time to writing and presenting various tutorials, mostly in the realm of accessing data from and administering, ERDDAP servers (full list here).

I am dedicated to the cause of open science. I ensure that everything I write is openly accessible, and where possible I contribute to existing community projects, rather than re-inventing them myself. While I believe in this mission, I wonder if it is the most effective and socially beneficial use of my working hours.

What next?

As a one person data science team, my opportunities for professional growth are limited. I am acutely aware that my technical skills are not developing as they would in a full-time software development job. What improvements I do make are mostly via learning from the small number of professionals in similar roles to mine, notable the inimitable ocefpaf, whose packages, PRs, guides and personal advice have given me some of the most valuable insights of my career. Being a software developer in the 21st century, there are near infinite opportunities to self improve and collaborate across companies, disciplines and borders. It's one of the things I appreciate most about my profession. But it's hard to take advantage of these opportunities. It is all to easy to become caught in the day to day cycle of error reports, PRs, failing CI and refactoring, and kick long term development down the road. I am amassing technical debt in my codebases and my skillset.

One day I will move on to pastures new, but I don't think it will be anytime soon. There are a lot of improvements I can make in my current role. I have a to-do list at least a year long and I'd like to train someone else in my role before shipping out. I also like living here. As to what would cause me to move, I am personally quite invested in Gothenburg, but a bit homesick for the UK too.

I have followed the recent development of Research Software Engineering as a career path with great interest. I sometimes wonder what my life would be like as an oceangoing tech. Some of my happiest times have been spent at sea, working 12 hour days as part of a cohesive team. I enjoy writing code far more than I ever did writing papers, maybe I should commit to it and become a real developer. Morally, I know I should do more to prevent the global catastrophe of climate breakdown. When I am asked in 20 years what I was doing in the last decade when we could have avoided a 2 C rise in global temperatures, what will I have to say for myself?