[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Introduction of the Common Print Dialog Backends into Debian



Hi,

in 2017 I had created a new concept to maintain the printing technology support in GUI toolkits and applications centralized and separate from the GUI toolkits and applications, the Common Print Dialog Backends (CPDB).

The problem is that the print dialogs in GUI toolkits (GTK/Qt) and GUI applications with own print dialogs (Firefox, Chromium, LibreOffice, ...) do not catch up quickly when something changes in CUPS, like introduction of temporary queues for IPP printers for example. Also if a new print technology, like a cloud printing service appears, the GUI developers do not provide support in a timely manner. Especially most of these projects do not have enough (voluntary) people-power to keep up with this.

To solve this, we move the responsibility on keeping up with the print technologies away from the GUI/app/desktop developers to the creators of the print technologies, OpenPrinting for CUPS and print-to-file, any provider of a cloud printing technology only needs to make their backend to get their technology into all print dialogs. And the CPDB are also easily snappable so that such a backend could be distributed by the Snap Store.

Also for the New Architecture the CPDB are important, as the changes are performed in the CPDB CUPS backend and so the GUI dialog maintainers do not need to adapt their dialogs if the adopt the CPDB.

See

https://openprinting.github.io/achievements/#common-print-dialog-backends

After 2017, I had problems to find volunteers or GSoC contributors to implement the support for the CPDB in the actual GTK and Qt print dialogs, but last year, 2022 I finally succeeded to find a great contributor and he succeeded to implement the CPDB support in the GTK and Qt print dialogs. Along with this he also vastly improved the CPDB framework, especially with support for human-readable and translated option and choice names, option groups/categories (like Media, Quality, Finishing, ...), and a modern CUPS backend using up-to-date CUPS APIs and not handling PPD files at all (so perfectly prepared for the New Architecture).

See

https://openprinting.github.io/OpenPrinting-News-November-2022/#google-summer-of-code-2022
https://github.com/TinyTrebuchet/gsoc22/

and

https://openprinting.github.io/OpenPrinting-News-December-2022/#google-summer-of-code-2022

The principal pull/merge requests in the GUI projects are

GTK:

https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/4930/diffs?commit_id=b17001b101e3dc14b262c955e428481c11b8d4c3
https://gitlab.freedesktop.org/cups-pk-helper/cups-pk-helper/-/merge_requests/7

Qt:

https://codereview.qt-project.org/c/qt/qtbase/+/437301

And this was leading to the mentioned improvements in the CPDB and therefor a second generation of them:

https://openprinting.github.io/Common-Print-Dialog-Backends-Second-Generation-First-Beta-Release/


And therefore I want to ask you to introduce the components of the CPDB into the Debian distributions. It does not need to be in Bookworm, an introduction into Experimental for now and moving it up to unstable after the Bookworm release would be good enough.

In addition to getting Debian smoothly into the New Architecture and sharing as much as possible of the printing stack between Debian and Ubuntu it is also helpful for me to get the MIR (Main Inclusion Request) for cpdb-libs approved:

https://bugs.launchpad.net/ubuntu/+source/cpdb-libs/+bug/1747759

And for an easy start, Debian packages (at least of 1.x versions) already exist in Ubuntu Universe. They could be the base. The needed packages are cpdb-libs, cpdb-backend-cups, and cpdb-backend-file. The package cpdb-backend-gcp is discontinued as Google Cloud Print got given up by Google.

Thanks in advance.

   Till


Reply to: