System administrators can configure the device drivers which CUPS supplies by editing text files in Adobe's PostScript Printer Description (PPD) format.
Michael Sweet, who owned Easy Software Products, started developing CUPS in 1997 and the first public betas appeared in 1999.
[7] In February 2007, Apple Inc. hired chief developer Michael Sweet and purchased the CUPS source code.
[11][12] In 2024, a critical vulnerability involving remote code execution in CUPS was found impacting all GNU/Linux systems.
[13] CUPS provides a mechanism that allows print jobs to be sent to printers in a standard fashion.
CUPS allows printer manufacturers and printer-driver developers to create drivers more easily that work natively on the print server.
With Samba installed, users can address printers on remote Windows computers, and generic PostScript drivers can be used for printing across the network.
A helper application (cups-lpd) converts Line Printer Daemon protocol (LPD) requests to IPP.
The scheduler also provides a web-based interface for managing print jobs, the configuration of the server, and for documentation about CUPS itself.
The client module is also responsible for executing external CGI programs as needed to support web-based printers, classes, and job status monitoring and administration.
[23] Other modules used by the scheduler include: CUPS can process a variety of data formats on the print server.
[31] The mime.convs file has the syntax: source destination cost program The source field designates the MIME type that is determined by looking up the mime.types file, while the destination field lists the type of output requested and determines what program should be used.
[33] After the pre-filtering is done, the data can either be sent directly to a CUPS backend if using a PostScript printer, or it can be passed to another filter like Foomatic by linuxprinting.org.
A new mdns backend in CUPS 1.4 provides Bonjour (DNS-SD) based printer discovery.
CUPS 1.0 provided a simple class, job, and printer-monitoring interface for web browsers.
CUPS 1.2 and later provide a revamped web interface which features improved readability and design, support for automatically discovered printers, and better access to system logs and advanced settings.
[41] GNOME's widget toolkit GTK+ included integrated printing support based on CUPS in its version 2.10, released in 2006.
The KDEPrint framework for KDE contains various GUI tools that act as CUPS front ends and allows the administration of classes, print queues and print jobs; it includes a printer wizard to assist with adding new printers amongst other features.
As of 2009[update] kprinter, a dialogue-box program, serves as the main tool for sending jobs to the print device; it can also be started from the command line.
He stated:[44] The meta-problem here is that the configuration wizard does all the approved rituals (GUI with standardized clicky buttons, help popping up in a browser, etc.
Does your project have this quality?Easy Software Products, the original creators of CUPS, created a GUI, provided support for many printers and implemented a PostScript RIP.
ESP Print Pro ran on Windows, UNIX and Linux, but is no longer available and support for this product ended on December 31, 2007.