Skip to content
This repository has been archived by the owner on Mar 1, 2023. It is now read-only.

Latest commit

 

History

History
75 lines (61 loc) · 3.59 KB

history.adoc

File metadata and controls

75 lines (61 loc) · 3.59 KB

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.