GAnalytics
Analytik, bei der jeder Datenbestand ein Modul ist.
Die meisten Analysewerkzeuge legen vorab fest, was ein Datenbestand ist. Dieses nicht. Ökosystem-Datenbestände docken als Module an, beginnend mit CVE-Daten sowie GitHub- und Paketaktivität.
Die Idee
Die meisten Analyseprodukte legen vorab fest, was ein „Datenbestand" ist, und lassen einen dann die eigenen Daten daran anpassen. GAnalytics dreht das um. Jeder Ökosystem-Datenbestand kommt als Modul.
Was es tatsächlich misst
Das erste Modul ist CVE Analytics, und es ist live. Es berechnet, wie sich das CVE-Programm verhält, statt was ein einzelner Datensatz sagt: wie schnell CNAs von der Reservierung zur Offenlegung kommen, wie vollständig ihre Datensätze sind, wo Bewertungen zwischen Quellen auseinandergehen, und wie lange Informationen brauchen, um nachgelagert anzukommen.
Berechnet wird es aus der vollständigen Git-Historie von cvelistV5, dazu NVD, OSV, GHSA, EPSS, KEV und der CNA-Partnerliste. Die Git-Historie ist der Punkt. Der aktuelle Stand eines Datensatzes sagt einem, wozu eine CNA gekommen ist. Die Historie sagt, wie lange sie gebraucht hat und wobei sie ihre Meinung geändert hat.
Reproduzierbarkeit ist das Produkt
Jede veröffentlichte Zahl ist an ein Snapshot-Datum und eine Transformationsversion gebunden und trägt ein Herkunftskennzeichen.
Das ist die Randbedingung, um die alles andere herum gebaut ist. Vorgelagerte Datensätze werden ständig überarbeitet, zurückgezogen und neu bewertet. Eine Analyseseite, die ihre Zahlen dabei still ändert, ist keine Messung, sondern ein bewegliches Ziel mit einem Diagramm darauf. Bindung heißt: Eine im März veröffentlichte Zahl löst im September noch auf, und zwar auf dasselbe.
Die anderen Module
Sieben weitere sind spezifiziert und erscheinen als öffentliche Vorschauseiten: Package Analytics, Patch Adoption Half-Life, Deprecation Reality, Fork Dynamics, Corporate Concentration, Spec Adoption Curves und AI-Assisted Contribution.
Vorschauen sind sie mit Absicht. Die Modulgrenze muss halten, bevor sich lohnt, etwas darauf zu bauen, und acht halbfertige Pipelines würden über diese Grenze nichts beweisen.
Eine Ausnahme läuft bereits, und nur deren Sammelhälfte. Patch Adoption Half-Life sammelt npm-Daten schon jetzt, weil sich allein dieses Modul nicht nacherheben lässt: npm liefert Download-Zahlen je Version nur für eine zurückliegende Woche und sonst nichts, ein nicht gesammelter Tag ist also endgültig weg. Sammeln ist nicht dasselbe wie Auswerten, und die Seiten bleiben Vorschauen, bis es etwas zu zeigen gibt.
Grundsätze, nach denen es gebaut ist
UI-Parität ist absolut. Alles, was über die API geht, geht auch über die Oberfläche, einschließlich Betrieb und Administration. Nichts erscheint als API-only oder CLI-only.
Das kostet jedes Mal vorne mehr. Es ist zugleich der Unterschied zwischen einem Werkzeug, das die Maintainer bedienen können, und einem, das alle bedienen können.
Stack
Ein Monorepo mit pnpm und Turborepo. Getrennte API-, Web- und Worker-Anwendungen. Temporal für die Pipelines, mit Konnektoren, Transformationen und Metriken in eigenen Paketen hinter einem Modul-SDK, sodass ein neues Modul ein Paket ist und kein Fork der Pipeline.
Eine Playwright-Smoke-Suite bewacht die Auslieferungen.
Status
In Arbeit. Die Modulgrenze muss stimmen, bevor sich lohnt, etwas darauf zu bauen — dort liegt die Arbeit.
Rechtliches: Terms · Privacy notice · Processing agreement