Je suis Charlie

Autres trucs

Accueil

Seulement les RFC

Seulement les fiches de lecture

Ève

RFC 7735: Tracking Reviews of Documents

Date de publication du RFC : Janvier 2016
Auteur(s) du RFC : R. Sparks (Oracle), T. Kivinen (INSIDE Secure)
Pour information
Première rédaction de cet article le 14 janvier 2016


Le processus de production des normes par l'IETF suit de nombreuses étapes, toutes se déroulant en public. Il est en effet essentiel que de nombreux yeux puissent regarder les documents en voie de devenir des RFC. Et que de nombreux examens (reviews) aient lieu. Pour suivre ces examens, il est préférable de disposer d'outils et ce sont les futurs outils à développer que décrit ce RFC.

Parmi les équipes qui effectuent des examens des Internet-Drafts en cours d'avancement figurent Gen-ART et SecDir. Mais il en existe plusieurs autres, parfois très spécialisées, et qui n'examinent que les documents relevant de leur spécialité (par exemple les MIB par les MIB doctors ou bien les schémas YANG par les YANG doctors).

Les équipes en question doivent se tenir au courant des documents en cours, leur affecter un examinateur parmi ceux qui sont enregistrés pour cette tâche, fixer une date limite et relancer l'examinateur s'il est en retard, etc. Cela serait évidemment très pénible à faire à la main et ces équipes utilisent actuellement un outil, développé il y a longtemps. Du fait de son âge, il n'est pas bien intégré avec le principal outil de travail en groupe de l'IETF, le Datatracker. Par exemple, pour obtenir certaines informations, l'outil analyse des pages HTML du Datatracker :-) .

