Retour au blog
Informatique

Le PNG a été écrit en neuf semaines par des gens en colère

1 mars 2026 9 min de lecture

Illustration générée avec GPT Image.
Illustration générée avec GPT Image.

Le PNG est presque toujours raconté comme une amélioration technique du GIF : plus de 256 couleurs, une transparence par canal alpha, une compression sensiblement meilleure. Tout cela est exact, et tout cela est la conséquence, pas la cause. Le format a été conçu en un peu plus de deux mois, à partir du 4 janvier 1995, par un groupe informel réuni sur Usenet, pour une raison qui n'a rien de technique : six jours plus tôt, écrire un logiciel capable de produire des GIF était devenu une opération soumise à redevance. Le format avait sept ans et personne, chez CompuServe comme ailleurs, n'avait vérifié à qui appartenait l'algorithme de compression posé au centre de la spécification.

Un algorithme publié, un brevet déposé

L'histoire commence par deux articles de Jacob Ziv et Abraham Lempel dans les IEEE Transactions on Information Theory : « A universal algorithm for sequential data compression », vol. 23, n° 3, mai 1977, p. 337 à 343, puis « Compression of individual sequences via variable-rate coding », vol. 24, n° 5, septembre 1978, p. 530 à 536. Ces deux familles, LZ77 et LZ78, sont publiques.

Terry A. Welch, ingénieur chez Sperry Corporation, en tire une variante rapide de LZ78. Il dépose la demande de brevet US 06/505,638 le 20 juin 1983. L'année suivante, il décrit sa méthode dans une revue de large diffusion : « A Technique for High-Performance Data Compression », Computer, vol. 17, n° 6, juin 1984, p. 8 à 19. Le brevet US 4 558 302, « High speed data compression and decompression apparatus and method », est délivré le 10 décembre 1985 au nom de Sperry Corp. Sperry fusionne ensuite avec Burroughs pour former Unisys.

Une méthode voisine fait l'objet d'un second brevet, déposé par deux chercheurs d'IBM, Victor S. Miller et Mark N. Wegman : US 4 814 746, « Data compression method », délivré le 21 mars 1989 et rattaché à une demande initiale du 1er juin 1983, soit dix-neuf jours avant celle de Welch. Deux titres pour une même famille d'idées : contourner l'un ne garantissait pas d'échapper à l'autre.

Entre-temps, le 15 juin 1987, CompuServe publie la spécification du Graphics Interchange Format. Le document porte une phrase que tout développeur de l'époque lit comme une autorisation : « While this document is copyrighted, the information contained within is made available for use in computer software without royalties, or licensing restrictions. » Tim Oren, vice-président Future Technology de CompuServe, expliquera plus tard le raisonnement : « The LZW algorithm was incorporated from an open publication, and without knowledge that Unisys was pursuing a patent. » L'algorithme avait été trouvé dans une revue, ce qui n'a jamais voulu dire libre de droits.

Le 29 décembre 1994

Unisys prévient CompuServe en janvier 1993. Les deux sociétés négocient un an et demi et signent un accord daté du 21 juin 1994, cité en clause 10.1 du contrat qui suivra. Selon la déclaration publique d'Unisys, CompuServe lui verse 1 % du prix de vente moyen de son logiciel, « approximately 11 cents for each copy sold and connected to its information service », et dispose de six mois pour mettre l'accord en œuvre, délai prolongé d'un mois à sa demande.

CompuServe date son annonce aux développeurs du 29 décembre 1994, entre Noël et le Nouvel An (certains récits retiennent le 28). Les conditions qui leur sont faites ne sont pas celles obtenues par CompuServe : 1 dollar de droit d'entrée, puis, par copie enregistrée, le montant le plus élevé entre 1,5 % du prix de vente et 0,15 dollar, versés à CompuServe. Inscription avant le 31 janvier 1995, en échange de quoi Unisys renonce à réclamer des redevances sur l'usage passé.

Le détail qui met le feu aux poudres n'est pas le tarif, c'est le périmètre. La clause 11.2 définit le « Field of Use » comme les logiciels « used by subscribers to the CompuServe Information Service to access the CompuServe Information Service ». La clause 1.5 interdit au développeur de livrer son produit à un client qui ne s'engage pas à l'utiliser principalement pour accéder à CompuServe. La clause 10.7 lui interdit de divulguer les termes du contrat. Le contrat impose enfin une mention légale sur le produit ou dans sa documentation, où le nom du breveté est écorché : « LZW compression and decompression methods are licensed under Unysis Corporation's U.S. Patent 4,558,302 and equivalent foreign patents. » Dans le texte qui a circulé, la coquille revient huit fois, contre trois graphies correctes.

La League for Programming Freedom résume la situation en une phrase : « It turns out that the license being offered today is only for Compuserve users. » Un développeur qui écrit un encodeur GIF pour le web, et non pour CompuServe, n'a rien à signer. Il n'a pas de licence non plus.

Neuf semaines dans une liste de diffusion

Le 4 janvier 1995, Thomas Boutell poste sur comp.graphics, comp.compression et comp.infosystems.www.providers un brouillon de format qu'il appelle PBF, pour Portable Bitmap Format. Trois octets de signature, des numéros de chunks plutôt que des noms, 8 bits de profondeur maximale, aucune méthode de compression fixée.

