After much discussion within Apple and OpenPrinting, we decided to deprecate support for raw queues and printer drivers starting with CUPS 2.3 in 2019, and to work to develop and maintain a collection of Printer Applications that support the printers still requiring those printer drivers.
Printers supporting the various Internet Printing Protocol (IPP) “driverless” printing standards will continue to function without change, with Printer Applications bridging the gap to older printers. Almost every printer manufactured since 2010 supports IPP/2.0 with standard file formats - the primary holdouts are industrial label printers and certain “vertical market” printers. Look for the following logos on your printer or the box it came in:
| AirPrint™ | IPP Everywhere™ | Mopria® |
Raw queues are special print queues with no PPD file or driver that typically used to support special-use printers with custom applications that know about printer capabilities and how to produce printer-ready (document) data. For example, a shipping application might produce ZPL data for a Zebra-compatible label printer and then run the “lp” command to spool that raw file through CUPS. While convenient for these applications, it requires CUPS to special-case these printers and can be confusing for users when they try to use that same print queue from a regular application and get garbage out of the printer. Raw queues also pose problems for printer sharing since the client system is unable to provide any information about the printer locally. Finally, allowing programs to send arbitrary data to a printer is generally not a good idea security-wise.
Printer drivers are composed of special PostScript Printer Description (PPD) files that provide the printer capabilities and features along with filter programs that convert standard formats to something the printer can understand. While these filter programs are run in a restricted environment to minimize the security risk, the risk is still not zero. In addition, filters are typically binary programs and will only run on the platform and operating system they were built for, which has historically caused compatibility problems and much frustration. Finally, PPD files are not capable of expressing the full range of capabilities of a modern printer and the CUPS printer driver interface does not allow drivers to provide dynamic state information such as what media is loaded, the state of consumables such as ink and toner, and so forth.
When we deprecate a feature or capability in CUPS, we are announcing the intention to stop supporting it in the next major release of CUPS, in this case CUPS 3.0. Given the historical pace of CUPS development, that usually means you have years to make the transition. In the case of printer drivers, we made the conscious choice to have Printer Applications in place before releasing CUPS 3.0. And since Linux distributions typically lag behind the “bleeding edge” of CUPS development, you can expect to be able to use printer drivers for few more years after CUPS 3.0 is released.
Printer Applications are programs that mimic IPP/2.0 printers. The simplest printer applications wrap a CUPS printer driver and map PPD options and choices to the corresponding IPP attributes and values. PAPPL provides a convenient framework for easily creating these applications and porting existing CUPS raster drivers. The following printer applications are already available or (in the case of Gutenprint) under development: