What’s New in CUPS
Paul Danbold and Mike Sweet Apple Inc. CUPS in Mac OS X Approximate Timeline
Jaguar Panther Tiger Leopard 10.2 10.3 10.4 10.5
CUPS CUPS CUPS CUPS 1.1.15 1.1.19 1.1.23 1.3.1
Aug Oct Apr ~Oct 2002 2003 2005 2007 Client-side …
} cupsd
5 Server-side …
scheduler filters drivers backends
cupsd cgpdftoraster Brother bluetooth cgpdftops Canon firewire … EPSON ipp GutenPrint lpd HP mdns Lexmark pap Ricoh slp Xerox smb … snmp socket usb … 7 8 139 101413 11 12 13 14 CUPS drivers on Mac OS X …
Filters, Drivers, Backends, Icons Auto-Setup & Supplies Tools
PPD files Utility
ICC Profiles HTML Help
Print dialog plugins Scanner Plugin
15 Leopard vs Tiger CUPS 1.3.1 vs CUPS 1.1.23
• 37% more printers supported in-box • CUPS raster drivers from all printer mfgs • Improved Print dialog, printer discovery and job monitoring • Software Updates for printer drivers
16 Leopard vs Tiger CUPS 1.3.1 vs CUPS 1.1.23
• Printer sharing now uses Bonjour • Support for IPv6 & IPv4 • New tools for driver validation
17 CUPS Open Source CUPS Background
• Common UNIX Printing System (CUPS) provides printing services for most operating systems
• Uses the Internet Printing Protocol (IPP)
• Add-on components and developer/user forums on cups.org
• Created by me in 1997 while at Easy Software Products
• Now owned and maintained by Apple Inc.
19 CUPS Licensing (Unchanged)
• Provided under version 2 of the GNU GPL and LGPL, with exceptions for OpenSSL and Apple operating systems – No plans to move to GPL 3
• LGPL applies to the libraries in CUPS – libcups is the “CUPS API” and is used by applications, drivers, and toolkits – libcupsimage is the “CUPS Imaging API” and is used primarily by printer drivers
• GPL applies to everything else
20 CUPS Architecture
• System process called the “scheduler” manages printers and jobs in the background – /usr/sbin/cupsd – Started on-demand by launchd service – Lightweight, single-threaded application that runs helper programs to do long-term or complex tasks such as printing a document – Runs as the “root” user while most helper programs are run as the “lp” user
• Applications communicate with the scheduler using HTTP and IPP
21 CUPS Architecture
GNOME Cocoa Application KDE Application Application
Cocoa GNOME KDE Core Printing GTK+ Qt CUPS API CUPS API CUPS API
CUPS API
Scheduler (cupsd)
22 What’s New in CUPS 1.3
• Over 30 new features since CUPS 1.2
• Many performance improvements
• 100% binary-compatible with previous releases
23 What’s New in CUPS 1.3 Networking Changes
• Kerberos authentication
• More authentication mechanisms for local access
• SNMP printer discovery – Now disabled by default, changes to probing algorithm
• DNS-SD/Bonjour/Zeroconf support – Uses Apple mDNSResponder API, currently for printer sharing only
24 What’s New in CUPS 1.3 Kerberos Authentication
• User credentials automatically passed from client to server for shared printing – Currently only supports a single Kerberos realm – Requires recent version of MIT Kerberos or Heimdal
• Not enabled by default – Enable with one line in /private/etc/cups/cupsd.conf:
DefaultAuthType Negotiate
or just use the web interface…
25 What’s New in Leopard Kerberos Authentication
• Open http://localhost:631/admin
• Check “Use Kerberos authentication”
• Click “Change Settings”
• See FAQ link for detailed setup instructions
26 What’s New in CUPS 1.3 User Changes
• New cupsctl command-line utility – Update cupsd.conf settings without editing it by hand
• Web interface improvements – Improved searching in the on-line help – New Internet/WAN printer sharing check box – New “Find Available Printers” button instead of showing available printers on the admin page – “Set Printer Options” now works with classes and raw queues
27 What’s New in CUPS 1.3 User Changes
• Localization improvements – Many new languages/locales supported – Backends now localized – Sample driver PPDs now multi-language and generated using the CUPS DDK
28 What’s New in CUPS 1.3 Developer Changes
• New Side-channel API – Simple API for both drivers/port monitors and backends – Allows drivers to perform basic device control, synchronization, and status querying – Available functions: soft reset, drain output, get bidirectional support, get status, get device ID
• Pre-filter support – New cupsPreFilter attribute in PPD file – Allows drivers to insert a device-specific filter before the standard one, e.g. to see if a PDF file uses color
29 What’s New in CUPS 1.3 Developer Changes
• New cupsAdminGetServerSettings() and cupsAdminSetServerSettings() functions
• New cupsRemoveDest() and cupsSetDefaultDest() functions
• The http_t structure is now completely private
30 CUPS 1.4 Proposed Changes
• See roadmap on cups.org
• Highlights: – More performance tuning – More printer drivers – Streaming print API – Updated web interface – New PDF filter(s) based on Poppler – New libusb version of USB backend – New banner file format for filter-generated banner pages
31 CUPS 1.4 Proposed Changes
• Submit more ideas/patches using the “Bugs & Features” page on cups.org
• What do you want to see in CUPS 1.4?
32 CUPS Resources
• CUPS web site – http://www.cups.org
• CUPS mailing lists – http://lists.easysw.com (All operating systems) – http://lists.apple.com (Mac OS X printing)
• CUPS Subversion repository – http://svn.easysw.com
33 Q&A TM and © 2007 Apple Computer, Inc. All rights reserved.