About
What the catalog says, and how it knows.
153 developer tools, each listed with what it replaces. The rest of what you see on a tool comes from GitHub, not from whoever added it.
What an entry states
Every tool is a small YAML file under data/tools/. It names the tool, its GitHub repository, its category, the tools it replaces with a fit level for each, and an affiliation when there is one. That is all a contributor can write.
An entry never states stars, a licence, a version or a description. The schema rejects them, so a pull request cannot inflate a star count or claim a release that does not exist.
The nightly refresh
Every day at 03:17 UTC, and whenever the catalog data changes on the main branch, aGitHub Actions workflow reads every listed repository from the GitHub API:
- description, homepage, language, licence, stars, forks and topics
- whether the repository is archived, and the date of its last push
- the latest release, or the latest tag when there is no release, and whether it is signed
- the last five published releases, shown on the tool page
- the maintainer file described under verified
When anything changed, the workflow commits the new catalog and a new build of this site goes out. A tool whose repository GitHub no longer returns, because it was deleted or made private, is left out of the catalog.
Marks
- ✓ signed
- Next to the latest version. The tag carries a signature GitHub verified, or, for a lightweight tag, the commit it points at does. Only the latest release is checked.
- Verified by its maintainers
- The tool's own repository has an
.awesome-alternativesfile at the root of its default branch, withslug:set to this entry. Only someone with write access to the repository can add it, so the mark says its maintainers stand behind the entry. The refresh reads the file every night. - archived
- The repository is archived and gets no more changes. An archived tool is exactly what people look to move off, so it is accepted only as something other entries replace, never as an alternative, and it does not get theno push warning.
- Other
- Shown as the licence when GitHub detects one but cannot map it to an SPDX identifier. When GitHub detects none, the tool reads None detected and gets the no licence warning.
Fit levels
Each replacement carries one, set by whoever adds the entry.
- Drop-in
- Accepts the original's configuration or interface unchanged: you swap it in without touching your setup. Asking for a drop-in in the search keeps only these.
- Full replacement
- Covers the same job, in its own way. Expect to migrate your configuration.
- Partial
- Covers part of the job. The note under the tool says which part.
Warnings
A warning never removes a tool. It is something a maintainer looks at before merging a pull request, and something you may want to know before you depend on the tool.
- Repository moved
- The repository now lives under another name or owner. GitHub redirects the old address, but the entry should be updated.
- No licence detected
- GitHub detects no licence, so the terms under which you can use the code are unclear.
- No release or tag
- The repository has neither a release nor a tag, so there is no version to pin.
- No push in a year
- Nothing was pushed for more than 365 days. Archived repositories are left out of this one.
- Unusual star burst
- 50 or more of the most recent stars arrived within 24 hours. Bought stars arrive in bursts, and so does a launch on Hacker News, which is why a person decides. This check runs when a pull request adds or edits the entry, not during the nightly refresh. GitHub refuses to page deep into the stargazers of the largest repositories, and for those the check is skipped rather than guessed.
Some problems block a pull request instead: a repository that is private, a fork, archived but offered as an alternative, younger than 30 days, or already listed under another slug. The contributor guide lists every check.
Affiliation
Whoever maintains, works on or is paid by a tool has to say so in its entry. Listing your own project is welcome, not saying so is grounds for removal. When an entry has an affiliation, the tool page shows it as written.
How search works
Your query is first read as keywords: the names of tools that others replace, the languages and licences in the catalog, and "drop in". When no tool to replace is named, a small embedding model running on the search server compares the query with every tool's description. If one tool to replace clearly stands out, it is picked; otherwise the results are ranked by how close they are to the query. Only when neither step finds a tool to replace, and the server has a key for it, is the text of the query sent to Jev, an external service, to read it. Its reading is cached on the server for a day. The results say which one read your query: "Matched locally" or "Read by Jev". The privacy page says what is sent and what is kept.
Licences
The catalog data is dedicated to the public domain under CC0 1.0. The code of the site, the API and the scripts is under the MIT licence.