What makes a good maintainer? ![rw-book-cover](https://miro.medium.com/v2/da:true/resize:fit:1024/0*rIXU-l3UPoSAcl8J) ## Metadata - Author: [[Martin Thoma]] - Full Title: What makes a good maintainer? - Category: #articles - Document Note: --- tags: - OpenSource - PyPDF2 - SoftwareMaintenance Author: [Author's Name] Source: [Author/Book/Article/Website] Reference: [Page numbers/Link] date created: 2024-09-10 15:00 --- # Title: What Makes a Good Open-Source Maintainer? Reflections from the PyPDF2 Project ## Table of Contents: - [Summary](#summary) - [Main Content](#main-content) - [What is PyPDF?](#what-is-pypdf) - [How I Became the Maintainer of PyPDF2](#how-i-became-the-maintainer-of-pypdf2) - [What is a Good Maintainer?](#what-is-a-good-maintainer) - [Challenges of Maintaining Legacy Software](#challenges-of-maintaining-legacy-software) - [Notes](#notes) - [References](#references) - [Paraphrase](#paraphrase) - [Newsletter](#newsletter) - [Action Items](#action-items) - [Hypotheses](#hypotheses) - [Methodology](#methodology) - [Questions](#questions) - [Future Research](#future-research) - [Implications](#implications) - [Logical Validity](#logical-validity) - [Conclusion](#conclusion) ### References: - PyPDF2 Project and Open-Source Maintenance Reflections. ## 📝 Summary: This article reflects on the author's experience as the maintainer of the PyPDF2 project. It provides insights into the nature of maintaining open-source software, focusing on challenges such as legacy software, community expectations, and the balance between maintaining compatibility and innovation. The author's personal journey and strategies for successful open-source software maintenance offer guidance to other maintainers. ## 📖 Main Content: ### What is PyPDF? PyPDF is a free, open-source Python library for manipulating PDF files. Its features include splitting, merging, transforming, and adding metadata or passwords to PDFs. Despite being inactive from 2016 to 2022, PyPDF2 remained a popular tool in the Python community due to its utility. In 2022, the author became the maintainer of the project, continuing to develop it without the constraint of backward compatibility. ### How I Became the Maintainer of PyPDF2 The author became the maintainer by accident, starting with a book project that required an up-to-date PDF library. After noticing PyPDF2's inactivity, the author asked the original maintainers to mark it as abandoned. Instead, they offered him the role of maintainer. Despite initial hesitations due to the unpaid nature of the role, the author took on the challenge, drawn by the opportunity to "garden" neglected software used by many. ### What is a Good Maintainer? The qualities of a good open-source maintainer include balancing community needs, innovation, and technical debt. The author emphasizes the importance of making decisions that benefit the long-term viability of the project, even when it involves breaking compatibility. A good maintainer needs a clear vision, strong problem-solving skills, and the ability to communicate with contributors and users effectively. ### Challenges of Maintaining Legacy Software Maintaining a widely-used but outdated project like PyPDF2 involves unique challenges. These include handling a large, sometimes dormant codebase, understanding the community's needs, and weighing the value of backward compatibility against the benefits of modernization. The author discusses how these challenges shaped his approach to maintaining the software. ## 🗒️ Notes: - PyPDF2 is a widely-used, open-source PDF library. - The author became the maintainer after the project had been inactive for six years. - A good maintainer balances compatibility, innovation, and technical debt. - Maintaining legacy software comes with challenges, especially in open-source contexts. ## 📖 References: - PyPDF2 Project documentation and community feedback. ## 🗣️ Paraphrase: 1. **Original**: "PyPDF2 was actively developed from 2011 to 2016 and works for a lot of use cases. Although it didn’t receive any updates until 2022, the Python community still used it extensively." **Paraphrased**: "Despite a lack of updates between 2016 and 2022, PyPDF2 remained widely used in the Python community because it addressed numerous practical needs." 2. **Original**: "Software that is still used by hundreds or thousands of people and wasn’t maintained for 6 years is in a weird spot." **Paraphrased**: "Managing software that serves thousands of users but hasn’t been maintained for six years presents unique challenges." ## 📰 Newsletter: 🚀 **Open-Source Insights: Maintaining PyPDF2** Maintaining an open-source project like PyPDF2 can be a complex and rewarding task. In this article, the current maintainer reflects on his journey of taking over the project after years of inactivity. He discusses what it takes to be a good maintainer—balancing community needs with technical innovation and dealing with legacy code. Whether you're an open-source contributor or simply interested in how successful projects are maintained, this piece offers valuable insights. Check out the full post for tips on being a great maintainer and keeping open-source projects thriving! 🌍 ## ✅ Action Items: - **For maintainers**: Evaluate whether backward compatibility should be sacrificed for long-term improvements. - **For contributors**: Engage with maintainers to help address legacy issues. - **For the community**: Provide feedback on the most critical pain points to help steer future updates. ## 🧪 Hypotheses: - **Hypothesis 1**: Regular updates and breaking backward compatibility when necessary will increase the long-term sustainability of an open-source project. - **Hypothesis 2**: Community feedback plays a critical role in determining whether legacy software should prioritize backward compatibility or modernization. ### 📊 Methodology: - Conduct surveys of open-source maintainers on how they balance backward compatibility with innovation. - Analyze feedback from users on how breaking compatibility impacts their experience with legacy software. ### ❓ Questions: - How do you determine when it’s worth breaking backward compatibility in open-source software? - What role does the community play in guiding a maintainer’s decisions? ### 🔮 Future Research: - Explore the success rates of projects that have broken compatibility in favor of modernization. - Investigate how maintainers can effectively manage technical debt while accommodating community needs. ### 💡 Implications: Understanding how to balance backward compatibility with innovation can lead to the sustainable development of open-source projects, ensuring they remain viable and valuable for years to come. ### ✅ Logical Validity: - **Sound Deductive Reasoning**: The author’s approach to balancing technical debt and modernization is grounded in practical experience and reasoning, showing a logical progression from problem identification to solution. - **Causal Reasoning**: The cause-and-effect relationship between maintenance practices and long-term project sustainability is well supported by evidence from PyPDF2’s revival. ## 🎯 Conclusion: The article provides valuable insights into what it means to be a good open-source maintainer, using the author's experience with PyPDF2 as a case study. A good maintainer must navigate the challenges of maintaining a legacy project, balancing backward compatibility with the need for modernization, and fostering a supportive community of users and contributors. - Document Tags: [[python]] [[open source]] - Summary: Being a good maintainer of open-source software requires certain qualities and responsibilities. In this article, the author reflects on their experience as the maintainer of the pypdf/PyPDF2 library. They explain that pypdf is a pure-python PDF library used for various functions and was actively developed from 2011 to 2016. The author became the maintainer in 2022 after being asked if they were interested in taking on the role. Despite not receiving payment or recognition, they were motivated by the challenge of maintaining a widely used but neglected project. - URL: https://medium.com/@martinthoma/what-makes-a-good-maintainer-891efe5c8804 ![](https://miro.medium.com/v2/resize:fit:700/0*rIXU-l3UPoSAcl8J) Are you a maintainer of open-source software who wants to become better? In this article, I reflect on my work as the maintainer of pypdf/PyPDF2. The first two sections give you some context. They can be skipped if you just want an answer to the question: *What is a good maintainer?* ### What is pypdf? pypdf is a free and open-source pure-python PDF library capable of splitting, merging, cropping, and transforming the pages of PDF files. It can also add custom data, viewing options, and passwords to PDF files. PyPDF2 can retrieve text and metadata from PDFs as well. It was actively developed from 2011 to 2016. It works for a lot of use cases and thus the Python community still used the library a lot — although it didn’t receive any update until 2022. In April 2022, I became the maintainer of PyPDF2. PyPDF2 is a fork of pyPdf — a way older project. The developers of PyPDF2 always wanted to keep backward compatibility. I didn’t feel that need. If I think the overall project benefits from breaking compatibility, I will do it. ### How I became the maintainer of PyPDF2 I became the maintainer of PyPDF2 in April 2022. It was a random event — I never intended to become the maintainer. I was writing a book about software development with Python. One section is about PDF — which meant that I needed to look up the current situation of libraries. I wanted to make the situation for readers of my book as easy as possible and asked PyPDF2 maintainers to officially mark their project as dead. That was the point when I was asked if I was interested in becoming the maintainer. Knowing my passion for software gardening, I hesitated to say “yes”. I tend to spend an insane amount of time when I get hooked on a topic. There was (and is) nothing in it for me: I am already employed at a great company, and I am recognized as a very senior developer. Maintaining PyPDF2 is not paid. I am not even the original author, meaning that I don’t get credits for that. What should I say … I got hooked by the challenge. Software that is still used by hundreds or thousands of people and wasn’t maintained for 6 years is in a weird spot:, What makes a good maintainer?, Martin Thoma, 01hpkxe5qr1s1ndyx09ynttxr5.