Traditional CUPS printer drivers consist of one or more print filters and a metadata file (PostScript Printer Description or PPD) which describes the printer capabilities, options, and filters. The filters convert common print formats such as CUPS Raster, JPEG, PDF, and/or PostScript into the printer's native data format for transmission to the printer.
Future versions of CUPS will do away with support for these printer drivers, choosing instead to package support for non-IPP printers in Printer Applications which provide IPP emulation - see the 2019 CUPS Plenary Slides. Some initial efforts have produced useful tools, including:
- ippeveprinter (part of CUPS for prototyping and supporting existing PostScript printers
- LPrint for supporting DYMO and ZPL label printers
- PAPPL, a Printer Application framework/library based on ippeveprinter and LPrint
This year's GSoC goal is to get a universal Printer Application SDK (Software Development Kit) to not only convert classic drivers but also to create new printer drivers, from scratch, without PPD files.
The student's tasks here are
- Study Dheeraj's project and PAPPL to see from where the universal SDK can be started
- Create further needed code pieces, for printer discovery, starting of IPP service, passing jobs through driver and to printer, …
- Documentation and templates for designing the driver and making a Snap of the Printer Application.
Dheeraj Yadav (dhirajyadav135 at gmail dot com), Michael Sweet, author of CUPS/LPrint/PAPPL and original creator of Gutenprint (msweet at msweet dot org), Ira McDonald, OpenPrinting (blueroofmusic at gmail dot com), Smith Kennedy, HP (smith kennedy at hp dot com), Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), TBD
C programming, DNS-SD, IPP
Apache 2.0, MIT