Page suivante Page précédente Table des matières

5. De la chenille au papillon

Après avoir étudié le comportement de Linus et formulé une théorie expliquant les raisons de son succès, je décidai volontairement de mettre cette théorie en pratique sur mon nouveau projet (quoique bien moins complexe et bien moins ambitieux).

Mais la première chose que je fis fut de réorganiser et de simplifier popclient en profondeur. L'implantation de Carl Harris était très correcte, mais elle trahissait cette complexité inutile qui caractérise de nombreux programmeurs C. Il pensait que le code primait sur les structures de données, qui le servaient. Le résultat était un code assez esthétique, mais une conception improvisée des structures de données, assez laides (en tout cas aux yeux d'un vieux baroudeur du Lisp comme moi).

J'avais malgré tout autre chose en tête que simplement améliorer le code et les structures de données. Mon but était de transformer popclient en quelque chose que je comprenne entièrement. Ce n'est pas drôle de devoir corriger des bogues dans un programme que vous comprenez mal.

Pendant environ un mois, je me contentai de suivre les conséquences de la conception simpliste de Carl. Le premier changement significatif que je fis fut d'introduire le support pour IMAP. Je le fis en réorganisant les pilotes de protocoles sous la forme d'un pilote générique et de trois tables de méthodes (pour POP2, POP3, et IMAP). Cela, et les modifications antérieures, illustre un principe général qu'il est bon pour les programmeurs de garder à l'esprit, en particulier dans des langages comme le C qui ne permettent pas de procéder à un typage dynamique de manière naturelle:

9. Il vaut mieux avoir des structures de données intelligentes et un code stupide que le contraire.

Si on prend le chapitre 9 de Fred Brooks: ``Montre-moi ton code, dissimule tes structures de données, je continuerai à être mystifié. Montre-moi tes structures de données et je n'aurai sans doute pas besoin de voir ton code, il me semblera évident.''

En fait, il parlait d'``organigrammes'' et de ``descriptions de données''. Mais si on traduit cela en termes d'aujourd'hui, après trente ans d'évolution culturelle et technologique, cela revient pratiquement au même.

C'est à ce moment (début septembre 1996, six semaines après avoir commencé) que j'ai commencé à penser à procéder à un changement de nom -- après tout, il ne s'agissait plus là uniquement d'un client POP. Mais j'hésitai, puisque rien dans ma conception n'était vraiment neuf. Il fallait encore que mon programme développe une identité propre.

Cela s'est produit de manière radicale quand fetchmail apprit à faire suivre le courrier rapporté sur le port SMTP. J'y viendrai bientôt. Il me faut d'abord signaler ceci: j'ai dit plus haut que j'avais décidé d'utiliser ce projet pour mettre en pratique ma théorie sur les raisons du succès de Linus Torvalds. Comment ai-je procédé, vous direz-vous ? Comme suit:

  1. J'ai distribué tôt et mis à jour souvent (au moins tous les dix jours; pendant les périodes de développement effréné, une fois par jour).
  2. J'ai agrandi ma liste de bêta-testeurs en y ajoutant tout ceux qui me contactaient et me parlaient de fetchmail.
  3. À chaque mise à jour, j'envoyais un petit palabre sur la liste bêta, encourageant les gens à participer.
  4. Et j'ai écouté mes bêta-testeurs, en les sondant sur les choix de conception et en les caressant dans le sens du poil à chaque fois qu'ils m'envoyaient leur avis ou des corrections.

Le résultat de ces mesures élémentaires ne se fit pas attendre. La plupart des développeurs tueraient père et mère pour avoir des notifications de bogues de la qualité de celles que je reçus dès le début du projet, et la plupart du temps, elles étaient accompagnées de bonnes solutions. J'ai reçu des critiques réfléchies, du courrier d'admirateurs, des suggestions intelligentes proposant de nouvelles fonctionnalités. Ce qui nous donne:

10. Si vous traitez vos bêta-testeurs comme ce que vous avez de plus cher au monde, ils réagiront en devenant effectivement ce que vous avez de plus cher au monde.

Une mesure intéressante du succès de fetchmail est l'impressionnante taille de la liste bêta du projet, les amis de fetchmail. Au moment ou j'écris ces lignes, elle compte 249 membres et elle grandit de deux ou trois membres chaque semaine.

En fait, alors que je relis maintenant ces lignes en mai 1997, la liste commence à diminuer (elle a atteint à son heure de gloire, la taille de 300 membres) pour une raison intéressante. Plusieurs personnes m'ont demandé de résilier leur inscription parce que fetchmail fonctionne si bien pour eux qu'ils n'éprouvent plus le besoin de suivre les discussions de la liste ! Cela fait sans doute partie du cycle de vie d'un projet dans le style bazar, lorsqu'il est parvenu a maturité.


Page suivante Page précédente Table des matières