Een klein project, in de openbaarheid geleid
Verso heeft vier maintainers en zo’n zestig bijdragers. Er zit geen bedrijf achter, geen stichting en geen roadmapoverleg — alleen een issuetracker en de afspraak binnen een week te antwoorden.
Wat helpt, in volgorde
1 · Reproducties
Een falend template plus de data die het probleem veroorzaakt, is meer waard dan een alinea beschrijving. Vijftien regels zijn beter dan een link naar een repository, omdat ze precies laten zien om welke constructie het gaat.
2 · Verbeteringen aan de documentatie
Als iets op deze site fout, verouderd of verwarrend is, is dat een bug. Pull requests voor de documentatie worden als eerste bekeken en het snelst gemerged — meestal op dezelfde dag.
3 · Bugfixes
Een fix met een regressietest heeft één goedkeurende review nodig. Zonder test zijn het er twee, en de discussie gaat uiteindelijk meestal toch over de test.
Voordat je een pull request opent
$ 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
De testsuite draait offline en raakt het netwerk niet aan. Duurt het op jouw machine langer dan vijftien seconden, dan klopt er iets niet en horen we dat graag.
Open een issue voordat je code schrijft. Het standaardantwoord op een functieverzoek is nee — niet omdat het idee slecht is, maar omdat de waarde van het project in zijn omvang zit. Functies die het halen, halen meestal tegelijk iets anders weg.
Maintainers
Vier mensen met mergerechten. Twee van hen reviewen de meeste pull requests; voor een brekende wijziging moeten alle vier akkoord zijn.
Hal Moravec
Parser, compiler, releases. Begon het project in 2021.
Rina Sato
Streaming, prestaties, benchmarks. Onderhoudt de 2.x-lijn.
Júlia Almeida
Documentatie, CLI en de website die je nu leest.
Dmitri Orlov
Escaping, beveiligingsreviews, TypeScript-declaraties.
Hoe besluiten worden genomen
Verso wordt door de maintainers geleid, met een voorkeur voor niets doen. Een wijziging komt erin als minstens één maintainer haar goedkeurt en niemand bezwaar maakt; een bezwaar moet beargumenteerd zijn, en dat argument moet over de code of de reikwijdte gaan, niet over smaak.
Brekende wijzigingen vereisen dat alle vier maintainers akkoord gaan en een gepubliceerd migratiepad. Dat hebben we één keer gedaan, in 3.0, en de discussie duurde vier maanden.
Is een maintainer twaalf maanden inactief, dan vervallen de mergerechten automatisch. Dat is twee keer gebeurd en verliep beide keren zonder ophef, omdat het van tevoren was opgeschreven.
Financiering
Het project neemt geen geld aan. Er zijn geen sponsorniveaus, geen donatielink en geen bedrijf als geldschieter — er valt dus niets openbaar te maken en niemand wiens functieverzoeken zwaarder wegen dan die van anderen. Domein en CI kosten zo’n € 90 per jaar, verdeeld over de maintainers.
Gedragscode
Het Contributor Covenant 2.1, gehandhaafd door de maintainers. Meldingen gaan naar het adres hieronder en worden binnen drie dagen beantwoord. Twee incidenten in vijf jaar, beide afgehandeld met een waarschuwing.
Een kwetsbaarheid melden
Schrijf naar security@example.invalid met een beschrijving en, als je die hebt, een reproductie. De vingerafdruk van de sleutel voor versleutelde meldingen staat in SECURITY.md in de repository.
Wat er daarna gebeurt:
- Binnen 48 uur — bevestiging dat een mens de melding heeft gelezen.
- Binnen 7 dagen — een beoordeling: of het een kwetsbaarheid is, welke versies getroffen zijn en een globale datum voor de fix.
- Binnen 90 dagen — een fix voor elke ondersteunde lijn, een gepubliceerde advisory en vermelding van de melder, tenzij die dat liever niet heeft.
Binnen de scope
Alles waardoor een template of zijn data markup of JavaScript oplevert die de templateauteur niet bedoelde: omzeilen van escaping, fouten in contextherkenning, prototype pollution via het dataobject en denial of service in de parser.
Buiten de scope
Drievoudige accolades die precies doen wat ze zeggen, en templates die door een aanvaller zijn geschreven. Verso compileert templates — een template is code, en als onbetrouwbare mensen je templates kunnen schrijven, is de escapinglaag niet je probleem.
Geschiedenis
| Advisory | Getroffen | Opgelost | Ernst |
|---|---|---|---|
| VERSO-2024-01 | 2.0.0 – 2.5.2 | 2.5.3 | Gemiddeld — omzeilen van attribuutescaping bij attributen zonder aanhalingstekens |
| VERSO-2022-01 | 1.0.0 – 1.4.1 | 1.4.2 | Laag — kwadratische parsetijd bij diep geneste blokken |
Waarheen schrijven
Bugs en functies horen in de issuetracker, waar ze doorzoekbaar zijn. Al het andere:
security@example.invalid— kwetsbaarheden, zie hierbovenconduct@example.invalid— meldingen over de gedragscodemaintainers@example.invalid— alles wat niet bij de andere twee past
Er is geen chatserver. We probeerden er in 2022 een; vragen werden één keer beantwoord en verdwenen daarna, wat niemand hielp die een jaar later zocht.