Résumé

  • En 1996, Duane Wessels a bifurqué la dernière version précommerciale du Harvest Cache Daemon, baptisé la branche indépendante Squid et publié sa version 1.0.0 en juillet.
  • Les premières modifications de Squid montrent une continuité par la maintenance : requêtes HTTP conditionnelles, objets HTTPS et reconstruction du cache disque pendant le service.

Un projet de recherche peut s’arrêter alors qu’un de ses outils continue de traiter des requêtes. C’est la question pratique qui se posait pour le cache Web de Harvest en 1996. Harvest avait développé plusieurs composants, dont un cache d’objets, mais certains membres de l’équipe partaient dans l’industrie au moment où démarrait une étude distincte sur les caches, financée par la NSF. Duane Wessels, qui avait travaillé sur Harvest, avait besoin d’un logiciel public pour ce déploiement et ces travaux.

Dans son récit technique ultérieur, il explique être reparti de la dernière version précommerciale de Harvest, l’avoir enrichie et avoir nommé la branche Squid afin de la distinguer d’une autre dérivation commerciale.

Cette bifurcation répondait à une exigence d’exploitation précise. Le cache se plaçait entre les utilisateurs et les serveurs Web éloignés. Il conservait des copies de contenus populaires pour servir les requêtes répétées depuis un point plus proche. Harvest prenait également en charge des hiérarchies de caches. Le besoin dépassait le laboratoire : un article de 1996 sur les déploiements en Nouvelle-Zélande indique que Harvest Cache était en production depuis octobre 1995. En février, un seul serveur traitait un volume équivalant à environ 5 % du trafic Internet du pays avec le reste du monde.

Ce chiffre provient de l’estimation d’un opérateur dans un contexte géographique donné ; il ne mesure pas l’adoption mondiale.

La première version de Squid n’était pas qu’un nouveau nom posé sur une archive intacte. Le journal des modifications de la bêta 1.0, daté du 19 avril 1996, cite Harvest cached-1.4.pl3 comme base et mentionne l’ajout des requêtes If-Modified-Since, des objets SSL et de la reconstruction en arrière-plan du stockage disque pendant que le cache continuait à servir les requêtes. Ces changements répondaient aux contraintes d’un proxy exploité : vérifier si un objet stocké avait changé, gérer davantage de types de connexions et assurer la maintenance sans interrompre le service. La version officielle 1.0.0 est sortie en juillet.

Dans son récit ultérieur, Wessels décrit une année de contributions, de correctifs, de demandes de fonctionnalités et de signalements d’erreurs. Le journal de modifications donne un aperçu plus proche de ce travail : des corrections se succèdent dans les versions, tandis que Squid maintient la compatibilité avec les caches voisins issus de Harvest. En 1997, la RFC 2186 documente ICP, un protocole rapide de requête-réponse entre caches voisins ; elle rattache ses origines à la mise en cache hiérarchique de Harvest. Une bifurcation pouvait faire évoluer le logiciel tout en préservant des modes d’interaction compréhensibles par d’autres caches.

Les débuts de Squid illustrent ainsi une forme particulière de continuité. Le nom du projet Harvest n’avait pas besoin de rester intact pour que des opérateurs continuent à utiliser un cache. Un mainteneur pouvait repartir d’un code connu, publier une branche distincte et la modifier selon des besoins observés. Cela ne garantissait pas un support durable : le nouveau projet avait encore besoin de personnes, de financement et de déploiements compatibles. Mais le résultat de recherche pouvait devenir un logiciel révisé à un rythme régulier.

Sources