[MIR] cpdb-libs
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
cpdb-libs (Ubuntu) |
Fix Released
|
High
|
Unassigned |
Bug Description
[Availability]
The package cpdb-libs is already in Ubuntu universe.
The package cpdb-libs build for the architectures it is designed to work on.
It currently builds and works for architetcures: amd64, arm64, armhf, ppc64el, riscv64, s390x
Link to package https:/
[Rationale]
The Common Printing Dialog Backends (CPDB) project of OpenPrinting is about separating the print dialogs of different GUI toolkits and applications (GTK, Qt, Firefox, Chromium, LibreOffice, ...) from the different print technologies (CUPS, print to file, cloud printing services, ...) so that they can get developed independently and so always from all applications one can print with all print technologies and changes in the print technologies get supported quickly.
If one opens the print dialog, the dialog will not talk directly to CUPS, a cloud printing service, or any other printing system. For this communication there are the backends. The dialog will find all available backends and sends commands to them, for listing all available printers, giving property/option lists for the selected printers, and printing on the selected printer. This communication is done via D-Bus. So the backends are easily exchangeable and for getting support for a new print technology only its backend needs to get added.
Backends can even be packaged as Snaps, because they communicate only by D-Bus with the frontend, so a cloud printing provider could put their backend into the Snap Store.
All packages providing a print dialog will get modified (upstream) to support CPDB with this library and then these packages will depend on cpdb-libs.
These packages are:
- GUI toolkits: GTK, Qt
- GUI applications with their own print dialogs: Firefox/
Chromium/Chrome, LibreOffice, ...
The coding of the CPDB support in GTK and Qt got already done in GSoC 2022 and currently merge requests are worked on to be included upstream. Once they are upstream (and already before the next upstream releases) they will get added to Ubuntu as distro patches.
See
https:/
The dialogs of the browsers and LibreOffice will be worked on in GSoC 2023:
This is also needed for the upcoming New Architecture of printing, where we go all-IPP and do not use PPD files any more. The CUPS backend for the CPDB (cpdb-backend-cups) is already designed to not handle PPD files any more.
The New Architecture is introduced as standard part of the distro in Ubuntu 23.10 at the latest. Therefore cpdb-libs NEEDS to be in main before Feature Freeze 23.10, ideally some weeks before.
There are very good chances that the changes on GTK and Qt already land in 23.04. In this case we need cpdb-libs in Main already by Feature Freeze of 23.04. This way the CPDB-based print dilaog will be tested more before the switchover into the New Architecture will take place.
[Security]
No CVEs/security issues in this software in the past
- no `suid` or `sgid` binaries
- no executables in `/sbin` and `/usr/sbin`
- Package does not install services, timers or recurring jobs
- Packages does not open privileged ports (ports < 1024)
- Packages does not contain extensions to security-sensitive software
The backends are triggered via session D-Bus and always run as the same user as the calling print dialog, so they do not introduce additional security problems.
The separation of the communication with individual print technologies makes this code only be needed once (in the appropriate backend) instead of in each print dialog. This simplifies the security maintenance.
[Quality assurance - function/usage]
- The package works well right after install
Every package containing a print dialog using the CPDB installs this library as a dependency. The installed backends are auto-discovered via D-Bus, no configuration or setup needed.
To assure that at least one backend is installed we can
- TODO - Let the libcpdb-
- TODO - Let cpdb-backend-cups get seeded. Letting cupsd recommending it
will only work temporarily, as in Ubuntu 23.10 we want to switch to
the CUPS Snap.
[Quality assurance - maintenance]
- The package is maintained well in Debian/Ubuntu and has not too many
and long term critical bugs open
- Ubuntu https:/
- Debian https:/
- Upstream https:/
- No open bugs at all, only this MIR ...
- The package does not deal with exotic hardware we cannot support (it deals with interfacing between app and printing system, not printing system and printer)
[Quality assurance - testing]
- The package does not run a test at build time because it does not contain upstream "make check" or "make test".
- The package runs an autopkgtest (debian/
- The package does have not failing autopkgtests right now
[Quality assurance - packaging]
- debian/watch is present and works
- debian/control defines a correct Maintainer field
- Please link to a recent build log of the package: https:/
- This package does not yield massive lintian Warnings, Errors:
E: cpdb-libs changes: bad-distributio
W: cpdb-libs source: newer-standards
W: libcpdb-libs-tools: no-manual-page [usr/bin/
P: cpdb-libs source: very-long-
- Lintian overrides are not present
Missing man page for usr/bin/
very-long-
newer-standards
- This package does not rely on obsolete or about to be demoted packages.
Depends only on libc6, libglib2.0, libcups2
- The package will be installed by default, but does not ask debconf
questions higher than medium
No debconf questions at all, AFAIK.
- Packaging and build is easy, link to d/rules
https:/
[UI standards]
- Application is not end-user facing (does not need translation)
- End-user applications without desktop file, not needed because this is a library, so not started by end users.
[Dependencies]
- No further depends or recommends dependencies that are not yet in main
Depends only on libc6, libglib2.0, libcups2
[Standards compliance]
- This package correctly follows FHS and Debian Policy
[Maintenance/Owner]
- Owning Team will be Ubuntu Printing Team - ubuntu-printing
- Team is already subscribed to the package
- This does not use static builds
- This does not use vendored code
- This package is not rust based
- The package has been built in the archive more recently than the last
test rebuild
[Background information]
The Package description explains the package well
Upstream Name is cpdb-libs (unchanged)
Link to upstream project https:/
=======
Original, old-generation MIR description
[Availability]
Already in universe
Built for all supported architectures
[Rationale]
The Common Printing Dialog Backends (CPDB) project of OpenPrinting is about separating the print dialogs of different GUI toolkits and applications (GTK, Qt, Firefox, Chromium, LibreOffice, ...) from the different print technologies (CUPS, print to file, cloud printing services, ...) so that they can get developed independently and so always from all applications one can print with all print technologies and changes in the print technologies get supported quickly.
If one opens the print dialog, the dialog will not talk directly to CUPS, a cloud printing service, or any other printing system. For this communication there are the backends. The dialog will find all available backends and sends commands to them, for listing all available printers, giving property/option lists for the selected printers, and printing on the selected printer. This communication is done via D-Bus. So the backends are easily exchangeable and for getting support for a new print technology only its backend needs to get added.
Backends can even be packaged as Snaps, because they communicate only by D-Bus with the frontend, so a cloud printing provider could put their backend into the Snap Store.
[Security]
No known security issues, no CVEs for cpdb-libs known.
The backends are triggered via session D-Bus and always run as the same user as the calling print dialog, so they do not introduce additional security problems.
The separation of the communication with individual print technologies makes this code only be needed once (in the appropriate backend) instead of in each print dialog. This simplifies the security maintenance.
[Quality assurance]
- The Ubuntu Printing Team is subscribed.
https:/
https:/
No upstream tests or autopkgtests.
[Dependencies]
CUPS, libcupsfilters, Glib, D-Bus -> all in main.
[Standards compliance]
The package meets the FHS and Debian Policy standards (4.1.0)
[Maintenance]
- Actively developed upstream. Last release was 2.0b1
https:/
Changed in cpdb-libs (Ubuntu): | |
importance: | Undecided → High |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
Changed in cpdb-libs (Ubuntu): | |
assignee: | nobody → Christian Ehrhardt (paelzer) |
tags: | added: sec-1605 |
Please address the following issues:
- add symbols files for the shared libaries
- consider running an autopkg test, maybe using the included demo?
upstream doesn't seem to include any tests
- grepping for sprintf, you only find fixed buffer sizes everywhere.
Please could you replace these with sensible macros/constants,
or provide an analysis why these buffers are large enough?