https://fedoraproject.org/wiki/Changes/Cups-filters2.0b

This document represents a proposed Change. As part of the Changes
process, proposals are publicly announced in order to receive
community feedback. This proposal will only be implemented if approved
by the Fedora Engineering Steering Committee.

== 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: [[User:Zdohnal| Zdenek Dohnal]]
* Email: zdoh...@redhat.com


== 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 via `BrowsePoll` or
local devices) locally and provides clusters for load balancing
functionality,
* `driverless` and `driverless-fax` utilities, which generate a PPD
file based on IPP response from the device,
* printing backends as `beh` and `implicitclass`,
* 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:

* [https://github.com/OpenPrinting/libcupsfilters libcupsfilters]-
shared library, which now implements filter functions for filtering,
* [https://github.com/OpenPrinting/libppd libppd] - shared library
copied from CUPS 2.x for retrospective PPD driver support in printer
applications - !do not use it for new projects!,
* [https://github.com/OpenPrinting/cups-browsed cups-browsed] -
cups-browsed daemon,
* [https://github.com/OpenPrinting/cups-filters cups-filters] - filter
and backend binaries useful for CUPS 2.x,
* [https://github.com/OpenPrinting/braille-printer-app
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:
* 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
[https://copr.fedorainfracloud.org/coprs/zdohnal/cups-filters-2.0-repo/
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)

<pre>
$ lpstat -a
</pre>

* add `BrowsePoll <server hostname or IP>` (and `BrowseFilter` in case
you want to install only some remote printers locally) into
`/etc/cups/cups-browsed.conf`
* restart cups-browsed:

<pre>
$ sudo systemctl restart cups-browsed
</pre>

* wait a minute (depends on how many printers are installed on the server)
* check installed printers and their capabilities f.e.:

<pre>
$ 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
</pre>

* try to print to the queue:

<pre>
$ lp -d BRQ-TPBC-0C120-South <file>
</pre>

==== Printer or print server is in the same network (and no printers
are installed locally) ====
:* stop `cups-browsed` service and remove any `BrowsePoll` directives:

<pre>
$ sudo systemctl stop cups-browsed
</pre>

:* 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.

<pre>
$ lpstat -a
$ lpstat -e
HP_LaserJet_M1536dnf_MFP_42307C
</pre>

:* restart cups-browsed:

<pre>
$ sudo systemctl restart cups-browsed
</pre>

:* wait a minute (depends on how many printers are installed on the server)
:* check installed printer and its capabilities f.e.:

<pre>
$ 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
</pre>

:* try to print to the printer:

<pre>
$ lp -d HP_LaserJet_M1536dnf_MFP_42307C <file>
</pre>

== 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 depends on ghostscript 10.0.0, which is
not in Fedora yet. The ticket is
[https://bugzilla.redhat.com/show_bug.cgi?id=2128814 here].

== Contingency Plan ==
* Contingency mechanism: (What to do?  Who will do it?) N/A (not a
System Wide Change) e the contingency mechanism can be put in place?
This will typically be the beta freeze. -->
* Contingency deadline: N/A (not a System Wide Change)
* Blocks release? N/A (not a System Wide Change)

== Documentation ==
OpenPrinting News
[https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/
article]


== Release Notes ==


-- 
Ben Cotton
He / Him / His
Fedora Program Manager
Red Hat
TZ=America/Indiana/Indianapolis
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to