[Au passage, notez que le Datatracker est vraiment un excellent outil, qui facilite beaucoup la vie du participant à l'IETF. On voudrait tous avoir des outils de travail en groupe équivalents au bureau.]

Une meilleure intégration avec le Datatracker permettrait de simplifier l'accès à ces informations, et à d'autres qui ne sont pas utilisées actuellement, car trop pénibles à extraire. Ce nouveau RFC est le cahier des charges du futur outil (voir aussi le système de gestion de tickets de l'outil actuel).

Pour comprendre ce cahier des charges, il est utile de revenir sur l'utilisation actuelle de l'outil des examens (section 2 du RFC). Typiquement, l'équipe a un secrétariat qui, une fois par semaine environ, dresse une liste des documents qui sont prêts à subir un examen, par exemple parce qu'ils sont en IETF Last Call (dernier appel avant approbation) ou parce qu'ils sont sur l'agenda des réunions (virtuelles) de l'IESG.

Le secrétariat prend ensuite un examinateur parmi la liste des examinateurs possibles, en tenant compte de paramètres comme le fait qu'un auteur ne doit évidemment pas être examinateur de son propre Internet-Draft. L'idée est en général de prendre un examinateur qui a un regard neuf et n'a pas été impliqué dans le développement du document.

Les différentes équipes d'examen n'ont pas toutes le même fonctionnement. Certaines, comme indiqué plus haut, s'« auto-saisissent » alors que d'autres sont plutôt en mode « on examine si on nous le demande » (c'est le cas de l'équipe du routage, par exemple).

Les examinateurs eux-même n'utilisent pas en général l'outil directement : ils communiquent par courrier avec le secrétariat. Et c'est par courrier qu'ils envoient le résultat de leur examen, après avoir rempli un « courrier-type ». Voici par exemple l'examen fait par Gen-ART pour le futur RFC sur la QNAME minimisation ou bien celui de RTG-Dir pour un futur protocole d'HomeNet.

Voici donc le fonctionnement actuel. Pour le futur outil, les exigences sont dans la section 3 de notre RFC. D'abord, ce qui intéresse le secrétariat de l'IETF (section 3.1) :

  • Le secrétariat doit pouvoir configurer une équipe,
  • Et doit pouvoir effectuer toute action à la place du secrétariat de l'équipe (en cas de défaillance de celui-ci).

Plus importantes, les exigences pour le secrétariat de l'équipe d'examen (section 3.2), entre autres :

  • Pouvoir voir quels documents sont dans un état donné (par exemple IETF Last Call),
  • Possibilité de sélectionner les documents à examiner, soit automatiquement (« tous ceux qui sont sur l'agenda de l'IESG »), soit manuellement (ajouter explicitement un document intéressant),
  • Permettre les accès concurrents à l'outil (une équipe peut avoir plusieurs secrétaires),
  • Faciliter l'envoi des courriers, par exemple en remplissant automatiquement un gabarit, puis en permettant au secrétaire de faire des modifications, avant envoi,
  • Pouvoir voir les examinateurs libres,
  • Capacité à gérer les disponibilités des examinateurs (par exemple, on doit pouvoir indiquer « Machin ne sera pas libre avant le 2 février » et il ne doit alors pas être présenté dans la liste des examinateurs potentiels),
  • Gérer automatiquement l'exclusion des examinateurs de certains documents. L'outil actuel utilise une expression rationnelle. M. Michu, examinateur qui est très investi dans le groupe de travail DPRIVE, aura une expression d'exclusion pour les documents nommés ^draft-(michu|ietf-dprive).*, l'excluant de ses drafts et de ceux de DPRIVE,
  • Permettre le suivi des examens (certains examinateurs sont très occupés, peuvent « oublier » leur tâche, etc),
  • Par la même occasion, l'outil doit permettre de suivre les « performances » des examinateurs (afficher le retard moyen...) de manière à détecter les « maillons faibles »,
  • Autoriser le changement d'examinateur, l'ajout d'un examinateur...

Et pour l'examinateur lui-même, que doit savoir faire l'outil (section 3.3) ? Par exemple :

  • Il doit permettre à l'examinateur d'indiquer ses disponibilités, à la fois en dates (« en vacances tout le mois d'août ») et en fréquence (« pas plus d'un examen de document par trimestre »), avec notification du secrétariat par courrier,
  • L'examinateur doit avoir accès aux documents qui lui sont affectés, avec leur état, pour suivre son propre travail,
  • Possibilité de rejeter une affectation, avec explication optionnelle (et, là aussi, notification du secrétariat),
  • De même, l'examinateur doit pouvoir indiquer explicitement qu'il accepte une affectation,
  • Rappels automatiques (« il te reste 24 h pour ton examen du draft draft-ietf-cuterabbit-security-analysis-09.txt »),
  • Et bien sûr, puisque c'est le but de l'examen, l'examinateur doit pouvoir soumettre facilement le texte final, par un formulaire Web ou en téléversant un fichier, le texte étant alors automatiquement envoyé aux auteurs et au groupe de travail concerné,
  • Et cette soumission doit aussi être possible par courrier, pour les examinateurs qui sont allergiques au Web (c'est possible avec les bons outils de gestion de tâche, comme RT).

Comme tout le monde aime les statistiques, et qu'il est bon de pouvoir évaluer si une équipe d'examen marche bien ou pas, l'outil devra également fournir des chiffres (section 3.5) :

  • Pour une période donnée, indiquer combien d'examens ont été faits, combien sont en cours, combien ont été en retard et de combien, le temps moyen d'examen,
  • Mêmes résultats, mais pour un examinateur donné,
  • Ces chiffres doivent pouvoir être pondérés par des caractéristiques du document (notamment sa taille, mesurée en nombre de signes),
  • Et, autant que possible, ces statistiques, par exemple le nombre d'examens faits par un examinateur par an devraient pouvoir tenir compte des périodes d'indisponibilité,
  • Et si l'outil pouvait faire des jolis graphes avec les séries temporelles, ce serait encore mieux,
  • L'accès à ces chiffres doit être limité : le secrétariat d'une équipe peut tout voir pour son équipe, un examinateur peut voir ses résultats, ou bien les résultats globaux de son équipe,

Les outils actuels de l'IETF sont écrits en Django. Pour rendre ce cahier des charges plus concret, l'annexe A fournit un modèle Django tout prêt. Par exemple, l'état d'un examen peut être :

 class ReviewRequestStateName(NameModel):
     """ Requested, Accepted, Rejected, Withdrawn, Overtaken By Events,
         No Response , Completed  """
      

Un examinateur est ainsi modélisé :

class Reviewer(models.Model):
     """
     These records associate reviewers with review team, and keeps track
     of admin data associated with the reviewer in the particular team.
     There will be one record for each combination of reviewer and team.
     """
     role        = models.ForeignKey(Role)
     frequency   = models.IntegerField(help_text=
                                   "Can review every N days")
     available   = models.DateTimeField(blank=True,null=True, help_text=
                         "When will this reviewer be available again")
     filter_re   = models.CharField(blank=True)
     skip_next   = models.IntegerField(help_text=
                          "Skip the next N review assignments")
      

Et une demande d'examen est :

 class ReviewRequest(models.Model):
     """
     There should be one ReviewRequest entered for each combination of
     document, rev, and reviewer.
     """
     # Fields filled in on the initial record creation:
     time          = models.DateTimeField(auto_now_add=True)
     type          = models.ReviewTypeName()
     doc           = models.ForeignKey(Document,
                            related_name='review_request_set')
     team          = models.ForeignKey(Group)
     deadline      = models.DateTimeField()
     requested_rev = models.CharField(verbose_name="requested_revision",
                             max_length=16, blank=True)
     state         = models.ForeignKey(ReviewRequestStateName)
     # Fields filled in as reviewer is assigned, and as the review
     # is uploaded
     reviewer      = models.ForeignKey(Reviewer, null=True, blank=True)
     review        = models.OneToOneField(Document, null=True,
                                                    blank=True)
     reviewed_rev  = models.CharField(verbose_name="reviewed_revision",
                                      max_length=16, blank=True)
     result        = models.ForeignKey(ReviewResultName)
      

Vous avez envie de réaliser cet outil ? L'annonce a été publiée le 28 décembre 2015 et vous avez jusqu'au 18 janvier 2016 pour proposer vos services.


Téléchargez le RFC 7735

Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)

Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)