À 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 :
- description, page d'accueil, langage, licence, étoiles, forks et topics
- si le dépôt est archivé, et la date de son dernier push
- la dernière release, ou le dernier tag à défaut de release, et si elle est signée
- les cinq dernières releases publiées, affichées sur la page de l'outil
- les auteurs des commits sur la branche par défaut ces 90 derniers jours, dont seul le nombre est gardé
- les noms des fichiers joints à la dernière release, lus pour les systèmes d'exploitation et architectures qu'ils nomment
- le fichier mainteneur décrit sous vérifié
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.
Comment fonctionne la recherche
Votre requête est d'abord lue comme des mots-clés : les noms des outils que d'autres remplacent, les langages et les licences du catalogue, et « drop in ». Quand aucun outil à remplacer n'est nommé, un petit modèle d'embedding multilingue qui tourne sur le serveur de recherche compare la requête à la description de chaque outil, si bien qu'une requête écrite dans n'importe quelle langue du site trouve les mêmes outils que sa formulation anglaise, alors même que les descriptions restent en anglais, telles que GitHub les renvoie. Si un outil à remplacer se détache nettement, il est retenu ; sinon les résultats sont classés par proximité avec la requête. Ce n'est que lorsque ni l'une ni l'autre de ces étapes ne trouve d'outil à remplacer, et que le serveur dispose d'une clé pour cela, que le texte de la requête part chez Jev, un service externe, pour qu'il le lise. Sa lecture est mise en cache sur le serveur pendant une journée. La page de confidentialité dit ce qui est envoyé et ce qui est conservé.
Certains mots deviennent des filtres, dans chaque langue du site. « Open source » ou « libre » garde les outils dont la licence est ouverte. « Maintenu » écarte les outils archivés et ceux sans push depuis 365 jours. « Auto-hébergé » garde les outils des catégories de services que vous faites tourner vous-même. Un mode de déploiement, comme Docker, Docker Compose, Kubernetes, Helm ou un binaire unique, garde les outils qui le déclarent. Une plateforme, comme Linux ou ARM, est reconnue mais pas encore vérifiée, et les résultats le disent au lieu de faire semblant.
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.