Communauté

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.

Contribuer

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

terminal
$ 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.

À propos des nouvelles fonctionnalités

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.

Les personnes

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.

Gouvernance

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.

Sécurité

Signaler une vulnérabilité

N’ouvrez pas d’issue publique

É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

AvisConcernéesCorrigéGravité
VERSO-2024-012.0.0 – 2.5.22.5.3Modérée — contournement de l’échappement d’attributs sans guillemets
VERSO-2022-011.0.0 – 1.4.11.4.2Faible — temps d’analyse quadratique sur des blocs profondément imbriqués
Contact

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-dessus
  • conduct@example.invalid — signalements liés au code de conduite
  • maintainers@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.