| = History of GIFLIB = |
| |
| GIF (Graphics Interchange Format) was originally developed on the |
| CompuServe timesharing service in the late 1980s. It was described |
| by a GIF standard issued in 1987 and revised in 1989. A copy of the |
| GIF89 standard is included in the doc/ directory. |
| |
| This code originated as a linkable library for DOS programs, together |
| with command-line tools for generating and viewing and analyzing GIF |
| images. The DOS code was written by Gershon Elber using Borland C |
| under MS-DOS sometime between the issue of GIF87 and mid-1989 (1.0 was |
| dated 14 June 1989; one portion, getarg.c, was dated 11 Mar 88). |
| |
| At some time no later than the end of 1989 Eric S. Raymond (aka "ESR") |
| ported this DOS version to System V Unix. Between 1989 and 1992 ESR |
| reworked various portions of the API, improving and simplifying |
| the code's interface. |
| |
| ESR's 2.1 version was the first to include the DGifSlurp()/EGifSpew() |
| function pair for enabling non-sequential operations on GIF images |
| (also the tools icon2gif, gifovly, and gifcompose; the last was |
| removed in 5.0). |
| |
| ESR's Unix port was incorporated into the NCSA Mosaic browser in 1994, |
| which is how GIF became (with JPEG) one of the two most popular image |
| formats on the early Web. |
| |
| Beginning around 1993, patent claims by Unisys over the LZW |
| compression method used in GIF theatened adverse legal consequences |
| for users and developers of programs incorporating the format. The |
| threats became serious in 1999, with Unisys demanding license fees |
| for any software using the format. |
| |
| One response to this was the development of PNG in 1995. Another was |
| that ESR sought a lead developer outside the U.S. to hand the project off |
| to, and passed it to Toshio Kuratomi. ESR remembers this as happening |
| in 1994, but that date could be wrong as some headers imply 3.0 was issued |
| under ESR's name in 1996. But other files do date Toshio's first release |
| to 1994. Toshio shipped 4.0 in December 1998. |
| |
| Subsequently, the project shipped for some time as "libungif" with |
| support for compressed GIFs removed to avoid the LZW patent issues. |
| Compression support was merged back in after the last blocking patent |
| expired in 2004; this became release 4.0.0. After that merge the |
| code was again known as giflib. |
| |
| By 2006, support for PNGs was sufficiently universal that GIF could be |
| described as a legacy format. Anything you can do with it GIF could |
| probably be better done with PNG. Nevertheless (and despite efforts |
| like "Burn All GIFs Day" in November 1999) the GIF format has remained |
| widely popular. |
| |
| In April 2012 ESR rejoined the project to do some code cleanups |
| and auditing, and Toshio Kuratomi asked him to take back the lead. |
| ESR released version 4.2 in May 2012. |
| |
| Version 5.0, released in June 2012, fulfilled almost all the to-do |
| items from 18 years of backlog. It made the library thread-safe, added |
| direct support for GIF89 graphics control blocks, and tossed out large |
| amounts of obsolete utility code. |
| |
| More recent version of the code (5.1.0 and onwards) have been hardened |
| by both static analysis and fuzz testing. While these failed to turn |
| up bugs in normal rendering cases, they did uncover some crash and |
| corruption bugs that could be tickled by carefully crafted malformed |
| GIFs. |
| |
| This code is very old, very stable, and *everywhere* - browsers |
| game consoles, smartphones, pretty much everything that opens an |
| HTTP port and does graphics uses it. |
| |
| The utilities in this source tree were important as GIF production |
| tools early in the format's history, but have been superseded by |
| multi-format viewers and editors. Most installable binary packages |
| shipped as 'giflib' include the library and header file only. |