La suite tient de la compression accélérée du travail de normalisation. Le jour même : filtrage delta proposé par Scott Elliott et Mark Adler, compression deflate par Tom Lane et l'équipe Info-ZIP, support 24 bits. Le 6 janvier, Oliver Fromme propose le nom PNG. Le 7 janvier, brouillon 2, CRC internes, et Greg Roelofs publie un résultat de test : remplacer simplement le LZW du GIF par deflate améliore la compression de 10 %. Le 8 janvier, chunk gamma par Paul Haeberli, support 48 et 64 bits par Jonathan Shekter. Le 10 janvier, Jeremy Wohl monte la première liste de diffusion.

CompuServe annonce le 16 janvier un projet maison, GIF24. Le brouillon 5, du 23 janvier, adopte le nom PNG. Adam Costello propose son schéma d'entrelacement Adam7 le 2 février. Le 7 février, CompuServe se rallie et présente PNG comme le successeur désigné du GIF, à la place de son propre GIF24. Le brouillon 9 sort le 7 mars 1995 et la spécification est gelée, un peu plus de deux mois après le premier message : les brouillons suivants n'apporteront que des clarifications. Les bibliothèques de référence suivent le 1er mai 1995, zlib 0.9 de Jean-loup Gailly et Mark Adler, pnglib 0.6 de Guy Eric Schalnat.

La normalisation prend plus longtemps que la conception. Version 0.92 en Working Draft du W3C le 8 décembre 1995, recommandation du W3C le 1er octobre 1996, type de média image/png enregistré par l'IANA le 14 octobre 1996, publication en RFC 2083 informationnelle, datée de mars 1997. Le résumé de la RFC ne cache pas le motif : « PNG provides a patent-free replacement for GIF ». Le même document précise, dans son introduction, que le nom se prononce « ping ».

Unisys réécrit ses propres communiqués

Le communiqué Unisys de janvier 1995 contenait une exemption : « Unisys does not require licensing, or fees to be paid, for non-commercial, non-profit GIF-based applications », étendue explicitement aux offres Internet « including "Freeware" ». À la fin de l'été 1996, ces passages ont disparu du site d'Unisys, remplacés par un texte qui justifie le changement : « As a result of both this extensive licensing and changes in the use and marketing of GIF and other LZW-based products, Unisys has had to adjust its licensing policies to reflect these changes and the needs of existing and future licensees. »

En 1999, la société propose aux exploitants de sites dont les images ont été fabriquées avec un logiciel non licencié une licence forfaitaire à 5 000 dollars, et sa position affichée ne laisse plus d'exemption du tout : « In all cases, a written license agreement or statement signed by an authorized Unisys representative is required from Unisys for all use, sale or distribution of any software (including so-called "freeware") and/or hardware providing LZW conversion capability. » Slashdot titre le 31 août 1999 « Unisys Not Suing (most) Webmasters for Using GIFs », où Mark Starr, General Patent and Technology Counsel d'Unisys, pose la règle : « if the GIFs on your Web site were created with software that is licensed by Unisys, you are fine. »

La riposte prend une forme physique. Le vendredi 5 novembre 1999, la League for Programming Freedom organise le Burn All GIFs Day. Des développeurs se rassemblent devant les bureaux californiens d'Unisys, avec pour mot d'ordre de brûler des impressions papier de fichiers GIF, et la presse spécialisée décrit l'opération le jour même ; les photos de vraies flammes que les organisateurs relaieront ensuite viennent, elles, d'un rassemblement canadien. Mark Starr résumera l'affaire dans The Industry Standard du 25 avril 2000 : « They want everything to be free and let's all be friends. But fortunately, this is not the American way. »

Le brevet américain expire le 20 juin 2003. Les homologues européens tombent le 18 juin 2004, le japonais le 20 juin 2004, le canadien le 7 juillet 2004. Le brevet IBM court plus longtemps : les données de l'USPTO relayées par Google Patents retiennent une expiration au 21 mars 2006.

Pourquoi le GIF a survécu à son propre brevet

Le PNG a gagné l'image fixe et perdu le reste, pour une raison inscrite dans sa propre spécification. Section 12.3 de la RFC 2083 : « PNG also does not support multiple images in one file. This restriction is a reflection of the reality that many applications do not need and will not support multiple images per file. » Le choix est délibéré, la section 8.4 renvoyant un éventuel format multi-images à une spécification séparée, avec une signature différente.

Or c'est précisément à ce moment que les navigateurs se mettent à animer les GIF. La capacité dormait dans la spécification GIF89a depuis 1989 ; Netscape Navigator 2.0, dont la première bêta sort en septembre 1995, est le premier à jouer ces images en boucle, et les autres suivent. Le format censé mourir gagne un usage que son remplaçant avait écarté par principe, et cet usage lui vaut une seconde vie sur le web de la fin des années 1990. Le format multi-images promis, MNG, n'atteint sa version 1.0 qu'en janvier 2001 et ne sera repris que par une poignée d'applications ; l'APNG qui lui succède, écrit chez Mozilla en 2004 et rejeté par le groupe PNG en 2007, ne sera lu par Chrome qu'en 2017.

Le résultat est une double survie. Le PNG est devenu le format par défaut de tout ce qui ne bouge pas, et le GIF a continué sa carrière sur le seul terrain que la RFC 2083 lui avait laissé. Quand le brevet a expiré en 2003, la cause juridique a disparu du récit et il n'est resté que l'effet : un format techniquement supérieur, dont on oublie qu'il a été écrit en neuf semaines par des gens en colère.

Un projet du même genre ?

Je conçois et déploie des produits comme celui-ci. Parlons-en.

Discutons