Un petit projet, mené au grand jour
Verso compte quatre mainteneurs et une soixantaine de contributeurs. Il n’y a derrière ni entreprise, ni fondation, ni réunion de feuille de route — seulement un gestionnaire d’issues et la règle de répondre sous une semaine.
Ce qui aide, par ordre d’importance
1 · Reproductions
Un template qui échoue, accompagné des données qui déclenchent le problème, vaut mieux qu’un paragraphe de description. Quinze lignes valent mieux qu’un lien vers un dépôt, car elles montrent exactement quelle construction est en cause.
2 · Corrections de la documentation
Si quelque chose sur ce site est faux, dépassé ou confus, c’est un bug. Les pull requests de documentation sont relues en premier et fusionnées le plus vite — en général le jour même.
3 · Corrections de bugs
Un correctif accompagné d’un test de non-régression nécessite une approbation. Sans test, il en faut deux, et la discussion finit de toute façon le plus souvent par porter sur le test.
Avant d’ouvrir une 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
La suite de tests tourne hors ligne et ne touche pas au réseau. Si elle prend plus de quinze secondes sur votre machine, quelque chose ne va pas et nous aimerions le savoir.
Ouvrez une issue avant d’écrire du code. La réponse par défaut à une demande de fonctionnalité est non — pas parce que l’idée est mauvaise, mais parce que la valeur du projet tient à sa taille. Les fonctionnalités qui entrent en retirent généralement une autre au passage.
Mainteneurs
Quatre personnes ont le droit de fusionner. Deux d’entre elles relisent la plupart des pull requests ; un changement incompatible exige l’accord des quatre.
Hal Moravec
Parseur, compilateur, versions. A lancé le projet en 2021.
Rina Sato
Streaming, performances, benchmarks. Maintient la branche 2.x.
Júlia Almeida
Documentation, CLI et le site que vous lisez.
Dmitri Orlov
Échappement, revue de sécurité, déclarations TypeScript.
Comment les décisions sont prises
Verso est mené par ses mainteneurs, avec une préférence pour l’inaction. Un changement est intégré quand au moins un mainteneur l’approuve et qu’aucun ne s’y oppose ; une objection doit être motivée, et le motif doit porter sur le code ou le périmètre, pas sur les goûts.
Les changements incompatibles exigent l’accord des quatre mainteneurs et un chemin de migration publié. Nous l’avons fait une fois, pour la 3.0, et la discussion a duré quatre mois.
Si un mainteneur est inactif pendant douze mois, son droit de fusion expire automatiquement. C’est arrivé deux fois, sans aucun drame, parce que c’était écrit à l’avance.
Financement
Le projet ne prend pas d’argent. Pas de niveau de parrainage, pas de lien de don, pas de soutien d’entreprise : il n’y a donc rien à déclarer et personne dont les demandes pèsent plus que celles des autres. Le domaine et la CI coûtent environ 90 € par an, partagés entre les mainteneurs.
Code de conduite
Le Contributor Covenant 2.1, appliqué par les mainteneurs. Les signalements vont à l’adresse ci-dessous et reçoivent une réponse sous trois jours. Deux incidents en cinq ans, tous deux réglés par un avertissement.
Signaler une vulnérabilité
Écrivez à security@example.invalid avec une description et, si vous en avez une, une reproduction. L’empreinte de la clé pour les signalements chiffrés figure dans SECURITY.md dans le dépôt.
Ce qui se passe ensuite :
- Sous 48 heures — accusé de réception confirmant qu’un humain a lu le signalement.
- Sous 7 jours — une évaluation : s’agit-il d’une vulnérabilité, quelles versions sont touchées et une date approximative de correctif.
- Sous 90 jours — un correctif publié sur chaque branche maintenue, un avis de sécurité publié et la mention de la personne qui a signalé, sauf si elle préfère autrement.
Dans le périmètre
Tout ce qui permet à un template ou à ses données de produire du balisage ou du JavaScript que l’auteur du template n’a pas voulu : contournements de l’échappement, erreurs de détection de contexte, pollution de prototype via l’objet de données et déni de service dans le parseur.
Hors périmètre
Les triples accolades qui font exactement ce qu’elles disent, et les templates écrits par un attaquant. Verso compile des templates — un template, c’est du code, et si des personnes non fiables peuvent écrire vos templates, la couche d’échappement n’est pas votre problème.
Historique
| Avis | Concernées | Corrigé | Gravité |
|---|---|---|---|
| VERSO-2024-01 | 2.0.0 – 2.5.2 | 2.5.3 | Modérée — contournement de l’échappement d’attributs sans guillemets |
| VERSO-2022-01 | 1.0.0 – 1.4.1 | 1.4.2 | Faible — temps d’analyse quadratique sur des blocs profondément imbriqués |
Où écrire
Les bugs et les demandes de fonctionnalités vont dans le gestionnaire d’issues, où l’on peut les retrouver. Pour tout le reste :
security@example.invalid— vulnérabilités, voir ci-dessusconduct@example.invalid— signalements liés au code de conduitemaintainers@example.invalid— tout ce qui n’entre pas dans les deux autres
Il n’y a pas de serveur de discussion. Nous en avons essayé un en 2022 ; les questions y recevaient une réponse puis disparaissaient, ce qui n’aidait personne en cherchant un an plus tard.