Listing criteria
What a project needs to be listed, and where its record goes when it falls short.
- Used to build or extend a website or web app. A creator builds their own site or app with it, or adds it to one: a framework, CMS, generator, library or tool, or a service such as analytics, comments or search. A finished application that is only installed and used is out, such as a social network, a forum, a wiki engine, a learning platform or a status page. Software built on other software, such as a WordPress plugin or a Hugo theme, gets its own record.
- Installable by the user. Source code or a distributable is available.
- Documented installation or deployment. Install steps in the README count.
- Not declared ended. What counts as an end signal is under Defunct below.
- A signal of use. A company behind it, or a public adoption figure such as GitHub stars or package downloads. The figure is recorded with its date and never used to sort or filter.
Where a record appears
Every candidate that was researched keeps a record or a row. Nothing is deleted.
- The register lists software that meets all five criteria and has released something in the last four years.
- Stubs hold records with no release or pre-release in four years, and records whose project site no longer shows the software. They keep their page and are checked again. A project that never tags a release is judged by its last commit instead. A record with neither date stays in the register.
- Hosted services sit beside the register: software sold only as a hosted service, such as a SaaS headless CMS. Criterion 2 is waived for them.
- Defunct holds software with a clear end signal: the repository is archived, the package registry flags it abandoned or deprecated, the project states it has ended or is unmaintained, or every version is past its end of life on endoflife.date. A long gap between releases is no end signal, and neither is a named successor on its own.
- Boundary cases are candidates not clearly in or out, listed until that is settled.
Every record is read again within a year of its last check.