DEV Community

Cover image for So What Does a Maintainer Do Anyway?
BekahHW for OpenSauced

Posted on

So What Does a Maintainer Do Anyway?

So far in this series, we’ve explored maintainership from a high level understanding of what’s required, why you should consider it, and how to get started. But what are the day-to-day tasks of a maintainer?

The first project I actively maintained was something that I hadn’t initially considered for open source contributions. It was open sourced, but I didn’t anticipate anyone contributing but me. When I was encouraged to share it with contributors during Hacktoberfest a couple of years ago, I had to make some updates so people understood what the purpose of the project was, how to run it, and the technology behind it. Looking back at it, there are, of course, things I could have added or done differently.

But I think it’s ok to think of putting a Minimum Viable Project (MVP) out there without all the extras that some other projects have. That’s why, in the post below, you’ll see two sets of bullet points for each category. The first is things that are good to have for your project when you start. The second is something you can progress to.

Code Review and Quality Control

Basics

Progression

  • Using GitHub Actions: GitHub (GH) Actions are automated tasks that can help you test code, enforce standards, and manage workflows. They are useful because they can automatically perform tasks that you'd otherwise do manually, saving time and reducing errors. Check out Setting up your first GitHub Action if you want to learn more.

One way to use them is for automated testing. For example, every time someone submits a PR, GitHub Actions could run a series of tests to check if the new code breaks anything. If a test fails, the PR can't be merged until the issue is fixed, ensuring that only working code is added to your project. I recently was able to determine why my PR failed by tracing information in the automated testing. You can check out how in my post What to do when your PR fails.

Testing and Stability

Basics

  • Manual Testing: You always want to make sure that software is working as intended. You won’t always get it right, but checking is a good start. Manual testing involves you or your contributors running the new features on your local machines to check if they work as intended and don't break existing features. It's a hands-on approach where you interact with the software directly.

  • Writing Basic Tests: This isn’t necessary, but could be a good practice to ensure your project continues to work. First, you’ll need to decide on a testing framework for your project. Once you’ve done that and set it up, you can encourage contributors to write simple tests for their code. This can be as straightforward as checking if a function returns the right output.

Progression

  • Automated Testing: Tools like Travis CI or Jenkins can automatically run tests every time changes are made to the code. This is important for larger projects to ensure everything works together.

  • Understanding Continuous Integration (CI): CI is a development practice where code changes are automatically tested and merged into a shared repository frequently. It helps catch issues early and improves software quality.

Documentation

Basics

Progression

  • Advanced Documentation Tools: You can use GitHub pages and tools like docusaurus or docsify to host your documentation and make it easily accessible. As your project grows, your documentation can include tutorials, FAQs, and more in-depth guides.

Operational Best Practices

Basics

  • Using Version Control: Tools like Git help you track changes to your code. Start by learning the basics of Git, like committing changes and creating branches.

Progression

  • Project Management Tools: As your project grows, tools like GitHub Projects can help you to manage more tasks and workflows and it provides transparency to your contributors. You can create a roadmap of what you’re implementing in your feature and give an expected timeframe.

Community Management and Engagement

Basics

  • Building a Community: Use platforms like Slack, Discord, or GitHub Discussions to create a space where your project’s users and contributors can interact, share ideas, and ask questions. Personally, I like starting with GitHub Discussions because it’s easier to establish as a knowledge base for answers to questions and doesn’t require the same amount of energy to support as a Slack or Discord.

  • Encouraging Participation: Regularly engage with your community by answering questions, providing updates, and seeking feedback on the project's direction.

Progression

  • Organizing Online Events: As your community grows, consider holding office hours, livestreams, hackathons, or contribution days to increase engagement and collaboration.

Now you have five tasks to complete to get started as a maintainer. Remember, it’s not about being perfect. It’s about learning and growing with your project. If you're enjoying this series and are interested in becoming a maintainer, we're happy to share that we're going to be launching a Becoming a Maintainer Course in the next couple of months. For updates on when and where to find that, you can sign up for our newsletter.

Top comments (0)