The PNG Guide is an eBook based on Greg Roelofs' book, originally published by O'Reilly.



Anatomy of an Internet Working Group

What would become known as the ``PNG Group'' or ``PNG Development Group'' began as many such groups do--as a collection of participants in a Usenet newsgroup. When the discussion became both more detailed and considerably more verbose, it became a mailing list with an associated CompuServe forum. Tom Boutell posted the very first PNG draft--then known as ``PBF,'' for Portable Bitmap Format--to comp.graphics,[50] comp.compression, and comp.infosystems.www.providers on Wednesday, 4 January 1995. It had a 3-byte signature, chunk numbers rather than chunk names, a maximum pixel depth of 8 bits, and no specified compression method, but even at that stage it had more in common with today's PNG than with any other existing format.

[50] Also known by some as the Peanut Butter Format, a.k.a. Chunky GIF.

Within one week, most of the major features of PNG had been proposed, though by no means yet accepted: delta filtering for improved compression (Scott Elliott and Mark Adler), deflate compression (Tom Lane, the Info-ZIP Group and many others), 24-bit support (many folks), the PNG name itself (Oliver Fromme), internal CRCs (Greg Roelofs), gamma chunk (Paul Haeberli), and 48- and 64-bit support (Jonathan Shekter). That week also saw the first proto-PNG mailing list set up, Tom Boutell's release of the second draft of the specification, and Greg's posting of some test results that showed a 10% improvement in compression if GIF's LZW method were simply replaced with the deflate (LZ77) algorithm.

One of the real strengths of the PNG group was its ability to weigh the pros and cons of various issues in a (mostly) rational manner, reach some sort of consensus, and then move on to the next issue without prolonging discussion on ``dead'' topics indefinitely. In part this was probably due to the fact that the group was relatively small, yet possessed of a sufficiently broad range of graphics and compression expertise that no one felt unduly shut out when a decision went against him.[51] In part it was also due to a frequently updated ``scorecard,'' which listed the accepted and rejected features and summarized any issues that were still undecided.

[51] All of the PNG authors were male. Most of them still are. No doubt there's a dissertation in there somewhere.

But the most important factor in the group's progress was the position of Benevolent Dictator, held by Tom Boutell. As with the very successful Linux development model, in which Linus Torvalds is trusted with the final say on anything having to do with the Linux kernel, so Tom, as the initiating force behind the PNG project, was granted this power. When consensus was impossible, Tom would make a decision, and that would settle the matter. On one or two rare occasions he might later have been persuaded to reverse the decision, but this generally happened only if new information came to light.

In any case, the development model worked: by the beginning of February 1995, seven drafts had been produced, and the PNG format was settling down. (The PNG name was adopted in Draft 5, after a great deal of fuss; GIF's indeterminate pronunciation[52] was the prime motivating factor, but the allure of an unofficial recursive acronym--PNG's Not GIF--was what decided the matter.) The next month was mainly spent working out the details: chunk-naming conventions, CRC size and placement, choice of filter types, palette ordering, specific flavors of transparency and alpha-channel support, interlace method, and so on. CompuServe was impressed enough by the design that on February 7, 1995, they announced support for PNG as the designated successor to GIF, supplanting what they had initially referred to as the GIF24 development project. By the beginning of March, PNG Draft 9 was released and the specification was officially frozen--just over two months from its inception. Although further drafts followed, they merely added clarifications, some recommended behaviors for encoders and decoders, and a tutorial or two. Indeed, Glenn Randers-Pehrson has kept some so-called ``paleo PNGs'' that were created at the time of Draft 9; they are still readable by any PNG decoder today.

[52] The author of the GIF specification pronounces it with a soft G, as ``jif.''

Table 7-1 is a time line listing many of the major events in PNG's history.

Table 7-1. PNG Time Line

