cups-filters 2.0b
Summary
The cups-filters
project has been split into five projects in the new major version 2.0b - cups-filters
, libcupsfilters
, libppd
, braille-printer-app
and cups-browsed
- the new projects will be packaged and cups-filters
package will be rebased to version 2.0b once the other projects are available in rawhide. All projects are now united on Apache Software License 2.0.
Owner
- Name: Zdenek Dohnal
- Email: zdohnal@redhat.com
Current status
- Targeted release: Fedora Linux 38
- Last updated: 2023-01-17
- devel thread
- FESCo issue: <will be assigned by the Wrangler>
- Tracker bug: <will be assigned by the Wrangler>
- Release notes tracker: <will be assigned by the Wrangler>
Detailed Description
cups-filters 1.x series contain several different sets of binaries:
- filters, which are used during printing, such as
pdftopdf
,imagetopdf
,bannertopdf
, cups-browsed
daemon, which automatically installs remote printers (remote print queues shared by mDNS or by CUPS broadcast, remote print queue from print server outside of local network viaBrowsePoll
or local devices) locally and provides clusters for load balancing functionality,driverless
anddriverless-fax
utilities, which generate a PPD file based on IPP response from the device,- printing backends as
beh
andimplicitclass
, - printer drivers such as generic PDF driver or virual braille driver,
- shared library
libcupsfilters
defining functions used by cups-filters tools.
Major version 2.0 follows CUPS 3.0's example - the project is divided into several modules based on its functionality. The new projects are:
- libcupsfilters- shared library, which now implements filter functions for filtering,
- libppd - shared library copied from CUPS 2.x for retrospective PPD driver support in printer applications - !do not use it for new projects!,
- cups-browsed - cups-browsed daemon,
- cups-filters - filter and backend binaries useful for CUPS 2.x,
- braille-printer-app - printer driver for Braille embosser.
All of them have to be packaged to ensure the same set of functionality as in the past. The libcupsfilters 2.x
library implements functions required for retro-fitting printer applications, which are projects substituting classic printer driver in cases where driverless protocols can't be applied (older devices which are not capable of using driverless protocols) or where driverless protocols and their options don't suffice (devices with specific printing options). The printer applications are currently available only as Snaps. Once libcupsfilters
and libppd
are shipped in Fedora, printer applications developed by OpenPrinting can be packaged into Fedora as RPMs.
libcupsfilters
requires ghostscript
10.00.0, which currently is not shipped in Fedora, so a prerequisite for new cups-filters
is rebase of ghostscript
.
The project's split has an additional side effect - cups-browsed
won't be brought together with cups
by default. I propose to add it into printing
group in comps to make sure the package is installed in specific environments, but doesn't depend on cups
.
Feedback
Benefit to Fedora
The newest cups-filters version will be shipped in Fedora, providing shared libraries libcupsfilters
and libppd
needed by printer applications. Printer applications are required for supporting older or specific devices, which can't use drivereless standards, in a system where CUPS does not support classic printer drivers (planned for CUPS 3.x).
Scope
- Proposal owners:
The owner will package the new projects, rebase the current cups-filters
package and create a pull request for adding cups-browsed
into printing
comps group. He will add the proper Conflicts:
, Requires:
and Obsoletes:
tags to ensure a clean upgrade path.
- Other developers:
- Release engineering: #Releng issue number
- Policies and guidelines: N/A (not needed for this Change)
- Trademark approval: N/A (not needed for this Change)
- Alignment with Objectives:
Upgrade/compatibility impact
RPM tags will be used in .SPEC file to ensure the clean upgrade path.
How To Test
Once all projects are packaged and waiting on review, there will be available in the COPR repo.
Regarding testing, a printer and a print server (another machine sharing the printer, ideally one in local network, second in different network) is required.
Filters testing
- print different file formats to your existing printer - text file (.txt), PDF, PostScript, PCL, image (.png/.jpeg)
- check printout if it is okay
cups-browsed testing
Print server is in a different network (and no printers are installed locally)
- check installed printers (there mustn't be any printers from print server)
$ lpstat -a
- add
BrowsePoll <server hostname or IP>
(andBrowseFilter
in case you want to install only some remote printers locally) into/etc/cups/cups-browsed.conf
- restart cups-browsed:
$ sudo systemctl restart cups-browsed
- wait a minute (depends on how many printers are installed on the server)
- check installed printers and their capabilities f.e.:
$ lpstat -a BRQ-TPBC-0C120-South accepting requests since Mon 16 Jan 2023 02:53:32 PM CET $ lpoptions -p BRQ-TPBC-0C120-South -l PageSize/Media Size: 104.78x241.3mm 110x219.99mm 11x17 12x18 162x228.99mm 194.98x270.02mm 202.99x266.98mm 202.99x329.99mm 205.99x337.01mm 215.02x345.02mm 215.97x317.99mm 215.97x341mm 215.97x342.97mm 215.97x355mm 219.99x280mm 219.99x320mm 219.99x339.97mm 270.02x390.03mm 8.5x13 8x13 98.43x190.5mm A3 *A4 A5 A6 ARCHB B4 B5 Env10 EnvC5 EnvDL EnvMonarch Executive FanFoldGermanLegal Legal Letter Oficio SRA3 Statement Tabloid InputSlot/Media Source: *Auto Manual Cas1 Cas2 Cas3 Cas4 MediaType/Media Type: Auto Stationery Stationery Stationery Recycled1 Recycled2 Recycled3 Color Prepunched Bond Heavy1 Heavy2 Heavy3 Heavy4 Heavy5 Heavy6 Heavy7 Ohp Clearfilm Labels Tracing Thin1 Thin2 Envelope 1Sidecoated1 1Sidecoated2 1Sidecoated3 1Sidecoated4 1Sidecoated5 2Sidecoated1 2Sidecoated2 2Sidecoated3 2Sidecoated4 2Sidecoated5 ColorModel/Print Color Mode: Gray *RGB Duplex/2-Sided Printing: *None DuplexNoTumble DuplexTumble OutputBin/Output Tray: *Auto TrayUpperLeft TrayLowerLeft TrayInternal TrayLowerInternal TrayUpperInternal TrayRight StapleLocation/Staple: *None BindLandscape BindPortrait cupsPrintQuality/Print Quality: *Normal
- try to print to the queue:
$ lp -d BRQ-TPBC-0C120-South <file>
Printer or print server is in the same network (and no printers are installed locally)
- stop
cups-browsed
service and remove anyBrowsePoll
directives from/etc/cups/cups-browsed.conf
:
- stop
$ sudo systemctl stop cups-browsed
- check installed printers (there mustn't be any printers from print server) and available destinations - if
cups-browsed
is not running, the remote queue or printer is seen only as destination (which is sufficient for driverless printing), not as installed printer.
- check installed printers (there mustn't be any printers from print server) and available destinations - if
$ lpstat -a $ lpstat -e HP_LaserJet_M1536dnf_MFP_42307C
- restart cups-browsed:
$ sudo systemctl restart cups-browsed
- wait a minute (depends on how many printers are installed on the server)
- check installed printer and its capabilities f.e.:
$ lpstat -e HP_LaserJet_M1536dnf_MFP_42307C $ lpstat -a HP_LaserJet_M1536dnf_MFP_42307C accepting requests since Mon 16 Jan 2023 03:03:54 PM CET $ lpoptions -p HP_LaserJet_M1536dnf_MFP_42307C -l PageSize/Media Size: 184x260mm 195x270mm 197x273mm *A4 A5 B5 DoublePostcardRotated Env10 EnvC5 EnvDL EnvMonarch Executive FanFoldGermanLegal ISOB5 Legal Letter Postcard roc16k MediaType/Media Type: *Stationery StationeryLightweight Midweight StationeryHeavyweight ExtraHeavy ColorTransparency Labels StationeryLetterhead Envelope StationeryPreprinted StationeryPrepunched Color Bond Recycled Rough Vellum ColorModel/Print Color Mode: *Gray Duplex/2-Sided Printing: *None DuplexNoTumble DuplexTumble OutputBin/Output Tray: *FaceDown cupsPrintQuality/Print Quality: Draft *Normal
- try to print to the printer:
$ lp -d HP_LaserJet_M1536dnf_MFP_42307C <file>
User Experience
cups-browsed
won't be installed together with cups-filters
as it is now, because it will be an independent package to cups-filters
.
Dependencies
The new cups-filters packages depend on ghostscript 10.0.0, which is not in Fedora yet. The ticket is here.
Contingency Plan
- Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
- Contingency deadline: N/A (not a System Wide Change)
- Blocks release? N/A (not a System Wide Change), Yes/No
Documentation
OpenPrinting News article