Meeting called to order by Ira McDonald at 1pm US Eastern. Minutes taken by Ira McDonald. Attendees
Agenda
- Discussion - On 5-7 May 2020, we will again have our annual joint meeting. - Because of the coronavirus pandemic, we have turned this into a virtual meeting using WebEx, instead of actually coming together in Lexington, KY. - Note: The originally planned schedules *did* change (for shorter meeting days).
- Discussion - Unfortunately, the Linux Foundation Member Summit 2020 in Lake Tahoe, California, has been cancelled due to the coronavirus pandemic, as were many other events.
- Progress report - No update - We need to go through the new OP website now and look for things which are still missing or need improving. Please report any issue here: - https://github.com/OpenPrinting/openprinting.github.io/issues
- Progress report - No update
- ippusbxd 1.34 release on 19 February 2020 - This release is mainly to improve the DNS-SD advertising to equal the one of the network mode of the device and also to advertise its AirScan scanning capabilities, but we also have some communication and code base improvements. - DNS-SD-advertise the devices capabilities based on polling the device via IPP (printing and send-fax part) and via HTTP (eSCL scanning part, if available), the records now contain the same information as the DNS-SD records which the printer broadcasts through its network connection - Improved code base by formatting, header files, comments in the header files, and improving debug output - Added exponential backoff for print read requests when printer’s responses are empty for saving resources and reducing log file spam - Apparmor: Matched path when bin and sbin directories are merged
- Progress report - Avahi (Till) - As Till reported last month, Trent Lloyd has added support for localhost to Avahi. - Now Trent has released version 0.8.0 with the localhost support included and Till's name listed in the “Thank you” section of the release notes. - Now all the requirements for Printer (and Scanner) Applications to work are fulfilled.
- Progress report - Michael Sweet has started his PAPPL, a framework/SDK for creating CUPS open standards-conforming Printer Applications. This especially allows configuration and administration with a web interface, a command line interface, and a basic IPP System Service interface and it opens only one socket for all configuration interfaces and IPP device emulations. Note that PAPPL is still under development and not in a working state yet. - The printer-application-framework project from GSoC 2019, which Till had moved into OpenPrinting last month and also started improving it for actual use is now deprecated by PAPPL, as it is missing configuration interfaces and also runs IPP printer emulations with independent sub-daemons on different ports. Some parts of the code could perhaps still be used in future Printer Applications. Till wants to thank Dheeraj Yadav for his work anyway, as this was an important study to try out and understand the new architecture. - After having a deeper look into PAPPL and also LPrint, the very first working Printer Application, a driver for label printers, also from Michael Sweet, which also has good documentation, Till has written up how a Printer Application should work, especially also with user experience in mind, and Michael has agreed with this write-up and Michael wants to add this to the documentation of PAPPL. - What Till has written up is the following: - A Printer Application should work like this: - Fire up the daemon after installation of the Snap and after each subsequent boot (declare as “daemon: simple” in snapcraft.yaml). - Check whether there is an “lp” system user available. If yes, let daemon drop privileges fully or partially, depending whether root is needed to access the hardware device. Opening the socket and filtering can always be done as “lp”. - Open the socket, at least localhost:PORT, only one single socket on one single port. Depending on configuration settings the socket is also opened on the network: HOST:PORT. For simplicity I will only mention localhost in the next steps, also only http and ipp and not https and ipps. - Fire up the web admin interface: http://localhost:PORT/ It should always be there, even if no supported printer or scanner gets discovered or manually set up. Make also a command line interface and optionally an IPP System Service interface available. - Observe devices appearing and disappearing through the whole life of the daemon process. Auto-setup USB- and DNS-SD-discovered devices when they are not already set up and when configuration does not suppress auto-setup of a certain device or generally. Do *not* wake up hardware devices during auto-setup. Use only the information of device IDs and DNS-SD records plus the knowledge of the Printer Application itself (driver) for the initial configuration of the device. Do *not* use SNMP for auto-setup, because it causes more problems than benefits. Mark queues online and offline on devices appearing and disappearing. - For each hardware device create an IPP device emulation with an URI as follows: ipp://localhost:PORT/ipp/print/laserjet-1200 ipp://localhost:PORT/ipp/print/laserjet-4000 ipp://localhost:PORT/ipp/print/officejet-5000 ipp://localhost:PORT/ipp/scan/officejet-5000 ipp://localhost:PORT/ipp/faxout/officejet-5000 Here the OfficeJet 5000 is a multi-function device which also does Scan and Fax and the Printer Application supports this (HPLIP for example). My suggestion is to have the same queue name for the printer, scanner, and fax which belong to the same hardware device. - Only query a hardware device (possibly waking it up) if - A client sends a get-printer-attributes IPP request - A client sends a job - The user configures the device using the Printer Application’s web interface. - A new Printer Application should be done natively whenever possible, not simply wrapping PPD files and filters. - Printer Applications retro-fitting PPD files and filters should only be used for older now-unmaintained drivers, proprietary drivers where the manufacturer does not care, or as a quick interim solution if a Linux distribution should be turned all-Snap, especially with CUPS in a Snap. All PPD options which can be translated to IPP attributes should be made available as IPP attributes, all options of the PPD including the ones which cannot be converted to IPP attributes should be configurable by the web interface, so that a user can at least access them by setting queue default values for them. - The Printer Application is not restricted to only provide functionality for the printing and scanning itself and preparing it but can contain all printer-specific software, like the GUI tools which come with HPLIP. - (I do not know whether this is required by standards, but in my opinion it should work) Make use of GUI tools contained in a Printer Applications Snap optional, always also allow installation of the Snap and using it on a GUI-less, headless server. This especially requires that all configuration should also be available through the web admin interface. - Michael Sweet has also updated our GSoC 2020 project ideas appropriately and the mentors are also informed about these new requirements. - While preparing our students for writing their proposals, Michael discovered that IPP System Service is missing a standard DNS-SD record. So he quickly defined one and already sent it on its way into the IPP System Service standard of the PWG.
- Progress report - SANE 1.0.29 with the “escl” (AirScan) backend made it into Ubuntu 20.04 LTS (Focal Fossa), so we now have AirScan support, meaning that hundreds of scanners in multi-function devices will work now. - Alexander Pevzner has expanded his “airscan” SANE backend to be a general backend for manufacturer-independent high-level scanning protocols. He already has added the WSD (Microsoft, W3) scanning standard and plans to add IPP Scan support soon. Here is his work so far on GitHub. https://github.com/alexpevzner/sane-airscan-wsd - Alexander will also mentor a student on the IPP Scan server/Scanner Application project in GSoC 2020.
- Progress report - Till has been on a Canonical Engineering Sprint in Frankfurt as his last trip, right before the Corona virus shutdown and talked with the developers of the Snap infrastructure about the CUPS Snap integration. - For the Printing Stack Snap, Till posted the following requests on Snapcraft Forum: - Interface request: “cups-control” on CUPS snap and including D-Bus: Snaps are a form of sandboxed software packages. The packaged software is inside an enclosure to allow detailed control of the interaction between this software and the outside world. To define the allowed communication Snaps use interfaces which describe what is allowed. These interfaces are defined in snapd, the central control entity for the Snaps on a system. For the CUPS printing Snap we need a specialized interface allowing the communication channels of CUPS: its TCP socket, its domain socket, and its D-Bus services. This is a request to the snapd developers to add an appropriate interface. - Hardware-associated snaps - Snap Store search by hardware signature: The main reason for which we are developing Printer Applications is to provide printer drivers in a way that we can use sandboxed packaging for security and for making the driver packages work on any Linux distribution, not needing to build them for each distribution individually. But when the Printer Applications are put up as Snaps in the Snap Store, a user would need to find the corrct Snap for their device to install it. Adding a hardware signature list could make the finding of the correct driver automatic, by hardware info being sent to the Snap Store as a search term. This is the appropriate feature request for snapcraft and the Snap Store.
- CUPS source code and bug reports are handled on GitHub now - https://github.com/apple/cups/ - CUPS Summary (Till) - CUPS release v2.3.1 on 13 December 2019 (Mike) - Newest CUPS 2.3.x release. - Lots of bug fixes. - CUPS release v2.2.13 on 13 December 2019 (Mike) - Newest CUPS 2.2.x release. - Last general bug fix release in the 2.2.x series and includes a fix for CVE-2019-2228. - No further releases on the CUPS GitHub since 13 December 2019. - But now Till got the first sign of life from Apple since Michael Sweet left. Till got answers on his two bug reports, one about mangling IPP attribute names and one about cupsctl corrupting the cupsd.conf file. - CUPS Filters Summary (Till) - Currently released is 1.27.3. - Next development steps of cups-filters are to go towards a PPD-less world and Printer applications: - Make all filters working without PPD, with IPP options. Exceptions are filters especially made for PPDs, as foomatic-rip. - Add build options for no-PPD-supporting CUPS, raster-only Printer Applications, no cups-browsed. Snaps will often have their own cups-filters and then a very limited part of it. - Move more functionality into the libcupsfilters library, so in Printer Applications filter chains could be implemented as library function calls instead of external executable calls. - CUPS Filters v1.27.3 - Bug fix release, fixing Ghostscript-based PDF page counting in foomatic-rip to work with all Ghostscript versions, building libfontembed tests with correct path to test font, re-sharing of remote CUPS queues with cups-browsed and others. - CUPS Filters v1.27.2 - Bug fix release, mainly to fix regressions cause by the zero-page-job-support implementation in foomatic-rip, also some code improvements in foomatic-rip and some crasher fixes in cups-browsed. - CUPS Filters v1.27.3 release on 20 March 2020 (Till) - cups-browsed: Allow sharing local queues pointing to remote CUPS queues and re-sharing printers discovered via BrowsePoll by default, using AllowResharingRemoteCUPSPrinters and NewBrowsePollQueuesShared directives in cups-browsed.conf (Issue #101, Pull request #218). - driverless: Correctly unlink temporary file when generating PPD file (Pull request #220). - cups-browsed: Fixed memory leaks (Pull request #219). - foomatic-rip: PDF page count side-loads the PDF file to count the pages in, so it cannot be run in -dSAFER mode. Run even in -dNOSAFER mode to override the -dSAFER default of newer Ghostscript versions. This should not cause a security problem as we do not take an input file which could do arbitrary side-loads but instead we run hard-coded PostScript commands (Issue #216). - libfontembed: Add checks to the test programs to not segfault if the test font file is not found (Pull request #214). - Build System: Let ./configure fail if the supplied test font file path (or the default) does not exist (Pull request #214), also use the "find" command to find the test font file DejaVuSans.ttf under /usr/share/fonts, as every distribution has it somewhere else. - CUPS Filters v1.27.2 release on 28 February 2020 (Till) - foomatic-rip: In some PostScript input files it was possible that option settings did not get inserted or lines inserted on the wron place (Issue #208, Pull request #210). - foomatic-rip: For the PDF page count call Ghostscript in sandbox mode and fix pointer arithmetics (Pull request #212). - foomatic-rip: Zero-page-job handling changes made the last page of PostScript files not printed, also turning one-page jobs into zero-page jobs (Issue #200, Issue #206, Issue #208, Pull request #209, Pull request #210, Pull request #211). - cups-browsed: check_printer_with_option() function: Initialize the value, add further checks, freeing memory and stop allocating magic numbers (Pull request #204). - cups-browsed: Additional checks against crashes in the is_local_hostname() function (Ubuntu bug #1863716)
- GSoC 2020 Status - The Linux Foundation was accepted as a mentoring organization on 20 February 2020. - So we have continued looking for students and let them do assignments to introduce them to OpenPrinting. - The application period for students started on 16 March 2020 and currently we are working with our student candidates on their proposals. We are giving them more background information about the project ideas so that they can plan how to work on the projects. - The students who have reached this stage of our selection process have successfully fixed 9 issues on the OpenPrinting GitHub which we have given to them as assignments. Some additional issues we have closed as invalid after investigations done by our students. The number of open issues of cups-filters is now down to 8. - We have 13 GSoC mentors registered already for OpenPrinting, so mentoring for all students will be assured. - The application period for students ends on 31 March 2020, so we are still accepting student applications. The accepted student projects will be announced on 27 April 2020. See the GSoC 2020 timeline below. - GSoC 2020 Timeline - DONE - 14 January - Mentoring organization applications submissions start - DONE - 5 February - Mentoring organization application submissions end - DONE - 5-19 February - Google program administrators review organization applications - DONE - 20 February - List of accepted mentoring organizations published - DONE - 20 February to 16 March - Potential student participants discuss ideas w/ mentors - DONE - 16 March - Student application submissions start - 31 March - Student application submissions end - 14 April - Student slot requests due from Org Admins - 23 April - Student Project selections due from Org Admins - 27 April - Accepted student projects announced - May 18 Coding officially begins! - 15 June - Mentors and students can begin submitting Phase 1 evaluations - 19 June - Phase 1 Evaluation deadline - 13 July - Mentors and students can begin submitting Phase 2 evaluations - 17 July - Phase 2 Evaluation deadline - 10-17 August - Final week: Students submit their final work and mentor evaluations - 17-24 August - Mentors submit final student evaluations - 25 August - Final results of Google Summer of Code 2020 announced - October - GSoC 2020 Mentor Summit
- Joint PWG/OP Virtual F2F (PWG Host) - 5-7 May 2020 - Ira to attend - http://www.pwg.org/chair/meeting-info/may-2020-virtual.html - Status of AMSC and ISO liaisons w/ PWG (Paul Tykodi) - http://ftp.pwg.org/pub/pwg/general/sc/pwg-sc-call-minutes-20200210.htm - http://ftp.pwg.org/pub/pwg/general/sc/pwg-sc-call-minutes-20200224.htm - http://ftp.pwg.org/pub/pwg/general/sc/pwg-sc-call-minutes-20200309.htm - see PWG Steering Committee minutes from 02/10/20, 02/24/20, 03/09/20 - PWG Hardcopy Device Security Guidelines v1.0 - Interim draft - https://ftp.pwg.org/pub/pwg/ids/wd/wd-idshcdsec10-20200120-rev.pdf - for a Best Practice - PWG F2F review on 6 February 2020 - Schedule - Stable draft in Q3/Q4 2020 - IPP Transaction-Based Printing Extensions v1.1 (Mike) - Stable draft - https://ftp.pwg.org/pub/pwg/ipp/wd/wd-ipptrans11-20200226-rev.pdf - for a Candidate Standard - minor errata update of PWG 5100.16-2013 - PWG Call for Objections ends on 27 March 2020 - Schedule - PWG Candidate Standard in Q1 2020 - IPP Everywhere 1.1 (Mike) - Stable draft - https://ftp.pwg.org/pub/pwg/ipp/wd/wd-ippeve11-20200312-rev.pdf - for a Candidate Standard - IPP WG Last Call ended on 12 March 2019 - Schedule - PWG Call for Objections in Q1 2020 - IPP Everywhere 1.1 Self-Certification Manual 1.1 (Mike) - Stable draft - https://ftp.pwg.org/pub/pwg/ipp/wd/wd-ippeveselfcert11-20200312-rev.pdf - for a Candidate Standard - IPP WG Last Call ended on 12 March 2019 - Schedule - PWG Call for Objections in Q1 2020 - IPP Driverless Printing Extensions v2.0 (Smith) - Interim draft - https://ftp.pwg.org/pub/pwg/ipp/wd-ippnodriver20-20200204-rev.pdf - for a Candidate Standard - major update of PWG 5100.13-2012 - IPP WG review on 19 March 2020 - completed all sections! - Schedule - Prototype draft in Q2 2020 - IPP Production Printing Ext v2.0 (Mike) - Prototype draft - https://ftp.pwg.org/pub/pwg/ipp/wd/wd-ippppx20-20200130-rev.pdf - for a Candidate Standard - major update of PWG 5100.3-2001 - PWG F2F review on 5-6 February 2020 - prototype in ippserver (newly REQUIRED and RECOMMENDED attributes) - Schedule - Stable draft in Q2 2020 - IPP Enterprise Printing Extensions v2.0 (Smith) - Interim draft - https://ftp.pwg.org/pub/pwg/ipp/wd/wd-ippepx20-20191010-rev.pdf - for a Candidate Standard - major update of PWG 5100.11-2010 - PWG F2F skipped on 6 February 2020 - Schedule - Prototype draft Q2 2020 - IPP Encrypted Jobs and Documents (Mike/Smith) - Interim draft - https://ftp.pwg.org/pub/pwg/ipp/wd/wd-ipptrustnoone10-20200218-rev.pdf - for a Candidate Standard - PWG F2F review on 6 February 2020 - Schedule - Prototype draft in Q3 2020 - Job Accounting for IPP v1.0 (Mike) - Interim draft - https://ftp.pwg.org/pub/pwg/ipp/wd/wd-ippaccounting10-20200129-rev.pdf - for a Best Practice - PWG F2F review on 5 February 2020 - Schedule - Prototype draft in Q2 2020
- IEEE 1609 27 April 2020 - Virtual Meeting - Ira to call in - https://standards.ieee.org/project/1609_2_1.html - Joint PWG/OP Virtual F2F (PWG Host) - 5-7 May 2020 - Ira to attend - http://www.pwg.org/chair/meeting-info/may-2020-virtual.html - TCG F2F in Brussels, Belgium - 15-18 June 2020 - CANCELED - https://trustedcomputinggroup.org/ - no virtual meeting is planned
Open Action Items
Next OP US/Europe/Brazil/India Conference Calls
- Tuesday 7 April 2020, Daytime - Bluejeans.com web conference to be announced - Note - US Daylight Savings Time starts 8 March 2020 - Note - EU Summer Time starts 29 March 2020 - Note - IETF 107 in Vancouver, Canada - 21-27 March 2020 - Note - IEEE 1609 in Austin, TX - 27-28 April 2020 - US 10am in San Francisco - US PDT (Pacific Daylight Time) 11am in Colorado - US MDT (Mountain Daylight Time) 12am in Chicago - US CDT (Central Daylight Time) 1pm in New York - US EDT (Eastern Daylight Time) - Europe 7pm in Berlin - CEST (Central Europe Summer Time) - Brazil 2pm in Belo Horizonte - BRT (Brasilia Time) - India 10:30pm in New Delhi - IST (India Standard Time)
- Tuesday 12 May 2020, Daytime - Bluejeans.com web conference to be announced - Note - Joint PWG/OP Virtual F2F (PWG Host) - 5-7 May 2020 - US 10am in San Francisco - US PDT (Pacific Daylight Time) 11am in Colorado - US MDT (Mountain Daylight Time) 12am in Chicago - US CDT (Central Daylight Time) 1pm in New York - US EDT (Eastern Daylight Time) - Europe 7pm in Berlin - CEST (Central Europe Summer Time) - Brazil 2pm in Belo Horizonte - BRT (Brasilia Time) - India 10:30pm in New Delhi - IST (India Standard Time)
- Tuesday 2 June 2020, Daytime - Bluejeans.com web conference to be announced - US 10am in San Francisco - US PDT (Pacific Daylight Time) 11am in Colorado - US MDT (Mountain Daylight Time) 12am in Chicago - US CDT (Central Daylight Time) 1pm in New York - US EDT (Eastern Daylight Time) - Europe 7pm in Berlin - CEST (Central Europe Summer Time) - Brazil 2pm in Belo Horizonte - BRT (Brasilia Time) - India 10:30pm in New Delhi - IST (India Standard Time)