PWG May 2022 Face-to-Face Meeting ================================= PWG Plenary ----------- - steering commitee updates - Jeremy Leber from lexmark is main chair, Smith Kennedy vice chair - next meetings - August, November, February, May - IPP Everywhere self-certification - !!854!! certified printers! - printers from Digital Check, OKI, HP, LExmark, Samsung and others on the way :) - IPP Everywhere self certification 1.1 Update 4 on the way, in beta - no IPP Everywhere v1.0 certifications are no longer accepted - updated PWG IPP Everywhere Logo policy - longer grace period to have ippeve logo in materials before certification - creating several PWG policies - antitrust, press release review, namespace - https://github.com/istopwg - IPP - working on several standards - IPP Driverless printing extensions 2.0, IPP Everywhere 2.0, IPP Finishings 3.0 etc. - secretary Mike Sweet, Co-chair Paul Tykodi and Ira McDonald, editors Mike Sweet and Smith Kennedy - IDS (Image Device Security) - focus on common criteria for HCD (hard copy devices - printers/scanners) - developing HCD security guidelines - liaison status - openprinting - coming next - Mopria alliance - liaison agreement and auto-renews until one or both parties cancel it, no collaboration right now - 3D/Additive manufacturing OpenPrinting Plenary -------------------- - markets and distros - distrowatch says the most popular is Linux Mint, Manjaro, Ubuntu, Debian, Fedora, openSuse, CentOS - OpenPrinting highlights 2022: - CUPS - latest release 2.4.1 - cups-filters - 1.28.15, working on 2.0 - PAPPL - printer application library 1.2.0 - ps-printer-app - currently in SNAP, waiting for cups-filters 2.0 - gutenprint-printer-app - in SNAP - hplip-gutenprint-app - in SNAP - pappl-retrofit - common functions for printer apps - driverless printing on all major OS platforms - ipp-usb - Google Chrome OS has its own in Rust - driverless scanning - more info later - GSOC 2022 - now we have contributors instead of students - standard period ends Sep 12 2022, extended Nov 13 2022 - monthly meeting on the first Tuesday in a month, invitation on printing-architecture mailing list GSoC Project Updates -------------------- - ideas 2022 - we will see which will be selected by Google: - Add avahi calls for discovering and resolving driverless IPP printers and optimize the process - Gui for discovering non-driverless printers and finding suitable Printer app for them - Adding CPDB support to existing Print Dialogs - Convert Braille embosser into printer application - Scanning Support in PAPPL with eSCL Support - Scanning Support in PAPPL with IPP Scan Interface - Create new printer setup tool for the GNOME Control Center - Make a native Printer Application for Gutenprint - GSOC 2021: - Pranshu - Create a universal filter function instead of chain filtering - to save resources executables are migrated to functions - Divyasheel - GUI for listing and managing available IPP Print/Scan services - combo of gtk+ library and avahi-client backend for getting IPP services into GNOME Control Center CUPS Plenary ------------ - Apple doesn't respond, we support it in OpenPrinting for two years now under ASL 2.0 with exceptions for GPL2-only - CUPS 2.4.x - I hope I manage 2.4.2 soon - CUPS 2.5.x - new features as centralized localization, oauth, wide-area dns-sd look-up and profiles, better certificate management (several printer applications on isolate environment cannot share local certificates) - oauth - instead of kerberos, maybe use "moauth" from Mike - Future CUPS: - from drivers to IPP and Printer applications - modular CUPS - commands - for both local and sharing server - local server - temp queues, discovery automatic, local domain socket, dbus API, job history for current session/login, authorization and authentication, profiles - sharing server - centralized control, permanent queue, no local domain socket, web interface, only for outside communication, no dbus, support for shared infrastructure - libcups - tools - used from both sides - both local and sharing server - challenges - desktop support, more developers, graphic libraries with difficult licenses - progress - new cups-local project, cups-sharing project, libcups - local and sharing servers can live separately - changing default options will work through profiles Printer Applications -------------------- - replacement and enhancement for drivers - options are attributes, driver specific ui is in printer app - IPP Everywhere interface for driver - pappl - printer application library, supports JPEG, PNG, PWG Raster, Apple Raster and raw printing - runs on desktop, servers, works with IPP Everywhere, AirPrint and Mopria - devs Mike Sweet, Jai Luthra, Sambhav Dusad, Didier Raboud - recent 1.2.0 release - localization, mainloop API improvements, new SNMP supply/state API, IPP notifications, OpenSSL support, enabling/disabling printers, client limits API (set to 500 - for big server we can help with shared infrastracture feature), job persistence API - future - 1.3 - by end of 2022 - IPP proxy support, oauth client support - hp-printer-app - PCL printer app via network and USB - just package it :) v.1.2.0, SNAP exists - lprint - support for several common label and receipt printers via network and USB, release 1.1.0 with PAPPL, working on 1.2.0 - we don't want to support ATM printers etc, only common label printers which we can buy at home Retrofitting printer applications --------------------------------- - all printer driver packages from Debian are covered by printer applications - helper library pappl-retrofit - for PPD file handling is libppd library (copy of PPD API from CUPS) - lists PPDs, auto-assigned PPD from deviceID or make/model, lists all options - no executables upload from users, only PPDs to prevent security issues - legacy printer application in pappl-retrofit is ideal of other old drivers which are not in Linux repos - it can see the drivers as CUPS does so it can load backends and filters as CUPS does - ps-printer-app, hplip-printer-app, gutenprint-printer-app, gs-printer-app (foo2zjs, pnm2ppa, etc), gutenprint-printer-app cups-filters, CUPS Snap, Printer Applications, Driverless Scanning ------------------------------------------------------------------ - cups-filters - libcupsfilters - all filters were converted into filter function, work without PPD, log function instead of stderr - cffilterpwgtoraster() - streamed filtering line by line, from Apple/PWG raster to CUPS/Apple/PWG raster - cffilteruniversal() - universal filter which converts from a format to any other - decides which functions are called - cffilterexternalcups() - call classic filters and backends, emulates complete CUPS environment - helper for legacy printer application - fixes: - improvement of auto selection of color space - all driverless formats done by gs - new filter option filter-streaming-mode to bypass loading whole file and enable streaming of data - cffilterpdftopdf, cffilterimageto - fixes for page geometry, landscapes - libppd: - not for new drivers - autoselecting the best PPD option - added PPD compiling of .drv files for retrofitting - cups-browsed: - implicitclass backend started to use filter functions - - implicitclass started to query printer via IPP for correct properties, right now works only for raster printers - to be planned - optimization with avahi, moving into a separate project, and into SNAP - cups-filters 2.0 - new license ASL 2.0 + (L)GPL2 exception - cleanup of naming style - soname bumped - using log function instead of stderr - restructuring because of libppd - PPD support is removed from libcupsfilters, but wrapper filter functions in libppd are available - CUPS 2.x and retro printer apps will work with libppd filters - currently on track - once it is finished, cups-filters 2.0 is ready - optional: separate cups-browsed and libppd from cups-filters, move from qpdf to pdfio for pdftopdf filtering and then optional building - CUPS in SNAP - complete printing stack - cups, cups-filters, gs, qpdf - three modes - standalone (SNAP Cups only), proxy (classic CUPS exists, SNAP CUPS clones the queues and is firewall for system CUPS), parallel (classic CUPS present and SNAP CUPS is independent) - listens on SNAP domain socket - investigated flatpak - cannot be used for CUPS and printer app, maybe OCI containers via docker? - printing GUI - print dialog CPDB, print setup tools and printer wizard on the track