After reading Why I'm Frequently Absent from Open Source by James Long and listening the corresponding The Changelog episode, I dwelt on the idea and believe that open source maintainers...
- ... should never be ashamed if they don't have time for a project.
- ... should be honest with themselves and open with their users so that everybody can be on the same page
- ... are people and they have at one time or another responsibilities or hardships that they need to attend to which reasonably take them away from a project
- ... may also reasonbly decide that they don't like the direction of a project or that they would like to explore other things and may leave a project permanently.
Along this line of thinking I've created a set of descriptions for different levels at which a project might be maintained. A maintainer can use these to announce to their users the current ability that they have to dedicate to a project (no more "Is this project still maintained?" issues!)
- Actively Developed
- The maintainer(s) of this project are currently writing code for this project as well as responding to issues and integrating code contributions
- Actively Maintained
- The maintainer(s) of this project are responding to issues and integrating code contributions
- Inactively Maintained
- The maintainer(s) are around to answer questions, but do not currently have time to respond to issues or integrate code contributions
- Not Maintained
- The maintainer(s) are not around to work on this project and should offer to hand the project over
- Abandoned
- The maintainer(s) are not interested in spending any more time on this project. Users are welcome to fork it.
No matter your commitment to a project, it is in your user's interest to know the status of your projects (as well as in your own interest to not have to answer the question over and over). To that end I have created these easy-to-copy badges for your repo's README which can all be linked back to this page.
[![Active Development](https://img.shields.io/badge/Maintenance%20Level-Actively%20Developed-brightgreen.svg)](https://gist.github.com/cheerfulstoic/d107229326a01ff0f333a1d3476e068d)
[![Actively Maintained](https://img.shields.io/badge/Maintenance%20Level-Actively%20Maintained-green.svg)](https://gist.github.com/cheerfulstoic/d107229326a01ff0f333a1d3476e068d)
[![Inactively Maintained](https://img.shields.io/badge/Maintenance%20Level-Inactively%20Maintained-yellowgreen.svg)](https://gist.github.com/cheerfulstoic/d107229326a01ff0f333a1d3476e068d)
[![Not Maintained](https://img.shields.io/badge/Maintenance%20Level-Not%20Maintained-yellow.svg)](https://gist.github.com/cheerfulstoic/d107229326a01ff0f333a1d3476e068d)
[![Not Maintained](https://img.shields.io/badge/Maintenance%20Level-Abandoned-orange.svg)](https://gist.github.com/cheerfulstoic/d107229326a01ff0f333a1d3476e068d)
I like this idea. There are tools like Is it maintained? which try to discern the status of a project, but it's much better to be explicit.
We have a show shipping next week where we discuss messaging/communication around open source projects and how that can be formalized in repo-level metadata so machines and humans can read it. Until then, these kind of badges are about as good as we can do.