History The c-client API was originally written by Mark Crispin at Stanford University as a set of routines to support IMAP and SMTP from a main program which would handle the user interface. In its original form, it was written as the low-level routines that were to be used as part of a Macintosh client. The first IMAP client, MM-D (for "MM on Xerox D machines" -- MM was a popular DEC-20 mail program) was written in Interlisp for Xerox Lisp machines. At that time, there was no name for the embryonic Mac client, but since it was the first one to be written in C instead of Lisp, it was given a development name of "C client". This name became "c-client" because that is the name of the subdirectory on UNIX where the source files were stored. To exercise the routines, a minimal main program which uses c-client, mtest, was written. mtest has subsequently been extended so that it runs on every platform that c-client is ported. The real Mac client, was eventually written by Frank Gilmurrary and Bill Yeager at Stanford using the autumn 1988 version of c-client and named "MacMS". In the winter of 1988-89, Mark Crispin, who had changed jobs to the University of Washington, developed MS as an MM-like text-based program for UNIX and MailManager as a GUI-based program for NeXT machines. The realization sunk in that this API needed its own name. As early as spring 1989, there were at least four programs (mtest, MS, MailManager, and MacMS) that used it. The name c-client thus became permanent. In its history, c-client has undergone two major redesigns, both by Mark Crispin who is now on the staff at the University of Washington. The first major redesign added the following: 1) ANSI C calling conventions throughout to assist in function argument type checking. 2) Vectoring mail access calls through "driver" methods; thus providing transparent access to multiple types of mail stores with the same call. 3) MIME support. The second major redesign was part of the IMAP4 project. Many c-client functions were extended with additional arguments and options. The driver interface was also made simpler, with more work done by driver-independent code.