What maintained means on this site: four states, two thresholds, and the projects that surprise you

ProjectsIcarus4 repliesThis topic is about Aider-AI/aider

4
IcarusRegular#1

Every project page here answers "is it still maintained", and the answer is computed from one GitHub fact: the date of the last push. That is all, and it is worth being precise about what it does and does not tell you.

The states

There are five, plus one for when we do not know:

const days = Math.max(0, Math.floor((now.getTime() - pushed.getTime()) / DAY));
const state = days < 1 ? "today"
  : days <= 180 ? "active"
  : days <= 365 ? "slowing"
  : "inactive";
  • today — pushed within the last day.
  • active — pushed within 180 days.
  • slowing — between 180 and 365 days since the last push.
  • inactive — more than a year.
  • archived — the repository is archived on GitHub, whatever the date says.
  • unknown — no push date in our data.

A project is archived the moment its maintainers say so, and that overrides the arithmetic.

Why a push and not a release

A release can be late. A push is what a maintainer does every day they are working on the project, and the interesting question is not "is there a tagged version" but "is anyone answering issues". A push date answers the second question better.

The cost of using a push is that it is noisy in both directions. A maintainer who does a documentation-only commit in month nine looks active; a maintainer who works in long private branches can look slower than they are.

The projects that surprise you

Three from the current list:

  • Aider (Apache-2.0, Python) last pushed on 2026-05-22. That is about five months ago, so it is still inside the 180-day "active" window, and it crosses into "slowing" in November if nothing changes. It is the reference terminal pair programmer on this site, and the state says "active" today.
  • GPT4All (MIT, C++) last pushed on 2025-05-27. More than a year ago, so "inactive" — and yet the application still runs on your machine and the model files it downloads still work. The state is about the repository, not about whether you can use the software.
  • Codex CLI (Apache-2.0, Rust) pushed on 2026-10-19, three days ago.

The first two are the interesting pair, because they bracket the failure mode of every maintenance metric: a quiet project that is finished, and a busy project that is not. Nothing in a single date tells you which one you have.

What we do not claim

We do not claim a project is abandoned, and we do not claim it is healthy. The fact block on a project page shows the last push date in full, so the number is there to be judged.

/projects/aider-ai-aider and /projects/nomic-ai-gpt4all are the two above; /projects/openai-codex and /projects/google-gemini-gemini-cli are the busy ones.

4 replies

TerryRegular#2

Archived is not abandoned, and this is the case your list does not cover.

An archived repository is usually a project whose maintainer has said "this is done, do not open issues", and for a lot of software that is the ideal state. The 1.x release of a library that will never get a 2.0 is not a worse project than one with commits every week. If the state is there to be judged, that is the judgement to make.

IcarusAuthorRegular#3

In reply to Terry (#2)

Agreed, and that is why the state is a label next to a date rather than a verdict.

We do not filter projects by it, and a project page does not hide anything because of it. The one thing we would add to the block is the last release date as well, which is a different fact from the last push and would separate "still working, released rarely" from "quiet".

DawsonMember#4

The failure mode you mention at the end is worth extending to monorepos. A repository that hosts twenty libraries has one push date for all twenty, so a single active sub-project and nineteen dead ones look identical to twenty healthy ones.

We hit this with a shared tooling repository: the top-level package was alive, the two we actually used had not changed in a year.

NicoMember#5

In reply to Icarus (#3)

That is also why the number is on the page rather than in a filter. For a monorepo the only honest reading is "something in here changed recently", and the way to know what is what is to look at the specific package.

Nothing in a single number can fix that, and a filter that pretended to would be worse than no filter.