Ein kleines Projekt, offen geführt
Verso hat vier Maintainer und etwa sechzig Mitwirkende. Es steht keine Firma dahinter, keine Stiftung und kein Roadmap-Meeting — nur ein Issue-Tracker und die Regel, innerhalb einer Woche zu antworten.
Was hilft, in dieser Reihenfolge
1 · Reproduktionen
Ein fehlschlagendes Template plus die Daten, die den Fehler auslösen, ist mehr wert als ein Absatz Beschreibung. Fünfzehn Zeilen schlagen einen Repository-Link, weil sie uns genau zeigen, welches Konstrukt betroffen ist.
2 · Korrekturen an der Doku
Wenn etwas auf dieser Website falsch, veraltet oder verwirrend ist, ist das ein Bug. Doku-Pull-Requests werden zuerst geprüft und am schnellsten gemergt — meist am selben Tag.
3 · Bugfixes
Ein Fix mit Regressionstest braucht ein zustimmendes Review. Ohne Test braucht er zwei, und die Diskussion dreht sich am Ende sowieso meist um den Test.
Bevor Sie einen Pull-Request öffnen
$ git clone … && cd verso
$ npm install # 3 dev dependencies, ~4 s
$ npm test # unit + snapshot, ~11 s
$ npm run bench # optional, ~40 s
$ npm run lint
Die Testsuite läuft offline und fasst das Netz nicht an. Braucht sie auf Ihrem Rechner länger als fünfzehn Sekunden, stimmt etwas nicht, und wir würden gern davon hören.
Öffnen Sie ein Issue, bevor Sie Code schreiben. Die Standardantwort auf einen Funktionswunsch ist Nein — nicht weil die Idee schlecht ist, sondern weil der Wert des Projekts in seiner Größe liegt. Funktionen, die es hineinschaffen, entfernen meist gleichzeitig etwas anderes.
Maintainer
Vier Personen mit Merge-Rechten. Zwei von ihnen prüfen die meisten Pull-Requests; einer inkompatiblen Änderung müssen alle vier zustimmen.
Hal Moravec
Parser, Compiler, Releases. Hat das Projekt 2021 gestartet.
Rina Sato
Streaming, Performance, Benchmarks. Pflegt die 2.x-Linie.
Júlia Almeida
Dokumentation, CLI und die Website, die Sie gerade lesen.
Dmitri Orlov
Escaping, Sicherheitsreviews, TypeScript-Deklarationen.
Wie Entscheidungen fallen
Verso wird von den Maintainern geführt, mit einer Neigung zum Nichtstun. Eine Änderung landet, wenn mindestens ein Maintainer zustimmt und keiner widerspricht; ein Widerspruch braucht eine Begründung, und die muss den Code oder den Umfang betreffen, nicht den Geschmack.
Inkompatible Änderungen erfordern die Zustimmung aller vier Maintainer und einen veröffentlichten Migrationspfad. Das haben wir einmal getan, in 3.0, und die Diskussion dauerte vier Monate.
Ist ein Maintainer zwölf Monate inaktiv, erlöschen seine Merge-Rechte automatisch. Das ist zweimal passiert und lief beide Male ohne Aufregung, weil es vorher aufgeschrieben war.
Finanzierung
Das Projekt nimmt kein Geld. Es gibt keine Sponsoring-Stufen, keinen Spendenlink und keinen Firmen-Unterstützer — also gibt es nichts offenzulegen und niemanden, dessen Funktionswünsche mehr wiegen als die anderer. Domain und CI kosten etwa 90 € im Jahr, aufgeteilt unter den Maintainern.
Verhaltenskodex
Der Contributor Covenant 2.1, durchgesetzt von den Maintainern. Meldungen gehen an die Adresse unten und werden innerhalb von drei Tagen beantwortet. Zwei Vorfälle in fünf Jahren, beide mit einer Verwarnung erledigt.
Eine Sicherheitslücke melden
Schreiben Sie an security@example.invalid mit einer Beschreibung und, falls vorhanden, einer Reproduktion. Der Fingerabdruck des Schlüssels für verschlüsselte Meldungen steht in SECURITY.md im Repository.
Was danach passiert:
- Innerhalb von 48 Stunden — Bestätigung, dass ein Mensch die Meldung gelesen hat.
- Innerhalb von 7 Tagen — eine Einschätzung: ob es eine Sicherheitslücke ist, welche Versionen betroffen sind und ein grober Termin für den Fix.
- Innerhalb von 90 Tagen — ein Fix für jede unterstützte Linie, ein veröffentlichtes Advisory und Nennung der meldenden Person, sofern sie nichts anderes wünscht.
Im Rahmen
Alles, was ein Template oder seine Daten Markup oder JavaScript erzeugen lässt, das der Template-Autor nicht beabsichtigt hat: Umgehungen des Escapings, Fehler bei der Kontexterkennung, Prototype Pollution über das Datenobjekt und Denial of Service im Parser.
Außerhalb des Rahmens
Dreifache Klammern, die genau das tun, was sie sagen, und Templates, die ein Angreifer geschrieben hat. Verso kompiliert Templates — ein Template ist Code, und wenn nicht vertrauenswürdige Personen Ihre Templates schreiben können, ist die Escaping-Schicht nicht Ihr Problem.
Historie
| Advisory | Betroffen | Behoben | Schwere |
|---|---|---|---|
| VERSO-2024-01 | 2.0.0 – 2.5.2 | 2.5.3 | Mittel — Umgehung des Attribut-Escapings bei Attributen ohne Anführungszeichen |
| VERSO-2022-01 | 1.0.0 – 1.4.1 | 1.4.2 | Niedrig — quadratische Parsezeit bei tief verschachtelten Blöcken |
Wohin schreiben
Bugs und Funktionswünsche gehören in den Issue-Tracker, wo man sie durchsuchen kann. Alles andere:
security@example.invalid— Sicherheitslücken, siehe obenconduct@example.invalid— Meldungen zum Verhaltenskodexmaintainers@example.invalid— alles, was nicht zu den anderen beiden passt
Einen Chat-Server gibt es nicht. Wir haben 2022 einen ausprobiert; Fragen wurden einmal beantwortet und verschwanden dann, was niemandem half, der ein Jahr später suchte.