Mały projekt, prowadzony otwarcie
Verso ma czterech opiekunów i około sześćdziesięciu współtwórców. Nie stoi za nim firma, fundacja ani spotkania o planach — tylko tracker zgłoszeń i zasada odpowiadania w ciągu tygodnia.
Co pomaga, po kolei
1 · Reprodukcje
Szablon, który nie działa, plus dane, które wywołują błąd, są warte więcej niż akapit opisu. Piętnaście linii jest lepsze niż link do repozytorium, bo dokładnie pokazuje, której konstrukcji dotyczy problem.
2 · Poprawki dokumentacji
Jeśli coś na tej stronie jest błędne, nieaktualne lub mylące, to błąd. Pull requesty do dokumentacji przeglądamy jako pierwsze i scalamy najszybciej — zwykle tego samego dnia.
3 · Poprawki błędów
Poprawka z testem regresji potrzebuje jednej akceptującej recenzji. Bez testu — dwóch, a dyskusja i tak zwykle kończy się na teście.
Zanim otworzysz pull request
$ 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
Zestaw testów działa offline i nie dotyka sieci. Jeśli na twoim komputerze trwa dłużej niż piętnaście sekund, coś jest nie tak i chcielibyśmy o tym wiedzieć.
Otwórz zgłoszenie, zanim napiszesz kod. Domyślna odpowiedź na prośbę o funkcję to nie — nie dlatego, że pomysł jest zły, lecz dlatego, że wartość projektu leży w jego rozmiarze. Funkcje, które trafiają do projektu, zwykle jednocześnie coś usuwają.
Opiekunowie
Cztery osoby z prawem scalania. Dwie z nich recenzują większość pull requestów; na zmianę niekompatybilną muszą zgodzić się wszyscy czworo.
Hal Moravec
Parser, kompilator, wydania. Założył projekt w 2021 roku.
Rina Sato
Strumieniowanie, wydajność, benchmarki. Utrzymuje linię 2.x.
Júlia Almeida
Dokumentacja, CLI i strona, którą właśnie czytasz.
Dmitri Orlov
Escapowanie, przeglądy bezpieczeństwa, deklaracje TypeScriptu.
Jak zapadają decyzje
Verso jest prowadzone przez opiekunów, ze skłonnością do niezmieniania niczego. Zmiana trafia do projektu, gdy co najmniej jeden opiekun ją zaakceptuje i nikt nie zgłosi sprzeciwu; sprzeciw musi mieć uzasadnienie dotyczące kodu lub zakresu, a nie gustu.
Zmiany niekompatybilne wymagają zgody wszystkich czterech opiekunów i opublikowanej ścieżki migracji. Zrobiliśmy to raz, w 3.0, a dyskusja trwała cztery miesiące.
Jeśli opiekun jest nieaktywny przez dwanaście miesięcy, jego prawo scalania wygasa automatycznie. Zdarzyło się to dwa razy i za każdym razem bez emocji, bo było spisane z góry.
Finansowanie
Projekt nie przyjmuje pieniędzy. Nie ma poziomów sponsorskich, linku do darowizn ani firmowego mecenasa — nie ma więc czego ujawniać i nie ma nikogo, czyje prośby o funkcje ważyłyby więcej niż innych. Domena i CI kosztują około 90 € rocznie, podzielone między opiekunów.
Kodeks postępowania
Contributor Covenant 2.1, egzekwowany przez opiekunów. Zgłoszenia trafiają na adres poniżej i dostają odpowiedź w ciągu trzech dni. Dwa incydenty w pięć lat, oba zakończone ostrzeżeniem.
Zgłaszanie podatności
Napisz na security@example.invalid z opisem i, jeśli masz, reprodukcją. Odcisk klucza do szyfrowanych zgłoszeń jest opublikowany w SECURITY.md w repozytorium.
Co dzieje się dalej:
- W ciągu 48 godzin — potwierdzenie, że człowiek przeczytał zgłoszenie.
- W ciągu 7 dni — ocena: czy to podatność, których wersji dotyczy i orientacyjna data poprawki.
- W ciągu 90 dni — poprawka wydana dla każdej wspieranej linii, opublikowany komunikat i podziękowanie dla zgłaszającego, chyba że woli inaczej.
W zakresie
Wszystko, co pozwala szablonowi lub jego danym wygenerować znaczniki albo JavaScript, których autor szablonu nie zamierzał: obejścia escapowania, błędy wykrywania kontekstu, zanieczyszczenie prototypu przez obiekt danych i odmowa usługi w parserze.
Poza zakresem
Potrójne nawiasy robiące dokładnie to, co mówią, oraz szablony napisane przez atakującego. Verso kompiluje szablony — szablon to kod, a jeśli niezaufane osoby mogą pisać twoje szablony, warstwa escapowania nie jest twoim problemem.
Historia
| Komunikat | Dotyczy | Naprawione | Waga |
|---|---|---|---|
| VERSO-2024-01 | 2.0.0 – 2.5.2 | 2.5.3 | Umiarkowana — obejście escapowania atrybutów bez cudzysłowów |
| VERSO-2022-01 | 1.0.0 – 1.4.1 | 1.4.2 | Niska — kwadratowy czas parsowania przy głęboko zagnieżdżonych blokach |
Gdzie pisać
Błędy i prośby o funkcje należą do trackera zgłoszeń, gdzie da się je wyszukać. Wszystko inne:
security@example.invalid— podatności, zob. wyżejconduct@example.invalid— zgłoszenia dotyczące kodeksu postępowaniamaintainers@example.invalid— wszystko, co nie pasuje do dwóch pozostałych
Nie ma serwera czatu. Spróbowaliśmy w 2022 roku; na pytania odpowiadano raz, a potem znikały, co nie pomagało nikomu, kto szukał rok później.