À propos

Ce que dit le catalogue, et comment il le sait.

2754 outils de développement, chacun listé avec ce qu'il remplace. Le reste de ce que vous voyez sur un outil vient de GitHub, pas de la personne qui l'a ajouté.

Ce qu'une entrée affirme

Chaque outil est un petit fichier YAML sous data/tools/. Elle nomme l'outil, son dépôt GitHub, sa catégorie, les outils qu'il remplace avec un niveau de remplacement pour chacun, et une affiliation s'il y en a une. C'est tout ce qu'un contributeur peut écrire.

Une entrée n'indique jamais d'étoiles, de licence, de version ni de description. Le schéma les rejette, donc une pull request ne peut ni gonfler un nombre d'étoiles ni revendiquer une release qui n'existe pas.

La mise à jour nocturne

Chaque nuit, et à chaque changement des données du catalogue sur la branche main, le refresh lit chaque dépôt listé depuis l'API GitHub :

La page de l'outil en tire à quel point un projet est vivant, jamais une note. Son âge compte depuis la création du dépôt. Le rythme des releases est l'écart médian entre ses dernières releases stables, affiché à partir de trois. Les contributeurs actifs sont les auteurs de commits distincts sur la branche par défaut ces 90 derniers jours : les comptes dont le nom finit par [bot] sont écartés, et un commit lié à aucun compte GitHub compte par son email, qui n'est jamais publié. Seuls les 500 derniers commits sont lus, un projet plus actif affiche donc un minimum comme 40+. Un workflow en squash merge ne crédite qu'un auteur par pull request, même à plusieurs mains, et pour un outil logé dans un monorepo le nombre couvre tout le dépôt, ce que la page précise. Les plateformes n'apparaissent que si les noms de fichiers de la dernière release les nomment, et rien n'est deviné sinon, ni pour un outil dans un monorepo, dont la dernière release peut être celle d'un autre paquet.

Dès que quelque chose a changé, le refresh commite le nouveau catalogue et une nouvelle version de ce site est publiée. Si GitHub ne renvoie plus le dépôt d'un outil listé, parce qu'il a été supprimé ou rendu privé, l'outil garde ses dernières données publiées et une pull request qui retire son entrée est ouverte, pour qu'une personne décide : un outil ne quitte le catalogue que par une telle pull request.

Chaque refresh compare aussi le nouveau catalogue au précédent et note ce qui a changé : une licence, le nom d'un dépôt, un archivage, une nouvelle release, un outil qui arrive ou qui part. La page ce qui a changé le liste par jour, avec un flux RSS pour tout le catalogue, un par outil et un par catégorie. Une variation d'étoiles ne compte jamais.

Entre deux passages nocturnes, une release publiée met à jour son outil en quelques minutes quand le dépôt a installé l'app GitHub awesome-alternatives ou lance refresh-action dans son workflow de release.

Marques

✓ signée
À côté de la dernière version. Le tag porte une signature vérifiée par GitHub ou, pour un tag léger, c'est le commit qu'il désigne qui la porte. Seule la dernière release est vérifiée.
Vérifié par ses mainteneurs
Le dépôt de l'outil lui-même contient un fichier .awesome-alternatives à la racine de sa branche par défaut, avecslug: renseigné sur cette entrée. Seule une personne disposant d'un accès en écriture au dépôt peut l'ajouter, si bien que la marque dit que ses mainteneurs assument l'entrée. La mise à jour lit ce fichier chaque nuit.La marque est aussi posée quand l'app GitHub awesome-alternatives est installée sur le dépôt, ce qui demande d'en être administrateur.Le fichier date la vérification de son dernier commit, et une fiche modifiée après cette date affiche « modifiée depuis la vérification » jusqu'à ce que les mainteneurs fassent un nouveau commit sur le fichier, un commentaire # daté suffisant.Dans chaque liste, un outil vérifié passe avant les outils non vérifiés qui le remplacent au même niveau, et les étoiles ordonnent le reste. Il ne passe jamais devant un meilleur remplacement.
archivé
Le dépôt est archivé et ne reçoit plus de modifications. Un outil archivé est précisément ce que l'on cherche à quitter : il n'est donc accepté que comme cible remplacée par d'autres entrées, jamais comme alternative, et l'avertissement aucun push ne lui est pas appliqué.
Other
Affiché comme licence quand GitHub en détecte une mais ne peut pas la rattacher à un identifiant SPDX. Quand GitHub n'en détecte aucune, l'outil affiche Aucune détectée et l'avertissement aucune licence lui est appliqué.

