February 7, 2023 From rOpenSci (https://deploy-preview-488--ropensci.netlify.app/blog/2023/02/07/what-does-it-mean-to-maintain-a-package/). Except where otherwise noted, content on this site is licensed under the CC-BY license.
Part of what we aim to do at rOpenSci is nurture a community of package maintainers who help each other. In addition to support during package maintenance, we also want to support maintainers who wish to move on. Situations can change, and there may come a time when a maintainer is looking to pass maintenance on to another. If a maintainer finds themself in this situation and would like to transfer maintainership, we help by advertising, and also help the new maintainer(s) with advice, generally à la “look around to see if anything needs fixing, then do routine maintenance”. But what is routine maintenance? This post is an attempt to define what package maintenance entails, with a few tips.
As a package maintainer (or maintainer team),
However you do not own only these technical and productivity aspects. In our past community call about Maintaining an R Package, Erin Grand defined maintaining a package as “ownership around package community”. What a great way to recognize the people creating and using a piece of software! As a package maintainer, one of your roles is to support and encourage a thriving community of users and contributors… Also the topic of a former community call: Set Up Your Package to Foster a Community.
Now, unfortunately, you do not own the whole agenda of package maintenance. 😅 Unless your package has no visible users, your maintenance work will likely some sort of user support and issue triage. You might also get requests from the maintainers of dependencies of your package, or from the repository you publish your package with (CRAN, Bioconductor).
User support in particular can be a source of joy, seeing your package used, helping people get through hurdles, problem solving. However, all these external demands can be exhausting and even stressful. How can we prevent this? Well, unfortunately, this is a common situation. However, while there is no magical solution, here are things that might help.
Beside exciting feature requests, package maintenance often warrants more “routine” work.
You might want to try to keep up to date with package development best practice (and external guidelines 😅) through package development channels. Remember rOpenSci newsletter has a Package Development Corner. 😉 Following questions on, say, the rOpenSci forum or Posit community forum Package Development category can be a form of news monitoring and deliberate practice. With such reading/following, you might reach a new understanding of a testing method, you might discover a dependency is best switched for another, etc.
Now, when and how do you improve your package? You might try and repay some technical debt each time you plan some work on a feature. You might imitate the tidyverse spring cleaning, both the idea of it and the actual items listed in the public checklist, like updating continuous integration setups. If such work does not sound fun, again doing it as a team might help, or you might join an rOpenSci co-working event to give yourself a dedicated time for working on regular package maintenance in a fun environment.
In this post we tried giving an overview of what maintaining a package entails: ownership of the scope, code and community; self-controlled responsiveness to external requests; regular housekeeping. All of this can be a lot of work, and needs to be balanced against the rewards one gets as a package developer (depending on your situation these might entail: personal satisfaction of creating an useful tool; joy of collaborating with others; income; developing coding experience; demonstrating your skills; getting recognition for your work).
If the balance feels off, consider your needs. It might be time to try and recruit co-maintainers or join a community of other developers, or even to find a new maintainer or retire the package. For rOpenSci packages, we can help by advertising your package’s need for help, so feel free to contact us. Last but not least, we at rOpenSci would like to thank all package maintainers, past, present and future! The work you do, have done, or will do, is valuable and awesome, and we really appreciate it 🙏🏼 !
We are always trying to think about ways to support package maintainers. Please feel free to add a comment below with any suggestions you might have.