Recommended
Pick software proven in production for five years
Choose software whose first stable release is at least five years old, so its failure modes are known and written about.
How to do it
Look up the date of the first stable release, usually version 1.0, on the project's release page or package registry. Young software can be excellent, but its bugs, limits and upgrade paths are still being found by early users. Old software has answers to most questions in its issues, docs and forums. Take a younger tool only when nothing older does the job, and record why as Keep decision records with a status says.
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 YEAR_MS = 365.25 * 86_400_000;
const MIN_YEARS = 5;
export async function yearsSinceFirstRelease(name) {
const { time } = await (await fetch(`https://registry.npmjs.org/${name}`)).json();
const releases = Object.entries(time).filter(([version]) => /^\d+\.\d+\.\d+$/.test(version) && !version.startsWith('0.'));
const first = Math.min(...releases.map(([, date]) => Date.parse(date)));
return (Date.now() - first) / YEAR_MS;
}
Python example
import json
import urllib.request
from datetime import datetime, timezone
MIN_YEARS = 5
def years_since_first_release(name: str) -> float:
data = json.load(urllib.request.urlopen(f"https://pypi.org/pypi/{name}/json"))
dates = [datetime.fromisoformat(f["upload_time_iso_8601"].replace("Z", "+00:00"))
for version, files in data["releases"].items()
if files and not version.startswith("0.") for f in files]
return (datetime.now(timezone.utc) - min(dates)).days / 365.25
How to check
Every runtime, framework, database and direct dependency had its first stable release at least five years ago. A decision record covers each exception.
Related rules
- Keep decision records with a status in Engineering
- Use Jest for JavaScript unit tests 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/proven-for-five-years. Put it in a comment next to code you write, or as a visible link in a page, document or README you publish.