Our Case Studies

A lot of books on programming rely on toy examples constructed specifically to prove a point. This one won't. Our case studies will be real, pre-existing pieces of software that are in production use every day. Here are some of the major ones:

cdrtools/xcdroast

These are two separate projects that are usually used together. The cdrtools package is a set of CLI tools for writing CD-ROMS; web search for “cdrtools”. The xcdroast application is a GUI front end for cdrtools; see the xcdroast project site.

fetchmail

Fetchmail is a program that retrieves mail from remote-mail servers using the POP3 or IMAP post-office protocols. There is a fetchmail home page (or search for "fetchmail" in page titles).

GIMP

The GIMP (GNU Image Manipulation Program) is a full-featured paint, draw, and image-manipulation program that can edit a huge variety of graphical formats in sophisticated ways. Sources are available from the GIMP home page (or search for "GIMP" in page titles).

keeper

The program used to create World Wide Web and FTP indexes that put an easily-navigable structure on the ibiblio.org (formerly Metalab, and before that Sunsite) archives. Sources are available on ibiblio.org in the ‘search’ directory.

mutt

The mutt mail user agent is the current best-of-breed among text-based Unix electronic mail agents, with notably good support for MIME (Multipurpose Internet Mail Extensions) and the use of privacy aids such as PGP (Pretty Good Privacy) and GPG (GNU Privacy Guard). Source code and executable binaries are available at the Mutt project site.

xmlto

A command to render DocBook and other XML documents in various output formats, including HTML and text and Postscript. Sources and documentation at the xmlto project site.

To minimize the amount of code the user needs to read to understand the examples, we have tried to choose case studies that can be used more than once, ideally to illustrate several different design principles and practices. For this same reason, many of the examples are from projects of the author. No claim that these are the best possible ones are implied, merely that the author finds them sufficiently familiar to be useful for multiple expository purposes.