Agent Wranglers

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.

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.