Proposal to easily show the maintenance status of a project.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.
You often find interesting projects on Codeberg/GitHub/GitLab but don't know if they are still maintained by anyone. This proposal tries to improve this situation by introducing simple and clearly defined labels for the maintenance status of a project.
[![maintenance-status: actively-developed](https://img.shields.io/badge/maintenance--status-actively--developed-brightgreen)](https://gist.github.com/rusty-snake/574a91f1df9f97ec77ca308d6d731e29)
This project is being actively developed, new features are planned and the maintainer responds to issues/PRs in a reasonable time.
Attribute | Value |
---|---|
New Features | Yes |
Bug fixes | Yes |
Security fixes | Yes |
Answer questions | Yes |
use | Ok |
start use | Ok |
[![maintenance-status: passively-maintained](https://img.shields.io/badge/maintenance--status-passively--maintained-forestgreen)](https://gist.github.com/rusty-snake/574a91f1df9f97ec77ca308d6d731e29)
This project is passively maintained, bugs are fixed, but no new features are planned. The maintainer will try to respond to issues/PRs over time.
Attribute | Value |
---|---|
New Features | No |
Bug fixes | Yes |
Security fixes | Yes |
Answer questions | Yes |
use | Ok |
start use | Ok |
[![maintenance-status: irregularly-developed](https://img.shields.io/badge/maintenance--status-irregularly--developed-olive)](https://gist.github.com/rusty-snake/574a91f1df9f97ec77ca308d6d731e29)
This project is being irregularly developed, new features are planned, bugs are fixed and the maintainer responds to issues/PRs over time. However, this happens only irregularly.
Attribute | Value |
---|---|
New Features | Yes |
Bug fixes | Yes |
Security fixes | Yes |
Answer questions | Yes |
use | Maybe |
start use | Maybe |
[![maintenance-status: as-is](https://img.shields.io/badge/maintenance--status-as--is-yellow)](https://gist.github.com/rusty-snake/574a91f1df9f97ec77ca308d6d731e29)
The project is feature complete. The maintainer does not intend to continue working on it or providing support. It is perfectly fine to use this project unless you need support or find a bug. The maintainer MAY still fix security vulnerabilities or answer questions, however there is no guarantee that this will happen. When switching to this status, all known bugs (at this time) SHOULD be documented somewhere.
Attribute | Value |
---|---|
New Features | No |
Bug fixes | No |
Security fixes | Maybe |
Answer questions | Maybe |
use | Ok |
start use | Ok |
[![maintenance-status: deprecated](https://img.shields.io/badge/maintenance--status-deprecated-orange)](https://gist.github.com/rusty-snake/574a91f1df9f97ec77ca308d6d731e29)
This project is deprecated, it will be obsolete in the future. The maintainer continues to work on it and it is fine to continue using it for now while you look for or switch to alternatives. Of course, you should not start using this project.
Attribute | Value |
---|---|
New Features | No |
Bug fixes | Yes |
Security fixes | Yes |
Answer questions | Yes |
use | Ok |
start use | No |
[![maintenance-status: obsolete](https://img.shields.io/badge/maintenance--status-obsolete-red)](https://gist.github.com/rusty-snake/574a91f1df9f97ec77ca308d6d731e29)
This project is obsolete, the maintainer strongly advises against using it. The maintainer MAY continue to work on it. The maintainer SHOULD list alternatives and provide instructions for switching to alternatives.
Attribute | Value |
---|---|
New Features | No |
Bug fixes | Maybe |
Security fixes | Maybe |
Answer questions | Maybe |
use | No |
start use | No |
[![maintenance-status: personal](https://img.shields.io/badge/maintenance--status-personal-hotpink)](https://gist.github.com/rusty-snake/574a91f1df9f97ec77ca308d6d731e29)
This is a personal project and not intended to be used by anyone else. Interested people can use it as a reference and pick up parts from it.
Attribute | Value |
---|---|
New Features | Maybe |
Bug fixes | Maybe |
Security fixes | Maybe |
Answer questions | Maybe |
use | No |
start use | No |
[![maintenance-status: experimental](https://img.shields.io/badge/maintenance--status-experimental-palevioletred)](https://gist.github.com/rusty-snake/574a91f1df9f97ec77ca308d6d731e29)
This project is a technical demonstration and is not intended for serious use.
Attribute | Value |
---|---|
New Features | Maybe |
Bug fixes | Maybe |
Security fixes | Maybe |
Answer questions | Maybe |
use | No |
start use | No |
To apply the basic variant of this proposal, you MUST add a badge to the README of the project indicating the maintenance status. There are two options:
- An image like the ones used above. You SHOULD choose this option if the format of your README supports images (e.g. markdown). If you choose this option, you MUST provide a fallback message styled like the second option.
- A text message in the form
maintenance-status: <STATUS>
(example:maintenance-status: actively-developed
). If the format of your README does not support images (e.g. plain text) or a fallback message for images, you MUST choose this option.
In order to prevent outdated information, it is RECOMMENDED to add a date to the maintenance status. This date SHALL be renewed no later than every three months.
If the date is older then three months, you should ask the maintainer to update
it (except for as-is
and obsolete
). Furthermore, the maintenance status
SHOULD be treated according to this table.
stated status | activity in the last month | no activity in the last month |
---|---|---|
actively-developed |
passively-maintained |
as-is |
passively-maintained |
passively-maintained |
as-is |
irregularly-developed |
irregularly-developed |
irregularly-developed |
as-is |
as-is |
as-is |
deprecated |
deprecated |
obsolete |
obsolete |
obsolete |
obsolete |
personal |
personal |
personal |
experimental |
experimental |
experimental |
[![maintenance-status: actively-developed (as of 2021-01-01)](https://img.shields.io/badge/maintenance--status-actively--developed_%28as_of_2021--01--01%29-brightgreen)](https://gist.github.com/rusty-snake/574a91f1df9f97ec77ca308d6d731e29)
[![maintenance-status: passively-maintained (as of 2021-01-01)](https://img.shields.io/badge/maintenance--status-passively--maintained_%28as_of_2021--01--01%29-forestgreen)](https://gist.github.com/rusty-snake/574a91f1df9f97ec77ca308d6d731e29)
[![maintenance-status: irregularly-developed (as of 2021-01-01)](https://img.shields.io/badge/maintenance--status-irregularly--developed_%28as_of_2021--01--01%29-olive)](https://gist.github.com/rusty-snake/574a91f1df9f97ec77ca308d6d731e29)
[![maintenance-status: as-is (as of 2021-01-01)](https://img.shields.io/badge/maintenance--status-as--is_%28as_of_2021--01--01%29-yellow)](https://gist.github.com/rusty-snake/574a91f1df9f97ec77ca308d6d731e29)
[![maintenance-status: deprecated (as of 2021-01-01)](https://img.shields.io/badge/maintenance--status-deprecated_%28as_of_2021--01--01%29-orange)](https://gist.github.com/rusty-snake/574a91f1df9f97ec77ca308d6d731e29)
[![maintenance-status: obsolete (as of 2021-01-01)](https://img.shields.io/badge/maintenance--status-obsolete_%28as_of_2021--01--01%29-red)](https://gist.github.com/rusty-snake/574a91f1df9f97ec77ca308d6d731e29)
[![maintenance-status: personal (as of 2021-01-01)](https://img.shields.io/badge/maintenance--status-personal_%28as_of_2021--01--01%29-hotpink)](https://gist.github.com/rusty-snake/574a91f1df9f97ec77ca308d6d731e29)
[![maintenance-status: experimental (as of 2021-01-01)](https://img.shields.io/badge/maintenance--status-experimental_%28as_of_2021--01--01%29-palevioletred)](https://gist.github.com/rusty-snake/574a91f1df9f97ec77ca308d6d731e29)
Draft
Because the meaning of the different maintenance statuses may change between different versions of this proposal, you should link to the exact reversion you are using.
Unresolved: How to provided snippets with the current revision.
This proposal is heavily inspired by https://doc.rust-lang.org/cargo/reference/manifest.html#the-badges-section.
- 2021-07-04 (2.0.0): added deprecated status
- 2021-07-04 (2.0.0): changed color of passively-maintained from yellowgreen to forestgreen
- 2021-07-04 (2.0.0): added irregularly-developed status
- 2022-05-30 (3.0.0): reworded Motivation, as-is, deprecated, obsolete
- 2022-05-30 (3.0.0): redefined experimental as technical demonstration
- 2022-05-30 (3.0.0): added personal status
- 2022-05-30 (3.0.0): added versioning draft
- 2022-05-30 (3.1.0): added attribute tables
all code snippets are licensed under CC0 1.0
maintenance status by rusty-snake is licensed under CC BY-SA 4.0