Print Dialog: Add support for the Common Print Dialog Backends (CPDB)

Till Kamppeter till.kamppeter at gmail.com
Tue Apr 4 17:33:59 UTC 2023


[ Already talked about this on IRC, #libreoffice-dev, Libera.Chat ]

I am Till Kamppeter, leader of OpenPrinting and so responsible for the 
printing infrastructure in Linux and other Posix-style operating systems.

https://openprinting.github.io/about-us/

LibreOffice is one of the few applications which have their own print 
dialog, and do not use one of the desktop environment toolkit's (GTK/Qt) 
ones primarily (AFAIR one can use the GTK one optionally, selecting in 
the settings).

Now, after 22 years of CUPS with PPD files and print filter executables 
as drivers we have a change in the print architecture. The use of PPD 
files gets abolished in CUPS and CUPS will go all-IPP, due to the fact 
that modern printers are driverless IPP printers, which tell everything 
about their capabilities to the clients via IPP (so do not need PPDs) 
and use standard file formats for print jobs (and so do not need driver 
filters). This requires changes in print dialogs.

https://openprinting.github.io/current/#the-new-architecture-for-printing-and-scanning

As this is most probably not the last major change needed and also for 
print dialogs to support other print technologies than CUPS, for example 
cloud printing services, I have created already 5 years ago, the concept 
of the Common Print Dialog Backends (CPDB):

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

Here the print dialog does not talk directly with the print technology 
(like CUPS) but there are GUI-toolkit-independent backends, usually 
maintained by the maintainer/developer of the print technology 
(OpenPrinting for CUPS and for print-to-file). This way the maintainer 
of the print technology, when they change something, they also change 
the backend appropriately and all print dialogs immediately work with 
the change. And if someone introduces a cloud printing service, they 
simply put the backend for it into the Snap Store and once installed the 
user can use the service from any print dialog.

Back in 2017 when the core of the CPDB was developed in a GSoC project 
there was also done a first implementation of CPDB support in the print 
dialog of LibreOffice in a second GSoC project.

In the last 5 years there was not happening much around CPDB, as I did 
not find anyone to implement its support in the print dialogs commonly 
in use.

Now, with the upcoming New Architecture for printing and scanning there 
was a need of change on all print dialogs and I decided to try to revive 
CPDB, and found a great, enthusiastic GSoC contributor for it. He 
implemented the support in both GTK and Qt dialogs and succeeded to get 
the merge request on the GTK one accepted upstream.

https://github.com/TinyTrebuchet/gsoc22/
https://openprinting.github.io/OpenPrinting-News-February-2023/#common-print-dialog-backends-support-accepted-into-gtk

For this he did not only work on GTK and Qt code but also on the 
development of CPDB, creating a second generation with much more 
functionality.

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

What we need now, to get LibreOffice smoothly integrating with the New 
Architecture of printing, is to get support of the current CPDB (2.x) 
into the print dialog of LibreOffice.

There was already a first approach of CPDB support in LibreOffice's 
print dialog done back in 2017, when the CPDB libraries were initially 
coded. The GSoC contributor Yash Srivastav (CCed) has added CPDB support 
based on the initial version of CPDB to the print dialog of LibreOffice: 
This could be a base for getting LibreOffice's current print dialog 
support CPDB 2.x.

https://yashsriv.org/posts/gsoc-finale/
https://gerrit.libreoffice.org/#/c/40565


I already have a contributor in GSoC 2023 (under the org The Linux 
Foundation/OpenPrinting, proposal already submitted, so no need of GSoC 
participation by LibreOffice), Kushagra Sharma (CCed), who wants to do 
this as his GSoC project.


So I need the right contacts and the right persons to mentor this 
contributor on the LibreOffice print dialog part (on the CPDB part 
Gaurav Guleria (CCed) and me will mentor). So if someone of gthe 
LibreOffice developers is willing to mentor and also to help Kushagra to 
get his work included upstream in LibreOffice, please speak up.

I only need someone who guides the contributor on the LibreOffice side, 
telling him where he has to do the changes, coding policies, merge 
request, guiding him to get his code contribution upstream, ...


On IRC, buovjaga told that he will discuss this in the engineering 
steering committee meeting this Thursday and I agrred with it, also 
stressing that if we do not adopt CPDB in LibreOffice, the print dialog 
could fail to build or work when the upcoming CUPS 3.x is in use, due to 
the dropped PPD file support.

Anyone, please bring this up on the meeting in case buovjaga does not 
show up or forgets to mention this subject.


By the way, caolanm also suggested to drop PostScript out put support 
from LibreOffice's print dialog and I agreed, telling that printing 
switched to PDF already many years ago.

https://openprinting.github.io/achievements/#pdf-instead-of-postscript-as-standard-print-job-format


I hope we will have a great collaboration this summer!

    Till


More information about the LibreOffice mailing list