Les bugs du temps
Chaque année, j’ai l’impression que c’est la même chose. A chaque passage à la nouvelle année, ou à chaque changement d’heure d’hiver/d’été, on entends parler d’un logiciel ou d’un appareil qui plante lamentablement. Cette année, les iPhone encore sous iOS4 ont rencontré des bugs avec l’application Horloge. En 2008, plus aucun Zune ne démarrait.
J’avais beau réfléchir, je voyais mal pourquoi autant de grands constructeurs rencontraient régulièrement des problèmes avec la gestion du temps et des fuseaux horaires. Après un peu de recherche et un petit tour sur Reddit, j’ai compris pourquoi.
Voici la règle générale pour gérer la date et l’heure partout dans le monde.
- Une année dure 365 jours, une journée dure 24 heures, une heure dure 60 minutes et une minute dure 60 secondes.
Et maintenant, voici les exceptions.
- Tous les 4 ans, il y a une année bissextile.
- Tous les 100 ans, ce n’est pas une année bissextile.
- Tous les 400 ans, c’est quand même une année bissextile.
- Ponctuellement, on vient insérer une seconde intercalaire.
- La Terre est découpée en fuseaux horaires. La plupart des pays ajoutent plus ou moins d’heures fixes selon le temps universel, mais certains fuseaux horaires changent au quart d’heure près (bonjour l’Australie).
- Occasionnellement, certains pays changent leurs fuseaux horaires de manière imprévisible pour des raisons administratives ou politiques. La semaine dernière, les îles Samoa sont passées directement du jeudi 29 décembre au samedi 31 décembre. Les bases de données de l’IANA permettent de suivre ces évolutions, mais elles ne sont pas pour autant à jour.
Bon courage si un jour vous devez développer un système de gestion d’horaires.
L’article décrivant le bug du Zune de 2008 résume à mon avis bien la situation :
Quand un gros bug comme celui-ci est découvert, c’est tentant d’en faire des tonnes et de se moquer des développeurs qui ont sorti ce code défectueux. Et je pense que c’est une erreur qui aurait dû être détecté lors des tests ou d’une revue de code. D’un autre côté, j’ai moi même fait tellement d’erreurs depuis des années que je suis réticent à l’idée de me moquer des autres. Et je pense que la principale leçon de cet incident n’est pas le refrain habituel qui dit que Microsoft sont nuls. C’est plutôt l’observation qu’un logiciel c’est compliqué. Des pièges subtils vous attendent même dans ce qui semble le plus simple algorithme.