-<HTML>
-<HEAD>
- <META NAME="Author" CONTENT="Michael Sweet">
- <TITLE>An Overview of the Common UNIX Printing System</TITLE>
- <LINK REL=STYLESHEET TYPE="text/css" HREF="cupsdoc.css">
-</HEAD>
-<BODY>
-<TABLE WIDTH="100%">
-<TR VALIGN=TOP>
- <TD><IMG SRC="images/cups-large.gif" WIDTH="103" HEIGHT="120"></TD>
- <TD><H1 ALIGN="RIGHT">An Overview of the<BR>
- Common UNIX Printing System,<BR>
- Version 1.2</H1>
-
- <P ALIGN="RIGHT">August 14, 2002<BR>
- Michael Sweet, Easy Software Products<BR>
- Copyright 1998-2003, All Rights Reserved.</P>
- </TD>
-</TR>
-</TABLE>
-
-<P>This whitepaper describes the Common UNIX Printing
-System<SUP>TM</SUP> ("CUPS<SUP>TM</SUP>"), a portable and extensible
-printing system for UNIX<SUP>®</SUP>. CUPS is being developed by
-<A HREF="http://www.easysw.com">Easy Software Products</A>, a software
-firm located in Hollywood, Maryland that has been selling commercial
-software for UNIX since 1993 through more than 40 distributors serving
-over 80 countries worldwide.
-
-<P>Additional information on CUPS is available on the World Wide Web at
-"<A HREF="http://www.cups.org">http://www.cups.org</A>".
-
-<H2>Background</H2>
-
-<P>Printing within UNIX has historically been done using one of two
-printing systems - the Berkeley Line Printer Daemon ("LPD") [RFC1179]
-and the AT&T Line Printer system. These printing systems were
-designed in the 70's for printing text to line printers; vendors have
-since added varying levels of support for other types of printers.
-
-<P>Replacements for these printing systems have emerged [LPRng,
-Palladin, PLP], however none of the replacements change the fundamental
-capabilities of these systems.
-
-<P>Over the last few years several attempts at developing a standard
-printing interface have been made, including the draft POSIX Printing
-standard developed by the Institute of Electrical and Electronics
-Engineers, Inc. ("IEEE") [IEEE-1387.4] and Internet Printing Protocol
-("IPP") developed by the Internet Engineering Task Force ("IETF")
-through the Printer Working Group ("PWG") [IETF-IPP]. The POSIX
-printing standard defines a common set of command-line tools as well as
-a C interface for printer administration and print jobs, but has been
-shelved by the IEEE.
-
-<P>The Internet Printing Protocol defines extensions to the HyperText
-Transport Protocol 1.1 [RFC2616] to provide support for remote printing
-services. IPP/1.0 was accepted by the IETF as an experimental Request
-For Comments [RFC] document in October of 1999. Since then the Printer
-Working Group has developed an updated set of specifications for
-IPP/1.1 which have been accepted by the IETF and are awaiting
-publication as proposed standards. Unlike POSIX Printing, IPP enjoys
-widespread industry support and is poised to become the standard
-network printing solution for all operating systems.
-
-<P>CUPS uses IPP/1.1 to provide a complete, modern printing system for
-UNIX that can be extended to support new printers, devices, and
-protocols while providing compatibility with existing UNIX
-applications. CUPS is free software provided under the terms of the
-GNU General Public License and GNU Library General Public License.
-
-<H2>History</H2>
-
-<P>The first production release of CUPS (based on IPP/1.0) was released
-in October of 1999. Since then, we have released several patch updates
-to the original CUPS 1.0 release that addressed security, portability,
-and bugs found, but no new functionality was added to improve the
-stability of the CUPS code.
-
-<P>CUPS 1.2 is based on IPP/1.1 and adds many of the functional
-enhancements that have been requested by our users. As with 1.1, CUPS
-1.2 will be followed by patch releases that address any problems found
-with the software but add no new major features.
-
-<H2>Design Overview</H2>
-
-<P>Like most printing systems, CUPS is designed around a central print
-scheduling process that dispatches print jobs, processes administrative
-commands, provides printer status information to local and remote
-programs, and informs users as needed. Figure 1 shows the basic
-organization of CUPS.
-
-<CENTER><IMG SRC="images/cups-block-diagram.gif" WIDTH="470" HEIGHT="170"></CENTER>
-<P ALIGN="CENTER">Figure 1 - CUPS Block Diagram</P>
-
-<H3>Scheduler</H3>
-
-<P>The scheduler is a HTTP/1.1 server application that handles HTTP
-requests. Besides handling printer requests via IPP POST requests, the
-scheduler also acts as a full-featured web server for documentation,
-status monitoring, and administration.
-
-<P>The scheduler also manages a list of available printers on the LAN
-and dispatches print jobs as needed using the appropriate filters and
-backends.
-
-<H3>Configuration Files</H3>
-
-The configuration files consist of:
-
-<UL>
-
- <LI>The HTTP server configuration file.
-
- <LI>Printer and class definition files.
-
- <LI>MIME type and conversion rule files.
-
- <LI>PostScript Printer Description ("PPD") files.
-
-</UL>
-
-<P>The HTTP server configuration file is purposely similar to the
-Apache server configuration file and defines all of the access control
-properties for the server.
-
-<P>The printer and class definition files list the available printer
-queues and classes. Printer classes are collections of printers. Jobs
-sent to a class are forwarded to the first available printer in the
-class, round-robin fashion.
-
-<P>The MIME type files list the supported MIME types (text/plain,
-application/postscript, etc.) and "magic" rules for automatically
-detecting the format of a file. These are used by the HTTP server to
-determine the <I>Content-Type</I> field for <I>GET</I> and <I>HEAD</I>
-requests and by the IPP request handler to determine the file type
-when a <I>Print-Job</I> or <I>Send-File</I> request is received with a
-<I>document-format</I> of <I>application/octet-stream</I>.
-
-<P>The MIME conversion rule files list the available filters. The
-filters are used when a job is dispatched so that an application can
-send a convenient file format to the printing system which then
-converts the document into a printable format as needed. Each filter
-has a relative cost associated with it, and the filtering algorithm
-chooses the set of filters that will convert the file to the needed
-format with the lowest total "cost".
-
-<P>The PPD files describe the capabilities of all printers, not just
-PostScript printers. There is one PPD file for each printer. PPD files
-for non-PostScript printers define additional filters through
-<I>cupsFilter</I> attributes to support printer drivers.
+<html>
+<head>
+ <meta name='Author' content='Michael Sweet'/>
+ <title>An Overview of the Common UNIX Printing System</title>
+ <link rel='stylesheet' type='text/css' href='cupsdoc.css'/>
+</head>
+<body>
+
+<table width='100%'>
+<tr valign='top'>
+ <td><img src='images/cups-large.gif' width='103'
+ height='120' alt='CUPS Logo'/></td>
+ <td><h1 align='right'>An Overview of the<br />
+ Common UNIX Printing System,<br />
+ Version 1.2</h1>
+
+ <p align='right'>July 3, 2004<br />
+ Michael Sweet, Easy Software Products<br />
+ Copyright 1998-2004, All Rights Reserved.</p>
+ </td>
+</tr>
+</table>
+
+<pre>
+New Outline:
+
+New Features:
+
+1. Networking
+ a. IPv6
+ i. Next-generation Internet support
+ ii. ????
+ b. Domain sockets
+ i. Enhanced performance under load for local clients.
+ ii. Authentication without passwords on platforms that support it.
+ c. CUPS browsing updates
+ i. "Delete" bit for printers
+ ii. "lease-time" for printers so that clients and servers don't need
+ the same browse timeout/interval settings
+ iii. Additional attributes/default options for network-wide defaults
+ iv. Network default printer
+ v. Ability to control send and receive protocols independently
+ d. Rendevous support
+ e. LDAP support
+ f. Per-printer sharing
+
+2. IPP Support
+ a. Notifications
+ b. Document object
+ c. Send-URI, Print-URI
+ d. Other stuff?
+ e. Add/delete device operations
+
+3. Scheduler
+ a. Backchannel support
+ b. Port monitor support
+ c. Device monitor
+ i. Dynamic device discovery/management
+ d. All errors include a localized message.
+ e. Fine-grain policies, server default + per-printer
+ f. UTF-8 throughout
+
+4. Web Interface
+ a. cupsd.conf interface
+ b. Move-Job
+ c. Export printers to windows
+ d. Per-printer sharing controls
+ e. Per-printer access control lists
+ f. Policy stuff
+
+5. I18N
+ a. Support for ... character sets
+ b. All commands and messages are localized
+ c. Character set transcoding
+ d. ... , and Japanese localizations
+
+6. Drivers
+ a. New HP-RTL driver.
+
+</pre>
+
+<p>This whitepaper describes the Common UNIX Printing
+System<sup>TM</sup> (CUPS<sup>TM</sup>), a portable and
+extensible printing system for Linux<sup>®</sup>,
+MacOS<sup>®</sup> X, UNIX<sup>®</sup>. CUPS is developed
+by <a href='http://www.easysw.com'>Easy Software Products</a>, a
+software firm located in Hollywood, Maryland that has been
+selling commercial software for UNIX since 1993 through more
+than 40 distributors serving over 80 countries worldwide.</p>
+
+<p>CUPS is used by Apple to provide printing on MacOS X and is
+the defacto-standard for Linux. Additional information on CUPS
+is available on the World Wide Web at the following URL:</p>
+
+<pre>
+ <a href='http://www.cups.org/'>http://www.cups.org/</a>
+</pre>
+
+
+<h2>Background</h2>
+
+<p>Printing within UNIX has historically been done using one of
+two printing systems - the Berkeley Line Printer Daemon (LPD)
+[RFC1179] and the AT&T Line Printer system. These printing
+systems were designed in the 70's for printing text to line
+printers; vendors have since added varying levels of support for
+other types of printers.</p>
+
+<p>Replacements for these printing systems have emerged [LPRng,
+Palladin, PLP], however none of the replacements change the
+fundamental capabilities of these systems.</p>
+
+<p>Over the years several attempts at developing a standard
+printing interface have been made, including the draft POSIX
+Printing standard developed by the Institute of Electrical and
+Electronics Engineers, Inc. (IEEE) [IEEE-1387.4] and Internet
+Printing Protocol (IPP) developed by the Internet Engineering
+Task Force (IETF) through the Printer Working Group (PWG)
+[IETF-IPP]. The POSIX printing standard defines a common set of
+command-line tools as well as a C interface for printer
+administration and print jobs, but has been shelved by the
+IEEE.</p>
+
+<p>The Internet Printing Protocol defines extensions to the
+HyperText Transport Protocol 1.1 [RFC2616] to provide support
+for remote printing services. IPP/1.1 was accepted by the IETF
+as a proposed standard in ??? of ???. Unlike POSIX Printing, IPP
+enjoys widespread industry support and has become the standard
+network printing solution for all operating systems.</p>
+
+<p>CUPS uses IPP/1.1 to provide a complete, modern printing
+system for UNIX that can be extended to support new printers,
+devices, and protocols while providing compatibility with
+existing UNIX applications. CUPS is free software provided under
+the terms of the GNU General Public License and GNU Library
+General Public License.</p>
+
+<h2>History</h2>
+
+<p>The first production release of CUPS (based on IPP/1.0) was
+released in October of 1999. Version 1.1 of CUPS was released in
+August of 2002 ???? and added support for IPP/1.1.</p>
+
+<p>CUPS 1.2 is based on IPP/1.1 and adds many of the functional
+enhancements that have been requested by our users. As with CUPS
+1.1, CUPS 1.2 will be followed by patch releases that address
+any problems found with the software. New features will be put
+in the 1.3 release to follow.</p>
+
+<h2>Design Overview</h2>
+
+<p>Like most printing systems, CUPS is designed around a central
+print scheduling process that dispatches print jobs, processes
+administrative commands, provides printer status information to
+local and remote programs, and informs users as needed. Figure 1
+shows the basic organization of CUPS.</p>
+
+<p align='center'><img src='images/cups-block-diagram.gif'
+width='470' height='170' alt='CUPS Block Diagram'/><br />
+<i>Figure 1 - CUPS Block Diagram</i></p>
+
+<h3>Scheduler</h3>
+
+<p>The scheduler is a HTTP/1.1 server application that handles
+HTTP requests. Besides handling printer requests via IPP POST
+requests, the scheduler also acts as a full-featured web server
+for documentation, status monitoring, and administration.</p>
+
+<p>The scheduler also manages a list of available printers on
+the LAN and dispatches print jobs as needed using the
+appropriate filters and backends.</p>
+
+<h3>Configuration Files</h3>
+
+<p>The configuration files consist of:</p>
+
+<ul>
+
+ <li>The HTTP server configuration file.</li>
+
+ <li>Printer and class definition files.</li>
+
+ <li>MIME type and conversion rule files.</li>
+
+ <li>PostScript Printer Description (PPD) files.</li>
+
+</ul>
+
+<p>The HTTP server configuration file is purposely similar to
+the Apache server configuration file and defines all of the
+access control properties for the server.</p>
+
+<p>The printer and class definition files list the available
+printer queues and classes. Printer classes are collections of
+printers. Jobs sent to a class are forwarded to the first
+available printer in the class, round-robin fashion.</p>
+
+<p>The MIME type files list the supported MIME types
+(text/plain, application/postscript, etc.) and "magic' rules for
+automatically detecting the format of a file. These are used by
+the HTTP server to determine the <tt>Content-Type</tt> field for
+<tt>GET</tt> and <tt>HEAD</tt> requests and by the IPP request
+handler to determine the file type when a <tt>Print-Job</tt> or
+<tt>Send-File</tt> request is received with a
+<tt>document-format</tt> of
+<tt>application/octet-stream</tt>.</p>
+
+<p>The MIME conversion rule files list the available filters.
+The filters are used when a job is dispatched so that an
+application can send a convenient file format to the printing
+system which then converts the document into a printable format
+as needed. Each filter has a relative cost associated with it,
+and the filtering algorithm chooses the set of filters that will
+convert the file to the needed format with the lowest total
+"cost".</p>
+
+<p>The PPD files describe the capabilities of all printers, not
+just PostScript printers. There is one PPD file for each
+printer. PPD files for non-PostScript printers define additional
+filters through <tt>cupsFilter</tt> attributes to support
+printer drivers.</p>