General Printer SDK

Introduction

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
  • Printer Application framework from the Google Summer of Code 2019 by Dheeraj Yadav for classic (filters and PPD files) printer drivers (The framework itself, Snapping the Printer Application)
  • 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
  • Check which functions are needed and which are already in existing projects (like CUPS/libcups, cups-filters, PWG's ippsample) to create a library, ideally in cooperations with the upstream projects.
  • 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.

Mentors

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

Desired Knowledge

C programming, DNS-SD, IPP

Code License

Apache 2.0, MIT