N'est-ce pas agaçant quand quelque chose fait échouer la compilation de votre logiciel ? Les problèmes de compilation entraînent un surcroît de travail imprévu. Ils semblent toujours survenir au moment où vous vous précipitez pour résoudre un autre problème. Souvent, la compilation échoue à cause d'un facteur qui n'a aucun rapport avec ce que vous êtes en train de faire. Il peut donc être assez frustrant de devoir laisser tomber ce que vous êtes en train de faire, chercher la cause de l'échec de la compilation, résoudre ce problème et relancer la compilation (en espérant que vous n'ayez qu'un seul problème à résoudre).
J'ai rencontré ce problème aujourd'hui, alors que je recompilais certains paquets open source. Il y a quelques mois, nous avons mis à jour notre version d'OpenSSL vers la version 1.0.0, mais nous n'avons pas recompilé tous les paquets qui en dépendent. Il se trouve que, lorsque j'ai voulu recompiler le client Subversion pour intégrer un correctif, j'ai constaté que la compilation de Subversion échouait, car OpenSSL 1.0.0 avait introduit des modifications incompatibles. Je n'ai pas mis longtemps à trouver la solution, car ce problème avait été corrigé il y a plusieurs mois, et une simple recherche sur le Web m'a permis de trouver à la fois le rapport de bogue et le correctif. Mais c'était tout de même assez agaçant de tomber sur ce problème alors que j'essayais simplement de recompiler le produit.
Je n'ai pas de suggestion géniale à proposer ici. Mais j'ai une remarque à faire : le temps de calcul est désormais disponible en abondance. Peut-être devrions-nous simplement recompiler tous nos logiciels chaque nuit. Cela permettrait de détecter les problèmes de compilation alors que tout le monde s'en souvient encore.
De plus, si votre processus de compilation comporte des étapes manuelles, le fait de décider de le relancer fréquemment vous incitera à les supprimer. Les étapes manuelles sont en effet une source fréquente d'erreurs.
Les testeurs de logiciels ont tendance à ne pas aimer recompiler un logiciel une fois qu'ils l'ont testé. Ils y voient un risque d'introduire de nouveaux défauts. Pour ma part, j'ai suffisamment confiance en mes outils de compilation (compilateurs, éditeurs de liens, fichiers Makefile) pour pouvoir recompiler à tout moment. Étant donné que nous travaillons avec des langages de haut niveau, nous devons avoir confiance en nos outils de compilation. Mais un processus de développement par étapes peut tout à fait concilier ces deux points de vue.
Si vous avez des suggestions sur la manière de gérer le développement logiciel afin de réduire au minimum le risque de rupture de la compilation ou de limiter l'effort nécessaire pour corriger les problèmes de compilation, n'hésitez pas à ajouter vos commentaires à cet article.