Niveaux de remplacement

Chaque alternative en porte un, défini par la personne qui ajoute l'entrée.

Drop-in
Accepte sans changement la configuration ou l'interface de l'original : on l'échange sans toucher à son installation. Demander un drop-in dans la recherche ne garde que ceux-là.
Remplacement complet
Couvre le même besoin, à sa manière. Prévoir de migrer sa configuration.
Partiel
Couvre une partie du besoin. La note sous l'outil précise laquelle.

Avertissements

Un avertissement ne retire jamais un outil. C'est ce qu'un mainteneur regarde avant de fusionner une pull request, et ce qu'il peut être utile de savoir avant de dépendre de l'outil.

Dépôt déplacé
Le dépôt se trouve désormais sous un autre nom ou un autre propriétaire. GitHub redirige l'ancienne adresse, mais l'entrée devrait être mise à jour.
Aucune licence détectée
GitHub ne détecte aucune licence : les conditions d'utilisation du code sont donc incertaines.
Aucune release ni tag
Le dépôt n'a ni release ni tag : il n'y a donc aucune version à épingler.
Aucun push depuis un an
Rien n'a été poussé depuis plus de 365 jours. Les dépôts archivés sont exclus de cet avertissement.
Afflux d'étoiles inhabituel
Une journée qui a apporté au moins 50 étoiles, et au moins 5 fois le rythme quotidien habituel de l'outil sur le dernier mois, et au moins 3 % des étoiles qu'il avait la veille : une bonne journée ordinaire d'un gros projet ne compte pas. Les étoiles achetées arrivent par salves, un lancement sur Hacker News aussi, et c'est pourquoi la décision revient à une personne. GitHub ne liste plus qui a mis une étoile à un dépôt : la mise à jour nocturne garde donc le nombre d'étoiles de chaque jour et compare les jours entre eux. Il lui faut une semaine de cet historique pour juger, si bien qu'un outil n'est vérifié qu'une fois listé.
Dépôt récent
Le dépôt a moins de 30 jours ; la marque indique le jour de sa création. Avec si peu d'historique, ses étoiles, releases et son activité disent encore peu de chose. La marque disparaît d'elle-même une fois le dépôt assez ancien.

D'autres problèmes bloquent plutôt la pull request : un dépôt privé, un fork, archivé mais proposé comme alternative, ou déjà listé sous un autre slug. Le guide du contributeur liste toutes les vérifications.

Affiliation

Le champ affiliation sert à déclarer un lien entre un outil et cet annuaire ou les personnes qui le tiennent, par exemple un outil créé par les mainteneurs d'awesome-alternatives. Quand une entrée en porte une, la page de l'outil l'affiche telle qu'elle est écrite. Maintenir un outil qu'on référence n'est pas une affiliation : il suffit de faire vérifier l'entrée, et sa page indique que ses mainteneurs s'en portent garants.

Depuis un agent IA

Le catalogue est aussi un serveur Model Context Protocol (MCP) à l'adresse https://awesome-alternatives.com/api/mcp, en Streamable HTTP, sans clé ni compte. Un agent peut y trouver des alternatives à un outil ou à un produit, lister les outils par catégorie, langage ou licence, et lire les informations d'un outil. Son outil de recherche lit les requêtes avec les mots-clés et le modèle de ce serveur uniquement, jamais avec Jev, et il est limité par adresse ; les autres outils ne le sont pas.

Pour l'ajouter à Claude Code : claude mcp add --transport http awesome-alternatives https://awesome-alternatives.com/api/mcp

Licences

Les données du catalogue sont sous CC BY-SA 4.0 : vous pouvez les réutiliser librement, avec un lien vers awesome-alternatives.com et sous la même licence. Le code du site, de l'API et des scripts est sous licence GNU AGPL v3.