Date   Event
4 Jan 1995   PBF Draft 1 (Thomas Boutell)
4 Jan 1995   Delta filtering (Scott Elliott, Mark Adler)
4 Jan 1995   Deflate compression (Tom Lane and others)
4 Jan 1995   24-bit support (many)
5 Jan 1995   TeleGrafix LZHUF proposal
6 Jan 1995   PNG name (Oliver Fromme)
7 Jan 1995   PBF Draft 2 (Thomas Boutell)
7 Jan 1995   ZIF early results (Greg Roelofs)
7 Jan 1995   Internal CRC(s) (Greg Roelofs)
8 Jan 1995   Gamma chunk (Paul Haeberli)
8 Jan 1995   48-, 64-bit support (Jonathan Shekter)
9 Jan 1995   FGF proposal, implementation (Jeremy Wohl)
10 Jan 1995   First NGF/PBF/proto-PNG mailing list (Jeremy Wohl)
15 Jan 1995   PBF Draft 3 (Thomas Boutell)
16 Jan 1995   CompuServe announces GIF24 development (Tim Oren)
16 Jan 1995   Spec available on WWW (Thomas Boutell)
16 Jan 1995   PBF Draft 4 (Thomas Boutell)
23 Jan 1995   PNG Draft 5 (Thomas Boutell)
24 Jan 1995   PNG Draft 6 (Thomas Boutell)
26 Jan 1995   Final 8-byte signature (Tom Lane)
1 Feb 1995   PNG Draft 7 (Thomas Boutell)
2 Feb 1995   Adam7 interlacing scheme (Adam Costello)
7 Feb 1995   CompuServe drops GIF24 in favor of PNG (Tim Oren)
13 Feb 1995   PNG Draft 8 (Thomas Boutell)
7 Mar 1995   PNG Draft 9 (Thomas Boutell)
11 Mar 1995   First working PNG viewer (Oliver Fromme)
13 Mar 1995   First valid PNG images posted (Glenn Randers-Pehrson)
1 May 1995   pnglib 0.6 released (Guy Eric Schalnat)
1 May 1995   zlib 0.9 released (Jean-loup Gailly, Mark Adler)
5 May 1995   PNG Draft 10 (Thomas Boutell)
13 Jun 1995   PNG web site (Greg Roelofs)
27 Jul 1995   NCSA X Mosaic 2.7b1 with native PNG support (Dan Pape)
20 Sep 1995   Arena 0.98b with native PNG support (Dave Beckett)
8 Dec 1995   PNG spec 0.92 released as W3C Working Draft
23 Feb 1996   PNG spec 0.95 released as IETF Internet Draft
28 Mar 1996   Deflate and zlib approved as Informational RFCs (IESG)
22 May 1996   Deflate and zlib released as Informational RFCs (IETF)
17 Jun 1996   libpng 0.89c released (Andreas Dilger)
1 Jul 1996   PNG spec 1.0 released as W3C Proposed Recommendation
11 Jul 1996   PNG spec 1.0 approved as Informational RFC (IESG)
24 Jul 1996   zlib 1.0.4 released (Jean-loup Gailly, Mark Adler)
4 Aug 1996   VRML 2.0 spec released with PNG as requirement (VAG)
1 Oct 1996   PNG spec 1.0 approved as W3C Recommendation
14 Oct 1996   image/png approved (IANA)
6 Nov 1996   sRGB chunk registered (PNG Development Group)
9 Dec 1996   sPLT chunk registered (PNG Development Group)
15 Jan 1997   PNG spec 1.0 released as Informational RFC 2083 (IETF)
28 Jan 1997   pCAL chunk registered (PNG Development Group)
5 Apr 1997   libpng 0.95b released (Andreas Dilger)
1 Oct 1997   Internet Explorer 4.0 with native PNG support (Microsoft)
11 Nov 1997   Navigator 4.04 with native PNG support (Netscape)
28 Feb 1998   MHEG-5 UK profile for digital TV released (UK DTG)
9 Mar 1998   libpng 1.0 released (Glenn Randers-Pehrson)
9 Jul 1998   zlib 1.1.3 released (Jean-loup Gailly, Mark Adler)
17 Aug 1998   iCCP chunk registered (PNG Development Group)
23 Oct 1998   PNG spec 1.1 approved (PNG Development Group)
21 Dec 1998   Opera 3.51 with native PNG support (Opera Software)
31 Dec 1998   PNG spec 1.1 released (PNG Development Group)
14 Jan 1999   libpng 1.0.3 released (Glenn Randers-Pehrson)
9 Feb 1999   iTXt chunk registered (PNG Development Group)
22 Jun 1999   PNG: The Definitive Guide published

Perhaps equally interesting are some of the proposed features and design suggestions that ultimately were not accepted: the Amiga IFF format; uncompressed bitmaps, either gzip'd or stored inside zipfiles; thumbnail images and/or generic multi-image support; ``little-endian''[53] byte order; Unicode UTF-8 character set for text; YUV and other lossy (nonlossless) image-encoding schemes; vector graphics; and so forth. Many of these topics produced an amazing amount of discussion--in fact, the main proponent of the zipfile idea was still arguing about it more than two years later.

[53] The name stems from a reference in Gulliver's Travels to opposing factions of silly people, some of whom (Lilliputians) broke their eggs at the little end before eating them and some of whom (Blefuscudians) broke them at the big end. The argument over PNG's byte order was almost equally silly, but in the end (so to speak) big-endian was chosen for two reasons: it's easier for humans to read and debug in a ``hex dump'' (a textual rendering of a binary file), and it's the same as ``network byte order,'' which is something of an Internet standard.




Last Update: 2010-Nov-26