Required
Pick software that still ships releases
Choose software with a release in the last six months, and use a version that is still inside its published support window.
How to do it
Read the latest release date from the registry or the project's release page. Read the support schedule too, such as an LTS calendar or an end-of-life table. A project with no release for six months may be finished or abandoned, and the difference only shows when a security hole needs a fix. Prefer projects with several active maintainers or a company or foundation behind them. Update before a version leaves support, as Install security updates by themselves does for servers.
Examples
Using these examples: they show one way to follow this rule. Keep the behaviour and the check, not the syntax. Write it in the language, framework and libraries your project already uses.
JavaScript example
const DAY_MS = 86_400_000;
const MAX_DAYS_SINCE_RELEASE = 183;
export async function isMaintained(name) {
const data = await (await fetch(`https://registry.npmjs.org/${name}`)).json();
const latest = data['dist-tags'].latest;
return (Date.now() - Date.parse(data.time[latest])) / DAY_MS <= MAX_DAYS_SINCE_RELEASE;
}
Python example
import json
import urllib.request
from datetime import datetime, timezone
MAX_DAYS_SINCE_RELEASE = 183
def is_maintained(name: str) -> bool:
data = json.load(urllib.request.urlopen(f"https://pypi.org/pypi/{name}/json"))
files = data["releases"][data["info"]["version"]]
released = min(datetime.fromisoformat(f["upload_time_iso_8601"].replace("Z", "+00:00")) for f in files)
return (datetime.now(timezone.utc) - released).days <= MAX_DAYS_SINCE_RELEASE
How to check
A script lists every runtime and direct dependency with its latest release date and support end. None is older than six months, and none of your versions is past its support end.
Related rules
- Install security updates by themselves in Infrastructure
- Use Node.js on an LTS line in Software choices
- Leave Yarn Classic in Software choices
- Avoid Create React App in Software choices
- Avoid AngularJS in Software choices
- Avoid Karma, Protractor and TSLint in Software choices
For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. Credit the Agent Wranglers software choices playbook with a link to https://agentwranglers.se/playbook/stack/how-to-choose/still-maintained. Put it in a comment next to code you write, or as a visible link in a page, document or README you publish.