Über den Katalog
Was der Katalog sagt, und woher er es weiß.
161 Entwickler-Tools, jedes mit der Angabe, was es ersetzt. Alles Übrige, was an einem Tool steht, kommt von GitHub und nicht von der Person, die es eingetragen hat.
Was ein Eintrag angibt
Jedes Tool ist eine kleine YAML-Datei unter data/tools/. Sie nennt das Tool, sein GitHub-Repository, seine Kategorie, die Tools, die es ersetzt, mit einem Ersatzgrad je Tool, und eine Verbindung, wenn es eine gibt. Mehr lässt sich in einem Beitrag nicht angeben.
Ein Eintrag nennt nie Sterne, eine Lizenz, eine Version oder eine Beschreibung. Das Schema lehnt sie ab, damit ein Pull Request keine Sternzahl aufblähen und kein Release behaupten kann, das es nicht gibt.
Der nächtliche Abgleich
Täglich um 03:17 UTC, und immer wenn sich die Katalogdaten auf dem main-Branch ändern, liest einGitHub-Actions-Workflowjedes gelistete Repository über die GitHub-API aus:
- Beschreibung, Homepage, Sprache, Lizenz, Sterne, Forks und Topics
- ob das Repository archiviert ist, und das Datum seines letzten Push
- das neueste Release, oder den neuesten Tag, wenn es kein Release gibt, und ob es signiert ist
- die letzten fünf veröffentlichten Releases, die auf der Tool-Seite stehen
- die Maintainer-Datei, beschrieben unter Von den Maintainern bestätigt
Wenn sich etwas geändert hat, committet der Workflow den neuen Katalog und ein neuer Build dieser Seite geht raus. Ein Tool, dessen Repository GitHub nicht mehr zurückgibt, weil es gelöscht oder auf privat gestellt wurde, fällt aus dem Katalog.
Kennzeichen
- ✓ signiert
- Steht neben der neuesten Version. Der Tag trägt eine Signatur, die GitHub geprüft hat, oder bei einem Lightweight-Tag der Commit, auf den er zeigt. Geprüft wird nur das neueste Release.
- Von den Maintainern bestätigt
- Das Repository des Tools selbst trägt im Wurzelverzeichnis seines Standard-Branch die Datei
.awesome-alternativesmit dem Feldslug:auf diesen Eintrag gesetzt. Nur wer Schreibrechte auf das Repository hat, kann sie anlegen, also sagt das Kennzeichen, dass die Maintainer hinter dem Eintrag stehen. Der Abgleich liest die Datei jede Nacht. - archiviert
- Das Repository ist archiviert und bekommt keine Änderungen mehr. Ein archiviertes Tool ist genau das, wovon Leute wegwollen, deshalb wird es nur als etwas aufgenommen, das andere Einträge ersetzen, nie als Alternative, und es löst die Warnung seit einem Jahr kein Push nicht aus.
- Other
- Steht als Lizenz, wenn GitHub eine erkennt, sie aber keinem SPDX-Bezeichner zuordnen kann. Erkennt GitHub keine, steht am Tool Keine erkannt und es löst die Warnung keine Lizenz erkannt aus.
Ersatzgrade
Jeder Ersatz trägt genau einen, vergeben von der Person, die den Eintrag anlegt.
- Drop-in
- Übernimmt Konfiguration oder Schnittstelle des Originals unverändert: das Tool lässt sich austauschen, ohne am Setup etwas zu ändern. Wer in der Suche nach einem Drop-in fragt, bekommt nur diese.
- Vollwertiger Ersatz
- Erledigt dieselbe Aufgabe, auf eigene Weise. Die Konfiguration muss migriert werden.
- Teilweise
- Erledigt einen Teil der Aufgabe. Die Notiz unter dem Tool sagt, welchen.
Warnungen
Eine Warnung entfernt nie ein Tool. Sie ist etwas, das ein Maintainer vor dem Merge eines Pull Requests ansieht, und etwas, das man wissen will, bevor man sich auf das Tool verlässt.
- Repository verschoben
- Das Repository liegt jetzt unter einem anderen Namen oder Besitzer. GitHub leitet die alte Adresse weiter, der Eintrag sollte trotzdem aktualisiert werden.
- Keine Lizenz erkannt
- GitHub erkennt keine Lizenz, damit ist unklar, unter welchen Bedingungen sich der Code nutzen lässt.
- Weder Release noch Tag
- Das Repository hat weder ein Release noch einen Tag, es gibt also keine Version zum Pinnen.
- Seit einem Jahr kein Push
- Seit mehr als 365 Tagen wurde nichts gepusht. Archivierte Repositories sind hiervon ausgenommen.
- Auffälliger Sterne-Anstieg
- 50 oder mehr der jüngsten Sterne kamen innerhalb von 24 Stunden. Gekaufte Sterne treffen schubweise ein, ein Launch auf Hacker News aber auch, deshalb entscheidet hier ein Mensch. Diese Prüfung läuft, wenn ein Pull Request den Eintrag anlegt oder ändert, nicht beim nächtlichen Abgleich. Bei den größten Repositories weigert sich GitHub, tief durch die Stargazer zu blättern, dort wird die Prüfung übersprungen statt geraten.
Andere Probleme blockieren stattdessen den Pull Request: ein Repository, das privat ist, ein Fork, archiviert und trotzdem als Alternative angeboten, jünger als 30 Tage oder bereits unter einem anderen Slug gelistet. Der Leitfaden für Beiträge listet jede Prüfung auf.
Verbindung zum Tool
Wer ein Tool pflegt, daran arbeitet oder dafür bezahlt wird, muss das im Eintrag angeben. Das eigene Projekt einzutragen ist willkommen, es zu verschweigen ist ein Grund für die Entfernung. Hat ein Eintrag eine Verbindung, zeigt die Tool-Seite sie im Wortlaut.
Wie die Suche funktioniert
Die Anfrage wird zuerst als Stichwörter gelesen: die Namen der Tools, die andere ersetzen, die Sprachen und Lizenzen im Katalog und „drop in“. Wird kein zu ersetzendes Tool genannt, vergleicht ein kleines mehrsprachiges Embedding-Modell auf dem Suchserver die Anfrage mit der Beschreibung jedes Tools, sodass eine Anfrage in jeder Sprache der Website dieselben Tools findet wie ihre englische Fassung, obwohl die Beschreibungen selbst auf Englisch bleiben, so wie GitHub sie liefert. Sticht ein zu ersetzendes Tool klar heraus, wird es genommen, sonst werden die Ergebnisse danach sortiert, wie nah sie an der Anfrage liegen. Erst wenn beide Schritte kein zu ersetzendes Tool finden und der Server einen Schlüssel dafür hat, geht der Text der Anfrage an Jev, einen externen Dienst, der ihn liest. Dessen Lesart bleibt einen Tag lang auf dem Server zwischengespeichert. Die Ergebnisse nennen, wer die Anfrage gelesen hat: „Lokal erkannt“ oder „Von Jev gelesen“. Die Datenschutzerklärung sagt, was gesendet und was aufbewahrt wird.
Lizenzen
Die Katalogdaten stehen gemeinfrei unter CC0 1.0. Der Code der Seite, der API und der Skripte steht unter der MIT-Lizenz.