Activity log for bug #2003259

Date Who What changed Old value New value Message
2023-01-18 20:27:58 Till Kamppeter bug added bug
2023-01-18 20:33:16 Till Kamppeter bug added subscriber MIR approval team
2023-01-18 20:33:28 Till Kamppeter bug added subscriber Sebastien Bacher
2023-01-18 20:34:59 Till Kamppeter cups-filters (Ubuntu): milestone ubuntu-23.04-feature-freeze
2023-01-18 23:32:53 Till Kamppeter bug added subscriber Jeremy Bicha
2023-01-24 15:38:29 Christian Ehrhardt  cups-filters (Ubuntu): assignee Didier Roche-Tolomelli (didrocks)
2023-01-24 15:43:58 Didier Roche-Tolomelli bug added subscriber Didier Roche-Tolomelli
2023-01-24 15:44:04 Didier Roche-Tolomelli cups-filters (Ubuntu): status New Incomplete
2023-01-24 15:44:19 Didier Roche-Tolomelli cups-filters (Ubuntu): assignee Didier Roche-Tolomelli (didrocks) Till Kamppeter (till-kamppeter)
2023-01-25 12:06:27 Till Kamppeter bug task added libcupsfilters (Ubuntu)
2023-01-25 12:06:46 Till Kamppeter bug task added libppd (Ubuntu)
2023-01-25 12:07:05 Till Kamppeter bug task added cups-browsed (Ubuntu)
2023-01-25 12:07:17 Till Kamppeter cups-browsed (Ubuntu): milestone ubuntu-23.04-feature-freeze
2023-01-25 12:07:21 Till Kamppeter libcupsfilters (Ubuntu): milestone ubuntu-23.04-feature-freeze
2023-01-25 12:07:24 Till Kamppeter libppd (Ubuntu): milestone ubuntu-23.04-feature-freeze
2023-01-25 12:07:29 Till Kamppeter libcupsfilters (Ubuntu): assignee Till Kamppeter (till-kamppeter)
2023-01-25 12:07:33 Till Kamppeter libppd (Ubuntu): assignee Till Kamppeter (till-kamppeter)
2023-01-25 12:07:37 Till Kamppeter cups-browsed (Ubuntu): assignee Till Kamppeter (till-kamppeter)
2023-01-25 12:07:42 Till Kamppeter cups-browsed (Ubuntu): status New Incomplete
2023-01-25 12:07:45 Till Kamppeter libcupsfilters (Ubuntu): status New Incomplete
2023-01-25 12:07:47 Till Kamppeter libppd (Ubuntu): status New Incomplete
2023-01-25 12:08:00 Till Kamppeter bug task deleted cups-filters (Ubuntu)
2023-01-26 02:02:43 Till Kamppeter description This is a simplified MIR for the splitting of the cups-filters source package. With the second generation (2.x) cups-filters upstream got split into 5 independent component repositories: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed See https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ braille-printer-app still needs some upstream work for getting released, the others were already released as 2.0b2. libcupsfilters, cups-filters, and cups-browsed contain mainly the code from the former cups-filters (1.x) which is already in Main. libppd contains code from CUPS (libcups and cups-ppdc) which is also in Main. As of https://github.com/canonical/ubuntu-mir ---------- If a new source package contains only code which is already in main (e.g. the result of a source package split or rename, or source packages with a version in the name), it may not need a full review. Submitting a MIR bug with an explanation (but without the full template) or updating/extending on the existing old MIR bug and re-opening it by setting it to "NEW" is sufficient. ---------- This report does not need the full template. The original packages (cups-filters and cups) are in Main already for more than a decade, so repetition of the original MIR would not be useful. cups was already in Ubuntu from the very beginning on and therefore probably in Main since the differentiation of Main and Universe got introduced. The binary packages are named as before (except SONAME of libraries being 2 instead of 1 now), binary packages for libppd added. So current dependencies and seeding should pull in everything (libppd is a library and cups-filters depends on it). libfontembed has been discontinued (folded into libcupsfilters, API removed) but no package uses it (except the components of cups-filters 1.x thenselves). braille-printer-app will be added to this report (or a new simplified MIR report created) as soon as it gets released upstream. Its binary package(s) will need to get seeded. ========== Overview ======================== Due to a major change in the printing architecture [1] the cups-filters upstream project at OpenPrinting got split into 5 components [2]: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed [1] https://openprinting.github.io/current/#the-new-architecture-for-printing-and-scanning [2] https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ To reflect this in the Debian/Ubuntu packaging also the cups-filters source package there are getting split, rendering 3 new source packages (+) and therefore we need this MIR: Binaries: Source BEFORE (1.x) Source AFTER (2.x) --------------------------------------------------------------------- cups-browsed cups-filters cups-browsed + cups-filters cups-filters cups-filters cups-filters-core-drivers cups-filters cups-filters libcupsfilters-dev cups-filters libcupsfilters + libcupsfilters1 cups-filters Replaced by libcupsfilters2 * libcupsfilters2 libcupsfilters + (NEW) libfontembed-dev cups-filters REMOVED ** libfontembed cups-filters REMOVED ** libppd2 libppd + (NEW) *** * : libcupsfilters has new API generation/SONAME 1 -> 2 ** : libfontembed code folded into libcupsfilters, API removed, no other package is using it. ***: libppd contains all PPD-supporting code of CUPS, as in CUPS 3.x this code will get removed. libppd is for legacy-retro-fitting of classic CUPS drivers with PPD files. Code comes from CUPS source: cups/ppd*.[ch], scheduler/cups-driverd.cxx, ppdc/* The purposes of the new generation's binary packages are principally the same as before: - cups-browsed: Daemon to auto-create queues for network printers and to form printer clusters - cups-filters: Print data format conversion filters and printer communication backends for CUPS 2.x - Complete set - cups-filters-core-drivers: Print data format conversion filters and printer communication backends for CUPS 2.x - Essential ones for minimum configurations, like mobile or IoT - libcupsfilters-dev: C Header files for libcupsfilters2 - libcupsfilters2: Shared library containing common code for print data conversion filters, printer drivers, printer model identification and distinction, PDF file manipulation, PDF font embedding, color space conversion, ... - libppd2-dev: C Header files for libppd2 - libppd2: Shared library for support of PPD files, parsing the files, converting PPD options into IPP attributes, managing collections of PPDs, finding PPD for given printer, generating PPDs from CUPS' *.drv files --> ALL THESE BINARY PACKAGES MUST GET PROMOTED INTO MAIN (IF THEY ARE NOT ALREADY THERE). For current CUPS (2.x, provided by Debian packages) there is actually no change. CUPS depends on cups-filters ("cups" binary on "cups-filters" binary and "cups-core-drivers" binary on "cups-filters-core-drivers") to get its filters and additional backends which it needs for actual printing, now the new-generation cups-filters. The new "cups-filters" and "cups-filters-core-drivers" depend on "libcupsfilters2" and "libppd2" providing the common functionality they need. "cups-browsed" is recommended by "cups-daemon". I do not know whether any of these packages is also seeded and whether the recommend of "cups-browsed" by "cups-daemon" is strong enough to pull "cups-browsed" into Main when the MIR is approved. cups-core-drivers | +--Depends--> cups-filters-core-drivers | +--Depends--> libcupsfilters2 +--Depends--> libppd2 | +--Depends--> libcupsfilters2 cups | +--Depends--> cups-filters | +--Depends--> cups-filters-core-drivers +--Depends--> libcupsfilters2 +--Depends--> libppd2 | +--Depends--> libcupsfilters2 cups-daemon | +--Recommends--> cups-browsed | +--Depends--> libcupsfilters2 +--Depends--> libppd2 | +--Depends--> libcupsfilters2 --> SO MOST PROBABLY NO NEW DEPENDENCIES IN PACKAGES ALREADY EXISTING IN MAIN AND NO NEW SEEDS ARE NEEDED TO ACTUALLY GET EVERYTHING INTO MAIN AFTER THE APPROVAL OF THIS MIR. As one can see from the table above, the former SOURCE package cups-filters is replaced by 4 SOURCE packages now: - libcupsfilters + - libppd + - cups-filters - cups-browsed + --> ALL THESE SOURCE PACKAGES NEED TO BE IN MAIN, THE ONES WITH + NEED TO GET PROMOTED. --> CUPS-FILTERS IS ALREADY IN MAIN AND IT SHOULD CONTINUE IN MAIN. The braille-printer-app package is not yet completed upstream. As soon as this is done, it will also get uploaded to Ubuntu and a MIR for it posted. The splitting upstream is done to prepare for the New Architecture of printing, where printer drivers are not filters and PPD files any more but emulators of driverless IPP printers (Printer Applications). So a standard system installation does not need PPD file support any more, so we needed to completely separate the PPD file support code of CUPS and cups-filters into one optionally installable library but conserver as much as possible of the still valuable PPD-independent code in cups-filters, of 20 years of development and experience. Also filters need to get more accesible for Printer Applications, therefore we turned the former individual executables into library functions, the filter functions. With the introduction of libppd all use of libcups is now restricted to functionality which does not support PPD files and therefore will continue to be in libcups of CUPS 3.x ([1], future libcups3 binary package to appear in Ubuntu 24.04 LTS). This way we expect only small changes for the transition from libcups2 to libcups3. [1] https://github.com/OpenPrinting/libcups So we have now: libcupsfilters -------------- All the internal functionality of the filters which formerly was in the individual filter executables (cups-filters and cups-filters-core-drivers binary packages, new source package cups-filters) has moved into libcupsfilters (binary package libcupsfilters2, new source package libcupsfilters) as filter functions (source files cupsfilters/*to*.c*, cupsfilters/ghostscript.c, cupsfilters/pdftopdf/*, infrastructure in cupsfilters/filter.c, API in cupsfilters/filter.h). The handling of printer capabilities (media sizes, margins, color spaces, ...) and matching them with the jobs and job IPP attributes got vastly improved (cupsfilters/ipp.[ch], cupsfilters/raster.[ch].) Also API functions for handling human-readable strings/translations for option and choice names got created (cupsfilters/catalog.[ch]). The strings are taken from CUPS' message catalogs and also downloaded from driverless IPP printers. General functions for printers drivers, filters, color handling, PDF handling, ... from the old libcupsfilters (old binary package libcupsfilters1) got overtaken into the new libcupsfilters. The new libcupsfilters DOES NOT CONTAIN ANY SUPPORT FOR PPD FILES ANY MORE AND DOES NOT DEPEND ON LIBPPD. libppd ------ All PPD support which one finds in Linux distros with a CUPS/cups-filters printing stack is concentrated in libppd now. This way having PPD file support is completely optional. The library only needs to be installed if needed and being in a separate upstream repo and seperate Debian packages its maintenance can be stopped at any time while the maintenance and development of libcupsfilters continues. libppd (binary package libppd2, new source package libppd) is currently used by cups-filters (new binary packages cups-filters and cups-filters-core-drivers, new source package cups-filters) and pappl-retrofit ([1], added to Ubuntu in the next days, used by Printer Application which retro-fit classic CUPS drivers [2]). The former use case is only for systems using CUPS 2.x, the latter is mainly for systems in the New Architecture, using CUPS 3.x or the CUPS Snap [3][4] as these require all printer drivers being Printer Applications. None of the packages of the new cups-filters generation, PAPPL [5], pappl-retrofit, and the new (2.x) generation of CPDB [6] uses any PPD-file supporting functionality of libcups, so that a smooth transition to the libcups of CUPS 3.x is assured. Any PPD file support needs for legacy driver retro-fitting are covered by libppd. [1] https://github.com/OpenPrinting/pappl-retrofit [2] https://openprinting.github.io/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps [3] https://openprinting.github.io/achievements/#the-cups-snap [4] https://github.com/OpenPrinting/cups-snap [5] https://github.com/michaelrsweet/pappl/ [6] https://openprinting.github.io/achievements/#common-print-dialog-backends The source code is nearly completely overtaken from the CUPS source code: PPD file parsing and handling support in libcups (CUPS source: cups/ppd*.[ch], libppd source: ppd/*.c, API: ppd/ppd.h), PPD file collection handling and PPD file assignment to given printer (CUPS source: scheduler/cups-driverd.cxx, libppd source: ppd/ppd-collection.cxx, API: ppd/ppd.h), and generating PPD files from *.drv files (CUPS source: ppdc/*, libppd source: ppd/ppdc*.cxx, API ppd/ppdc.h). The PPD file generator for driverless printers (ppd/ppd-generator.c) is not the one from libcups but the one from the former libcupsfilters1, as that one supports generating the PPDs needed by printer clusters formed by cups-browsed. Some infrastructure got added for keeping PPD file support in the filter executables of CUPS 2.x, in ppd/ppd-filter.c, ppd/ppd-ipp.c, API is in ppd/ppd-filter.h. This infrastructure mainly parses the PPD file and turns the content of the PPD file into printer IPP attributes (what a driverless printer would respond when querying its capabilities). This way the non-PPD-supporting filter functions of libcupsfilters get to know the capabilities of the printer. cups-filters ------------ We get practically the same binaries as we had before in the cups-filters and cups-filters-core-drivers binary packages (old and new source package cups-filters), but they have changed internally: As told here earlier we have moved all the core functionality of the CUPS filters into libcupsfilters to have it available as library functions, the filter functions, so that they can be easily used by Printer Applications. Therefore the actual filter executables used for CUPS 2.x are only small wrappers which call a filter function to do the "dirty work". Only what does not make sense in the future PPD-less world keeps its code in the cups-filters upstream project: Legacy CUPS backends (backend/*), classic CUPS drivers (filter/*pclx*.c, filter/*escpx*.c), and the "driverless" utility (utils/*). A new feature is the "universal" CUPS filter (CUPS wrapper: filter/universal.c, PPD support wrapper in libppd: ppd/ppd-filter.c, core functionality in libcupsfilters: cupsfilters/universal.c). It makes use of having all filters as library functions in libcupsfilters to reduce the number of resource-consuming external executable calls by CUPS. It converts printer from practically any input format to practically any output format by calling chains of filter functions. So CUPS calls a single filter, "universal" instead of a chain of external filters. cups-filters will only be needed as long as we are using CUPS 2.x from Debian packages. If we have a distro using CUPS 3.x (planned from 24.04 LTS on) or the CUPS Snap (any CUPS version, planned from Ubuntu 23.10 on) cups-filters does not make sense any more, as we cannot add filters or backends either because CUPS is running from a sandboxed immutable image or does not support the filter/backend concept any more. cups-browsed ------------ The new cups-browsed binary package and the old one are practically identical in functionality. It is only split into its own upstream repository and with this into its own source Debian package for consistency of the splitting of cups-filters and for major changes in the future [1]. The actual source code suffered only changes for bug fixes and also for adaptation to changes in the API of the new libcupsfilters. It depends on the new libcupsfilters and also on libppd now. In the future it will get turned into a Printer Application [1] and not support and use PPD files any more, dropping the dependency on libppd. As all the rest of the current code from OpenPrinting it only uses non-PPD-supporting functionality of libcups, for a smooth transition to CUPS 3.x. [1] https://wiki.linuxfoundation.org/gsoc/google-summer-code-2023-openprinting-projects#turn_cups-browsed_into_a_printer_application === MIR REQUIREMENTS FOLLOWING TEMPLATE ==== https://github.com/canonical/ubuntu-mir This MIR is for 3 new source Debian packages which are result of splitting the cups-filters source package, so all MIR requirements based on what happened in the past are the same for all 3. Actually we are putting the answers for the cups-filters package here. Differences are caused only by how the splitting is done and will be mentioned here. Therefore I have pasted and worked through the template only once and not three times, once for each new source package. [Availability] The packages in question are uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libcupsfilters https://launchpad.net/ubuntu/+source/libppd https://launchpad.net/ubuntu/+source/cups-browsed They build for the architectures it is designed to work on. They currently build and work for the architetcures: amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main. - The packages in question are required in Ubuntu Main as they are the libcupsfilters and cups-browsed which the cups-filters 2.x source package does not contain any more, as they got separated into their own upstream source repos. - To be prepared for the removal of PPD support in CUPS 3.x, libcupsfilters does not contain any PPD file support any more. It got moved into libppd and cups-filters 2.x which provides the filters for CUPS 2.x therefore needs libppd to maintain the PPD support in these filters. - libcupsfilters, libppd, and cups-browsed are part of Ubuntu's printing stack. - libcupsfilters, libppd, and cups-browsed are part of the update of cups-filters from 1.x to 2.x - The packages libcupsfilters and libppd are new runtime dependencies of the package cups-filters that we already support - cups-browsed has to be in Main as, as before it need to overcome the lack of support for temporary CUPS queues in some print dialogs. - The packages in question are required in Ubuntu Main no later than FF of Lunar, as cups-filters 2.0~b2 is already uploaded to Lunar. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of libcupsfilters and cups-browsed: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters - All vulnerabilities are fixed, version with fix mentioned in the list. - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters' - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters - Shows the same vulnerabilities as CVE, none as not fixed in a supported Ubuntu release ("Not vulnerable", "Does not exist") Security vulnerabilities of cups, which is the origin of the code of libppd: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups - All vulnerabilities are fixed, version with fix mentioned in the list. Openwall: 'site:www.openwall.com/lists/oss-security cups' - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups - Shows the same vulnerabilities as CVE, none as not fixed in a supported Ubuntu release ("Released", "Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it. - no `suid` or `sgid` binaries - Binary /usr/sbin/cups-browsed (of package cups-browsed) in sbin is no problem. It is the cups-browsed which we already use for several years, provided by the cups-filters (1.x) source package. No actual changes have been done in the functionality of cups-browsed, only minor bug fixes. Changes in the underlying libraries (libcupsfilters, libppd) did not change the communication of cups-browsed with the outside world, but only improve the PPD files it uses and the reliability of a job being assigned to a destination printer in a cluster. The daemon listens to avahi-daemon (via D-Bus) to find out about IPP network printers (physical devices, remote CUPS queues, Printer Applications) appearing and disappearing and creates/removes/ modifies print queues on the running CUPS appropriately. It also listens to CUPS on the D-Bus whether a new job got submitted and in case it being on a queue managed by cups-browsed tells to CUPS which is the destination printer. So it listens on the (system) D-Bus and submits administrative requests to CUPS (some kind of automatic, UI-less printer setup tool). - No sbin binaries in libcupsfilters and libppd - Packages libcupsfilters and libppd do not install services, timers or recurring jobs - Package cups-browsed installs daemon, see above. - /usr/sbin/cups-browsed - Listens on system D-Bus (avahi-daemon, CUPS) - Applies administrative requests (creating/removing/modifying print queues) on CUPS - Has AppArmor profile - Packages do not open privileged ports (ports < 1024) - Packages libcupsfilters and libppd provide the code for the filters run by CUPS as the user "lp", to process print jobs. Most of the code is the same as in the former cups-filters (1.x) and libcups2. [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source packages libcupsfilters, libppd, and cups-browsed does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ... - The package works well right after install [Quality assurance - maintenance] - The package is maintained well in Debian/Ubuntu and has not too many and long term critical bugs open - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libcupsfilters/+bug - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libppd/+bug - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters - Upstream: https://github.com/OpenPrinting/libcupsfilters/issues - Upstream: https://github.com/OpenPrinting/libppd/issues - Upstream: https://github.com/OpenPrinting/cups-browsed/issues - Upstream: https://github.com/OpenPrinting/cups-filters/issues Note that the new packages, libcupsfilters, libppd, and cups-browsed are not yet introduced in Debian. They will get introduced to Debian Experimental soon. Unstable is in freeze for the Bookworm release. - The package does not deal with exotic hardware we cannot support (no printer drivers, only print data file format converters, output can be displayed with easily available, common free software tools: evince, Ghostscript, eog, rasterview) [Quality assurance - testing] - The packages libcupsfilters and libppd run test suites on build time, if they fail it makes the builds fail, links to build log - https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz - https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz - The package cups-browsed does not run a test at build time because as it was part of cups-filters there was no testing of the cups-browsed daemon. - The packages libcupsfilters and libppd run autopkgtests, and are currently passing on all architectures listed under [Availability]. The very first migration process did not yet finish for both libcupsfilters and libppd https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libcupsfilters https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libppd - The package cups-browsed does not run an autopkgtest because when cups-browsed was still part of cups-filters there was no autopkgtest, especially not for the cups-browsed daemon. - The packages libcupsfilters and libppd do not have failing autopkgtests right now [Quality assurance - packaging] - debian/watch is present and works - debian/control defines a correct Maintainer field - Build logs: libcupsfilters: https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz libppd: https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz cups-browsed: https://launchpadlibrarian.net/647984146/buildlog_ubuntu-lunar-amd64.cups-browsed_2.0~b2-0ubuntu4_BUILDING.txt.gz - These packages do not yield massive lintian Warnings, Errors - No lintian warnings or errors for libppd and cups-browsed - libcupsfilters has only P: libcupsfilters source: very-long-line-length-in-source-file 525 > 512 [Makefile.in:1759] This is not a problem, Makefile.in is auto-generated by the autotools and the package builds without problems. - Lintian overrides are not present for libcupsfilters and libppd - Lintian overrides are present for cups-browsed, but ok because CUPS needs the special permissions and directory for its backends # Upstream choices; they need to be run as root cups-browsed: executable-is-not-world-readable usr/lib/cups/backend/implicitclass 0700 # That's how CUPS does it cups-browsed: executable-in-usr-lib usr/lib/cups/backend/implicitclass - These packages do not rely on obsolete or about to be demoted packages. - These packages have no python2 or GTK2 dependencies - These packages will be installed by default, but do not ask debconf questions higher than medium - They do not ask debconf questions at all - Packaging and build is easy, debian/rules files attached. [UI standards] - Application is not end-user facing (does not need translation) [Dependencies] - No further depends or recommends dependencies outside this MIR that are not yet in main - There are further dependencies that are not yet in main, the MIR process for them is handled as part of this bug here. - libppd depends on libcupsfilters -> in this same MIR - cups-browsed depends on libcupsfilters and libppd -> in this same MIR [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 all the packages - 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 descriptions explain the packages well Upstream Name are libcupsfilters, libppd, and cups-browsed (all unchanged) Links to upstream projects: - https://github.com/OpenPrinting/libcupsfilters - https://github.com/OpenPrinting/libppd - https://github.com/OpenPrinting/cups-browsed ========== Original Description ============ This is a simplified MIR for the splitting of the cups-filters source package. With the second generation (2.x) cups-filters upstream got split into 5 independent component repositories: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed See https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ braille-printer-app still needs some upstream work for getting released, the others were already released as 2.0b2. libcupsfilters, cups-filters, and cups-browsed contain mainly the code from the former cups-filters (1.x) which is already in Main. libppd contains code from CUPS (libcups and cups-ppdc) which is also in Main. As of https://github.com/canonical/ubuntu-mir ---------- If a new source package contains only code which is already in main (e.g. the result of a source package split or rename, or source packages with a version in the name), it may not need a full review. Submitting a MIR bug with an explanation (but without the full template) or updating/extending on the existing old MIR bug and re-opening it by setting it to "NEW" is sufficient. ---------- This report does not need the full template. The original packages (cups-filters and cups) are in Main already for more than a decade, so repetition of the original MIR would not be useful. cups was already in Ubuntu from the very beginning on and therefore probably in Main since the differentiation of Main and Universe got introduced. The binary packages are named as before (except SONAME of libraries being 2 instead of 1 now), binary packages for libppd added. So current dependencies and seeding should pull in everything (libppd is a library and cups-filters depends on it). libfontembed has been discontinued (folded into libcupsfilters, API removed) but no package uses it (except the components of cups-filters 1.x thenselves). braille-printer-app will be added to this report (or a new simplified MIR report created) as soon as it gets released upstream. Its binary package(s) will need to get seeded.
2023-01-26 02:05:17 Till Kamppeter attachment added debian/rules of libcupsfilters https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug/2003259/+attachment/5643523/+files/rules
2023-01-26 02:06:38 Till Kamppeter attachment added debian/rules of libppd https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug/2003259/+attachment/5643524/+files/rules
2023-01-26 02:07:54 Till Kamppeter attachment added debian/rules of cups-browsed https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug/2003259/+attachment/5643525/+files/rules
2023-01-26 02:16:57 Till Kamppeter description ========== Overview ======================== Due to a major change in the printing architecture [1] the cups-filters upstream project at OpenPrinting got split into 5 components [2]: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed [1] https://openprinting.github.io/current/#the-new-architecture-for-printing-and-scanning [2] https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ To reflect this in the Debian/Ubuntu packaging also the cups-filters source package there are getting split, rendering 3 new source packages (+) and therefore we need this MIR: Binaries: Source BEFORE (1.x) Source AFTER (2.x) --------------------------------------------------------------------- cups-browsed cups-filters cups-browsed + cups-filters cups-filters cups-filters cups-filters-core-drivers cups-filters cups-filters libcupsfilters-dev cups-filters libcupsfilters + libcupsfilters1 cups-filters Replaced by libcupsfilters2 * libcupsfilters2 libcupsfilters + (NEW) libfontembed-dev cups-filters REMOVED ** libfontembed cups-filters REMOVED ** libppd2 libppd + (NEW) *** * : libcupsfilters has new API generation/SONAME 1 -> 2 ** : libfontembed code folded into libcupsfilters, API removed, no other package is using it. ***: libppd contains all PPD-supporting code of CUPS, as in CUPS 3.x this code will get removed. libppd is for legacy-retro-fitting of classic CUPS drivers with PPD files. Code comes from CUPS source: cups/ppd*.[ch], scheduler/cups-driverd.cxx, ppdc/* The purposes of the new generation's binary packages are principally the same as before: - cups-browsed: Daemon to auto-create queues for network printers and to form printer clusters - cups-filters: Print data format conversion filters and printer communication backends for CUPS 2.x - Complete set - cups-filters-core-drivers: Print data format conversion filters and printer communication backends for CUPS 2.x - Essential ones for minimum configurations, like mobile or IoT - libcupsfilters-dev: C Header files for libcupsfilters2 - libcupsfilters2: Shared library containing common code for print data conversion filters, printer drivers, printer model identification and distinction, PDF file manipulation, PDF font embedding, color space conversion, ... - libppd2-dev: C Header files for libppd2 - libppd2: Shared library for support of PPD files, parsing the files, converting PPD options into IPP attributes, managing collections of PPDs, finding PPD for given printer, generating PPDs from CUPS' *.drv files --> ALL THESE BINARY PACKAGES MUST GET PROMOTED INTO MAIN (IF THEY ARE NOT ALREADY THERE). For current CUPS (2.x, provided by Debian packages) there is actually no change. CUPS depends on cups-filters ("cups" binary on "cups-filters" binary and "cups-core-drivers" binary on "cups-filters-core-drivers") to get its filters and additional backends which it needs for actual printing, now the new-generation cups-filters. The new "cups-filters" and "cups-filters-core-drivers" depend on "libcupsfilters2" and "libppd2" providing the common functionality they need. "cups-browsed" is recommended by "cups-daemon". I do not know whether any of these packages is also seeded and whether the recommend of "cups-browsed" by "cups-daemon" is strong enough to pull "cups-browsed" into Main when the MIR is approved. cups-core-drivers | +--Depends--> cups-filters-core-drivers | +--Depends--> libcupsfilters2 +--Depends--> libppd2 | +--Depends--> libcupsfilters2 cups | +--Depends--> cups-filters | +--Depends--> cups-filters-core-drivers +--Depends--> libcupsfilters2 +--Depends--> libppd2 | +--Depends--> libcupsfilters2 cups-daemon | +--Recommends--> cups-browsed | +--Depends--> libcupsfilters2 +--Depends--> libppd2 | +--Depends--> libcupsfilters2 --> SO MOST PROBABLY NO NEW DEPENDENCIES IN PACKAGES ALREADY EXISTING IN MAIN AND NO NEW SEEDS ARE NEEDED TO ACTUALLY GET EVERYTHING INTO MAIN AFTER THE APPROVAL OF THIS MIR. As one can see from the table above, the former SOURCE package cups-filters is replaced by 4 SOURCE packages now: - libcupsfilters + - libppd + - cups-filters - cups-browsed + --> ALL THESE SOURCE PACKAGES NEED TO BE IN MAIN, THE ONES WITH + NEED TO GET PROMOTED. --> CUPS-FILTERS IS ALREADY IN MAIN AND IT SHOULD CONTINUE IN MAIN. The braille-printer-app package is not yet completed upstream. As soon as this is done, it will also get uploaded to Ubuntu and a MIR for it posted. The splitting upstream is done to prepare for the New Architecture of printing, where printer drivers are not filters and PPD files any more but emulators of driverless IPP printers (Printer Applications). So a standard system installation does not need PPD file support any more, so we needed to completely separate the PPD file support code of CUPS and cups-filters into one optionally installable library but conserver as much as possible of the still valuable PPD-independent code in cups-filters, of 20 years of development and experience. Also filters need to get more accesible for Printer Applications, therefore we turned the former individual executables into library functions, the filter functions. With the introduction of libppd all use of libcups is now restricted to functionality which does not support PPD files and therefore will continue to be in libcups of CUPS 3.x ([1], future libcups3 binary package to appear in Ubuntu 24.04 LTS). This way we expect only small changes for the transition from libcups2 to libcups3. [1] https://github.com/OpenPrinting/libcups So we have now: libcupsfilters -------------- All the internal functionality of the filters which formerly was in the individual filter executables (cups-filters and cups-filters-core-drivers binary packages, new source package cups-filters) has moved into libcupsfilters (binary package libcupsfilters2, new source package libcupsfilters) as filter functions (source files cupsfilters/*to*.c*, cupsfilters/ghostscript.c, cupsfilters/pdftopdf/*, infrastructure in cupsfilters/filter.c, API in cupsfilters/filter.h). The handling of printer capabilities (media sizes, margins, color spaces, ...) and matching them with the jobs and job IPP attributes got vastly improved (cupsfilters/ipp.[ch], cupsfilters/raster.[ch].) Also API functions for handling human-readable strings/translations for option and choice names got created (cupsfilters/catalog.[ch]). The strings are taken from CUPS' message catalogs and also downloaded from driverless IPP printers. General functions for printers drivers, filters, color handling, PDF handling, ... from the old libcupsfilters (old binary package libcupsfilters1) got overtaken into the new libcupsfilters. The new libcupsfilters DOES NOT CONTAIN ANY SUPPORT FOR PPD FILES ANY MORE AND DOES NOT DEPEND ON LIBPPD. libppd ------ All PPD support which one finds in Linux distros with a CUPS/cups-filters printing stack is concentrated in libppd now. This way having PPD file support is completely optional. The library only needs to be installed if needed and being in a separate upstream repo and seperate Debian packages its maintenance can be stopped at any time while the maintenance and development of libcupsfilters continues. libppd (binary package libppd2, new source package libppd) is currently used by cups-filters (new binary packages cups-filters and cups-filters-core-drivers, new source package cups-filters) and pappl-retrofit ([1], added to Ubuntu in the next days, used by Printer Application which retro-fit classic CUPS drivers [2]). The former use case is only for systems using CUPS 2.x, the latter is mainly for systems in the New Architecture, using CUPS 3.x or the CUPS Snap [3][4] as these require all printer drivers being Printer Applications. None of the packages of the new cups-filters generation, PAPPL [5], pappl-retrofit, and the new (2.x) generation of CPDB [6] uses any PPD-file supporting functionality of libcups, so that a smooth transition to the libcups of CUPS 3.x is assured. Any PPD file support needs for legacy driver retro-fitting are covered by libppd. [1] https://github.com/OpenPrinting/pappl-retrofit [2] https://openprinting.github.io/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps [3] https://openprinting.github.io/achievements/#the-cups-snap [4] https://github.com/OpenPrinting/cups-snap [5] https://github.com/michaelrsweet/pappl/ [6] https://openprinting.github.io/achievements/#common-print-dialog-backends The source code is nearly completely overtaken from the CUPS source code: PPD file parsing and handling support in libcups (CUPS source: cups/ppd*.[ch], libppd source: ppd/*.c, API: ppd/ppd.h), PPD file collection handling and PPD file assignment to given printer (CUPS source: scheduler/cups-driverd.cxx, libppd source: ppd/ppd-collection.cxx, API: ppd/ppd.h), and generating PPD files from *.drv files (CUPS source: ppdc/*, libppd source: ppd/ppdc*.cxx, API ppd/ppdc.h). The PPD file generator for driverless printers (ppd/ppd-generator.c) is not the one from libcups but the one from the former libcupsfilters1, as that one supports generating the PPDs needed by printer clusters formed by cups-browsed. Some infrastructure got added for keeping PPD file support in the filter executables of CUPS 2.x, in ppd/ppd-filter.c, ppd/ppd-ipp.c, API is in ppd/ppd-filter.h. This infrastructure mainly parses the PPD file and turns the content of the PPD file into printer IPP attributes (what a driverless printer would respond when querying its capabilities). This way the non-PPD-supporting filter functions of libcupsfilters get to know the capabilities of the printer. cups-filters ------------ We get practically the same binaries as we had before in the cups-filters and cups-filters-core-drivers binary packages (old and new source package cups-filters), but they have changed internally: As told here earlier we have moved all the core functionality of the CUPS filters into libcupsfilters to have it available as library functions, the filter functions, so that they can be easily used by Printer Applications. Therefore the actual filter executables used for CUPS 2.x are only small wrappers which call a filter function to do the "dirty work". Only what does not make sense in the future PPD-less world keeps its code in the cups-filters upstream project: Legacy CUPS backends (backend/*), classic CUPS drivers (filter/*pclx*.c, filter/*escpx*.c), and the "driverless" utility (utils/*). A new feature is the "universal" CUPS filter (CUPS wrapper: filter/universal.c, PPD support wrapper in libppd: ppd/ppd-filter.c, core functionality in libcupsfilters: cupsfilters/universal.c). It makes use of having all filters as library functions in libcupsfilters to reduce the number of resource-consuming external executable calls by CUPS. It converts printer from practically any input format to practically any output format by calling chains of filter functions. So CUPS calls a single filter, "universal" instead of a chain of external filters. cups-filters will only be needed as long as we are using CUPS 2.x from Debian packages. If we have a distro using CUPS 3.x (planned from 24.04 LTS on) or the CUPS Snap (any CUPS version, planned from Ubuntu 23.10 on) cups-filters does not make sense any more, as we cannot add filters or backends either because CUPS is running from a sandboxed immutable image or does not support the filter/backend concept any more. cups-browsed ------------ The new cups-browsed binary package and the old one are practically identical in functionality. It is only split into its own upstream repository and with this into its own source Debian package for consistency of the splitting of cups-filters and for major changes in the future [1]. The actual source code suffered only changes for bug fixes and also for adaptation to changes in the API of the new libcupsfilters. It depends on the new libcupsfilters and also on libppd now. In the future it will get turned into a Printer Application [1] and not support and use PPD files any more, dropping the dependency on libppd. As all the rest of the current code from OpenPrinting it only uses non-PPD-supporting functionality of libcups, for a smooth transition to CUPS 3.x. [1] https://wiki.linuxfoundation.org/gsoc/google-summer-code-2023-openprinting-projects#turn_cups-browsed_into_a_printer_application === MIR REQUIREMENTS FOLLOWING TEMPLATE ==== https://github.com/canonical/ubuntu-mir This MIR is for 3 new source Debian packages which are result of splitting the cups-filters source package, so all MIR requirements based on what happened in the past are the same for all 3. Actually we are putting the answers for the cups-filters package here. Differences are caused only by how the splitting is done and will be mentioned here. Therefore I have pasted and worked through the template only once and not three times, once for each new source package. [Availability] The packages in question are uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libcupsfilters https://launchpad.net/ubuntu/+source/libppd https://launchpad.net/ubuntu/+source/cups-browsed They build for the architectures it is designed to work on. They currently build and work for the architetcures: amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main. - The packages in question are required in Ubuntu Main as they are the libcupsfilters and cups-browsed which the cups-filters 2.x source package does not contain any more, as they got separated into their own upstream source repos. - To be prepared for the removal of PPD support in CUPS 3.x, libcupsfilters does not contain any PPD file support any more. It got moved into libppd and cups-filters 2.x which provides the filters for CUPS 2.x therefore needs libppd to maintain the PPD support in these filters. - libcupsfilters, libppd, and cups-browsed are part of Ubuntu's printing stack. - libcupsfilters, libppd, and cups-browsed are part of the update of cups-filters from 1.x to 2.x - The packages libcupsfilters and libppd are new runtime dependencies of the package cups-filters that we already support - cups-browsed has to be in Main as, as before it need to overcome the lack of support for temporary CUPS queues in some print dialogs. - The packages in question are required in Ubuntu Main no later than FF of Lunar, as cups-filters 2.0~b2 is already uploaded to Lunar. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of libcupsfilters and cups-browsed: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters - All vulnerabilities are fixed, version with fix mentioned in the list. - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters' - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters - Shows the same vulnerabilities as CVE, none as not fixed in a supported Ubuntu release ("Not vulnerable", "Does not exist") Security vulnerabilities of cups, which is the origin of the code of libppd: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups - All vulnerabilities are fixed, version with fix mentioned in the list. Openwall: 'site:www.openwall.com/lists/oss-security cups' - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups - Shows the same vulnerabilities as CVE, none as not fixed in a supported Ubuntu release ("Released", "Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it. - no `suid` or `sgid` binaries - Binary /usr/sbin/cups-browsed (of package cups-browsed) in sbin is no problem. It is the cups-browsed which we already use for several years, provided by the cups-filters (1.x) source package. No actual changes have been done in the functionality of cups-browsed, only minor bug fixes. Changes in the underlying libraries (libcupsfilters, libppd) did not change the communication of cups-browsed with the outside world, but only improve the PPD files it uses and the reliability of a job being assigned to a destination printer in a cluster. The daemon listens to avahi-daemon (via D-Bus) to find out about IPP network printers (physical devices, remote CUPS queues, Printer Applications) appearing and disappearing and creates/removes/ modifies print queues on the running CUPS appropriately. It also listens to CUPS on the D-Bus whether a new job got submitted and in case it being on a queue managed by cups-browsed tells to CUPS which is the destination printer. So it listens on the (system) D-Bus and submits administrative requests to CUPS (some kind of automatic, UI-less printer setup tool). - No sbin binaries in libcupsfilters and libppd - Packages libcupsfilters and libppd do not install services, timers or recurring jobs - Package cups-browsed installs daemon, see above. - /usr/sbin/cups-browsed - Listens on system D-Bus (avahi-daemon, CUPS) - Applies administrative requests (creating/removing/modifying print queues) on CUPS - Has AppArmor profile - Packages do not open privileged ports (ports < 1024) - Packages libcupsfilters and libppd provide the code for the filters run by CUPS as the user "lp", to process print jobs. Most of the code is the same as in the former cups-filters (1.x) and libcups2. [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source packages libcupsfilters, libppd, and cups-browsed does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ... - The package works well right after install [Quality assurance - maintenance] - The package is maintained well in Debian/Ubuntu and has not too many and long term critical bugs open - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libcupsfilters/+bug - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libppd/+bug - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters - Upstream: https://github.com/OpenPrinting/libcupsfilters/issues - Upstream: https://github.com/OpenPrinting/libppd/issues - Upstream: https://github.com/OpenPrinting/cups-browsed/issues - Upstream: https://github.com/OpenPrinting/cups-filters/issues Note that the new packages, libcupsfilters, libppd, and cups-browsed are not yet introduced in Debian. They will get introduced to Debian Experimental soon. Unstable is in freeze for the Bookworm release. - The package does not deal with exotic hardware we cannot support (no printer drivers, only print data file format converters, output can be displayed with easily available, common free software tools: evince, Ghostscript, eog, rasterview) [Quality assurance - testing] - The packages libcupsfilters and libppd run test suites on build time, if they fail it makes the builds fail, links to build log - https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz - https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz - The package cups-browsed does not run a test at build time because as it was part of cups-filters there was no testing of the cups-browsed daemon. - The packages libcupsfilters and libppd run autopkgtests, and are currently passing on all architectures listed under [Availability]. The very first migration process did not yet finish for both libcupsfilters and libppd https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libcupsfilters https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libppd - The package cups-browsed does not run an autopkgtest because when cups-browsed was still part of cups-filters there was no autopkgtest, especially not for the cups-browsed daemon. - The packages libcupsfilters and libppd do not have failing autopkgtests right now [Quality assurance - packaging] - debian/watch is present and works - debian/control defines a correct Maintainer field - Build logs: libcupsfilters: https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz libppd: https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz cups-browsed: https://launchpadlibrarian.net/647984146/buildlog_ubuntu-lunar-amd64.cups-browsed_2.0~b2-0ubuntu4_BUILDING.txt.gz - These packages do not yield massive lintian Warnings, Errors - No lintian warnings or errors for libppd and cups-browsed - libcupsfilters has only P: libcupsfilters source: very-long-line-length-in-source-file 525 > 512 [Makefile.in:1759] This is not a problem, Makefile.in is auto-generated by the autotools and the package builds without problems. - Lintian overrides are not present for libcupsfilters and libppd - Lintian overrides are present for cups-browsed, but ok because CUPS needs the special permissions and directory for its backends # Upstream choices; they need to be run as root cups-browsed: executable-is-not-world-readable usr/lib/cups/backend/implicitclass 0700 # That's how CUPS does it cups-browsed: executable-in-usr-lib usr/lib/cups/backend/implicitclass - These packages do not rely on obsolete or about to be demoted packages. - These packages have no python2 or GTK2 dependencies - These packages will be installed by default, but do not ask debconf questions higher than medium - They do not ask debconf questions at all - Packaging and build is easy, debian/rules files attached. [UI standards] - Application is not end-user facing (does not need translation) [Dependencies] - No further depends or recommends dependencies outside this MIR that are not yet in main - There are further dependencies that are not yet in main, the MIR process for them is handled as part of this bug here. - libppd depends on libcupsfilters -> in this same MIR - cups-browsed depends on libcupsfilters and libppd -> in this same MIR [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 all the packages - 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 descriptions explain the packages well Upstream Name are libcupsfilters, libppd, and cups-browsed (all unchanged) Links to upstream projects: - https://github.com/OpenPrinting/libcupsfilters - https://github.com/OpenPrinting/libppd - https://github.com/OpenPrinting/cups-browsed ========== Original Description ============ This is a simplified MIR for the splitting of the cups-filters source package. With the second generation (2.x) cups-filters upstream got split into 5 independent component repositories: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed See https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ braille-printer-app still needs some upstream work for getting released, the others were already released as 2.0b2. libcupsfilters, cups-filters, and cups-browsed contain mainly the code from the former cups-filters (1.x) which is already in Main. libppd contains code from CUPS (libcups and cups-ppdc) which is also in Main. As of https://github.com/canonical/ubuntu-mir ---------- If a new source package contains only code which is already in main (e.g. the result of a source package split or rename, or source packages with a version in the name), it may not need a full review. Submitting a MIR bug with an explanation (but without the full template) or updating/extending on the existing old MIR bug and re-opening it by setting it to "NEW" is sufficient. ---------- This report does not need the full template. The original packages (cups-filters and cups) are in Main already for more than a decade, so repetition of the original MIR would not be useful. cups was already in Ubuntu from the very beginning on and therefore probably in Main since the differentiation of Main and Universe got introduced. The binary packages are named as before (except SONAME of libraries being 2 instead of 1 now), binary packages for libppd added. So current dependencies and seeding should pull in everything (libppd is a library and cups-filters depends on it). libfontembed has been discontinued (folded into libcupsfilters, API removed) but no package uses it (except the components of cups-filters 1.x thenselves). braille-printer-app will be added to this report (or a new simplified MIR report created) as soon as it gets released upstream. Its binary package(s) will need to get seeded. ========== Summary ========================= Source packages to be promoted to Main: - libcupsfilters - libppd - cups-browsed Binary packages to be promoted to Main (if not already there): - cups-browsed - libcupsfilters-dev - libcupsfilters2 - libcupsfilters2-common - libppd-dev - libppd2 - libppd2-common - ppdc No source packages and no binary packages which are in Main should get demoted to Universe. ========== Overview ======================== Due to a major change in the printing architecture [1] the cups-filters upstream project at OpenPrinting got split into 5 components [2]: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed [1] https://openprinting.github.io/current/#the-new-architecture-for-printing-and-scanning [2] https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ To reflect this in the Debian/Ubuntu packaging also the cups-filters source package there are getting split, rendering 3 new source packages (+) and therefore we need this MIR: Binaries: Source BEFORE (1.x) Source AFTER (2.x) --------------------------------------------------------------------- cups-browsed cups-filters cups-browsed + cups-filters cups-filters cups-filters cups-filters-core-drivers cups-filters cups-filters libcupsfilters-dev cups-filters libcupsfilters + libcupsfilters1 cups-filters Replaced by libcupsfilters2 * libcupsfilters2 libcupsfilters + (NEW) libfontembed-dev cups-filters REMOVED ** libfontembed cups-filters REMOVED ** libppd2 libppd + (NEW) *** * : libcupsfilters has new API generation/SONAME 1 -> 2 ** : libfontembed code folded into libcupsfilters, API removed, no other      package is using it. ***: libppd contains all PPD-supporting code of CUPS, as in CUPS 3.x this code      will get removed. libppd is for legacy-retro-fitting of classic CUPS      drivers with PPD files. Code comes from CUPS source: cups/ppd*.[ch],      scheduler/cups-driverd.cxx, ppdc/* The purposes of the new generation's binary packages are principally the same as before: - cups-browsed: Daemon to auto-create queues for network printers and to                 form printer clusters - cups-filters: Print data format conversion filters and printer communication                 backends for CUPS 2.x - Complete set - cups-filters-core-drivers: Print data format conversion filters and printer                 communication backends for CUPS 2.x - Essential ones for   minimum configurations, like mobile or IoT - libcupsfilters-dev: C Header files for libcupsfilters2 - libcupsfilters2: Shared library containing common code for print data                 conversion filters, printer drivers, printer model   identification and distinction, PDF file manipulation,   PDF font embedding, color space conversion, ... - libppd2-dev: C Header files for libppd2 - libppd2: Shared library for support of PPD files, parsing the files,     converting PPD options into IPP attributes, managing   collections of PPDs, finding PPD for given printer, generating   PPDs from CUPS' *.drv files --> ALL THESE BINARY PACKAGES MUST GET PROMOTED INTO MAIN (IF THEY ARE     NOT ALREADY THERE). For current CUPS (2.x, provided by Debian packages) there is actually no change. CUPS depends on cups-filters ("cups" binary on "cups-filters" binary and "cups-core-drivers" binary on "cups-filters-core-drivers") to get its filters and additional backends which it needs for actual printing, now the new-generation cups-filters. The new "cups-filters" and "cups-filters-core-drivers" depend on "libcupsfilters2" and "libppd2" providing the common functionality they need. "cups-browsed" is recommended by "cups-daemon". I do not know whether any of these packages is also seeded and whether the recommend of "cups-browsed" by "cups-daemon" is strong enough to pull "cups-browsed" into Main when the MIR is approved. cups-core-drivers   |   +--Depends--> cups-filters-core-drivers                   |     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups   |   +--Depends--> cups-filters                   |     +--Depends--> cups-filters-core-drivers     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups-daemon   |   +--Recommends--> cups-browsed                      |        +--Depends--> libcupsfilters2        +--Depends--> libppd2          |          +--Depends--> libcupsfilters2 --> SO MOST PROBABLY NO NEW DEPENDENCIES IN PACKAGES ALREADY EXISTING     IN MAIN AND NO NEW SEEDS ARE NEEDED TO ACTUALLY GET EVERYTHING     INTO MAIN AFTER THE APPROVAL OF THIS MIR. As one can see from the table above, the former SOURCE package cups-filters is replaced by 4 SOURCE packages now: - libcupsfilters + - libppd + - cups-filters - cups-browsed + --> ALL THESE SOURCE PACKAGES NEED TO BE IN MAIN, THE ONES WITH + NEED     TO GET PROMOTED. --> CUPS-FILTERS IS ALREADY IN MAIN AND IT SHOULD CONTINUE IN MAIN. The braille-printer-app package is not yet completed upstream. As soon as this is done, it will also get uploaded to Ubuntu and a MIR for it posted. The splitting upstream is done to prepare for the New Architecture of printing, where printer drivers are not filters and PPD files any more but emulators of driverless IPP printers (Printer Applications). So a standard system installation does not need PPD file support any more, so we needed to completely separate the PPD file support code of CUPS and cups-filters into one optionally installable library but conserver as much as possible of the still valuable PPD-independent code in cups-filters, of 20 years of development and experience. Also filters need to get more accesible for Printer Applications, therefore we turned the former individual executables into library functions, the filter functions. With the introduction of libppd all use of libcups is now restricted to functionality which does not support PPD files and therefore will continue to be in libcups of CUPS 3.x ([1], future libcups3 binary package to appear in Ubuntu 24.04 LTS). This way we expect only small changes for the transition from libcups2 to libcups3. [1] https://github.com/OpenPrinting/libcups So we have now: libcupsfilters -------------- All the internal functionality of the filters which formerly was in the individual filter executables (cups-filters and cups-filters-core-drivers binary packages, new source package cups-filters) has moved into libcupsfilters (binary package libcupsfilters2, new source package libcupsfilters) as filter functions (source files cupsfilters/*to*.c*, cupsfilters/ghostscript.c, cupsfilters/pdftopdf/*, infrastructure in cupsfilters/filter.c, API in cupsfilters/filter.h). The handling of printer capabilities (media sizes, margins, color spaces, ...) and matching them with the jobs and job IPP attributes got vastly improved (cupsfilters/ipp.[ch], cupsfilters/raster.[ch].) Also API functions for handling human-readable strings/translations for option and choice names got created (cupsfilters/catalog.[ch]). The strings are taken from CUPS' message catalogs and also downloaded from driverless IPP printers. General functions for printers drivers, filters, color handling, PDF handling, ... from the old libcupsfilters (old binary package libcupsfilters1) got overtaken into the new libcupsfilters. The new libcupsfilters DOES NOT CONTAIN ANY SUPPORT FOR PPD FILES ANY MORE AND DOES NOT DEPEND ON LIBPPD. libppd ------ All PPD support which one finds in Linux distros with a CUPS/cups-filters printing stack is concentrated in libppd now. This way having PPD file support is completely optional. The library only needs to be installed if needed and being in a separate upstream repo and seperate Debian packages its maintenance can be stopped at any time while the maintenance and development of libcupsfilters continues. libppd (binary package libppd2, new source package libppd) is currently used by cups-filters (new binary packages cups-filters and cups-filters-core-drivers, new source package cups-filters) and pappl-retrofit ([1], added to Ubuntu in the next days, used by Printer Application which retro-fit classic CUPS drivers [2]). The former use case is only for systems using CUPS 2.x, the latter is mainly for systems in the New Architecture, using CUPS 3.x or the CUPS Snap [3][4] as these require all printer drivers being Printer Applications. None of the packages of the new cups-filters generation, PAPPL [5], pappl-retrofit, and the new (2.x) generation of CPDB [6] uses any PPD-file supporting functionality of libcups, so that a smooth transition to the libcups of CUPS 3.x is assured. Any PPD file support needs for legacy driver retro-fitting are covered by libppd. [1] https://github.com/OpenPrinting/pappl-retrofit [2] https://openprinting.github.io/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps [3] https://openprinting.github.io/achievements/#the-cups-snap [4] https://github.com/OpenPrinting/cups-snap [5] https://github.com/michaelrsweet/pappl/ [6] https://openprinting.github.io/achievements/#common-print-dialog-backends The source code is nearly completely overtaken from the CUPS source code: PPD file parsing and handling support in libcups (CUPS source: cups/ppd*.[ch], libppd source: ppd/*.c, API: ppd/ppd.h), PPD file collection handling and PPD file assignment to given printer (CUPS source: scheduler/cups-driverd.cxx, libppd source: ppd/ppd-collection.cxx, API: ppd/ppd.h), and generating PPD files from *.drv files (CUPS source: ppdc/*, libppd source: ppd/ppdc*.cxx, API ppd/ppdc.h). The PPD file generator for driverless printers (ppd/ppd-generator.c) is not the one from libcups but the one from the former libcupsfilters1, as that one supports generating the PPDs needed by printer clusters formed by cups-browsed. Some infrastructure got added for keeping PPD file support in the filter executables of CUPS 2.x, in ppd/ppd-filter.c, ppd/ppd-ipp.c, API is in ppd/ppd-filter.h. This infrastructure mainly parses the PPD file and turns the content of the PPD file into printer IPP attributes (what a driverless printer would respond when querying its capabilities). This way the non-PPD-supporting filter functions of libcupsfilters get to know the capabilities of the printer. cups-filters ------------ We get practically the same binaries as we had before in the cups-filters and cups-filters-core-drivers binary packages (old and new source package cups-filters), but they have changed internally: As told here earlier we have moved all the core functionality of the CUPS filters into libcupsfilters to have it available as library functions, the filter functions, so that they can be easily used by Printer Applications. Therefore the actual filter executables used for CUPS 2.x are only small wrappers which call a filter function to do the "dirty work". Only what does not make sense in the future PPD-less world keeps its code in the cups-filters upstream project: Legacy CUPS backends (backend/*), classic CUPS drivers (filter/*pclx*.c, filter/*escpx*.c), and the "driverless" utility (utils/*). A new feature is the "universal" CUPS filter (CUPS wrapper: filter/universal.c, PPD support wrapper in libppd: ppd/ppd-filter.c, core functionality in libcupsfilters: cupsfilters/universal.c). It makes use of having all filters as library functions in libcupsfilters to reduce the number of resource-consuming external executable calls by CUPS. It converts printer from practically any input format to practically any output format by calling chains of filter functions. So CUPS calls a single filter, "universal" instead of a chain of external filters. cups-filters will only be needed as long as we are using CUPS 2.x from Debian packages. If we have a distro using CUPS 3.x (planned from 24.04 LTS on) or the CUPS Snap (any CUPS version, planned from Ubuntu 23.10 on) cups-filters does not make sense any more, as we cannot add filters or backends either because CUPS is running from a sandboxed immutable image or does not support the filter/backend concept any more. cups-browsed ------------ The new cups-browsed binary package and the old one are practically identical in functionality. It is only split into its own upstream repository and with this into its own source Debian package for consistency of the splitting of cups-filters and for major changes in the future [1]. The actual source code suffered only changes for bug fixes and also for adaptation to changes in the API of the new libcupsfilters. It depends on the new libcupsfilters and also on libppd now. In the future it will get turned into a Printer Application [1] and not support and use PPD files any more, dropping the dependency on libppd. As all the rest of the current code from OpenPrinting it only uses non-PPD-supporting functionality of libcups, for a smooth transition to CUPS 3.x. [1] https://wiki.linuxfoundation.org/gsoc/google-summer-code-2023-openprinting-projects#turn_cups-browsed_into_a_printer_application === MIR REQUIREMENTS FOLLOWING TEMPLATE ==== https://github.com/canonical/ubuntu-mir This MIR is for 3 new source Debian packages which are result of splitting the cups-filters source package, so all MIR requirements based on what happened in the past are the same for all 3. Actually we are putting the answers for the cups-filters package here. Differences are caused only by how the splitting is done and will be mentioned here. Therefore I have pasted and worked through the template only once and not three times, once for each new source package. [Availability] The packages in question are uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libcupsfilters https://launchpad.net/ubuntu/+source/libppd https://launchpad.net/ubuntu/+source/cups-browsed They build for the architectures it is designed to work on. They currently build and work for the architetcures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - The packages in question are required in Ubuntu Main as they are    the libcupsfilters and cups-browsed which the cups-filters 2.x    source package does not contain any more, as they got separated    into their own upstream source repos.  - To be prepared for the removal of PPD support in CUPS 3.x,    libcupsfilters does not contain any PPD file support any more. It    got moved into libppd and cups-filters 2.x which provides the    filters for CUPS 2.x therefore needs libppd to maintain the PPD    support in these filters.  - libcupsfilters, libppd, and cups-browsed are part of Ubuntu's    printing stack.  - libcupsfilters, libppd, and cups-browsed are part of the update of    cups-filters from 1.x to 2.x  - The packages libcupsfilters and libppd are new runtime dependencies    of the package cups-filters that we already support  - cups-browsed has to be in Main as, as before it need to overcome    the lack of support for temporary CUPS queues in some print    dialogs.  - The packages in question are required in Ubuntu Main no later than FF    of Lunar, as cups-filters 2.0~b2 is already uploaded to Lunar. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of libcupsfilters and cups-browsed: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters  - All vulnerabilities are fixed, version with fix mentioned in the list.  - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Not vulnerable", "Does not exist") Security vulnerabilities of cups, which is the origin of the code of libppd: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups  - All vulnerabilities are fixed, version with fix mentioned in the list. Openwall: 'site:www.openwall.com/lists/oss-security cups'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Released", "Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - Binary /usr/sbin/cups-browsed (of package cups-browsed) in sbin is    no problem. It is the cups-browsed which we already use for several    years, provided by the cups-filters (1.x) source package.    No actual changes have been done in the functionality of    cups-browsed, only minor bug fixes. Changes in the underlying    libraries (libcupsfilters, libppd) did not change the communication    of cups-browsed with the outside world, but only improve the PPD    files it uses and the reliability of a job being assigned to a    destination printer in a cluster.    The daemon listens to avahi-daemon (via D-Bus) to find out about IPP    network printers (physical devices, remote CUPS queues, Printer    Applications) appearing and disappearing and creates/removes/    modifies print queues on the running CUPS appropriately. It also    listens to CUPS on the D-Bus whether a new job got submitted    and in case it being on a queue managed by cups-browsed tells    to CUPS which is the destination printer.    So it listens on the (system) D-Bus and submits administrative    requests to CUPS (some kind of automatic, UI-less printer setup    tool).  - No sbin binaries in libcupsfilters and libppd  - Packages libcupsfilters and libppd do not install services,    timers or recurring jobs  - Package cups-browsed installs daemon, see above.     - /usr/sbin/cups-browsed       - Listens on system D-Bus (avahi-daemon, CUPS)       - Applies administrative requests (creating/removing/modifying print         queues) on CUPS       - Has AppArmor profile  - Packages do not open privileged ports (ports < 1024)  - Packages libcupsfilters and libppd provide the code for the filters    run by CUPS as the user "lp", to process print jobs. Most of the code    is the same as in the former cups-filters (1.x) and libcups2. [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source packages libcupsfilters, libppd, and cups-browsed does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libcupsfilters/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libppd/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/libcupsfilters/issues    - Upstream: https://github.com/OpenPrinting/libppd/issues    - Upstream: https://github.com/OpenPrinting/cups-browsed/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new packages, libcupsfilters, libppd, and cups-browsed    are not yet introduced in Debian. They will get introduced to Debian    Experimental soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support    (no printer drivers, only print data file format converters, output     can be displayed with easily available, common free software tools:     evince, Ghostscript, eog, rasterview) [Quality assurance - testing]  - The packages libcupsfilters and libppd run test suites on build    time, if they fail it makes the builds fail, links to build log    - https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz    - https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz  - The package cups-browsed does not run a test at build time because    as it was part of cups-filters there was no testing of the    cups-browsed daemon.  - The packages libcupsfilters and libppd run autopkgtests, and are    currently passing on all architectures listed under [Availability].    The very first migration process did not yet finish for both    libcupsfilters and libppd    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libcupsfilters    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libppd  - The package cups-browsed does not run an autopkgtest because when    cups-browsed was still part of cups-filters there was no autopkgtest,    especially not for the cups-browsed daemon.  - The packages libcupsfilters and libppd do not have failing    autopkgtests right now [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build logs:    libcupsfilters: https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz    libppd: https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz    cups-browsed: https://launchpadlibrarian.net/647984146/buildlog_ubuntu-lunar-amd64.cups-browsed_2.0~b2-0ubuntu4_BUILDING.txt.gz  - These packages do not yield massive lintian Warnings, Errors  - No lintian warnings or errors for libppd and cups-browsed  - libcupsfilters has only    P: libcupsfilters source: very-long-line-length-in-source-file 525 > 512 [Makefile.in:1759]    This is not a problem, Makefile.in is auto-generated by the autotools and    the package builds without problems.  - Lintian overrides are not present for libcupsfilters and libppd  - Lintian overrides are present for cups-browsed, but ok because    CUPS needs the special permissions and directory for its backends    # Upstream choices; they need to be run as root    cups-browsed: executable-is-not-world-readable usr/lib/cups/backend/implicitclass 0700    # That's how CUPS does it    cups-browsed: executable-in-usr-lib usr/lib/cups/backend/implicitclass  - These packages do not rely on obsolete or about to be demoted packages.  - These packages have no python2 or GTK2 dependencies  - These packages will be installed by default, but do not ask debconf    questions higher than medium    - They do not ask debconf questions at all  - Packaging and build is easy, debian/rules files attached. [UI standards]  - Application is not end-user facing (does not need translation) [Dependencies]  - No further depends or recommends dependencies outside this MIR that are    not yet in main  - There are further dependencies that are not yet in main, the MIR    process for them is handled as part of this bug here.    - libppd depends on libcupsfilters -> in this same MIR    - cups-browsed depends on libcupsfilters and libppd -> in this same MIR [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 all the packages - 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 descriptions explain the packages well Upstream Name are libcupsfilters, libppd, and cups-browsed (all unchanged) Links to upstream projects:  - https://github.com/OpenPrinting/libcupsfilters  - https://github.com/OpenPrinting/libppd  - https://github.com/OpenPrinting/cups-browsed ========== Original Description ============ This is a simplified MIR for the splitting of the cups-filters source package. With the second generation (2.x) cups-filters upstream got split into 5 independent component repositories: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed See https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ braille-printer-app still needs some upstream work for getting released, the others were already released as 2.0b2. libcupsfilters, cups-filters, and cups-browsed contain mainly the code from the former cups-filters (1.x) which is already in Main. libppd contains code from CUPS (libcups and cups-ppdc) which is also in Main. As of https://github.com/canonical/ubuntu-mir ---------- If a new source package contains only code which is already in main (e.g. the result of a source package split or rename, or source packages with a version in the name), it may not need a full review. Submitting a MIR bug with an explanation (but without the full template) or updating/extending on the existing old MIR bug and re-opening it by setting it to "NEW" is sufficient. ---------- This report does not need the full template. The original packages (cups-filters and cups) are in Main already for more than a decade, so repetition of the original MIR would not be useful. cups was already in Ubuntu from the very beginning on and therefore probably in Main since the differentiation of Main and Universe got introduced. The binary packages are named as before (except SONAME of libraries being 2 instead of 1 now), binary packages for libppd added. So current dependencies and seeding should pull in everything (libppd is a library and cups-filters depends on it). libfontembed has been discontinued (folded into libcupsfilters, API removed) but no package uses it (except the components of cups-filters 1.x thenselves). braille-printer-app will be added to this report (or a new simplified MIR report created) as soon as it gets released upstream. Its binary package(s) will need to get seeded.
2023-01-26 02:22:23 Till Kamppeter description ========== Summary ========================= Source packages to be promoted to Main: - libcupsfilters - libppd - cups-browsed Binary packages to be promoted to Main (if not already there): - cups-browsed - libcupsfilters-dev - libcupsfilters2 - libcupsfilters2-common - libppd-dev - libppd2 - libppd2-common - ppdc No source packages and no binary packages which are in Main should get demoted to Universe. ========== Overview ======================== Due to a major change in the printing architecture [1] the cups-filters upstream project at OpenPrinting got split into 5 components [2]: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed [1] https://openprinting.github.io/current/#the-new-architecture-for-printing-and-scanning [2] https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ To reflect this in the Debian/Ubuntu packaging also the cups-filters source package there are getting split, rendering 3 new source packages (+) and therefore we need this MIR: Binaries: Source BEFORE (1.x) Source AFTER (2.x) --------------------------------------------------------------------- cups-browsed cups-filters cups-browsed + cups-filters cups-filters cups-filters cups-filters-core-drivers cups-filters cups-filters libcupsfilters-dev cups-filters libcupsfilters + libcupsfilters1 cups-filters Replaced by libcupsfilters2 * libcupsfilters2 libcupsfilters + (NEW) libfontembed-dev cups-filters REMOVED ** libfontembed cups-filters REMOVED ** libppd2 libppd + (NEW) *** * : libcupsfilters has new API generation/SONAME 1 -> 2 ** : libfontembed code folded into libcupsfilters, API removed, no other      package is using it. ***: libppd contains all PPD-supporting code of CUPS, as in CUPS 3.x this code      will get removed. libppd is for legacy-retro-fitting of classic CUPS      drivers with PPD files. Code comes from CUPS source: cups/ppd*.[ch],      scheduler/cups-driverd.cxx, ppdc/* The purposes of the new generation's binary packages are principally the same as before: - cups-browsed: Daemon to auto-create queues for network printers and to                 form printer clusters - cups-filters: Print data format conversion filters and printer communication                 backends for CUPS 2.x - Complete set - cups-filters-core-drivers: Print data format conversion filters and printer                 communication backends for CUPS 2.x - Essential ones for   minimum configurations, like mobile or IoT - libcupsfilters-dev: C Header files for libcupsfilters2 - libcupsfilters2: Shared library containing common code for print data                 conversion filters, printer drivers, printer model   identification and distinction, PDF file manipulation,   PDF font embedding, color space conversion, ... - libppd2-dev: C Header files for libppd2 - libppd2: Shared library for support of PPD files, parsing the files,     converting PPD options into IPP attributes, managing   collections of PPDs, finding PPD for given printer, generating   PPDs from CUPS' *.drv files --> ALL THESE BINARY PACKAGES MUST GET PROMOTED INTO MAIN (IF THEY ARE     NOT ALREADY THERE). For current CUPS (2.x, provided by Debian packages) there is actually no change. CUPS depends on cups-filters ("cups" binary on "cups-filters" binary and "cups-core-drivers" binary on "cups-filters-core-drivers") to get its filters and additional backends which it needs for actual printing, now the new-generation cups-filters. The new "cups-filters" and "cups-filters-core-drivers" depend on "libcupsfilters2" and "libppd2" providing the common functionality they need. "cups-browsed" is recommended by "cups-daemon". I do not know whether any of these packages is also seeded and whether the recommend of "cups-browsed" by "cups-daemon" is strong enough to pull "cups-browsed" into Main when the MIR is approved. cups-core-drivers   |   +--Depends--> cups-filters-core-drivers                   |     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups   |   +--Depends--> cups-filters                   |     +--Depends--> cups-filters-core-drivers     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups-daemon   |   +--Recommends--> cups-browsed                      |        +--Depends--> libcupsfilters2        +--Depends--> libppd2          |          +--Depends--> libcupsfilters2 --> SO MOST PROBABLY NO NEW DEPENDENCIES IN PACKAGES ALREADY EXISTING     IN MAIN AND NO NEW SEEDS ARE NEEDED TO ACTUALLY GET EVERYTHING     INTO MAIN AFTER THE APPROVAL OF THIS MIR. As one can see from the table above, the former SOURCE package cups-filters is replaced by 4 SOURCE packages now: - libcupsfilters + - libppd + - cups-filters - cups-browsed + --> ALL THESE SOURCE PACKAGES NEED TO BE IN MAIN, THE ONES WITH + NEED     TO GET PROMOTED. --> CUPS-FILTERS IS ALREADY IN MAIN AND IT SHOULD CONTINUE IN MAIN. The braille-printer-app package is not yet completed upstream. As soon as this is done, it will also get uploaded to Ubuntu and a MIR for it posted. The splitting upstream is done to prepare for the New Architecture of printing, where printer drivers are not filters and PPD files any more but emulators of driverless IPP printers (Printer Applications). So a standard system installation does not need PPD file support any more, so we needed to completely separate the PPD file support code of CUPS and cups-filters into one optionally installable library but conserver as much as possible of the still valuable PPD-independent code in cups-filters, of 20 years of development and experience. Also filters need to get more accesible for Printer Applications, therefore we turned the former individual executables into library functions, the filter functions. With the introduction of libppd all use of libcups is now restricted to functionality which does not support PPD files and therefore will continue to be in libcups of CUPS 3.x ([1], future libcups3 binary package to appear in Ubuntu 24.04 LTS). This way we expect only small changes for the transition from libcups2 to libcups3. [1] https://github.com/OpenPrinting/libcups So we have now: libcupsfilters -------------- All the internal functionality of the filters which formerly was in the individual filter executables (cups-filters and cups-filters-core-drivers binary packages, new source package cups-filters) has moved into libcupsfilters (binary package libcupsfilters2, new source package libcupsfilters) as filter functions (source files cupsfilters/*to*.c*, cupsfilters/ghostscript.c, cupsfilters/pdftopdf/*, infrastructure in cupsfilters/filter.c, API in cupsfilters/filter.h). The handling of printer capabilities (media sizes, margins, color spaces, ...) and matching them with the jobs and job IPP attributes got vastly improved (cupsfilters/ipp.[ch], cupsfilters/raster.[ch].) Also API functions for handling human-readable strings/translations for option and choice names got created (cupsfilters/catalog.[ch]). The strings are taken from CUPS' message catalogs and also downloaded from driverless IPP printers. General functions for printers drivers, filters, color handling, PDF handling, ... from the old libcupsfilters (old binary package libcupsfilters1) got overtaken into the new libcupsfilters. The new libcupsfilters DOES NOT CONTAIN ANY SUPPORT FOR PPD FILES ANY MORE AND DOES NOT DEPEND ON LIBPPD. libppd ------ All PPD support which one finds in Linux distros with a CUPS/cups-filters printing stack is concentrated in libppd now. This way having PPD file support is completely optional. The library only needs to be installed if needed and being in a separate upstream repo and seperate Debian packages its maintenance can be stopped at any time while the maintenance and development of libcupsfilters continues. libppd (binary package libppd2, new source package libppd) is currently used by cups-filters (new binary packages cups-filters and cups-filters-core-drivers, new source package cups-filters) and pappl-retrofit ([1], added to Ubuntu in the next days, used by Printer Application which retro-fit classic CUPS drivers [2]). The former use case is only for systems using CUPS 2.x, the latter is mainly for systems in the New Architecture, using CUPS 3.x or the CUPS Snap [3][4] as these require all printer drivers being Printer Applications. None of the packages of the new cups-filters generation, PAPPL [5], pappl-retrofit, and the new (2.x) generation of CPDB [6] uses any PPD-file supporting functionality of libcups, so that a smooth transition to the libcups of CUPS 3.x is assured. Any PPD file support needs for legacy driver retro-fitting are covered by libppd. [1] https://github.com/OpenPrinting/pappl-retrofit [2] https://openprinting.github.io/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps [3] https://openprinting.github.io/achievements/#the-cups-snap [4] https://github.com/OpenPrinting/cups-snap [5] https://github.com/michaelrsweet/pappl/ [6] https://openprinting.github.io/achievements/#common-print-dialog-backends The source code is nearly completely overtaken from the CUPS source code: PPD file parsing and handling support in libcups (CUPS source: cups/ppd*.[ch], libppd source: ppd/*.c, API: ppd/ppd.h), PPD file collection handling and PPD file assignment to given printer (CUPS source: scheduler/cups-driverd.cxx, libppd source: ppd/ppd-collection.cxx, API: ppd/ppd.h), and generating PPD files from *.drv files (CUPS source: ppdc/*, libppd source: ppd/ppdc*.cxx, API ppd/ppdc.h). The PPD file generator for driverless printers (ppd/ppd-generator.c) is not the one from libcups but the one from the former libcupsfilters1, as that one supports generating the PPDs needed by printer clusters formed by cups-browsed. Some infrastructure got added for keeping PPD file support in the filter executables of CUPS 2.x, in ppd/ppd-filter.c, ppd/ppd-ipp.c, API is in ppd/ppd-filter.h. This infrastructure mainly parses the PPD file and turns the content of the PPD file into printer IPP attributes (what a driverless printer would respond when querying its capabilities). This way the non-PPD-supporting filter functions of libcupsfilters get to know the capabilities of the printer. cups-filters ------------ We get practically the same binaries as we had before in the cups-filters and cups-filters-core-drivers binary packages (old and new source package cups-filters), but they have changed internally: As told here earlier we have moved all the core functionality of the CUPS filters into libcupsfilters to have it available as library functions, the filter functions, so that they can be easily used by Printer Applications. Therefore the actual filter executables used for CUPS 2.x are only small wrappers which call a filter function to do the "dirty work". Only what does not make sense in the future PPD-less world keeps its code in the cups-filters upstream project: Legacy CUPS backends (backend/*), classic CUPS drivers (filter/*pclx*.c, filter/*escpx*.c), and the "driverless" utility (utils/*). A new feature is the "universal" CUPS filter (CUPS wrapper: filter/universal.c, PPD support wrapper in libppd: ppd/ppd-filter.c, core functionality in libcupsfilters: cupsfilters/universal.c). It makes use of having all filters as library functions in libcupsfilters to reduce the number of resource-consuming external executable calls by CUPS. It converts printer from practically any input format to practically any output format by calling chains of filter functions. So CUPS calls a single filter, "universal" instead of a chain of external filters. cups-filters will only be needed as long as we are using CUPS 2.x from Debian packages. If we have a distro using CUPS 3.x (planned from 24.04 LTS on) or the CUPS Snap (any CUPS version, planned from Ubuntu 23.10 on) cups-filters does not make sense any more, as we cannot add filters or backends either because CUPS is running from a sandboxed immutable image or does not support the filter/backend concept any more. cups-browsed ------------ The new cups-browsed binary package and the old one are practically identical in functionality. It is only split into its own upstream repository and with this into its own source Debian package for consistency of the splitting of cups-filters and for major changes in the future [1]. The actual source code suffered only changes for bug fixes and also for adaptation to changes in the API of the new libcupsfilters. It depends on the new libcupsfilters and also on libppd now. In the future it will get turned into a Printer Application [1] and not support and use PPD files any more, dropping the dependency on libppd. As all the rest of the current code from OpenPrinting it only uses non-PPD-supporting functionality of libcups, for a smooth transition to CUPS 3.x. [1] https://wiki.linuxfoundation.org/gsoc/google-summer-code-2023-openprinting-projects#turn_cups-browsed_into_a_printer_application === MIR REQUIREMENTS FOLLOWING TEMPLATE ==== https://github.com/canonical/ubuntu-mir This MIR is for 3 new source Debian packages which are result of splitting the cups-filters source package, so all MIR requirements based on what happened in the past are the same for all 3. Actually we are putting the answers for the cups-filters package here. Differences are caused only by how the splitting is done and will be mentioned here. Therefore I have pasted and worked through the template only once and not three times, once for each new source package. [Availability] The packages in question are uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libcupsfilters https://launchpad.net/ubuntu/+source/libppd https://launchpad.net/ubuntu/+source/cups-browsed They build for the architectures it is designed to work on. They currently build and work for the architetcures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - The packages in question are required in Ubuntu Main as they are    the libcupsfilters and cups-browsed which the cups-filters 2.x    source package does not contain any more, as they got separated    into their own upstream source repos.  - To be prepared for the removal of PPD support in CUPS 3.x,    libcupsfilters does not contain any PPD file support any more. It    got moved into libppd and cups-filters 2.x which provides the    filters for CUPS 2.x therefore needs libppd to maintain the PPD    support in these filters.  - libcupsfilters, libppd, and cups-browsed are part of Ubuntu's    printing stack.  - libcupsfilters, libppd, and cups-browsed are part of the update of    cups-filters from 1.x to 2.x  - The packages libcupsfilters and libppd are new runtime dependencies    of the package cups-filters that we already support  - cups-browsed has to be in Main as, as before it need to overcome    the lack of support for temporary CUPS queues in some print    dialogs.  - The packages in question are required in Ubuntu Main no later than FF    of Lunar, as cups-filters 2.0~b2 is already uploaded to Lunar. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of libcupsfilters and cups-browsed: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters  - All vulnerabilities are fixed, version with fix mentioned in the list.  - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Not vulnerable", "Does not exist") Security vulnerabilities of cups, which is the origin of the code of libppd: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups  - All vulnerabilities are fixed, version with fix mentioned in the list. Openwall: 'site:www.openwall.com/lists/oss-security cups'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Released", "Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - Binary /usr/sbin/cups-browsed (of package cups-browsed) in sbin is    no problem. It is the cups-browsed which we already use for several    years, provided by the cups-filters (1.x) source package.    No actual changes have been done in the functionality of    cups-browsed, only minor bug fixes. Changes in the underlying    libraries (libcupsfilters, libppd) did not change the communication    of cups-browsed with the outside world, but only improve the PPD    files it uses and the reliability of a job being assigned to a    destination printer in a cluster.    The daemon listens to avahi-daemon (via D-Bus) to find out about IPP    network printers (physical devices, remote CUPS queues, Printer    Applications) appearing and disappearing and creates/removes/    modifies print queues on the running CUPS appropriately. It also    listens to CUPS on the D-Bus whether a new job got submitted    and in case it being on a queue managed by cups-browsed tells    to CUPS which is the destination printer.    So it listens on the (system) D-Bus and submits administrative    requests to CUPS (some kind of automatic, UI-less printer setup    tool).  - No sbin binaries in libcupsfilters and libppd  - Packages libcupsfilters and libppd do not install services,    timers or recurring jobs  - Package cups-browsed installs daemon, see above.     - /usr/sbin/cups-browsed       - Listens on system D-Bus (avahi-daemon, CUPS)       - Applies administrative requests (creating/removing/modifying print         queues) on CUPS       - Has AppArmor profile  - Packages do not open privileged ports (ports < 1024)  - Packages libcupsfilters and libppd provide the code for the filters    run by CUPS as the user "lp", to process print jobs. Most of the code    is the same as in the former cups-filters (1.x) and libcups2. [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source packages libcupsfilters, libppd, and cups-browsed does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libcupsfilters/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libppd/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/libcupsfilters/issues    - Upstream: https://github.com/OpenPrinting/libppd/issues    - Upstream: https://github.com/OpenPrinting/cups-browsed/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new packages, libcupsfilters, libppd, and cups-browsed    are not yet introduced in Debian. They will get introduced to Debian    Experimental soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support    (no printer drivers, only print data file format converters, output     can be displayed with easily available, common free software tools:     evince, Ghostscript, eog, rasterview) [Quality assurance - testing]  - The packages libcupsfilters and libppd run test suites on build    time, if they fail it makes the builds fail, links to build log    - https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz    - https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz  - The package cups-browsed does not run a test at build time because    as it was part of cups-filters there was no testing of the    cups-browsed daemon.  - The packages libcupsfilters and libppd run autopkgtests, and are    currently passing on all architectures listed under [Availability].    The very first migration process did not yet finish for both    libcupsfilters and libppd    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libcupsfilters    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libppd  - The package cups-browsed does not run an autopkgtest because when    cups-browsed was still part of cups-filters there was no autopkgtest,    especially not for the cups-browsed daemon.  - The packages libcupsfilters and libppd do not have failing    autopkgtests right now [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build logs:    libcupsfilters: https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz    libppd: https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz    cups-browsed: https://launchpadlibrarian.net/647984146/buildlog_ubuntu-lunar-amd64.cups-browsed_2.0~b2-0ubuntu4_BUILDING.txt.gz  - These packages do not yield massive lintian Warnings, Errors  - No lintian warnings or errors for libppd and cups-browsed  - libcupsfilters has only    P: libcupsfilters source: very-long-line-length-in-source-file 525 > 512 [Makefile.in:1759]    This is not a problem, Makefile.in is auto-generated by the autotools and    the package builds without problems.  - Lintian overrides are not present for libcupsfilters and libppd  - Lintian overrides are present for cups-browsed, but ok because    CUPS needs the special permissions and directory for its backends    # Upstream choices; they need to be run as root    cups-browsed: executable-is-not-world-readable usr/lib/cups/backend/implicitclass 0700    # That's how CUPS does it    cups-browsed: executable-in-usr-lib usr/lib/cups/backend/implicitclass  - These packages do not rely on obsolete or about to be demoted packages.  - These packages have no python2 or GTK2 dependencies  - These packages will be installed by default, but do not ask debconf    questions higher than medium    - They do not ask debconf questions at all  - Packaging and build is easy, debian/rules files attached. [UI standards]  - Application is not end-user facing (does not need translation) [Dependencies]  - No further depends or recommends dependencies outside this MIR that are    not yet in main  - There are further dependencies that are not yet in main, the MIR    process for them is handled as part of this bug here.    - libppd depends on libcupsfilters -> in this same MIR    - cups-browsed depends on libcupsfilters and libppd -> in this same MIR [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 all the packages - 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 descriptions explain the packages well Upstream Name are libcupsfilters, libppd, and cups-browsed (all unchanged) Links to upstream projects:  - https://github.com/OpenPrinting/libcupsfilters  - https://github.com/OpenPrinting/libppd  - https://github.com/OpenPrinting/cups-browsed ========== Original Description ============ This is a simplified MIR for the splitting of the cups-filters source package. With the second generation (2.x) cups-filters upstream got split into 5 independent component repositories: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed See https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ braille-printer-app still needs some upstream work for getting released, the others were already released as 2.0b2. libcupsfilters, cups-filters, and cups-browsed contain mainly the code from the former cups-filters (1.x) which is already in Main. libppd contains code from CUPS (libcups and cups-ppdc) which is also in Main. As of https://github.com/canonical/ubuntu-mir ---------- If a new source package contains only code which is already in main (e.g. the result of a source package split or rename, or source packages with a version in the name), it may not need a full review. Submitting a MIR bug with an explanation (but without the full template) or updating/extending on the existing old MIR bug and re-opening it by setting it to "NEW" is sufficient. ---------- This report does not need the full template. The original packages (cups-filters and cups) are in Main already for more than a decade, so repetition of the original MIR would not be useful. cups was already in Ubuntu from the very beginning on and therefore probably in Main since the differentiation of Main and Universe got introduced. The binary packages are named as before (except SONAME of libraries being 2 instead of 1 now), binary packages for libppd added. So current dependencies and seeding should pull in everything (libppd is a library and cups-filters depends on it). libfontembed has been discontinued (folded into libcupsfilters, API removed) but no package uses it (except the components of cups-filters 1.x thenselves). braille-printer-app will be added to this report (or a new simplified MIR report created) as soon as it gets released upstream. Its binary package(s) will need to get seeded. ========== Summary ========================= Source packages to be promoted to Main: - libcupsfilters - libppd - cups-browsed Binary packages to be promoted to Main (if not already there): - cups-browsed - libcupsfilters-dev - libcupsfilters2 - libcupsfilters2-common - libppd-dev - libppd2 - libppd2-common - ppdc No source packages and no binary packages which are in Main should get demoted to Universe. ========== Overview ======================== Due to a major change in the printing architecture [1] the cups-filters upstream project at OpenPrinting got split into 5 components [2]: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed [1] https://openprinting.github.io/current/#the-new-architecture-for-printing-and-scanning [2] https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ To reflect this in the Debian/Ubuntu packaging also the cups-filters source package there are getting split, rendering 3 new source packages (+) and therefore we need this MIR: Binaries: Source BEFORE (1.x) Source AFTER (2.x) --------------------------------------------------------------------- cups-browsed cups-filters cups-browsed + cups-filters cups-filters cups-filters cups-filters-core-drivers cups-filters cups-filters libcupsfilters-dev cups-filters libcupsfilters + libcupsfilters1 cups-filters Replaced by libcupsfilters2 * libcupsfilters2 libcupsfilters + (NEW) libcupsfilters2-common libcupsfilters + (NEW) libfontembed-dev cups-filters REMOVED ** libfontembed cups-filters REMOVED ** libppd-dev libppd + (NEW) *** libppd2 libppd + (NEW) *** libppd2-common libppd + (NEW) *** ppdc libppd + (NEW) *** * : libcupsfilters has new API generation/SONAME 1 -> 2 ** : libfontembed code folded into libcupsfilters, API removed, no other      package is using it. ***: libppd contains all PPD-supporting code of CUPS, as in CUPS 3.x this code will get removed. libppd is for legacy-retro-fitting of classic CUPS drivers with PPD files. Code comes from CUPS source: cups/ppd*.[ch], scheduler/cups-driverd.cxx, ppdc/* The purposes of the new generation's binary packages are principally the same as before: - cups-browsed: Daemon to auto-create queues for network printers and to                 form printer clusters - cups-filters: Print data format conversion filters and printer communication                 backends for CUPS 2.x - Complete set - cups-filters-core-drivers: Print data format conversion filters and printer                 communication backends for CUPS 2.x - Essential ones for   minimum configurations, like mobile or IoT - libcupsfilters-dev: C Header files for libcupsfilters2 - libcupsfilters2: Shared library containing common code for print data                 conversion filters, printer drivers, printer model   identification and distinction, PDF file manipulation,   PDF font embedding, color space conversion, ... - libppd2-dev: C Header files for libppd2 - libppd2: Shared library for support of PPD files, parsing the files,     converting PPD options into IPP attributes, managing   collections of PPDs, finding PPD for given printer, generating   PPDs from CUPS' *.drv files --> ALL THESE BINARY PACKAGES MUST GET PROMOTED INTO MAIN (IF THEY ARE     NOT ALREADY THERE). For current CUPS (2.x, provided by Debian packages) there is actually no change. CUPS depends on cups-filters ("cups" binary on "cups-filters" binary and "cups-core-drivers" binary on "cups-filters-core-drivers") to get its filters and additional backends which it needs for actual printing, now the new-generation cups-filters. The new "cups-filters" and "cups-filters-core-drivers" depend on "libcupsfilters2" and "libppd2" providing the common functionality they need. "cups-browsed" is recommended by "cups-daemon". I do not know whether any of these packages is also seeded and whether the recommend of "cups-browsed" by "cups-daemon" is strong enough to pull "cups-browsed" into Main when the MIR is approved. cups-core-drivers   |   +--Depends--> cups-filters-core-drivers                   |     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups   |   +--Depends--> cups-filters                   |     +--Depends--> cups-filters-core-drivers     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups-daemon   |   +--Recommends--> cups-browsed                      |        +--Depends--> libcupsfilters2        +--Depends--> libppd2          |          +--Depends--> libcupsfilters2 --> SO MOST PROBABLY NO NEW DEPENDENCIES IN PACKAGES ALREADY EXISTING     IN MAIN AND NO NEW SEEDS ARE NEEDED TO ACTUALLY GET EVERYTHING     INTO MAIN AFTER THE APPROVAL OF THIS MIR. As one can see from the table above, the former SOURCE package cups-filters is replaced by 4 SOURCE packages now: - libcupsfilters + - libppd + - cups-filters - cups-browsed + --> ALL THESE SOURCE PACKAGES NEED TO BE IN MAIN, THE ONES WITH + NEED     TO GET PROMOTED. --> CUPS-FILTERS IS ALREADY IN MAIN AND IT SHOULD CONTINUE IN MAIN. The braille-printer-app package is not yet completed upstream. As soon as this is done, it will also get uploaded to Ubuntu and a MIR for it posted. The splitting upstream is done to prepare for the New Architecture of printing, where printer drivers are not filters and PPD files any more but emulators of driverless IPP printers (Printer Applications). So a standard system installation does not need PPD file support any more, so we needed to completely separate the PPD file support code of CUPS and cups-filters into one optionally installable library but conserver as much as possible of the still valuable PPD-independent code in cups-filters, of 20 years of development and experience. Also filters need to get more accesible for Printer Applications, therefore we turned the former individual executables into library functions, the filter functions. With the introduction of libppd all use of libcups is now restricted to functionality which does not support PPD files and therefore will continue to be in libcups of CUPS 3.x ([1], future libcups3 binary package to appear in Ubuntu 24.04 LTS). This way we expect only small changes for the transition from libcups2 to libcups3. [1] https://github.com/OpenPrinting/libcups So we have now: libcupsfilters -------------- All the internal functionality of the filters which formerly was in the individual filter executables (cups-filters and cups-filters-core-drivers binary packages, new source package cups-filters) has moved into libcupsfilters (binary package libcupsfilters2, new source package libcupsfilters) as filter functions (source files cupsfilters/*to*.c*, cupsfilters/ghostscript.c, cupsfilters/pdftopdf/*, infrastructure in cupsfilters/filter.c, API in cupsfilters/filter.h). The handling of printer capabilities (media sizes, margins, color spaces, ...) and matching them with the jobs and job IPP attributes got vastly improved (cupsfilters/ipp.[ch], cupsfilters/raster.[ch].) Also API functions for handling human-readable strings/translations for option and choice names got created (cupsfilters/catalog.[ch]). The strings are taken from CUPS' message catalogs and also downloaded from driverless IPP printers. General functions for printers drivers, filters, color handling, PDF handling, ... from the old libcupsfilters (old binary package libcupsfilters1) got overtaken into the new libcupsfilters. The new libcupsfilters DOES NOT CONTAIN ANY SUPPORT FOR PPD FILES ANY MORE AND DOES NOT DEPEND ON LIBPPD. libppd ------ All PPD support which one finds in Linux distros with a CUPS/cups-filters printing stack is concentrated in libppd now. This way having PPD file support is completely optional. The library only needs to be installed if needed and being in a separate upstream repo and seperate Debian packages its maintenance can be stopped at any time while the maintenance and development of libcupsfilters continues. libppd (binary package libppd2, new source package libppd) is currently used by cups-filters (new binary packages cups-filters and cups-filters-core-drivers, new source package cups-filters) and pappl-retrofit ([1], added to Ubuntu in the next days, used by Printer Application which retro-fit classic CUPS drivers [2]). The former use case is only for systems using CUPS 2.x, the latter is mainly for systems in the New Architecture, using CUPS 3.x or the CUPS Snap [3][4] as these require all printer drivers being Printer Applications. None of the packages of the new cups-filters generation, PAPPL [5], pappl-retrofit, and the new (2.x) generation of CPDB [6] uses any PPD-file supporting functionality of libcups, so that a smooth transition to the libcups of CUPS 3.x is assured. Any PPD file support needs for legacy driver retro-fitting are covered by libppd. [1] https://github.com/OpenPrinting/pappl-retrofit [2] https://openprinting.github.io/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps [3] https://openprinting.github.io/achievements/#the-cups-snap [4] https://github.com/OpenPrinting/cups-snap [5] https://github.com/michaelrsweet/pappl/ [6] https://openprinting.github.io/achievements/#common-print-dialog-backends The source code is nearly completely overtaken from the CUPS source code: PPD file parsing and handling support in libcups (CUPS source: cups/ppd*.[ch], libppd source: ppd/*.c, API: ppd/ppd.h), PPD file collection handling and PPD file assignment to given printer (CUPS source: scheduler/cups-driverd.cxx, libppd source: ppd/ppd-collection.cxx, API: ppd/ppd.h), and generating PPD files from *.drv files (CUPS source: ppdc/*, libppd source: ppd/ppdc*.cxx, API ppd/ppdc.h). The PPD file generator for driverless printers (ppd/ppd-generator.c) is not the one from libcups but the one from the former libcupsfilters1, as that one supports generating the PPDs needed by printer clusters formed by cups-browsed. Some infrastructure got added for keeping PPD file support in the filter executables of CUPS 2.x, in ppd/ppd-filter.c, ppd/ppd-ipp.c, API is in ppd/ppd-filter.h. This infrastructure mainly parses the PPD file and turns the content of the PPD file into printer IPP attributes (what a driverless printer would respond when querying its capabilities). This way the non-PPD-supporting filter functions of libcupsfilters get to know the capabilities of the printer. cups-filters ------------ We get practically the same binaries as we had before in the cups-filters and cups-filters-core-drivers binary packages (old and new source package cups-filters), but they have changed internally: As told here earlier we have moved all the core functionality of the CUPS filters into libcupsfilters to have it available as library functions, the filter functions, so that they can be easily used by Printer Applications. Therefore the actual filter executables used for CUPS 2.x are only small wrappers which call a filter function to do the "dirty work". Only what does not make sense in the future PPD-less world keeps its code in the cups-filters upstream project: Legacy CUPS backends (backend/*), classic CUPS drivers (filter/*pclx*.c, filter/*escpx*.c), and the "driverless" utility (utils/*). A new feature is the "universal" CUPS filter (CUPS wrapper: filter/universal.c, PPD support wrapper in libppd: ppd/ppd-filter.c, core functionality in libcupsfilters: cupsfilters/universal.c). It makes use of having all filters as library functions in libcupsfilters to reduce the number of resource-consuming external executable calls by CUPS. It converts printer from practically any input format to practically any output format by calling chains of filter functions. So CUPS calls a single filter, "universal" instead of a chain of external filters. cups-filters will only be needed as long as we are using CUPS 2.x from Debian packages. If we have a distro using CUPS 3.x (planned from 24.04 LTS on) or the CUPS Snap (any CUPS version, planned from Ubuntu 23.10 on) cups-filters does not make sense any more, as we cannot add filters or backends either because CUPS is running from a sandboxed immutable image or does not support the filter/backend concept any more. cups-browsed ------------ The new cups-browsed binary package and the old one are practically identical in functionality. It is only split into its own upstream repository and with this into its own source Debian package for consistency of the splitting of cups-filters and for major changes in the future [1]. The actual source code suffered only changes for bug fixes and also for adaptation to changes in the API of the new libcupsfilters. It depends on the new libcupsfilters and also on libppd now. In the future it will get turned into a Printer Application [1] and not support and use PPD files any more, dropping the dependency on libppd. As all the rest of the current code from OpenPrinting it only uses non-PPD-supporting functionality of libcups, for a smooth transition to CUPS 3.x. [1] https://wiki.linuxfoundation.org/gsoc/google-summer-code-2023-openprinting-projects#turn_cups-browsed_into_a_printer_application === MIR REQUIREMENTS FOLLOWING TEMPLATE ==== https://github.com/canonical/ubuntu-mir This MIR is for 3 new source Debian packages which are result of splitting the cups-filters source package, so all MIR requirements based on what happened in the past are the same for all 3. Actually we are putting the answers for the cups-filters package here. Differences are caused only by how the splitting is done and will be mentioned here. Therefore I have pasted and worked through the template only once and not three times, once for each new source package. [Availability] The packages in question are uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libcupsfilters https://launchpad.net/ubuntu/+source/libppd https://launchpad.net/ubuntu/+source/cups-browsed They build for the architectures it is designed to work on. They currently build and work for the architetcures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - The packages in question are required in Ubuntu Main as they are    the libcupsfilters and cups-browsed which the cups-filters 2.x    source package does not contain any more, as they got separated    into their own upstream source repos.  - To be prepared for the removal of PPD support in CUPS 3.x,    libcupsfilters does not contain any PPD file support any more. It    got moved into libppd and cups-filters 2.x which provides the    filters for CUPS 2.x therefore needs libppd to maintain the PPD    support in these filters.  - libcupsfilters, libppd, and cups-browsed are part of Ubuntu's    printing stack.  - libcupsfilters, libppd, and cups-browsed are part of the update of    cups-filters from 1.x to 2.x  - The packages libcupsfilters and libppd are new runtime dependencies    of the package cups-filters that we already support  - cups-browsed has to be in Main as, as before it need to overcome    the lack of support for temporary CUPS queues in some print    dialogs.  - The packages in question are required in Ubuntu Main no later than FF    of Lunar, as cups-filters 2.0~b2 is already uploaded to Lunar. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of libcupsfilters and cups-browsed: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters  - All vulnerabilities are fixed, version with fix mentioned in the list.  - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Not vulnerable", "Does not exist") Security vulnerabilities of cups, which is the origin of the code of libppd: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups  - All vulnerabilities are fixed, version with fix mentioned in the list. Openwall: 'site:www.openwall.com/lists/oss-security cups'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Released", "Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - Binary /usr/sbin/cups-browsed (of package cups-browsed) in sbin is    no problem. It is the cups-browsed which we already use for several    years, provided by the cups-filters (1.x) source package.    No actual changes have been done in the functionality of    cups-browsed, only minor bug fixes. Changes in the underlying    libraries (libcupsfilters, libppd) did not change the communication    of cups-browsed with the outside world, but only improve the PPD    files it uses and the reliability of a job being assigned to a    destination printer in a cluster.    The daemon listens to avahi-daemon (via D-Bus) to find out about IPP    network printers (physical devices, remote CUPS queues, Printer    Applications) appearing and disappearing and creates/removes/    modifies print queues on the running CUPS appropriately. It also    listens to CUPS on the D-Bus whether a new job got submitted    and in case it being on a queue managed by cups-browsed tells    to CUPS which is the destination printer.    So it listens on the (system) D-Bus and submits administrative    requests to CUPS (some kind of automatic, UI-less printer setup    tool).  - No sbin binaries in libcupsfilters and libppd  - Packages libcupsfilters and libppd do not install services,    timers or recurring jobs  - Package cups-browsed installs daemon, see above.     - /usr/sbin/cups-browsed       - Listens on system D-Bus (avahi-daemon, CUPS)       - Applies administrative requests (creating/removing/modifying print         queues) on CUPS       - Has AppArmor profile  - Packages do not open privileged ports (ports < 1024)  - Packages libcupsfilters and libppd provide the code for the filters    run by CUPS as the user "lp", to process print jobs. Most of the code    is the same as in the former cups-filters (1.x) and libcups2. [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source packages libcupsfilters, libppd, and cups-browsed does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libcupsfilters/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libppd/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/libcupsfilters/issues    - Upstream: https://github.com/OpenPrinting/libppd/issues    - Upstream: https://github.com/OpenPrinting/cups-browsed/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new packages, libcupsfilters, libppd, and cups-browsed    are not yet introduced in Debian. They will get introduced to Debian    Experimental soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support    (no printer drivers, only print data file format converters, output     can be displayed with easily available, common free software tools:     evince, Ghostscript, eog, rasterview) [Quality assurance - testing]  - The packages libcupsfilters and libppd run test suites on build    time, if they fail it makes the builds fail, links to build log    - https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz    - https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz  - The package cups-browsed does not run a test at build time because    as it was part of cups-filters there was no testing of the    cups-browsed daemon.  - The packages libcupsfilters and libppd run autopkgtests, and are    currently passing on all architectures listed under [Availability].    The very first migration process did not yet finish for both    libcupsfilters and libppd    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libcupsfilters    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libppd  - The package cups-browsed does not run an autopkgtest because when    cups-browsed was still part of cups-filters there was no autopkgtest,    especially not for the cups-browsed daemon.  - The packages libcupsfilters and libppd do not have failing    autopkgtests right now [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build logs:    libcupsfilters: https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz    libppd: https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz    cups-browsed: https://launchpadlibrarian.net/647984146/buildlog_ubuntu-lunar-amd64.cups-browsed_2.0~b2-0ubuntu4_BUILDING.txt.gz  - These packages do not yield massive lintian Warnings, Errors  - No lintian warnings or errors for libppd and cups-browsed  - libcupsfilters has only    P: libcupsfilters source: very-long-line-length-in-source-file 525 > 512 [Makefile.in:1759]    This is not a problem, Makefile.in is auto-generated by the autotools and    the package builds without problems.  - Lintian overrides are not present for libcupsfilters and libppd  - Lintian overrides are present for cups-browsed, but ok because    CUPS needs the special permissions and directory for its backends    # Upstream choices; they need to be run as root    cups-browsed: executable-is-not-world-readable usr/lib/cups/backend/implicitclass 0700    # That's how CUPS does it    cups-browsed: executable-in-usr-lib usr/lib/cups/backend/implicitclass  - These packages do not rely on obsolete or about to be demoted packages.  - These packages have no python2 or GTK2 dependencies  - These packages will be installed by default, but do not ask debconf    questions higher than medium    - They do not ask debconf questions at all  - Packaging and build is easy, debian/rules files attached. [UI standards]  - Application is not end-user facing (does not need translation) [Dependencies]  - No further depends or recommends dependencies outside this MIR that are    not yet in main  - There are further dependencies that are not yet in main, the MIR    process for them is handled as part of this bug here.    - libppd depends on libcupsfilters -> in this same MIR    - cups-browsed depends on libcupsfilters and libppd -> in this same MIR [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 all the packages - 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 descriptions explain the packages well Upstream Name are libcupsfilters, libppd, and cups-browsed (all unchanged) Links to upstream projects:  - https://github.com/OpenPrinting/libcupsfilters  - https://github.com/OpenPrinting/libppd  - https://github.com/OpenPrinting/cups-browsed ========== Original Description ============ This is a simplified MIR for the splitting of the cups-filters source package. With the second generation (2.x) cups-filters upstream got split into 5 independent component repositories: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed See https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ braille-printer-app still needs some upstream work for getting released, the others were already released as 2.0b2. libcupsfilters, cups-filters, and cups-browsed contain mainly the code from the former cups-filters (1.x) which is already in Main. libppd contains code from CUPS (libcups and cups-ppdc) which is also in Main. As of https://github.com/canonical/ubuntu-mir ---------- If a new source package contains only code which is already in main (e.g. the result of a source package split or rename, or source packages with a version in the name), it may not need a full review. Submitting a MIR bug with an explanation (but without the full template) or updating/extending on the existing old MIR bug and re-opening it by setting it to "NEW" is sufficient. ---------- This report does not need the full template. The original packages (cups-filters and cups) are in Main already for more than a decade, so repetition of the original MIR would not be useful. cups was already in Ubuntu from the very beginning on and therefore probably in Main since the differentiation of Main and Universe got introduced. The binary packages are named as before (except SONAME of libraries being 2 instead of 1 now), binary packages for libppd added. So current dependencies and seeding should pull in everything (libppd is a library and cups-filters depends on it). libfontembed has been discontinued (folded into libcupsfilters, API removed) but no package uses it (except the components of cups-filters 1.x thenselves). braille-printer-app will be added to this report (or a new simplified MIR report created) as soon as it gets released upstream. Its binary package(s) will need to get seeded.
2023-01-26 02:29:38 Till Kamppeter description ========== Summary ========================= Source packages to be promoted to Main: - libcupsfilters - libppd - cups-browsed Binary packages to be promoted to Main (if not already there): - cups-browsed - libcupsfilters-dev - libcupsfilters2 - libcupsfilters2-common - libppd-dev - libppd2 - libppd2-common - ppdc No source packages and no binary packages which are in Main should get demoted to Universe. ========== Overview ======================== Due to a major change in the printing architecture [1] the cups-filters upstream project at OpenPrinting got split into 5 components [2]: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed [1] https://openprinting.github.io/current/#the-new-architecture-for-printing-and-scanning [2] https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ To reflect this in the Debian/Ubuntu packaging also the cups-filters source package there are getting split, rendering 3 new source packages (+) and therefore we need this MIR: Binaries: Source BEFORE (1.x) Source AFTER (2.x) --------------------------------------------------------------------- cups-browsed cups-filters cups-browsed + cups-filters cups-filters cups-filters cups-filters-core-drivers cups-filters cups-filters libcupsfilters-dev cups-filters libcupsfilters + libcupsfilters1 cups-filters Replaced by libcupsfilters2 * libcupsfilters2 libcupsfilters + (NEW) libcupsfilters2-common libcupsfilters + (NEW) libfontembed-dev cups-filters REMOVED ** libfontembed cups-filters REMOVED ** libppd-dev libppd + (NEW) *** libppd2 libppd + (NEW) *** libppd2-common libppd + (NEW) *** ppdc libppd + (NEW) *** * : libcupsfilters has new API generation/SONAME 1 -> 2 ** : libfontembed code folded into libcupsfilters, API removed, no other      package is using it. ***: libppd contains all PPD-supporting code of CUPS, as in CUPS 3.x this code will get removed. libppd is for legacy-retro-fitting of classic CUPS drivers with PPD files. Code comes from CUPS source: cups/ppd*.[ch], scheduler/cups-driverd.cxx, ppdc/* The purposes of the new generation's binary packages are principally the same as before: - cups-browsed: Daemon to auto-create queues for network printers and to                 form printer clusters - cups-filters: Print data format conversion filters and printer communication                 backends for CUPS 2.x - Complete set - cups-filters-core-drivers: Print data format conversion filters and printer                 communication backends for CUPS 2.x - Essential ones for   minimum configurations, like mobile or IoT - libcupsfilters-dev: C Header files for libcupsfilters2 - libcupsfilters2: Shared library containing common code for print data                 conversion filters, printer drivers, printer model   identification and distinction, PDF file manipulation,   PDF font embedding, color space conversion, ... - libppd2-dev: C Header files for libppd2 - libppd2: Shared library for support of PPD files, parsing the files,     converting PPD options into IPP attributes, managing   collections of PPDs, finding PPD for given printer, generating   PPDs from CUPS' *.drv files --> ALL THESE BINARY PACKAGES MUST GET PROMOTED INTO MAIN (IF THEY ARE     NOT ALREADY THERE). For current CUPS (2.x, provided by Debian packages) there is actually no change. CUPS depends on cups-filters ("cups" binary on "cups-filters" binary and "cups-core-drivers" binary on "cups-filters-core-drivers") to get its filters and additional backends which it needs for actual printing, now the new-generation cups-filters. The new "cups-filters" and "cups-filters-core-drivers" depend on "libcupsfilters2" and "libppd2" providing the common functionality they need. "cups-browsed" is recommended by "cups-daemon". I do not know whether any of these packages is also seeded and whether the recommend of "cups-browsed" by "cups-daemon" is strong enough to pull "cups-browsed" into Main when the MIR is approved. cups-core-drivers   |   +--Depends--> cups-filters-core-drivers                   |     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups   |   +--Depends--> cups-filters                   |     +--Depends--> cups-filters-core-drivers     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups-daemon   |   +--Recommends--> cups-browsed                      |        +--Depends--> libcupsfilters2        +--Depends--> libppd2          |          +--Depends--> libcupsfilters2 --> SO MOST PROBABLY NO NEW DEPENDENCIES IN PACKAGES ALREADY EXISTING     IN MAIN AND NO NEW SEEDS ARE NEEDED TO ACTUALLY GET EVERYTHING     INTO MAIN AFTER THE APPROVAL OF THIS MIR. As one can see from the table above, the former SOURCE package cups-filters is replaced by 4 SOURCE packages now: - libcupsfilters + - libppd + - cups-filters - cups-browsed + --> ALL THESE SOURCE PACKAGES NEED TO BE IN MAIN, THE ONES WITH + NEED     TO GET PROMOTED. --> CUPS-FILTERS IS ALREADY IN MAIN AND IT SHOULD CONTINUE IN MAIN. The braille-printer-app package is not yet completed upstream. As soon as this is done, it will also get uploaded to Ubuntu and a MIR for it posted. The splitting upstream is done to prepare for the New Architecture of printing, where printer drivers are not filters and PPD files any more but emulators of driverless IPP printers (Printer Applications). So a standard system installation does not need PPD file support any more, so we needed to completely separate the PPD file support code of CUPS and cups-filters into one optionally installable library but conserver as much as possible of the still valuable PPD-independent code in cups-filters, of 20 years of development and experience. Also filters need to get more accesible for Printer Applications, therefore we turned the former individual executables into library functions, the filter functions. With the introduction of libppd all use of libcups is now restricted to functionality which does not support PPD files and therefore will continue to be in libcups of CUPS 3.x ([1], future libcups3 binary package to appear in Ubuntu 24.04 LTS). This way we expect only small changes for the transition from libcups2 to libcups3. [1] https://github.com/OpenPrinting/libcups So we have now: libcupsfilters -------------- All the internal functionality of the filters which formerly was in the individual filter executables (cups-filters and cups-filters-core-drivers binary packages, new source package cups-filters) has moved into libcupsfilters (binary package libcupsfilters2, new source package libcupsfilters) as filter functions (source files cupsfilters/*to*.c*, cupsfilters/ghostscript.c, cupsfilters/pdftopdf/*, infrastructure in cupsfilters/filter.c, API in cupsfilters/filter.h). The handling of printer capabilities (media sizes, margins, color spaces, ...) and matching them with the jobs and job IPP attributes got vastly improved (cupsfilters/ipp.[ch], cupsfilters/raster.[ch].) Also API functions for handling human-readable strings/translations for option and choice names got created (cupsfilters/catalog.[ch]). The strings are taken from CUPS' message catalogs and also downloaded from driverless IPP printers. General functions for printers drivers, filters, color handling, PDF handling, ... from the old libcupsfilters (old binary package libcupsfilters1) got overtaken into the new libcupsfilters. The new libcupsfilters DOES NOT CONTAIN ANY SUPPORT FOR PPD FILES ANY MORE AND DOES NOT DEPEND ON LIBPPD. libppd ------ All PPD support which one finds in Linux distros with a CUPS/cups-filters printing stack is concentrated in libppd now. This way having PPD file support is completely optional. The library only needs to be installed if needed and being in a separate upstream repo and seperate Debian packages its maintenance can be stopped at any time while the maintenance and development of libcupsfilters continues. libppd (binary package libppd2, new source package libppd) is currently used by cups-filters (new binary packages cups-filters and cups-filters-core-drivers, new source package cups-filters) and pappl-retrofit ([1], added to Ubuntu in the next days, used by Printer Application which retro-fit classic CUPS drivers [2]). The former use case is only for systems using CUPS 2.x, the latter is mainly for systems in the New Architecture, using CUPS 3.x or the CUPS Snap [3][4] as these require all printer drivers being Printer Applications. None of the packages of the new cups-filters generation, PAPPL [5], pappl-retrofit, and the new (2.x) generation of CPDB [6] uses any PPD-file supporting functionality of libcups, so that a smooth transition to the libcups of CUPS 3.x is assured. Any PPD file support needs for legacy driver retro-fitting are covered by libppd. [1] https://github.com/OpenPrinting/pappl-retrofit [2] https://openprinting.github.io/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps [3] https://openprinting.github.io/achievements/#the-cups-snap [4] https://github.com/OpenPrinting/cups-snap [5] https://github.com/michaelrsweet/pappl/ [6] https://openprinting.github.io/achievements/#common-print-dialog-backends The source code is nearly completely overtaken from the CUPS source code: PPD file parsing and handling support in libcups (CUPS source: cups/ppd*.[ch], libppd source: ppd/*.c, API: ppd/ppd.h), PPD file collection handling and PPD file assignment to given printer (CUPS source: scheduler/cups-driverd.cxx, libppd source: ppd/ppd-collection.cxx, API: ppd/ppd.h), and generating PPD files from *.drv files (CUPS source: ppdc/*, libppd source: ppd/ppdc*.cxx, API ppd/ppdc.h). The PPD file generator for driverless printers (ppd/ppd-generator.c) is not the one from libcups but the one from the former libcupsfilters1, as that one supports generating the PPDs needed by printer clusters formed by cups-browsed. Some infrastructure got added for keeping PPD file support in the filter executables of CUPS 2.x, in ppd/ppd-filter.c, ppd/ppd-ipp.c, API is in ppd/ppd-filter.h. This infrastructure mainly parses the PPD file and turns the content of the PPD file into printer IPP attributes (what a driverless printer would respond when querying its capabilities). This way the non-PPD-supporting filter functions of libcupsfilters get to know the capabilities of the printer. cups-filters ------------ We get practically the same binaries as we had before in the cups-filters and cups-filters-core-drivers binary packages (old and new source package cups-filters), but they have changed internally: As told here earlier we have moved all the core functionality of the CUPS filters into libcupsfilters to have it available as library functions, the filter functions, so that they can be easily used by Printer Applications. Therefore the actual filter executables used for CUPS 2.x are only small wrappers which call a filter function to do the "dirty work". Only what does not make sense in the future PPD-less world keeps its code in the cups-filters upstream project: Legacy CUPS backends (backend/*), classic CUPS drivers (filter/*pclx*.c, filter/*escpx*.c), and the "driverless" utility (utils/*). A new feature is the "universal" CUPS filter (CUPS wrapper: filter/universal.c, PPD support wrapper in libppd: ppd/ppd-filter.c, core functionality in libcupsfilters: cupsfilters/universal.c). It makes use of having all filters as library functions in libcupsfilters to reduce the number of resource-consuming external executable calls by CUPS. It converts printer from practically any input format to practically any output format by calling chains of filter functions. So CUPS calls a single filter, "universal" instead of a chain of external filters. cups-filters will only be needed as long as we are using CUPS 2.x from Debian packages. If we have a distro using CUPS 3.x (planned from 24.04 LTS on) or the CUPS Snap (any CUPS version, planned from Ubuntu 23.10 on) cups-filters does not make sense any more, as we cannot add filters or backends either because CUPS is running from a sandboxed immutable image or does not support the filter/backend concept any more. cups-browsed ------------ The new cups-browsed binary package and the old one are practically identical in functionality. It is only split into its own upstream repository and with this into its own source Debian package for consistency of the splitting of cups-filters and for major changes in the future [1]. The actual source code suffered only changes for bug fixes and also for adaptation to changes in the API of the new libcupsfilters. It depends on the new libcupsfilters and also on libppd now. In the future it will get turned into a Printer Application [1] and not support and use PPD files any more, dropping the dependency on libppd. As all the rest of the current code from OpenPrinting it only uses non-PPD-supporting functionality of libcups, for a smooth transition to CUPS 3.x. [1] https://wiki.linuxfoundation.org/gsoc/google-summer-code-2023-openprinting-projects#turn_cups-browsed_into_a_printer_application === MIR REQUIREMENTS FOLLOWING TEMPLATE ==== https://github.com/canonical/ubuntu-mir This MIR is for 3 new source Debian packages which are result of splitting the cups-filters source package, so all MIR requirements based on what happened in the past are the same for all 3. Actually we are putting the answers for the cups-filters package here. Differences are caused only by how the splitting is done and will be mentioned here. Therefore I have pasted and worked through the template only once and not three times, once for each new source package. [Availability] The packages in question are uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libcupsfilters https://launchpad.net/ubuntu/+source/libppd https://launchpad.net/ubuntu/+source/cups-browsed They build for the architectures it is designed to work on. They currently build and work for the architetcures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - The packages in question are required in Ubuntu Main as they are    the libcupsfilters and cups-browsed which the cups-filters 2.x    source package does not contain any more, as they got separated    into their own upstream source repos.  - To be prepared for the removal of PPD support in CUPS 3.x,    libcupsfilters does not contain any PPD file support any more. It    got moved into libppd and cups-filters 2.x which provides the    filters for CUPS 2.x therefore needs libppd to maintain the PPD    support in these filters.  - libcupsfilters, libppd, and cups-browsed are part of Ubuntu's    printing stack.  - libcupsfilters, libppd, and cups-browsed are part of the update of    cups-filters from 1.x to 2.x  - The packages libcupsfilters and libppd are new runtime dependencies    of the package cups-filters that we already support  - cups-browsed has to be in Main as, as before it need to overcome    the lack of support for temporary CUPS queues in some print    dialogs.  - The packages in question are required in Ubuntu Main no later than FF    of Lunar, as cups-filters 2.0~b2 is already uploaded to Lunar. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of libcupsfilters and cups-browsed: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters  - All vulnerabilities are fixed, version with fix mentioned in the list.  - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Not vulnerable", "Does not exist") Security vulnerabilities of cups, which is the origin of the code of libppd: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups  - All vulnerabilities are fixed, version with fix mentioned in the list. Openwall: 'site:www.openwall.com/lists/oss-security cups'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Released", "Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - Binary /usr/sbin/cups-browsed (of package cups-browsed) in sbin is    no problem. It is the cups-browsed which we already use for several    years, provided by the cups-filters (1.x) source package.    No actual changes have been done in the functionality of    cups-browsed, only minor bug fixes. Changes in the underlying    libraries (libcupsfilters, libppd) did not change the communication    of cups-browsed with the outside world, but only improve the PPD    files it uses and the reliability of a job being assigned to a    destination printer in a cluster.    The daemon listens to avahi-daemon (via D-Bus) to find out about IPP    network printers (physical devices, remote CUPS queues, Printer    Applications) appearing and disappearing and creates/removes/    modifies print queues on the running CUPS appropriately. It also    listens to CUPS on the D-Bus whether a new job got submitted    and in case it being on a queue managed by cups-browsed tells    to CUPS which is the destination printer.    So it listens on the (system) D-Bus and submits administrative    requests to CUPS (some kind of automatic, UI-less printer setup    tool).  - No sbin binaries in libcupsfilters and libppd  - Packages libcupsfilters and libppd do not install services,    timers or recurring jobs  - Package cups-browsed installs daemon, see above.     - /usr/sbin/cups-browsed       - Listens on system D-Bus (avahi-daemon, CUPS)       - Applies administrative requests (creating/removing/modifying print         queues) on CUPS       - Has AppArmor profile  - Packages do not open privileged ports (ports < 1024)  - Packages libcupsfilters and libppd provide the code for the filters    run by CUPS as the user "lp", to process print jobs. Most of the code    is the same as in the former cups-filters (1.x) and libcups2. [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source packages libcupsfilters, libppd, and cups-browsed does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libcupsfilters/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libppd/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/libcupsfilters/issues    - Upstream: https://github.com/OpenPrinting/libppd/issues    - Upstream: https://github.com/OpenPrinting/cups-browsed/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new packages, libcupsfilters, libppd, and cups-browsed    are not yet introduced in Debian. They will get introduced to Debian    Experimental soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support    (no printer drivers, only print data file format converters, output     can be displayed with easily available, common free software tools:     evince, Ghostscript, eog, rasterview) [Quality assurance - testing]  - The packages libcupsfilters and libppd run test suites on build    time, if they fail it makes the builds fail, links to build log    - https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz    - https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz  - The package cups-browsed does not run a test at build time because    as it was part of cups-filters there was no testing of the    cups-browsed daemon.  - The packages libcupsfilters and libppd run autopkgtests, and are    currently passing on all architectures listed under [Availability].    The very first migration process did not yet finish for both    libcupsfilters and libppd    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libcupsfilters    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libppd  - The package cups-browsed does not run an autopkgtest because when    cups-browsed was still part of cups-filters there was no autopkgtest,    especially not for the cups-browsed daemon.  - The packages libcupsfilters and libppd do not have failing    autopkgtests right now [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build logs:    libcupsfilters: https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz    libppd: https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz    cups-browsed: https://launchpadlibrarian.net/647984146/buildlog_ubuntu-lunar-amd64.cups-browsed_2.0~b2-0ubuntu4_BUILDING.txt.gz  - These packages do not yield massive lintian Warnings, Errors  - No lintian warnings or errors for libppd and cups-browsed  - libcupsfilters has only    P: libcupsfilters source: very-long-line-length-in-source-file 525 > 512 [Makefile.in:1759]    This is not a problem, Makefile.in is auto-generated by the autotools and    the package builds without problems.  - Lintian overrides are not present for libcupsfilters and libppd  - Lintian overrides are present for cups-browsed, but ok because    CUPS needs the special permissions and directory for its backends    # Upstream choices; they need to be run as root    cups-browsed: executable-is-not-world-readable usr/lib/cups/backend/implicitclass 0700    # That's how CUPS does it    cups-browsed: executable-in-usr-lib usr/lib/cups/backend/implicitclass  - These packages do not rely on obsolete or about to be demoted packages.  - These packages have no python2 or GTK2 dependencies  - These packages will be installed by default, but do not ask debconf    questions higher than medium    - They do not ask debconf questions at all  - Packaging and build is easy, debian/rules files attached. [UI standards]  - Application is not end-user facing (does not need translation) [Dependencies]  - No further depends or recommends dependencies outside this MIR that are    not yet in main  - There are further dependencies that are not yet in main, the MIR    process for them is handled as part of this bug here.    - libppd depends on libcupsfilters -> in this same MIR    - cups-browsed depends on libcupsfilters and libppd -> in this same MIR [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 all the packages - 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 descriptions explain the packages well Upstream Name are libcupsfilters, libppd, and cups-browsed (all unchanged) Links to upstream projects:  - https://github.com/OpenPrinting/libcupsfilters  - https://github.com/OpenPrinting/libppd  - https://github.com/OpenPrinting/cups-browsed ========== Original Description ============ This is a simplified MIR for the splitting of the cups-filters source package. With the second generation (2.x) cups-filters upstream got split into 5 independent component repositories: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed See https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ braille-printer-app still needs some upstream work for getting released, the others were already released as 2.0b2. libcupsfilters, cups-filters, and cups-browsed contain mainly the code from the former cups-filters (1.x) which is already in Main. libppd contains code from CUPS (libcups and cups-ppdc) which is also in Main. As of https://github.com/canonical/ubuntu-mir ---------- If a new source package contains only code which is already in main (e.g. the result of a source package split or rename, or source packages with a version in the name), it may not need a full review. Submitting a MIR bug with an explanation (but without the full template) or updating/extending on the existing old MIR bug and re-opening it by setting it to "NEW" is sufficient. ---------- This report does not need the full template. The original packages (cups-filters and cups) are in Main already for more than a decade, so repetition of the original MIR would not be useful. cups was already in Ubuntu from the very beginning on and therefore probably in Main since the differentiation of Main and Universe got introduced. The binary packages are named as before (except SONAME of libraries being 2 instead of 1 now), binary packages for libppd added. So current dependencies and seeding should pull in everything (libppd is a library and cups-filters depends on it). libfontembed has been discontinued (folded into libcupsfilters, API removed) but no package uses it (except the components of cups-filters 1.x thenselves). braille-printer-app will be added to this report (or a new simplified MIR report created) as soon as it gets released upstream. Its binary package(s) will need to get seeded. ========== Summary ========================= Source packages to be promoted to Main: - libcupsfilters - libppd - cups-browsed Binary packages to be promoted to Main (if not already there): - cups-browsed - libcupsfilters-dev - libcupsfilters2 - libcupsfilters2-common - libppd-dev - libppd2 - libppd2-common - ppdc No source packages and no binary packages which are in Main should get demoted to Universe. ========== Overview ======================== Due to a major change in the printing architecture [1] the cups-filters upstream project at OpenPrinting got split into 5 components [2]: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed [1] https://openprinting.github.io/current/#the-new-architecture-for-printing-and-scanning [2] https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ To reflect this in the Debian/Ubuntu packaging also the cups-filters source package there are getting split, rendering 3 new source packages (+) and therefore we need this MIR: Binaries: Source BEFORE (1.x) Source AFTER (2.x) --------------------------------------------------------------------- cups-browsed cups-filters cups-browsed + cups-filters cups-filters cups-filters cups-filters-core-drivers cups-filters cups-filters libcupsfilters-dev cups-filters libcupsfilters + libcupsfilters1 cups-filters Replaced by                                                   libcupsfilters2 * libcupsfilters2 libcupsfilters + (NEW) libcupsfilters2-common libcupsfilters + (NEW) libfontembed-dev cups-filters REMOVED ** libfontembed cups-filters REMOVED ** libppd-dev libppd + (NEW) *** libppd2 libppd + (NEW) *** libppd2-common libppd + (NEW) *** ppdc libppd + (NEW) *** * : libcupsfilters has new API generation/SONAME 1 -> 2 ** : libfontembed code folded into libcupsfilters, API removed, no other      package is using it. ***: libppd contains all PPD-supporting code of CUPS, as in CUPS 3.x      this code will get removed. libppd is for legacy-retro-fitting of      classic CUPS drivers with PPD files. Code comes from CUPS source:      cups/ppd*.[ch], scheduler/cups-driverd.cxx, ppdc/* The purposes of the new generation's binary packages are principally the same as before: - cups-browsed: Daemon to auto-create queues for network printers and to                 form printer clusters - cups-filters: Print data format conversion filters and printer communication backends for CUPS 2.x - Complete set - cups-filters-core-drivers: Print data format conversion filters and printer communication backends for CUPS 2.x - Essential ones for minimum configurations, like mobile or IoT - libcupsfilters-dev: C Header files for libcupsfilters2 - libcupsfilters2: Shared library containing common code for print data                 conversion filters, printer drivers, printer model    identification and distinction, PDF file manipulation,    PDF font embedding, color space conversion, ... - libcupsfilters2-common: Architecture-indpendent auxiliary files - libppd2-dev: C Header files for libppd2 - libppd2: Shared library for support of PPD files, parsing the files, converting PPD options into IPP attributes, managing collections of PPDs, finding PPD for given printer, generating PPDs from CUPS' *.drv files - libppd2-common: Architecture-indpendent auxiliary files - ppdc: Command line tools to generate PPD files from *.drv files (only for development and debugging, or to keep scripts using them working, not end-user-facing) --> ALL THESE BINARY PACKAGES MUST GET PROMOTED INTO MAIN (IF THEY ARE     NOT ALREADY THERE). For current CUPS (2.x, provided by Debian packages) there is actually no change. CUPS depends on cups-filters ("cups" binary on "cups-filters" binary and "cups-core-drivers" binary on "cups-filters-core-drivers") to get its filters and additional backends which it needs for actual printing, now the new-generation cups-filters. The new "cups-filters" and "cups-filters-core-drivers" depend on "libcupsfilters2" and "libppd2" providing the common functionality they need. "cups-browsed" is recommended by "cups-daemon". I do not know whether any of these packages is also seeded and whether the recommend of "cups-browsed" by "cups-daemon" is strong enough to pull "cups-browsed" into Main when the MIR is approved. cups-core-drivers   |   +--Depends--> cups-filters-core-drivers                   |     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups   |   +--Depends--> cups-filters                   |     +--Depends--> cups-filters-core-drivers     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups-daemon   |   +--Recommends--> cups-browsed                      |        +--Depends--> libcupsfilters2        +--Depends--> libppd2          |          +--Depends--> libcupsfilters2 --> SO MOST PROBABLY NO NEW DEPENDENCIES IN PACKAGES ALREADY EXISTING     IN MAIN AND NO NEW SEEDS ARE NEEDED TO ACTUALLY GET EVERYTHING     INTO MAIN AFTER THE APPROVAL OF THIS MIR. As one can see from the table above, the former SOURCE package cups-filters is replaced by 4 SOURCE packages now: - libcupsfilters + - libppd + - cups-filters - cups-browsed + --> ALL THESE SOURCE PACKAGES NEED TO BE IN MAIN, THE ONES WITH + NEED     TO GET PROMOTED. --> CUPS-FILTERS IS ALREADY IN MAIN AND IT SHOULD CONTINUE IN MAIN. The braille-printer-app package is not yet completed upstream. As soon as this is done, it will also get uploaded to Ubuntu and a MIR for it posted. The splitting upstream is done to prepare for the New Architecture of printing, where printer drivers are not filters and PPD files any more but emulators of driverless IPP printers (Printer Applications). So a standard system installation does not need PPD file support any more, so we needed to completely separate the PPD file support code of CUPS and cups-filters into one optionally installable library but conserver as much as possible of the still valuable PPD-independent code in cups-filters, of 20 years of development and experience. Also filters need to get more accesible for Printer Applications, therefore we turned the former individual executables into library functions, the filter functions. With the introduction of libppd all use of libcups is now restricted to functionality which does not support PPD files and therefore will continue to be in libcups of CUPS 3.x ([1], future libcups3 binary package to appear in Ubuntu 24.04 LTS). This way we expect only small changes for the transition from libcups2 to libcups3. [1] https://github.com/OpenPrinting/libcups So we have now: libcupsfilters -------------- All the internal functionality of the filters which formerly was in the individual filter executables (cups-filters and cups-filters-core-drivers binary packages, new source package cups-filters) has moved into libcupsfilters (binary package libcupsfilters2, new source package libcupsfilters) as filter functions (source files cupsfilters/*to*.c*, cupsfilters/ghostscript.c, cupsfilters/pdftopdf/*, infrastructure in cupsfilters/filter.c, API in cupsfilters/filter.h). The handling of printer capabilities (media sizes, margins, color spaces, ...) and matching them with the jobs and job IPP attributes got vastly improved (cupsfilters/ipp.[ch], cupsfilters/raster.[ch].) Also API functions for handling human-readable strings/translations for option and choice names got created (cupsfilters/catalog.[ch]). The strings are taken from CUPS' message catalogs and also downloaded from driverless IPP printers. General functions for printers drivers, filters, color handling, PDF handling, ... from the old libcupsfilters (old binary package libcupsfilters1) got overtaken into the new libcupsfilters. The new libcupsfilters DOES NOT CONTAIN ANY SUPPORT FOR PPD FILES ANY MORE AND DOES NOT DEPEND ON LIBPPD. libppd ------ All PPD support which one finds in Linux distros with a CUPS/cups-filters printing stack is concentrated in libppd now. This way having PPD file support is completely optional. The library only needs to be installed if needed and being in a separate upstream repo and seperate Debian packages its maintenance can be stopped at any time while the maintenance and development of libcupsfilters continues. libppd (binary package libppd2, new source package libppd) is currently used by cups-filters (new binary packages cups-filters and cups-filters-core-drivers, new source package cups-filters) and pappl-retrofit ([1], added to Ubuntu in the next days, used by Printer Application which retro-fit classic CUPS drivers [2]). The former use case is only for systems using CUPS 2.x, the latter is mainly for systems in the New Architecture, using CUPS 3.x or the CUPS Snap [3][4] as these require all printer drivers being Printer Applications. None of the packages of the new cups-filters generation, PAPPL [5], pappl-retrofit, and the new (2.x) generation of CPDB [6] uses any PPD-file supporting functionality of libcups, so that a smooth transition to the libcups of CUPS 3.x is assured. Any PPD file support needs for legacy driver retro-fitting are covered by libppd. [1] https://github.com/OpenPrinting/pappl-retrofit [2] https://openprinting.github.io/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps [3] https://openprinting.github.io/achievements/#the-cups-snap [4] https://github.com/OpenPrinting/cups-snap [5] https://github.com/michaelrsweet/pappl/ [6] https://openprinting.github.io/achievements/#common-print-dialog-backends The source code is nearly completely overtaken from the CUPS source code: PPD file parsing and handling support in libcups (CUPS source: cups/ppd*.[ch], libppd source: ppd/*.c, API: ppd/ppd.h), PPD file collection handling and PPD file assignment to given printer (CUPS source: scheduler/cups-driverd.cxx, libppd source: ppd/ppd-collection.cxx, API: ppd/ppd.h), and generating PPD files from *.drv files (CUPS source: ppdc/*, libppd source: ppd/ppdc*.cxx, API ppd/ppdc.h). The PPD file generator for driverless printers (ppd/ppd-generator.c) is not the one from libcups but the one from the former libcupsfilters1, as that one supports generating the PPDs needed by printer clusters formed by cups-browsed. Some infrastructure got added for keeping PPD file support in the filter executables of CUPS 2.x, in ppd/ppd-filter.c, ppd/ppd-ipp.c, API is in ppd/ppd-filter.h. This infrastructure mainly parses the PPD file and turns the content of the PPD file into printer IPP attributes (what a driverless printer would respond when querying its capabilities). This way the non-PPD-supporting filter functions of libcupsfilters get to know the capabilities of the printer. cups-filters ------------ We get practically the same binaries as we had before in the cups-filters and cups-filters-core-drivers binary packages (old and new source package cups-filters), but they have changed internally: As told here earlier we have moved all the core functionality of the CUPS filters into libcupsfilters to have it available as library functions, the filter functions, so that they can be easily used by Printer Applications. Therefore the actual filter executables used for CUPS 2.x are only small wrappers which call a filter function to do the "dirty work". Only what does not make sense in the future PPD-less world keeps its code in the cups-filters upstream project: Legacy CUPS backends (backend/*), classic CUPS drivers (filter/*pclx*.c, filter/*escpx*.c), and the "driverless" utility (utils/*). A new feature is the "universal" CUPS filter (CUPS wrapper: filter/universal.c, PPD support wrapper in libppd: ppd/ppd-filter.c, core functionality in libcupsfilters: cupsfilters/universal.c). It makes use of having all filters as library functions in libcupsfilters to reduce the number of resource-consuming external executable calls by CUPS. It converts printer from practically any input format to practically any output format by calling chains of filter functions. So CUPS calls a single filter, "universal" instead of a chain of external filters. cups-filters will only be needed as long as we are using CUPS 2.x from Debian packages. If we have a distro using CUPS 3.x (planned from 24.04 LTS on) or the CUPS Snap (any CUPS version, planned from Ubuntu 23.10 on) cups-filters does not make sense any more, as we cannot add filters or backends either because CUPS is running from a sandboxed immutable image or does not support the filter/backend concept any more. cups-browsed ------------ The new cups-browsed binary package and the old one are practically identical in functionality. It is only split into its own upstream repository and with this into its own source Debian package for consistency of the splitting of cups-filters and for major changes in the future [1]. The actual source code suffered only changes for bug fixes and also for adaptation to changes in the API of the new libcupsfilters. It depends on the new libcupsfilters and also on libppd now. In the future it will get turned into a Printer Application [1] and not support and use PPD files any more, dropping the dependency on libppd. As all the rest of the current code from OpenPrinting it only uses non-PPD-supporting functionality of libcups, for a smooth transition to CUPS 3.x. [1] https://wiki.linuxfoundation.org/gsoc/google-summer-code-2023-openprinting-projects#turn_cups-browsed_into_a_printer_application === MIR REQUIREMENTS FOLLOWING TEMPLATE ==== https://github.com/canonical/ubuntu-mir This MIR is for 3 new source Debian packages which are result of splitting the cups-filters source package, so all MIR requirements based on what happened in the past are the same for all 3. Actually we are putting the answers for the cups-filters package here. Differences are caused only by how the splitting is done and will be mentioned here. Therefore I have pasted and worked through the template only once and not three times, once for each new source package. [Availability] The packages in question are uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libcupsfilters https://launchpad.net/ubuntu/+source/libppd https://launchpad.net/ubuntu/+source/cups-browsed They build for the architectures it is designed to work on. They currently build and work for the architetcures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - The packages in question are required in Ubuntu Main as they are    the libcupsfilters and cups-browsed which the cups-filters 2.x    source package does not contain any more, as they got separated    into their own upstream source repos.  - To be prepared for the removal of PPD support in CUPS 3.x,    libcupsfilters does not contain any PPD file support any more. It    got moved into libppd and cups-filters 2.x which provides the    filters for CUPS 2.x therefore needs libppd to maintain the PPD    support in these filters.  - libcupsfilters, libppd, and cups-browsed are part of Ubuntu's    printing stack.  - libcupsfilters, libppd, and cups-browsed are part of the update of    cups-filters from 1.x to 2.x  - The packages libcupsfilters and libppd are new runtime dependencies    of the package cups-filters that we already support  - cups-browsed has to be in Main as, as before it need to overcome    the lack of support for temporary CUPS queues in some print    dialogs.  - The packages in question are required in Ubuntu Main no later than FF    of Lunar, as cups-filters 2.0~b2 is already uploaded to Lunar. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of libcupsfilters and cups-browsed: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters  - All vulnerabilities are fixed, version with fix mentioned in the list.  - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Not vulnerable", "Does not exist") Security vulnerabilities of cups, which is the origin of the code of libppd: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups  - All vulnerabilities are fixed, version with fix mentioned in the list. Openwall: 'site:www.openwall.com/lists/oss-security cups'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Released", "Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - Binary /usr/sbin/cups-browsed (of package cups-browsed) in sbin is    no problem. It is the cups-browsed which we already use for several    years, provided by the cups-filters (1.x) source package.    No actual changes have been done in the functionality of    cups-browsed, only minor bug fixes. Changes in the underlying    libraries (libcupsfilters, libppd) did not change the communication    of cups-browsed with the outside world, but only improve the PPD    files it uses and the reliability of a job being assigned to a    destination printer in a cluster.    The daemon listens to avahi-daemon (via D-Bus) to find out about IPP    network printers (physical devices, remote CUPS queues, Printer    Applications) appearing and disappearing and creates/removes/    modifies print queues on the running CUPS appropriately. It also    listens to CUPS on the D-Bus whether a new job got submitted    and in case it being on a queue managed by cups-browsed tells    to CUPS which is the destination printer.    So it listens on the (system) D-Bus and submits administrative    requests to CUPS (some kind of automatic, UI-less printer setup    tool).  - No sbin binaries in libcupsfilters and libppd  - Packages libcupsfilters and libppd do not install services,    timers or recurring jobs  - Package cups-browsed installs daemon, see above.     - /usr/sbin/cups-browsed       - Listens on system D-Bus (avahi-daemon, CUPS)       - Applies administrative requests (creating/removing/modifying print queues) on CUPS       - Has AppArmor profile  - Packages do not open privileged ports (ports < 1024)  - Packages libcupsfilters and libppd provide the code for the filters    run by CUPS as the user "lp", to process print jobs. Most of the code    is the same as in the former cups-filters (1.x) and libcups2. [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source packages libcupsfilters, libppd, and cups-browsed does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libcupsfilters/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libppd/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/libcupsfilters/issues    - Upstream: https://github.com/OpenPrinting/libppd/issues    - Upstream: https://github.com/OpenPrinting/cups-browsed/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new packages, libcupsfilters, libppd, and cups-browsed    are not yet introduced in Debian. They will get introduced to Debian    Experimental soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support    (no printer drivers, only print data file format converters, output     can be displayed with easily available, common free software tools:     evince, Ghostscript, eog, rasterview) [Quality assurance - testing]  - The packages libcupsfilters and libppd run test suites on build    time, if they fail it makes the builds fail, links to build log    - https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz    - https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz  - The package cups-browsed does not run a test at build time because    as it was part of cups-filters there was no testing of the    cups-browsed daemon.  - The packages libcupsfilters and libppd run autopkgtests, and are    currently passing on all architectures listed under [Availability].    The very first migration process did not yet finish for both    libcupsfilters and libppd    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libcupsfilters    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libppd  - The package cups-browsed does not run an autopkgtest because when    cups-browsed was still part of cups-filters there was no autopkgtest,    especially not for the cups-browsed daemon.  - The packages libcupsfilters and libppd do not have failing    autopkgtests right now [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build logs:    libcupsfilters: https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz    libppd: https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz    cups-browsed: https://launchpadlibrarian.net/647984146/buildlog_ubuntu-lunar-amd64.cups-browsed_2.0~b2-0ubuntu4_BUILDING.txt.gz  - These packages do not yield massive lintian Warnings, Errors  - No lintian warnings or errors for libppd and cups-browsed  - libcupsfilters has only    P: libcupsfilters source: very-long-line-length-in-source-file 525 > 512 [Makefile.in:1759]    This is not a problem, Makefile.in is auto-generated by the autotools and the package builds without problems.  - Lintian overrides are not present for libcupsfilters and libppd  - Lintian overrides are present for cups-browsed, but ok because    CUPS needs the special permissions and directory for its backends    # Upstream choices; they need to be run as root    cups-browsed: executable-is-not-world-readable usr/lib/cups/backend/implicitclass 0700    # That's how CUPS does it    cups-browsed: executable-in-usr-lib usr/lib/cups/backend/implicitclass  - These packages do not rely on obsolete or about to be demoted packages.  - These packages have no python2 or GTK2 dependencies  - These packages will be installed by default, but do not ask debconf    questions higher than medium    - They do not ask debconf questions at all  - Packaging and build is easy, debian/rules files attached. [UI standards]  - Application is not end-user facing (does not need translation) [Dependencies]  - No further depends or recommends dependencies outside this MIR that are not yet in main  - There are further dependencies that are not yet in main, the MIR    process for them is handled as part of this bug here.    - libppd depends on libcupsfilters -> in this same MIR    - cups-browsed depends on libcupsfilters and libppd -> in this same MIR [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 all the packages - 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 descriptions explain the packages well Upstream Name are libcupsfilters, libppd, and cups-browsed (all unchanged) Links to upstream projects:  - https://github.com/OpenPrinting/libcupsfilters  - https://github.com/OpenPrinting/libppd  - https://github.com/OpenPrinting/cups-browsed ========== Original Description ============ This is a simplified MIR for the splitting of the cups-filters source package. With the second generation (2.x) cups-filters upstream got split into 5 independent component repositories: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed See https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ braille-printer-app still needs some upstream work for getting released, the others were already released as 2.0b2. libcupsfilters, cups-filters, and cups-browsed contain mainly the code from the former cups-filters (1.x) which is already in Main. libppd contains code from CUPS (libcups and cups-ppdc) which is also in Main. As of https://github.com/canonical/ubuntu-mir ---------- If a new source package contains only code which is already in main (e.g. the result of a source package split or rename, or source packages with a version in the name), it may not need a full review. Submitting a MIR bug with an explanation (but without the full template) or updating/extending on the existing old MIR bug and re-opening it by setting it to "NEW" is sufficient. ---------- This report does not need the full template. The original packages (cups-filters and cups) are in Main already for more than a decade, so repetition of the original MIR would not be useful. cups was already in Ubuntu from the very beginning on and therefore probably in Main since the differentiation of Main and Universe got introduced. The binary packages are named as before (except SONAME of libraries being 2 instead of 1 now), binary packages for libppd added. So current dependencies and seeding should pull in everything (libppd is a library and cups-filters depends on it). libfontembed has been discontinued (folded into libcupsfilters, API removed) but no package uses it (except the components of cups-filters 1.x thenselves). braille-printer-app will be added to this report (or a new simplified MIR report created) as soon as it gets released upstream. Its binary package(s) will need to get seeded.
2023-01-26 02:32:13 Till Kamppeter cups-browsed (Ubuntu): status Incomplete New
2023-01-26 02:32:15 Till Kamppeter libcupsfilters (Ubuntu): status Incomplete New
2023-01-26 02:32:17 Till Kamppeter libppd (Ubuntu): status Incomplete New
2023-01-26 02:32:37 Till Kamppeter cups-browsed (Ubuntu): importance Undecided High
2023-01-26 02:32:41 Till Kamppeter libcupsfilters (Ubuntu): importance Undecided High
2023-01-26 02:32:44 Till Kamppeter libppd (Ubuntu): importance Undecided High
2023-01-26 03:25:52 Till Kamppeter description ========== Summary ========================= Source packages to be promoted to Main: - libcupsfilters - libppd - cups-browsed Binary packages to be promoted to Main (if not already there): - cups-browsed - libcupsfilters-dev - libcupsfilters2 - libcupsfilters2-common - libppd-dev - libppd2 - libppd2-common - ppdc No source packages and no binary packages which are in Main should get demoted to Universe. ========== Overview ======================== Due to a major change in the printing architecture [1] the cups-filters upstream project at OpenPrinting got split into 5 components [2]: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed [1] https://openprinting.github.io/current/#the-new-architecture-for-printing-and-scanning [2] https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ To reflect this in the Debian/Ubuntu packaging also the cups-filters source package there are getting split, rendering 3 new source packages (+) and therefore we need this MIR: Binaries: Source BEFORE (1.x) Source AFTER (2.x) --------------------------------------------------------------------- cups-browsed cups-filters cups-browsed + cups-filters cups-filters cups-filters cups-filters-core-drivers cups-filters cups-filters libcupsfilters-dev cups-filters libcupsfilters + libcupsfilters1 cups-filters Replaced by                                                   libcupsfilters2 * libcupsfilters2 libcupsfilters + (NEW) libcupsfilters2-common libcupsfilters + (NEW) libfontembed-dev cups-filters REMOVED ** libfontembed cups-filters REMOVED ** libppd-dev libppd + (NEW) *** libppd2 libppd + (NEW) *** libppd2-common libppd + (NEW) *** ppdc libppd + (NEW) *** * : libcupsfilters has new API generation/SONAME 1 -> 2 ** : libfontembed code folded into libcupsfilters, API removed, no other      package is using it. ***: libppd contains all PPD-supporting code of CUPS, as in CUPS 3.x      this code will get removed. libppd is for legacy-retro-fitting of      classic CUPS drivers with PPD files. Code comes from CUPS source:      cups/ppd*.[ch], scheduler/cups-driverd.cxx, ppdc/* The purposes of the new generation's binary packages are principally the same as before: - cups-browsed: Daemon to auto-create queues for network printers and to                 form printer clusters - cups-filters: Print data format conversion filters and printer communication backends for CUPS 2.x - Complete set - cups-filters-core-drivers: Print data format conversion filters and printer communication backends for CUPS 2.x - Essential ones for minimum configurations, like mobile or IoT - libcupsfilters-dev: C Header files for libcupsfilters2 - libcupsfilters2: Shared library containing common code for print data                 conversion filters, printer drivers, printer model    identification and distinction, PDF file manipulation,    PDF font embedding, color space conversion, ... - libcupsfilters2-common: Architecture-indpendent auxiliary files - libppd2-dev: C Header files for libppd2 - libppd2: Shared library for support of PPD files, parsing the files, converting PPD options into IPP attributes, managing collections of PPDs, finding PPD for given printer, generating PPDs from CUPS' *.drv files - libppd2-common: Architecture-indpendent auxiliary files - ppdc: Command line tools to generate PPD files from *.drv files (only for development and debugging, or to keep scripts using them working, not end-user-facing) --> ALL THESE BINARY PACKAGES MUST GET PROMOTED INTO MAIN (IF THEY ARE     NOT ALREADY THERE). For current CUPS (2.x, provided by Debian packages) there is actually no change. CUPS depends on cups-filters ("cups" binary on "cups-filters" binary and "cups-core-drivers" binary on "cups-filters-core-drivers") to get its filters and additional backends which it needs for actual printing, now the new-generation cups-filters. The new "cups-filters" and "cups-filters-core-drivers" depend on "libcupsfilters2" and "libppd2" providing the common functionality they need. "cups-browsed" is recommended by "cups-daemon". I do not know whether any of these packages is also seeded and whether the recommend of "cups-browsed" by "cups-daemon" is strong enough to pull "cups-browsed" into Main when the MIR is approved. cups-core-drivers   |   +--Depends--> cups-filters-core-drivers                   |     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups   |   +--Depends--> cups-filters                   |     +--Depends--> cups-filters-core-drivers     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups-daemon   |   +--Recommends--> cups-browsed                      |        +--Depends--> libcupsfilters2        +--Depends--> libppd2          |          +--Depends--> libcupsfilters2 --> SO MOST PROBABLY NO NEW DEPENDENCIES IN PACKAGES ALREADY EXISTING     IN MAIN AND NO NEW SEEDS ARE NEEDED TO ACTUALLY GET EVERYTHING     INTO MAIN AFTER THE APPROVAL OF THIS MIR. As one can see from the table above, the former SOURCE package cups-filters is replaced by 4 SOURCE packages now: - libcupsfilters + - libppd + - cups-filters - cups-browsed + --> ALL THESE SOURCE PACKAGES NEED TO BE IN MAIN, THE ONES WITH + NEED     TO GET PROMOTED. --> CUPS-FILTERS IS ALREADY IN MAIN AND IT SHOULD CONTINUE IN MAIN. The braille-printer-app package is not yet completed upstream. As soon as this is done, it will also get uploaded to Ubuntu and a MIR for it posted. The splitting upstream is done to prepare for the New Architecture of printing, where printer drivers are not filters and PPD files any more but emulators of driverless IPP printers (Printer Applications). So a standard system installation does not need PPD file support any more, so we needed to completely separate the PPD file support code of CUPS and cups-filters into one optionally installable library but conserver as much as possible of the still valuable PPD-independent code in cups-filters, of 20 years of development and experience. Also filters need to get more accesible for Printer Applications, therefore we turned the former individual executables into library functions, the filter functions. With the introduction of libppd all use of libcups is now restricted to functionality which does not support PPD files and therefore will continue to be in libcups of CUPS 3.x ([1], future libcups3 binary package to appear in Ubuntu 24.04 LTS). This way we expect only small changes for the transition from libcups2 to libcups3. [1] https://github.com/OpenPrinting/libcups So we have now: libcupsfilters -------------- All the internal functionality of the filters which formerly was in the individual filter executables (cups-filters and cups-filters-core-drivers binary packages, new source package cups-filters) has moved into libcupsfilters (binary package libcupsfilters2, new source package libcupsfilters) as filter functions (source files cupsfilters/*to*.c*, cupsfilters/ghostscript.c, cupsfilters/pdftopdf/*, infrastructure in cupsfilters/filter.c, API in cupsfilters/filter.h). The handling of printer capabilities (media sizes, margins, color spaces, ...) and matching them with the jobs and job IPP attributes got vastly improved (cupsfilters/ipp.[ch], cupsfilters/raster.[ch].) Also API functions for handling human-readable strings/translations for option and choice names got created (cupsfilters/catalog.[ch]). The strings are taken from CUPS' message catalogs and also downloaded from driverless IPP printers. General functions for printers drivers, filters, color handling, PDF handling, ... from the old libcupsfilters (old binary package libcupsfilters1) got overtaken into the new libcupsfilters. The new libcupsfilters DOES NOT CONTAIN ANY SUPPORT FOR PPD FILES ANY MORE AND DOES NOT DEPEND ON LIBPPD. libppd ------ All PPD support which one finds in Linux distros with a CUPS/cups-filters printing stack is concentrated in libppd now. This way having PPD file support is completely optional. The library only needs to be installed if needed and being in a separate upstream repo and seperate Debian packages its maintenance can be stopped at any time while the maintenance and development of libcupsfilters continues. libppd (binary package libppd2, new source package libppd) is currently used by cups-filters (new binary packages cups-filters and cups-filters-core-drivers, new source package cups-filters) and pappl-retrofit ([1], added to Ubuntu in the next days, used by Printer Application which retro-fit classic CUPS drivers [2]). The former use case is only for systems using CUPS 2.x, the latter is mainly for systems in the New Architecture, using CUPS 3.x or the CUPS Snap [3][4] as these require all printer drivers being Printer Applications. None of the packages of the new cups-filters generation, PAPPL [5], pappl-retrofit, and the new (2.x) generation of CPDB [6] uses any PPD-file supporting functionality of libcups, so that a smooth transition to the libcups of CUPS 3.x is assured. Any PPD file support needs for legacy driver retro-fitting are covered by libppd. [1] https://github.com/OpenPrinting/pappl-retrofit [2] https://openprinting.github.io/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps [3] https://openprinting.github.io/achievements/#the-cups-snap [4] https://github.com/OpenPrinting/cups-snap [5] https://github.com/michaelrsweet/pappl/ [6] https://openprinting.github.io/achievements/#common-print-dialog-backends The source code is nearly completely overtaken from the CUPS source code: PPD file parsing and handling support in libcups (CUPS source: cups/ppd*.[ch], libppd source: ppd/*.c, API: ppd/ppd.h), PPD file collection handling and PPD file assignment to given printer (CUPS source: scheduler/cups-driverd.cxx, libppd source: ppd/ppd-collection.cxx, API: ppd/ppd.h), and generating PPD files from *.drv files (CUPS source: ppdc/*, libppd source: ppd/ppdc*.cxx, API ppd/ppdc.h). The PPD file generator for driverless printers (ppd/ppd-generator.c) is not the one from libcups but the one from the former libcupsfilters1, as that one supports generating the PPDs needed by printer clusters formed by cups-browsed. Some infrastructure got added for keeping PPD file support in the filter executables of CUPS 2.x, in ppd/ppd-filter.c, ppd/ppd-ipp.c, API is in ppd/ppd-filter.h. This infrastructure mainly parses the PPD file and turns the content of the PPD file into printer IPP attributes (what a driverless printer would respond when querying its capabilities). This way the non-PPD-supporting filter functions of libcupsfilters get to know the capabilities of the printer. cups-filters ------------ We get practically the same binaries as we had before in the cups-filters and cups-filters-core-drivers binary packages (old and new source package cups-filters), but they have changed internally: As told here earlier we have moved all the core functionality of the CUPS filters into libcupsfilters to have it available as library functions, the filter functions, so that they can be easily used by Printer Applications. Therefore the actual filter executables used for CUPS 2.x are only small wrappers which call a filter function to do the "dirty work". Only what does not make sense in the future PPD-less world keeps its code in the cups-filters upstream project: Legacy CUPS backends (backend/*), classic CUPS drivers (filter/*pclx*.c, filter/*escpx*.c), and the "driverless" utility (utils/*). A new feature is the "universal" CUPS filter (CUPS wrapper: filter/universal.c, PPD support wrapper in libppd: ppd/ppd-filter.c, core functionality in libcupsfilters: cupsfilters/universal.c). It makes use of having all filters as library functions in libcupsfilters to reduce the number of resource-consuming external executable calls by CUPS. It converts printer from practically any input format to practically any output format by calling chains of filter functions. So CUPS calls a single filter, "universal" instead of a chain of external filters. cups-filters will only be needed as long as we are using CUPS 2.x from Debian packages. If we have a distro using CUPS 3.x (planned from 24.04 LTS on) or the CUPS Snap (any CUPS version, planned from Ubuntu 23.10 on) cups-filters does not make sense any more, as we cannot add filters or backends either because CUPS is running from a sandboxed immutable image or does not support the filter/backend concept any more. cups-browsed ------------ The new cups-browsed binary package and the old one are practically identical in functionality. It is only split into its own upstream repository and with this into its own source Debian package for consistency of the splitting of cups-filters and for major changes in the future [1]. The actual source code suffered only changes for bug fixes and also for adaptation to changes in the API of the new libcupsfilters. It depends on the new libcupsfilters and also on libppd now. In the future it will get turned into a Printer Application [1] and not support and use PPD files any more, dropping the dependency on libppd. As all the rest of the current code from OpenPrinting it only uses non-PPD-supporting functionality of libcups, for a smooth transition to CUPS 3.x. [1] https://wiki.linuxfoundation.org/gsoc/google-summer-code-2023-openprinting-projects#turn_cups-browsed_into_a_printer_application === MIR REQUIREMENTS FOLLOWING TEMPLATE ==== https://github.com/canonical/ubuntu-mir This MIR is for 3 new source Debian packages which are result of splitting the cups-filters source package, so all MIR requirements based on what happened in the past are the same for all 3. Actually we are putting the answers for the cups-filters package here. Differences are caused only by how the splitting is done and will be mentioned here. Therefore I have pasted and worked through the template only once and not three times, once for each new source package. [Availability] The packages in question are uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libcupsfilters https://launchpad.net/ubuntu/+source/libppd https://launchpad.net/ubuntu/+source/cups-browsed They build for the architectures it is designed to work on. They currently build and work for the architetcures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - The packages in question are required in Ubuntu Main as they are    the libcupsfilters and cups-browsed which the cups-filters 2.x    source package does not contain any more, as they got separated    into their own upstream source repos.  - To be prepared for the removal of PPD support in CUPS 3.x,    libcupsfilters does not contain any PPD file support any more. It    got moved into libppd and cups-filters 2.x which provides the    filters for CUPS 2.x therefore needs libppd to maintain the PPD    support in these filters.  - libcupsfilters, libppd, and cups-browsed are part of Ubuntu's    printing stack.  - libcupsfilters, libppd, and cups-browsed are part of the update of    cups-filters from 1.x to 2.x  - The packages libcupsfilters and libppd are new runtime dependencies    of the package cups-filters that we already support  - cups-browsed has to be in Main as, as before it need to overcome    the lack of support for temporary CUPS queues in some print    dialogs.  - The packages in question are required in Ubuntu Main no later than FF    of Lunar, as cups-filters 2.0~b2 is already uploaded to Lunar. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of libcupsfilters and cups-browsed: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters  - All vulnerabilities are fixed, version with fix mentioned in the list.  - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Not vulnerable", "Does not exist") Security vulnerabilities of cups, which is the origin of the code of libppd: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups  - All vulnerabilities are fixed, version with fix mentioned in the list. Openwall: 'site:www.openwall.com/lists/oss-security cups'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Released", "Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - Binary /usr/sbin/cups-browsed (of package cups-browsed) in sbin is    no problem. It is the cups-browsed which we already use for several    years, provided by the cups-filters (1.x) source package.    No actual changes have been done in the functionality of    cups-browsed, only minor bug fixes. Changes in the underlying    libraries (libcupsfilters, libppd) did not change the communication    of cups-browsed with the outside world, but only improve the PPD    files it uses and the reliability of a job being assigned to a    destination printer in a cluster.    The daemon listens to avahi-daemon (via D-Bus) to find out about IPP    network printers (physical devices, remote CUPS queues, Printer    Applications) appearing and disappearing and creates/removes/    modifies print queues on the running CUPS appropriately. It also    listens to CUPS on the D-Bus whether a new job got submitted    and in case it being on a queue managed by cups-browsed tells    to CUPS which is the destination printer.    So it listens on the (system) D-Bus and submits administrative    requests to CUPS (some kind of automatic, UI-less printer setup    tool).  - No sbin binaries in libcupsfilters and libppd  - Packages libcupsfilters and libppd do not install services,    timers or recurring jobs  - Package cups-browsed installs daemon, see above.     - /usr/sbin/cups-browsed       - Listens on system D-Bus (avahi-daemon, CUPS)       - Applies administrative requests (creating/removing/modifying print queues) on CUPS       - Has AppArmor profile  - Packages do not open privileged ports (ports < 1024)  - Packages libcupsfilters and libppd provide the code for the filters    run by CUPS as the user "lp", to process print jobs. Most of the code    is the same as in the former cups-filters (1.x) and libcups2. [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source packages libcupsfilters, libppd, and cups-browsed does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libcupsfilters/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libppd/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/libcupsfilters/issues    - Upstream: https://github.com/OpenPrinting/libppd/issues    - Upstream: https://github.com/OpenPrinting/cups-browsed/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new packages, libcupsfilters, libppd, and cups-browsed    are not yet introduced in Debian. They will get introduced to Debian    Experimental soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support    (no printer drivers, only print data file format converters, output     can be displayed with easily available, common free software tools:     evince, Ghostscript, eog, rasterview) [Quality assurance - testing]  - The packages libcupsfilters and libppd run test suites on build    time, if they fail it makes the builds fail, links to build log    - https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz    - https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz  - The package cups-browsed does not run a test at build time because    as it was part of cups-filters there was no testing of the    cups-browsed daemon.  - The packages libcupsfilters and libppd run autopkgtests, and are    currently passing on all architectures listed under [Availability].    The very first migration process did not yet finish for both    libcupsfilters and libppd    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libcupsfilters    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libppd  - The package cups-browsed does not run an autopkgtest because when    cups-browsed was still part of cups-filters there was no autopkgtest,    especially not for the cups-browsed daemon.  - The packages libcupsfilters and libppd do not have failing    autopkgtests right now [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build logs:    libcupsfilters: https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz    libppd: https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz    cups-browsed: https://launchpadlibrarian.net/647984146/buildlog_ubuntu-lunar-amd64.cups-browsed_2.0~b2-0ubuntu4_BUILDING.txt.gz  - These packages do not yield massive lintian Warnings, Errors  - No lintian warnings or errors for libppd and cups-browsed  - libcupsfilters has only    P: libcupsfilters source: very-long-line-length-in-source-file 525 > 512 [Makefile.in:1759]    This is not a problem, Makefile.in is auto-generated by the autotools and the package builds without problems.  - Lintian overrides are not present for libcupsfilters and libppd  - Lintian overrides are present for cups-browsed, but ok because    CUPS needs the special permissions and directory for its backends    # Upstream choices; they need to be run as root    cups-browsed: executable-is-not-world-readable usr/lib/cups/backend/implicitclass 0700    # That's how CUPS does it    cups-browsed: executable-in-usr-lib usr/lib/cups/backend/implicitclass  - These packages do not rely on obsolete or about to be demoted packages.  - These packages have no python2 or GTK2 dependencies  - These packages will be installed by default, but do not ask debconf    questions higher than medium    - They do not ask debconf questions at all  - Packaging and build is easy, debian/rules files attached. [UI standards]  - Application is not end-user facing (does not need translation) [Dependencies]  - No further depends or recommends dependencies outside this MIR that are not yet in main  - There are further dependencies that are not yet in main, the MIR    process for them is handled as part of this bug here.    - libppd depends on libcupsfilters -> in this same MIR    - cups-browsed depends on libcupsfilters and libppd -> in this same MIR [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 all the packages - 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 descriptions explain the packages well Upstream Name are libcupsfilters, libppd, and cups-browsed (all unchanged) Links to upstream projects:  - https://github.com/OpenPrinting/libcupsfilters  - https://github.com/OpenPrinting/libppd  - https://github.com/OpenPrinting/cups-browsed ========== Original Description ============ This is a simplified MIR for the splitting of the cups-filters source package. With the second generation (2.x) cups-filters upstream got split into 5 independent component repositories: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed See https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ braille-printer-app still needs some upstream work for getting released, the others were already released as 2.0b2. libcupsfilters, cups-filters, and cups-browsed contain mainly the code from the former cups-filters (1.x) which is already in Main. libppd contains code from CUPS (libcups and cups-ppdc) which is also in Main. As of https://github.com/canonical/ubuntu-mir ---------- If a new source package contains only code which is already in main (e.g. the result of a source package split or rename, or source packages with a version in the name), it may not need a full review. Submitting a MIR bug with an explanation (but without the full template) or updating/extending on the existing old MIR bug and re-opening it by setting it to "NEW" is sufficient. ---------- This report does not need the full template. The original packages (cups-filters and cups) are in Main already for more than a decade, so repetition of the original MIR would not be useful. cups was already in Ubuntu from the very beginning on and therefore probably in Main since the differentiation of Main and Universe got introduced. The binary packages are named as before (except SONAME of libraries being 2 instead of 1 now), binary packages for libppd added. So current dependencies and seeding should pull in everything (libppd is a library and cups-filters depends on it). libfontembed has been discontinued (folded into libcupsfilters, API removed) but no package uses it (except the components of cups-filters 1.x thenselves). braille-printer-app will be added to this report (or a new simplified MIR report created) as soon as it gets released upstream. Its binary package(s) will need to get seeded. ========== Summary ========================= Source packages to be promoted to Main: - libcupsfilters - libppd - cups-browsed Binary packages to be promoted to Main (if not already there): - cups-browsed - libcupsfilters-dev - libcupsfilters2 - libcupsfilters2-common - libppd-dev - libppd2 - libppd2-common - ppdc No source packages and no binary packages which are in Main should get demoted to Universe. ========== Overview ======================== Due to a major change in the printing architecture [1] the cups-filters upstream project at OpenPrinting got split into 5 components [2]: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed [1] https://openprinting.github.io/current/#the-new-architecture-for-printing-and-scanning [2] https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ To reflect this in the Debian/Ubuntu packaging also the cups-filters source package there are getting split, rendering 3 new source packages (+) and therefore we need this MIR: Binaries: Source BEFORE (1.x) Source AFTER (2.x) --------------------------------------------------------------------- cups-browsed cups-filters cups-browsed + cups-filters cups-filters cups-filters cups-filters-core-drivers cups-filters cups-filters libcupsfilters-dev cups-filters libcupsfilters + libcupsfilters1 cups-filters Replaced by                                                   libcupsfilters2 * libcupsfilters2 libcupsfilters + (NEW) libcupsfilters2-common libcupsfilters + (NEW) libfontembed-dev cups-filters REMOVED ** libfontembed cups-filters REMOVED ** libppd-dev libppd + (NEW) *** libppd2 libppd + (NEW) *** libppd2-common libppd + (NEW) *** ppdc libppd + (NEW) *** * : libcupsfilters has new API generation/SONAME 1 -> 2 ** : libfontembed code folded into libcupsfilters, API removed, no other      package is using it. ***: libppd contains all PPD-supporting code of CUPS, as in CUPS 3.x      this code will get removed. libppd is for legacy-retro-fitting of      classic CUPS drivers with PPD files. Code comes from CUPS source:      cups/ppd*.[ch], scheduler/cups-driverd.cxx, ppdc/* The purposes of the new generation's binary packages are principally the same as before: - cups-browsed: Daemon to auto-create queues for network printers and to                 form printer clusters - cups-filters: Print data format conversion filters and printer                 communication backends for CUPS 2.x - Complete set - cups-filters-core-drivers: Print data format conversion filters and                 printer communication backends for CUPS 2.x - Essential                 ones for minimum configurations, like mobile or IoT - libcupsfilters-dev: C Header files for libcupsfilters2 - libcupsfilters2: Shared library containing common code for print data                 conversion filters, printer drivers, printer model                 identification and distinction, PDF file manipulation,                 PDF font embedding, color space conversion, ... - libcupsfilters2-common: Architecture-indpendent auxiliary files - libppd2-dev: C Header files for libppd2 - libppd2: Shared library for support of PPD files, parsing the                 files, converting PPD options into IPP attributes,                 managing collections of PPDs, finding PPD for given                 printer, generating PPDs from CUPS' *.drv files - libppd2-common: Architecture-indpendent auxiliary files - ppdc: Command line tools to generate PPD files from *.drv                 files (only for development and debugging, or to                 keep scripts using them working, not end-user-facing) --> ALL THESE BINARY PACKAGES MUST GET PROMOTED INTO MAIN (IF THEY ARE     NOT ALREADY THERE). For current CUPS (2.x, provided by Debian packages) there is actually no change. CUPS depends on cups-filters ("cups" binary on "cups-filters" binary and "cups-core-drivers" binary on "cups-filters-core-drivers") to get its filters and additional backends which it needs for actual printing, now the new-generation cups-filters. The new "cups-filters" and "cups-filters-core-drivers" depend on "libcupsfilters2" and "libppd2" providing the common functionality they need. "cups-browsed" is recommended by "cups-daemon". I do not know whether any of these packages is also seeded and whether the recommend of "cups-browsed" by "cups-daemon" is strong enough to pull "cups-browsed" into Main when the MIR is approved. cups-core-drivers   |   +--Depends--> cups-filters-core-drivers                   |     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups   |   +--Depends--> cups-filters                   |     +--Depends--> cups-filters-core-drivers     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups-daemon   |   +--Recommends--> cups-browsed                      |        +--Depends--> libcupsfilters2        +--Depends--> libppd2          |          +--Depends--> libcupsfilters2 --> SO MOST PROBABLY NO NEW DEPENDENCIES IN PACKAGES ALREADY EXISTING     IN MAIN AND NO NEW SEEDS ARE NEEDED TO ACTUALLY GET EVERYTHING     INTO MAIN AFTER THE APPROVAL OF THIS MIR. As one can see from the table above, the former SOURCE package cups-filters is replaced by 4 SOURCE packages now: - libcupsfilters + - libppd + - cups-filters - cups-browsed + --> ALL THESE SOURCE PACKAGES NEED TO BE IN MAIN, THE ONES WITH + NEED     TO GET PROMOTED. --> CUPS-FILTERS IS ALREADY IN MAIN AND IT SHOULD CONTINUE IN MAIN. The braille-printer-app package is not yet completed upstream. As soon as this is done, it will also get uploaded to Ubuntu and a MIR for it posted. The splitting upstream is done to prepare for the New Architecture of printing, where printer drivers are not filters and PPD files any more but emulators of driverless IPP printers (Printer Applications). So a standard system installation does not need PPD file support any more, so we needed to completely separate the PPD file support code of CUPS and cups-filters into one optionally installable library but conserver as much as possible of the still valuable PPD-independent code in cups-filters, of 20 years of development and experience. Also filters need to get more accesible for Printer Applications, therefore we turned the former individual executables into library functions, the filter functions. With the introduction of libppd all use of libcups is now restricted to functionality which does not support PPD files and therefore will continue to be in libcups of CUPS 3.x ([1], future libcups3 binary package to appear in Ubuntu 24.04 LTS). This way we expect only small changes for the transition from libcups2 to libcups3. [1] https://github.com/OpenPrinting/libcups So we have now: libcupsfilters -------------- All the internal functionality of the filters which formerly was in the individual filter executables (cups-filters and cups-filters-core-drivers binary packages, new source package cups-filters) has moved into libcupsfilters (binary package libcupsfilters2, new source package libcupsfilters) as filter functions (source files cupsfilters/*to*.c*, cupsfilters/ghostscript.c, cupsfilters/pdftopdf/*, infrastructure in cupsfilters/filter.c, API in cupsfilters/filter.h). The handling of printer capabilities (media sizes, margins, color spaces, ...) and matching them with the jobs and job IPP attributes got vastly improved (cupsfilters/ipp.[ch], cupsfilters/raster.[ch].) Also API functions for handling human-readable strings/translations for option and choice names got created (cupsfilters/catalog.[ch]). The strings are taken from CUPS' message catalogs and also downloaded from driverless IPP printers. General functions for printers drivers, filters, color handling, PDF handling, ... from the old libcupsfilters (old binary package libcupsfilters1) got overtaken into the new libcupsfilters. The new libcupsfilters DOES NOT CONTAIN ANY SUPPORT FOR PPD FILES ANY MORE AND DOES NOT DEPEND ON LIBPPD. libppd ------ All PPD support which one finds in Linux distros with a CUPS/cups-filters printing stack is concentrated in libppd now. This way having PPD file support is completely optional. The library only needs to be installed if needed and being in a separate upstream repo and seperate Debian packages its maintenance can be stopped at any time while the maintenance and development of libcupsfilters continues. libppd (binary package libppd2, new source package libppd) is currently used by cups-filters (new binary packages cups-filters and cups-filters-core-drivers, new source package cups-filters) and pappl-retrofit ([1], added to Ubuntu in the next days, used by Printer Application which retro-fit classic CUPS drivers [2]). The former use case is only for systems using CUPS 2.x, the latter is mainly for systems in the New Architecture, using CUPS 3.x or the CUPS Snap [3][4] as these require all printer drivers being Printer Applications. None of the packages of the new cups-filters generation, PAPPL [5], pappl-retrofit, and the new (2.x) generation of CPDB [6] uses any PPD-file supporting functionality of libcups, so that a smooth transition to the libcups of CUPS 3.x is assured. Any PPD file support needs for legacy driver retro-fitting are covered by libppd. [1] https://github.com/OpenPrinting/pappl-retrofit [2] https://openprinting.github.io/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps [3] https://openprinting.github.io/achievements/#the-cups-snap [4] https://github.com/OpenPrinting/cups-snap [5] https://github.com/michaelrsweet/pappl/ [6] https://openprinting.github.io/achievements/#common-print-dialog-backends The source code is nearly completely overtaken from the CUPS source code: PPD file parsing and handling support in libcups (CUPS source: cups/ppd*.[ch], libppd source: ppd/*.c, API: ppd/ppd.h), PPD file collection handling and PPD file assignment to given printer (CUPS source: scheduler/cups-driverd.cxx, libppd source: ppd/ppd-collection.cxx, API: ppd/ppd.h), and generating PPD files from *.drv files (CUPS source: ppdc/*, libppd source: ppd/ppdc*.cxx, API ppd/ppdc.h). The PPD file generator for driverless printers (ppd/ppd-generator.c) is not the one from libcups but the one from the former libcupsfilters1, as that one supports generating the PPDs needed by printer clusters formed by cups-browsed. Some infrastructure got added for keeping PPD file support in the filter executables of CUPS 2.x, in ppd/ppd-filter.c, ppd/ppd-ipp.c, API is in ppd/ppd-filter.h. This infrastructure mainly parses the PPD file and turns the content of the PPD file into printer IPP attributes (what a driverless printer would respond when querying its capabilities). This way the non-PPD-supporting filter functions of libcupsfilters get to know the capabilities of the printer. cups-filters ------------ We get practically the same binaries as we had before in the cups-filters and cups-filters-core-drivers binary packages (old and new source package cups-filters), but they have changed internally: As told here earlier we have moved all the core functionality of the CUPS filters into libcupsfilters to have it available as library functions, the filter functions, so that they can be easily used by Printer Applications. Therefore the actual filter executables used for CUPS 2.x are only small wrappers which call a filter function to do the "dirty work". Only what does not make sense in the future PPD-less world keeps its code in the cups-filters upstream project: Legacy CUPS backends (backend/*), classic CUPS drivers (filter/*pclx*.c, filter/*escpx*.c), and the "driverless" utility (utils/*). A new feature is the "universal" CUPS filter (CUPS wrapper: filter/universal.c, PPD support wrapper in libppd: ppd/ppd-filter.c, core functionality in libcupsfilters: cupsfilters/universal.c). It makes use of having all filters as library functions in libcupsfilters to reduce the number of resource-consuming external executable calls by CUPS. It converts printer from practically any input format to practically any output format by calling chains of filter functions. So CUPS calls a single filter, "universal" instead of a chain of external filters. cups-filters will only be needed as long as we are using CUPS 2.x from Debian packages. If we have a distro using CUPS 3.x (planned from 24.04 LTS on) or the CUPS Snap (any CUPS version, planned from Ubuntu 23.10 on) cups-filters does not make sense any more, as we cannot add filters or backends either because CUPS is running from a sandboxed immutable image or does not support the filter/backend concept any more. cups-browsed ------------ The new cups-browsed binary package and the old one are practically identical in functionality. It is only split into its own upstream repository and with this into its own source Debian package for consistency of the splitting of cups-filters and for major changes in the future [1]. The actual source code suffered only changes for bug fixes and also for adaptation to changes in the API of the new libcupsfilters. It depends on the new libcupsfilters and also on libppd now. In the future it will get turned into a Printer Application [1] and not support and use PPD files any more, dropping the dependency on libppd. As all the rest of the current code from OpenPrinting it only uses non-PPD-supporting functionality of libcups, for a smooth transition to CUPS 3.x. [1] https://wiki.linuxfoundation.org/gsoc/google-summer-code-2023-openprinting-projects#turn_cups-browsed_into_a_printer_application === MIR REQUIREMENTS FOLLOWING TEMPLATE ==== https://github.com/canonical/ubuntu-mir === LIBCUPSFILTERS ========================= [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libcupsfilters It builds for the architectures it is designed to work on. It currently builds and works for the architetcures: amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main. - The package is required in Ubuntu Main as it is the libcupsfilters which the cups-filters 2.x source package does not contain any more, as it got separated into its own upstream source repo. - libcupsfilters is part of Ubuntu's printing stack. - libcupsfilters is part of the update of cups-filters from 1.x to 2.x - The packages libcupsfilters is a new runtime dependency of the package cups-filters that we already support - The packages is required in Ubuntu Main no later than FF of Lunar, as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of libcupsfilters: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters - All vulnerabilities are fixed, version with fix mentioned in the list. - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters' - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters - Shows the same vulnerabilities as CVE, none as not fixed in a supported Ubuntu release ("Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it. - no `suid` or `sgid` binaries - No sbin binaries in libcupsfilters - Packages libcupsfilters does not install services, timers or recurring jobs - Package does not open privileged ports (ports < 1024) - Package libcupsfilters provides the code for the filters run by CUPS as the user "lp", to process print jobs. Most of the code is the same as in the former cups-filters (1.x). [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package libcupsfilters does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ... - The package works well right after install [Quality assurance - maintenance] - The package is maintained well in Debian/Ubuntu and has not too many and long term critical bugs open - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libcupsfilters/+bug - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters - Upstream: https://github.com/OpenPrinting/libcupsfilters/issues - Upstream: https://github.com/OpenPrinting/cups-filters/issues Note that the new package libcupsfilters is not yet introduced in Debian. It will get introduced to Debian Experimental soon. Unstable is in freeze for the Bookworm release. - The package does not deal with exotic hardware we cannot support (no printer drivers, only print data file format converters, output can be displayed with easily available, common free software tools: evince, Ghostscript, eog, rasterview) [Quality assurance - testing] - The packages libcupsfilters runs test suites on build time, if they fail it makes the builds fail, link to build log - https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz - The packages libcupsfilters runs autopkgtests, and is currently passing on all architectures listed under [Availability]. The very first migration process did not yet finish for libcupsfilters https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libcupsfilters - The package libcupsfilters does not have failing autopkgtests right now [Quality assurance - packaging] - debian/watch is present and works - debian/control defines a correct Maintainer field - Build log: https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz - This package does not yield massive lintian Warnings, Errors - This package has only P: libcupsfilters source: very-long-line-length-in-source-file 525 > 512 [Makefile.in:1759] This is not a problem, Makefile.in is auto-generated by the autotools and the package builds without problems. - Lintian overrides are not present for libcupsfilters - This package does not rely on obsolete or about to be demoted packages. - This package has no python2 or GTK2 dependencies - This package will be installed by default, but does not ask debconf questions higher than medium - It does not ask debconf questions at all - Packaging and build is easy, debian/rules file attached. [UI standards] - Application is not end-user facing (does not need translation) [Dependencies] - No further depends or recommends dependencies that are not yet in main [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 this 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 descriptions explain the packages well Upstream Name are libcupsfilters (unchanged) Link to upstream projects: - https://github.com/OpenPrinting/libcupsfilters === LIBPPD ================================= [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libppd It builds for the architectures it is designed to work on. It currently builds and works for the architectures: amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main. - To be prepared for the removal of PPD support in CUPS 3.x, libcupsfilters does not contain any PPD file support any more. The PPD file support got moved into libppd and cups-filters 2.x which provides the filters for CUPS 2.x therefore needs libppd to maintain the PPD support in these filters. - libppd is part of Ubuntu's printing stack. - libppd is part of the update of cups-filters from 1.x to 2.x - libppd is a new runtime dependency of the package cups-filters that we already support - The package is required in Ubuntu Main no later than FF of Lunar, as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups, which is the origin of the code of libppd: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups - All vulnerabilities are fixed, version with fix mentioned in the list. Openwall: 'site:www.openwall.com/lists/oss-security cups' - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups - Shows the same vulnerabilities as CVE, none as not fixed in a supported Ubuntu release ("Released", "Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it. - no `suid` or `sgid` binaries - No sbin binaries in libppd - Package libppd does not install services timers or recurring jobs - Package does not open privileged ports (ports < 1024) - Package libppd provides code for the filters run by CUPS as the user "lp", to process print jobs. Most of the code is the same as in libcups2. [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package libppd does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ... - The package works well right after install [Quality assurance - maintenance] - The package is maintained well in Debian/Ubuntu and has not too many and long term critical bugs open - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libppd/+bug - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters - Upstream: https://github.com/OpenPrinting/libppd/issues - Upstream: https://github.com/OpenPrinting/cups-filters/issues Note that the new package libppd is not yet introduced in Debian. It will get introduced to Debian Experimental soon. Unstable is in freeze for the Bookworm release. - The package does not deal with exotic hardware we cannot support (no printer drivers, only print data file format converters, output can be displayed with easily available, common free software tools: evince, Ghostscript, eog, rasterview) [Quality assurance - testing] - The package libppd runs test suites on build time, if they fail it makes the builds fail, links to build log - https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz - The package libppd runs autopkgtests, and is currently passing on all architectures listed under [Availability]. The very first migration process did not yet finish for both libppd https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libppd - The packages libppd does not have failing autopkgtests right now [Quality assurance - packaging] - debian/watch is present and works - debian/control defines a correct Maintainer field - Build log: https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz - These packages do not yield massive lintian Warnings, Errors - No lintian warnings or errors for libppd - Lintian overrides are not present for libppd - This package does not rely on obsolete or about to be demoted packages. - This package has no python2 or GTK2 dependencies - This package will be installed by default, but does not ask debconf questions higher than medium - It does not ask debconf questions at all - Packaging and build is easy, debian/rules files attached. [UI standards] - Application is not end-user facing (does not need translation) - Executables in binary package ppdc are only for development and debugging, or to keep existing scripts running, so nothing for end users. [Dependencies] - No further depends or recommends dependencies outside this MIR that are not yet in main - There are further dependencies that are not yet in main, the MIR process for them is handled as part of this bug here. - libppd depends on libcupsfilters -> in this same MIR [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 this 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 libppd (unchanged) Links to upstream project: - https://github.com/OpenPrinting/libppd === CUPS-BROWSED =========================== [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/cups-browsed It builds for the architectures it is designed to work on. It currently builds and works for the architetcures: amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main. - The package is required in Ubuntu Main as it is the cups-browsed which the cups-filters 2.x source package does not contain any more, as it got separated into its own upstream source repo. - cups-browsed is part of Ubuntu's printing stack. - cups-browsed is part of the update of cups-filters from 1.x to 2.x - cups-browsed has to be in Main as, as before, it needs to overcome the lack of support for temporary CUPS queues in some print dialogs. - The package is required in Ubuntu Main no later than FF of Lunar, as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of cups-browsed: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters - All vulnerabilities are fixed, version with fix mentioned in the list. - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters' - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters - Shows the same vulnerabilities as CVE, none as not fixed in a supported Ubuntu release ("Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it. - no `suid` or `sgid` binaries - Binary /usr/sbin/cups-browsed (of package cups-browsed) in sbin is no problem. It is the cups-browsed which we already use for several years, provided by the cups-filters (1.x) source package. No actual changes have been done in the functionality of cups-browsed, only minor bug fixes. Changes in the underlying libraries (libcupsfilters, libppd) did not change the communication of cups-browsed with the outside world, but only improve the PPD files it uses and the reliability of a job being assigned to a destination printer in a cluster. The daemon listens to avahi-daemon (via D-Bus) to find out about IPP network printers (physical devices, remote CUPS queues, Printer Applications) appearing and disappearing and creates/removes/ modifies print queues on the running CUPS appropriately. It also listens to CUPS on the D-Bus whether a new job got submitted and in case it being on a queue managed by cups-browsed tells to CUPS which is the destination printer. So it listens on the (system) D-Bus and submits administrative requests to CUPS (some kind of automatic, UI-less printer setup tool). - Package cups-browsed installs daemon, see above. - /usr/sbin/cups-browsed - Listens on system D-Bus (avahi-daemon, CUPS) - Applies administrative requests (creating/removing/modifying print queues) on CUPS - Has AppArmor profile - Package does not open privileged ports (ports < 1024) [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package cups-browsed does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ... - The package works well right after install [Quality assurance - maintenance] - The package is maintained well in Debian/Ubuntu and has not too many and long term critical bugs open - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters - Upstream: https://github.com/OpenPrinting/cups-browsed/issues - Upstream: https://github.com/OpenPrinting/cups-filters/issues Note that the new package cups-browsed is not yet introduced in Debian. It will get introduced to Debian Experimental soon. Unstable is in freeze for the Bookworm release. - The package does not deal with exotic hardware we cannot support [Quality assurance - testing] - The package cups-browsed does not run a test at build time because as it was part of cups-filters there was no testing of the cups-browsed daemon. - The package cups-browsed does not run an autopkgtest because when cups-browsed was still part of cups-filters there was no autopkgtest, especially not for the cups-browsed daemon. [Quality assurance - packaging] - debian/watch is present and works - debian/control defines a correct Maintainer field - Build log: https://launchpadlibrarian.net/647984146/buildlog_ubuntu-lunar-amd64.cups-browsed_2.0~b2-0ubuntu4_BUILDING.txt.gz - This package does not yield massive lintian Warnings, Errors - No lintian warnings or errors at all for cups-browsed - Lintian overrides are present for cups-browsed, but ok because CUPS needs the special permissions and directory for its backends # Upstream choices; they need to be run as root cups-browsed: executable-is-not-world-readable usr/lib/cups/backend/implicitclass 0700 # That's how CUPS does it cups-browsed: executable-in-usr-lib usr/lib/cups/backend/implicitclass - This package does not rely on obsolete or about to be demoted packages. - These package has no python2 or GTK2 dependencies - This package will be installed by default, but does not ask debconf questions higher than medium - It does not ask debconf questions at all - Packaging and build is easy, debian/rules file attached. [UI standards] - Application is not end-user facing (does not need translation) [Dependencies] - No further depends or recommends dependencies outside this MIR that are not yet in main - There are further dependencies that are not yet in main, the MIR process for them is handled as part of this bug here. - libppd depends on libcupsfilters -> in this same MIR - cups-browsed depends on libcupsfilters and libppd -> in this same MIR [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 all the packages - 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 cups-browsed (unchanged) Links to upstream projects: - https://github.com/OpenPrinting/cups-browsed ========== Original Description ============ This is a simplified MIR for the splitting of the cups-filters source package. With the second generation (2.x) cups-filters upstream got split into 5 independent component repositories: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed See https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ braille-printer-app still needs some upstream work for getting released, the others were already released as 2.0b2. libcupsfilters, cups-filters, and cups-browsed contain mainly the code from the former cups-filters (1.x) which is already in Main. libppd contains code from CUPS (libcups and cups-ppdc) which is also in Main. As of https://github.com/canonical/ubuntu-mir ---------- If a new source package contains only code which is already in main (e.g. the result of a source package split or rename, or source packages with a version in the name), it may not need a full review. Submitting a MIR bug with an explanation (but without the full template) or updating/extending on the existing old MIR bug and re-opening it by setting it to "NEW" is sufficient. ---------- This report does not need the full template. The original packages (cups-filters and cups) are in Main already for more than a decade, so repetition of the original MIR would not be useful. cups was already in Ubuntu from the very beginning on and therefore probably in Main since the differentiation of Main and Universe got introduced. The binary packages are named as before (except SONAME of libraries being 2 instead of 1 now), binary packages for libppd added. So current dependencies and seeding should pull in everything (libppd is a library and cups-filters depends on it). libfontembed has been discontinued (folded into libcupsfilters, API removed) but no package uses it (except the components of cups-filters 1.x thenselves). braille-printer-app will be added to this report (or a new simplified MIR report created) as soon as it gets released upstream. Its binary package(s) will need to get seeded.
2023-01-26 08:05:53 Didier Roche-Tolomelli cups-browsed (Ubuntu): status New Incomplete
2023-01-26 08:05:56 Didier Roche-Tolomelli libppd (Ubuntu): status New Incomplete
2023-01-26 08:05:58 Didier Roche-Tolomelli libcupsfilters (Ubuntu): status New Incomplete
2023-01-26 12:37:16 Till Kamppeter description ========== Summary ========================= Source packages to be promoted to Main: - libcupsfilters - libppd - cups-browsed Binary packages to be promoted to Main (if not already there): - cups-browsed - libcupsfilters-dev - libcupsfilters2 - libcupsfilters2-common - libppd-dev - libppd2 - libppd2-common - ppdc No source packages and no binary packages which are in Main should get demoted to Universe. ========== Overview ======================== Due to a major change in the printing architecture [1] the cups-filters upstream project at OpenPrinting got split into 5 components [2]: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed [1] https://openprinting.github.io/current/#the-new-architecture-for-printing-and-scanning [2] https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ To reflect this in the Debian/Ubuntu packaging also the cups-filters source package there are getting split, rendering 3 new source packages (+) and therefore we need this MIR: Binaries: Source BEFORE (1.x) Source AFTER (2.x) --------------------------------------------------------------------- cups-browsed cups-filters cups-browsed + cups-filters cups-filters cups-filters cups-filters-core-drivers cups-filters cups-filters libcupsfilters-dev cups-filters libcupsfilters + libcupsfilters1 cups-filters Replaced by                                                   libcupsfilters2 * libcupsfilters2 libcupsfilters + (NEW) libcupsfilters2-common libcupsfilters + (NEW) libfontembed-dev cups-filters REMOVED ** libfontembed cups-filters REMOVED ** libppd-dev libppd + (NEW) *** libppd2 libppd + (NEW) *** libppd2-common libppd + (NEW) *** ppdc libppd + (NEW) *** * : libcupsfilters has new API generation/SONAME 1 -> 2 ** : libfontembed code folded into libcupsfilters, API removed, no other      package is using it. ***: libppd contains all PPD-supporting code of CUPS, as in CUPS 3.x      this code will get removed. libppd is for legacy-retro-fitting of      classic CUPS drivers with PPD files. Code comes from CUPS source:      cups/ppd*.[ch], scheduler/cups-driverd.cxx, ppdc/* The purposes of the new generation's binary packages are principally the same as before: - cups-browsed: Daemon to auto-create queues for network printers and to                 form printer clusters - cups-filters: Print data format conversion filters and printer                 communication backends for CUPS 2.x - Complete set - cups-filters-core-drivers: Print data format conversion filters and                 printer communication backends for CUPS 2.x - Essential                 ones for minimum configurations, like mobile or IoT - libcupsfilters-dev: C Header files for libcupsfilters2 - libcupsfilters2: Shared library containing common code for print data                 conversion filters, printer drivers, printer model                 identification and distinction, PDF file manipulation,                 PDF font embedding, color space conversion, ... - libcupsfilters2-common: Architecture-indpendent auxiliary files - libppd2-dev: C Header files for libppd2 - libppd2: Shared library for support of PPD files, parsing the                 files, converting PPD options into IPP attributes,                 managing collections of PPDs, finding PPD for given                 printer, generating PPDs from CUPS' *.drv files - libppd2-common: Architecture-indpendent auxiliary files - ppdc: Command line tools to generate PPD files from *.drv                 files (only for development and debugging, or to                 keep scripts using them working, not end-user-facing) --> ALL THESE BINARY PACKAGES MUST GET PROMOTED INTO MAIN (IF THEY ARE     NOT ALREADY THERE). For current CUPS (2.x, provided by Debian packages) there is actually no change. CUPS depends on cups-filters ("cups" binary on "cups-filters" binary and "cups-core-drivers" binary on "cups-filters-core-drivers") to get its filters and additional backends which it needs for actual printing, now the new-generation cups-filters. The new "cups-filters" and "cups-filters-core-drivers" depend on "libcupsfilters2" and "libppd2" providing the common functionality they need. "cups-browsed" is recommended by "cups-daemon". I do not know whether any of these packages is also seeded and whether the recommend of "cups-browsed" by "cups-daemon" is strong enough to pull "cups-browsed" into Main when the MIR is approved. cups-core-drivers   |   +--Depends--> cups-filters-core-drivers                   |     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups   |   +--Depends--> cups-filters                   |     +--Depends--> cups-filters-core-drivers     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups-daemon   |   +--Recommends--> cups-browsed                      |        +--Depends--> libcupsfilters2        +--Depends--> libppd2          |          +--Depends--> libcupsfilters2 --> SO MOST PROBABLY NO NEW DEPENDENCIES IN PACKAGES ALREADY EXISTING     IN MAIN AND NO NEW SEEDS ARE NEEDED TO ACTUALLY GET EVERYTHING     INTO MAIN AFTER THE APPROVAL OF THIS MIR. As one can see from the table above, the former SOURCE package cups-filters is replaced by 4 SOURCE packages now: - libcupsfilters + - libppd + - cups-filters - cups-browsed + --> ALL THESE SOURCE PACKAGES NEED TO BE IN MAIN, THE ONES WITH + NEED     TO GET PROMOTED. --> CUPS-FILTERS IS ALREADY IN MAIN AND IT SHOULD CONTINUE IN MAIN. The braille-printer-app package is not yet completed upstream. As soon as this is done, it will also get uploaded to Ubuntu and a MIR for it posted. The splitting upstream is done to prepare for the New Architecture of printing, where printer drivers are not filters and PPD files any more but emulators of driverless IPP printers (Printer Applications). So a standard system installation does not need PPD file support any more, so we needed to completely separate the PPD file support code of CUPS and cups-filters into one optionally installable library but conserver as much as possible of the still valuable PPD-independent code in cups-filters, of 20 years of development and experience. Also filters need to get more accesible for Printer Applications, therefore we turned the former individual executables into library functions, the filter functions. With the introduction of libppd all use of libcups is now restricted to functionality which does not support PPD files and therefore will continue to be in libcups of CUPS 3.x ([1], future libcups3 binary package to appear in Ubuntu 24.04 LTS). This way we expect only small changes for the transition from libcups2 to libcups3. [1] https://github.com/OpenPrinting/libcups So we have now: libcupsfilters -------------- All the internal functionality of the filters which formerly was in the individual filter executables (cups-filters and cups-filters-core-drivers binary packages, new source package cups-filters) has moved into libcupsfilters (binary package libcupsfilters2, new source package libcupsfilters) as filter functions (source files cupsfilters/*to*.c*, cupsfilters/ghostscript.c, cupsfilters/pdftopdf/*, infrastructure in cupsfilters/filter.c, API in cupsfilters/filter.h). The handling of printer capabilities (media sizes, margins, color spaces, ...) and matching them with the jobs and job IPP attributes got vastly improved (cupsfilters/ipp.[ch], cupsfilters/raster.[ch].) Also API functions for handling human-readable strings/translations for option and choice names got created (cupsfilters/catalog.[ch]). The strings are taken from CUPS' message catalogs and also downloaded from driverless IPP printers. General functions for printers drivers, filters, color handling, PDF handling, ... from the old libcupsfilters (old binary package libcupsfilters1) got overtaken into the new libcupsfilters. The new libcupsfilters DOES NOT CONTAIN ANY SUPPORT FOR PPD FILES ANY MORE AND DOES NOT DEPEND ON LIBPPD. libppd ------ All PPD support which one finds in Linux distros with a CUPS/cups-filters printing stack is concentrated in libppd now. This way having PPD file support is completely optional. The library only needs to be installed if needed and being in a separate upstream repo and seperate Debian packages its maintenance can be stopped at any time while the maintenance and development of libcupsfilters continues. libppd (binary package libppd2, new source package libppd) is currently used by cups-filters (new binary packages cups-filters and cups-filters-core-drivers, new source package cups-filters) and pappl-retrofit ([1], added to Ubuntu in the next days, used by Printer Application which retro-fit classic CUPS drivers [2]). The former use case is only for systems using CUPS 2.x, the latter is mainly for systems in the New Architecture, using CUPS 3.x or the CUPS Snap [3][4] as these require all printer drivers being Printer Applications. None of the packages of the new cups-filters generation, PAPPL [5], pappl-retrofit, and the new (2.x) generation of CPDB [6] uses any PPD-file supporting functionality of libcups, so that a smooth transition to the libcups of CUPS 3.x is assured. Any PPD file support needs for legacy driver retro-fitting are covered by libppd. [1] https://github.com/OpenPrinting/pappl-retrofit [2] https://openprinting.github.io/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps [3] https://openprinting.github.io/achievements/#the-cups-snap [4] https://github.com/OpenPrinting/cups-snap [5] https://github.com/michaelrsweet/pappl/ [6] https://openprinting.github.io/achievements/#common-print-dialog-backends The source code is nearly completely overtaken from the CUPS source code: PPD file parsing and handling support in libcups (CUPS source: cups/ppd*.[ch], libppd source: ppd/*.c, API: ppd/ppd.h), PPD file collection handling and PPD file assignment to given printer (CUPS source: scheduler/cups-driverd.cxx, libppd source: ppd/ppd-collection.cxx, API: ppd/ppd.h), and generating PPD files from *.drv files (CUPS source: ppdc/*, libppd source: ppd/ppdc*.cxx, API ppd/ppdc.h). The PPD file generator for driverless printers (ppd/ppd-generator.c) is not the one from libcups but the one from the former libcupsfilters1, as that one supports generating the PPDs needed by printer clusters formed by cups-browsed. Some infrastructure got added for keeping PPD file support in the filter executables of CUPS 2.x, in ppd/ppd-filter.c, ppd/ppd-ipp.c, API is in ppd/ppd-filter.h. This infrastructure mainly parses the PPD file and turns the content of the PPD file into printer IPP attributes (what a driverless printer would respond when querying its capabilities). This way the non-PPD-supporting filter functions of libcupsfilters get to know the capabilities of the printer. cups-filters ------------ We get practically the same binaries as we had before in the cups-filters and cups-filters-core-drivers binary packages (old and new source package cups-filters), but they have changed internally: As told here earlier we have moved all the core functionality of the CUPS filters into libcupsfilters to have it available as library functions, the filter functions, so that they can be easily used by Printer Applications. Therefore the actual filter executables used for CUPS 2.x are only small wrappers which call a filter function to do the "dirty work". Only what does not make sense in the future PPD-less world keeps its code in the cups-filters upstream project: Legacy CUPS backends (backend/*), classic CUPS drivers (filter/*pclx*.c, filter/*escpx*.c), and the "driverless" utility (utils/*). A new feature is the "universal" CUPS filter (CUPS wrapper: filter/universal.c, PPD support wrapper in libppd: ppd/ppd-filter.c, core functionality in libcupsfilters: cupsfilters/universal.c). It makes use of having all filters as library functions in libcupsfilters to reduce the number of resource-consuming external executable calls by CUPS. It converts printer from practically any input format to practically any output format by calling chains of filter functions. So CUPS calls a single filter, "universal" instead of a chain of external filters. cups-filters will only be needed as long as we are using CUPS 2.x from Debian packages. If we have a distro using CUPS 3.x (planned from 24.04 LTS on) or the CUPS Snap (any CUPS version, planned from Ubuntu 23.10 on) cups-filters does not make sense any more, as we cannot add filters or backends either because CUPS is running from a sandboxed immutable image or does not support the filter/backend concept any more. cups-browsed ------------ The new cups-browsed binary package and the old one are practically identical in functionality. It is only split into its own upstream repository and with this into its own source Debian package for consistency of the splitting of cups-filters and for major changes in the future [1]. The actual source code suffered only changes for bug fixes and also for adaptation to changes in the API of the new libcupsfilters. It depends on the new libcupsfilters and also on libppd now. In the future it will get turned into a Printer Application [1] and not support and use PPD files any more, dropping the dependency on libppd. As all the rest of the current code from OpenPrinting it only uses non-PPD-supporting functionality of libcups, for a smooth transition to CUPS 3.x. [1] https://wiki.linuxfoundation.org/gsoc/google-summer-code-2023-openprinting-projects#turn_cups-browsed_into_a_printer_application === MIR REQUIREMENTS FOLLOWING TEMPLATE ==== https://github.com/canonical/ubuntu-mir === LIBCUPSFILTERS ========================= [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libcupsfilters It builds for the architectures it is designed to work on. It currently builds and works for the architetcures: amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main. - The package is required in Ubuntu Main as it is the libcupsfilters which the cups-filters 2.x source package does not contain any more, as it got separated into its own upstream source repo. - libcupsfilters is part of Ubuntu's printing stack. - libcupsfilters is part of the update of cups-filters from 1.x to 2.x - The packages libcupsfilters is a new runtime dependency of the package cups-filters that we already support - The packages is required in Ubuntu Main no later than FF of Lunar, as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of libcupsfilters: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters - All vulnerabilities are fixed, version with fix mentioned in the list. - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters' - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters - Shows the same vulnerabilities as CVE, none as not fixed in a supported Ubuntu release ("Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it. - no `suid` or `sgid` binaries - No sbin binaries in libcupsfilters - Packages libcupsfilters does not install services, timers or recurring jobs - Package does not open privileged ports (ports < 1024) - Package libcupsfilters provides the code for the filters run by CUPS as the user "lp", to process print jobs. Most of the code is the same as in the former cups-filters (1.x). [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package libcupsfilters does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ... - The package works well right after install [Quality assurance - maintenance] - The package is maintained well in Debian/Ubuntu and has not too many and long term critical bugs open - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libcupsfilters/+bug - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters - Upstream: https://github.com/OpenPrinting/libcupsfilters/issues - Upstream: https://github.com/OpenPrinting/cups-filters/issues Note that the new package libcupsfilters is not yet introduced in Debian. It will get introduced to Debian Experimental soon. Unstable is in freeze for the Bookworm release. - The package does not deal with exotic hardware we cannot support (no printer drivers, only print data file format converters, output can be displayed with easily available, common free software tools: evince, Ghostscript, eog, rasterview) [Quality assurance - testing] - The packages libcupsfilters runs test suites on build time, if they fail it makes the builds fail, link to build log - https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz - The packages libcupsfilters runs autopkgtests, and is currently passing on all architectures listed under [Availability]. The very first migration process did not yet finish for libcupsfilters https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libcupsfilters - The package libcupsfilters does not have failing autopkgtests right now [Quality assurance - packaging] - debian/watch is present and works - debian/control defines a correct Maintainer field - Build log: https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz - This package does not yield massive lintian Warnings, Errors - This package has only P: libcupsfilters source: very-long-line-length-in-source-file 525 > 512 [Makefile.in:1759] This is not a problem, Makefile.in is auto-generated by the autotools and the package builds without problems. - Lintian overrides are not present for libcupsfilters - This package does not rely on obsolete or about to be demoted packages. - This package has no python2 or GTK2 dependencies - This package will be installed by default, but does not ask debconf questions higher than medium - It does not ask debconf questions at all - Packaging and build is easy, debian/rules file attached. [UI standards] - Application is not end-user facing (does not need translation) [Dependencies] - No further depends or recommends dependencies that are not yet in main [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 this 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 descriptions explain the packages well Upstream Name are libcupsfilters (unchanged) Link to upstream projects: - https://github.com/OpenPrinting/libcupsfilters === LIBPPD ================================= [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libppd It builds for the architectures it is designed to work on. It currently builds and works for the architectures: amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main. - To be prepared for the removal of PPD support in CUPS 3.x, libcupsfilters does not contain any PPD file support any more. The PPD file support got moved into libppd and cups-filters 2.x which provides the filters for CUPS 2.x therefore needs libppd to maintain the PPD support in these filters. - libppd is part of Ubuntu's printing stack. - libppd is part of the update of cups-filters from 1.x to 2.x - libppd is a new runtime dependency of the package cups-filters that we already support - The package is required in Ubuntu Main no later than FF of Lunar, as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups, which is the origin of the code of libppd: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups - All vulnerabilities are fixed, version with fix mentioned in the list. Openwall: 'site:www.openwall.com/lists/oss-security cups' - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups - Shows the same vulnerabilities as CVE, none as not fixed in a supported Ubuntu release ("Released", "Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it. - no `suid` or `sgid` binaries - No sbin binaries in libppd - Package libppd does not install services timers or recurring jobs - Package does not open privileged ports (ports < 1024) - Package libppd provides code for the filters run by CUPS as the user "lp", to process print jobs. Most of the code is the same as in libcups2. [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package libppd does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ... - The package works well right after install [Quality assurance - maintenance] - The package is maintained well in Debian/Ubuntu and has not too many and long term critical bugs open - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libppd/+bug - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters - Upstream: https://github.com/OpenPrinting/libppd/issues - Upstream: https://github.com/OpenPrinting/cups-filters/issues Note that the new package libppd is not yet introduced in Debian. It will get introduced to Debian Experimental soon. Unstable is in freeze for the Bookworm release. - The package does not deal with exotic hardware we cannot support (no printer drivers, only print data file format converters, output can be displayed with easily available, common free software tools: evince, Ghostscript, eog, rasterview) [Quality assurance - testing] - The package libppd runs test suites on build time, if they fail it makes the builds fail, links to build log - https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz - The package libppd runs autopkgtests, and is currently passing on all architectures listed under [Availability]. The very first migration process did not yet finish for both libppd https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libppd - The packages libppd does not have failing autopkgtests right now [Quality assurance - packaging] - debian/watch is present and works - debian/control defines a correct Maintainer field - Build log: https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz - These packages do not yield massive lintian Warnings, Errors - No lintian warnings or errors for libppd - Lintian overrides are not present for libppd - This package does not rely on obsolete or about to be demoted packages. - This package has no python2 or GTK2 dependencies - This package will be installed by default, but does not ask debconf questions higher than medium - It does not ask debconf questions at all - Packaging and build is easy, debian/rules files attached. [UI standards] - Application is not end-user facing (does not need translation) - Executables in binary package ppdc are only for development and debugging, or to keep existing scripts running, so nothing for end users. [Dependencies] - No further depends or recommends dependencies outside this MIR that are not yet in main - There are further dependencies that are not yet in main, the MIR process for them is handled as part of this bug here. - libppd depends on libcupsfilters -> in this same MIR [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 this 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 libppd (unchanged) Links to upstream project: - https://github.com/OpenPrinting/libppd === CUPS-BROWSED =========================== [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/cups-browsed It builds for the architectures it is designed to work on. It currently builds and works for the architetcures: amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main. - The package is required in Ubuntu Main as it is the cups-browsed which the cups-filters 2.x source package does not contain any more, as it got separated into its own upstream source repo. - cups-browsed is part of Ubuntu's printing stack. - cups-browsed is part of the update of cups-filters from 1.x to 2.x - cups-browsed has to be in Main as, as before, it needs to overcome the lack of support for temporary CUPS queues in some print dialogs. - The package is required in Ubuntu Main no later than FF of Lunar, as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of cups-browsed: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters - All vulnerabilities are fixed, version with fix mentioned in the list. - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters' - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters - Shows the same vulnerabilities as CVE, none as not fixed in a supported Ubuntu release ("Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it. - no `suid` or `sgid` binaries - Binary /usr/sbin/cups-browsed (of package cups-browsed) in sbin is no problem. It is the cups-browsed which we already use for several years, provided by the cups-filters (1.x) source package. No actual changes have been done in the functionality of cups-browsed, only minor bug fixes. Changes in the underlying libraries (libcupsfilters, libppd) did not change the communication of cups-browsed with the outside world, but only improve the PPD files it uses and the reliability of a job being assigned to a destination printer in a cluster. The daemon listens to avahi-daemon (via D-Bus) to find out about IPP network printers (physical devices, remote CUPS queues, Printer Applications) appearing and disappearing and creates/removes/ modifies print queues on the running CUPS appropriately. It also listens to CUPS on the D-Bus whether a new job got submitted and in case it being on a queue managed by cups-browsed tells to CUPS which is the destination printer. So it listens on the (system) D-Bus and submits administrative requests to CUPS (some kind of automatic, UI-less printer setup tool). - Package cups-browsed installs daemon, see above. - /usr/sbin/cups-browsed - Listens on system D-Bus (avahi-daemon, CUPS) - Applies administrative requests (creating/removing/modifying print queues) on CUPS - Has AppArmor profile - Package does not open privileged ports (ports < 1024) [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package cups-browsed does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ... - The package works well right after install [Quality assurance - maintenance] - The package is maintained well in Debian/Ubuntu and has not too many and long term critical bugs open - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters - Upstream: https://github.com/OpenPrinting/cups-browsed/issues - Upstream: https://github.com/OpenPrinting/cups-filters/issues Note that the new package cups-browsed is not yet introduced in Debian. It will get introduced to Debian Experimental soon. Unstable is in freeze for the Bookworm release. - The package does not deal with exotic hardware we cannot support [Quality assurance - testing] - The package cups-browsed does not run a test at build time because as it was part of cups-filters there was no testing of the cups-browsed daemon. - The package cups-browsed does not run an autopkgtest because when cups-browsed was still part of cups-filters there was no autopkgtest, especially not for the cups-browsed daemon. [Quality assurance - packaging] - debian/watch is present and works - debian/control defines a correct Maintainer field - Build log: https://launchpadlibrarian.net/647984146/buildlog_ubuntu-lunar-amd64.cups-browsed_2.0~b2-0ubuntu4_BUILDING.txt.gz - This package does not yield massive lintian Warnings, Errors - No lintian warnings or errors at all for cups-browsed - Lintian overrides are present for cups-browsed, but ok because CUPS needs the special permissions and directory for its backends # Upstream choices; they need to be run as root cups-browsed: executable-is-not-world-readable usr/lib/cups/backend/implicitclass 0700 # That's how CUPS does it cups-browsed: executable-in-usr-lib usr/lib/cups/backend/implicitclass - This package does not rely on obsolete or about to be demoted packages. - These package has no python2 or GTK2 dependencies - This package will be installed by default, but does not ask debconf questions higher than medium - It does not ask debconf questions at all - Packaging and build is easy, debian/rules file attached. [UI standards] - Application is not end-user facing (does not need translation) [Dependencies] - No further depends or recommends dependencies outside this MIR that are not yet in main - There are further dependencies that are not yet in main, the MIR process for them is handled as part of this bug here. - libppd depends on libcupsfilters -> in this same MIR - cups-browsed depends on libcupsfilters and libppd -> in this same MIR [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 all the packages - 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 cups-browsed (unchanged) Links to upstream projects: - https://github.com/OpenPrinting/cups-browsed ========== Original Description ============ This is a simplified MIR for the splitting of the cups-filters source package. With the second generation (2.x) cups-filters upstream got split into 5 independent component repositories: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed See https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ braille-printer-app still needs some upstream work for getting released, the others were already released as 2.0b2. libcupsfilters, cups-filters, and cups-browsed contain mainly the code from the former cups-filters (1.x) which is already in Main. libppd contains code from CUPS (libcups and cups-ppdc) which is also in Main. As of https://github.com/canonical/ubuntu-mir ---------- If a new source package contains only code which is already in main (e.g. the result of a source package split or rename, or source packages with a version in the name), it may not need a full review. Submitting a MIR bug with an explanation (but without the full template) or updating/extending on the existing old MIR bug and re-opening it by setting it to "NEW" is sufficient. ---------- This report does not need the full template. The original packages (cups-filters and cups) are in Main already for more than a decade, so repetition of the original MIR would not be useful. cups was already in Ubuntu from the very beginning on and therefore probably in Main since the differentiation of Main and Universe got introduced. The binary packages are named as before (except SONAME of libraries being 2 instead of 1 now), binary packages for libppd added. So current dependencies and seeding should pull in everything (libppd is a library and cups-filters depends on it). libfontembed has been discontinued (folded into libcupsfilters, API removed) but no package uses it (except the components of cups-filters 1.x thenselves). braille-printer-app will be added to this report (or a new simplified MIR report created) as soon as it gets released upstream. Its binary package(s) will need to get seeded. ========== Summary ========================= Source packages to be promoted to Main: - libcupsfilters - libppd - cups-browsed Binary packages to be promoted to Main: - libcupsfilters2 - libcupsfilters2-common - libppd-dev - libppd2 - libppd2-common - ppdc No source packages and no binary packages which are in Main should get demoted to Universe. ========== Overview ======================== Due to a major change in the printing architecture [1] the cups-filters upstream project at OpenPrinting got split into 5 components [2]: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed [1] https://openprinting.github.io/current/#the-new-architecture-for-printing-and-scanning [2] https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ To reflect this in the Debian/Ubuntu packaging also the cups-filters source package there is getting split, rendering 3 new source packages (+) and therefore we need this MIR: Binaries: Source BEFORE (1.x) Source AFTER (2.x) --------------------------------------------------------------------- cups-browsed cups-filters cups-browsed + cups-filters cups-filters cups-filters cups-filters-core-drivers cups-filters cups-filters libcupsfilters-dev cups-filters libcupsfilters + libcupsfilters1 X cups-filters Replaced by                                                   libcupsfilters2 * libcupsfilters2 + libcupsfilters + (NEW) libcupsfilters2-common + libcupsfilters + (NEW) libfontembed-dev X cups-filters REMOVED ** libfontembed X cups-filters REMOVED ** libppd-dev + libppd + (NEW) *** libppd2 + libppd + (NEW) *** libppd2-common + libppd + (NEW) *** ppdc + libppd + (NEW) *** * : libcupsfilters has new API generation/SONAME 1 -> 2 ** : libfontembed code folded into libcupsfilters, API removed, no other      package is using it. ***: libppd contains all PPD-supporting code of CUPS, as in CUPS 3.x      this code will get removed. libppd is for legacy-retro-fitting of      classic CUPS drivers with PPD files. Code comes from CUPS source:      cups/ppd*.[ch], scheduler/cups-driverd.cxx, ppdc/* X: Binary package getting REMOVED from Lunar +: Source or binary package to be promoted to Main via this MIR The purposes of the new generation's binary packages are principally the same as before: - cups-browsed: Daemon to auto-create queues for network printers and to                 form printer clusters - cups-filters: Print data format conversion filters and printer                 communication backends for CUPS 2.x - Complete set - cups-filters-core-drivers: Print data format conversion filters and                 printer communication backends for CUPS 2.x - Essential                 ones for minimum configurations, like mobile or IoT - libcupsfilters-dev: C Header files for libcupsfilters2 - libcupsfilters2: Shared library containing common code for print data                 conversion filters, printer drivers, printer model                 identification and distinction, PDF file manipulation,                 PDF font embedding, color space conversion, ... - libcupsfilters2-common: Architecture-indpendent auxiliary files - libppd2-dev: C Header files for libppd2 - libppd2: Shared library for support of PPD files, parsing the                 files, converting PPD options into IPP attributes,                 managing collections of PPDs, finding PPD for given                 printer, generating PPDs from CUPS' *.drv files - libppd2-common: Architecture-indpendent auxiliary files - ppdc: Command line tools to generate PPD files from *.drv                 files (only for development and debugging, or to                 keep scripts using them working, not end-user-facing) --> ALL THESE BINARY PACKAGES MUST BE IN MAIM, SO THE FOLLOWING BINARY PACKAGES NEED TO GET PROMOTED: - libcupsfilters2 - libcupsfilters2-common - libppd-dev - libppd2 - libppd2-common - ppdc For current CUPS (2.x, provided by Debian packages) there is actually no change. CUPS depends on cups-filters ("cups" binary on "cups-filters" binary and "cups-core-drivers" binary on "cups-filters-core-drivers") to get its filters and additional backends which it needs for actual printing, now the new-generation cups-filters. The new "cups-filters" and "cups-filters-core-drivers" depend on "libcupsfilters2" and "libppd2" providing the common functionality they need. "cups-browsed" is recommended by "cups-daemon". I do not know whether any of these packages is also seeded and whether the recommend of "cups-browsed" by "cups-daemon" is strong enough to pull "cups-browsed" into Main when the MIR is approved. cups-core-drivers   |   +--Depends--> cups-filters-core-drivers                   |     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups   |   +--Depends--> cups-filters                   |     +--Depends--> cups-filters-core-drivers     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups-daemon   |   +--Recommends--> cups-browsed                      |        +--Depends--> libcupsfilters2        +--Depends--> libppd2          |          +--Depends--> libcupsfilters2 --> SO NO NEW DEPENDENCIES IN PACKAGES ALREADY EXISTING     IN MAIN AND NO NEW SEEDS ARE NEEDED TO ACTUALLY GET EVERYTHING     INTO MAIN AFTER THE APPROVAL OF THIS MIR. As one can see from the table above, the former SOURCE package cups-filters is replaced by 4 SOURCE packages now: - libcupsfilters + - libppd + - cups-filters - cups-browsed + --> ALL THESE SOURCE PACKAGES NEED TO BE IN MAIN, THE ONES WITH + NEED     TO GET PROMOTED. --> CUPS-FILTERS IS ALREADY IN MAIN AND IT SHOULD CONTINUE IN MAIN. The braille-printer-app package is not yet completed upstream. As soon as this is done, it will also get uploaded to Ubuntu and a MIR for it posted. The splitting upstream is done to prepare for the New Architecture of printing, where printer drivers are not filters and PPD files any more but emulators of driverless IPP printers (Printer Applications). So a standard system installation does not need PPD file support any more, so we needed to completely separate the PPD file support code of CUPS and cups-filters into one optionally installable library but conserver as much as possible of the still valuable PPD-independent code in cups-filters, of 20 years of development and experience. Also filters need to get more accesible for Printer Applications, therefore we turned the former individual executables into library functions, the filter functions. With the introduction of libppd all use of libcups is now restricted to functionality which does not support PPD files and therefore will continue to be in libcups of CUPS 3.x ([1], future libcups3 binary package to appear in Ubuntu 24.04 LTS). This way we expect only small changes for the transition from libcups2 to libcups3. [1] https://github.com/OpenPrinting/libcups So we have now: libcupsfilters -------------- All the internal functionality of the filters which formerly was in the individual filter executables (cups-filters and cups-filters-core-drivers binary packages, new source package cups-filters) has moved into libcupsfilters (binary package libcupsfilters2, new source package libcupsfilters) as filter functions (source files cupsfilters/*to*.c*, cupsfilters/ghostscript.c, cupsfilters/pdftopdf/*, infrastructure in cupsfilters/filter.c, API in cupsfilters/filter.h). The handling of printer capabilities (media sizes, margins, color spaces, ...) and matching them with the jobs and job IPP attributes got vastly improved (cupsfilters/ipp.[ch], cupsfilters/raster.[ch].) Also API functions for handling human-readable strings/translations for option and choice names got created (cupsfilters/catalog.[ch]). The strings are taken from CUPS' message catalogs and also downloaded from driverless IPP printers. General functions for printers drivers, filters, color handling, PDF handling, ... from the old libcupsfilters (old binary package libcupsfilters1) got overtaken into the new libcupsfilters. The new libcupsfilters DOES NOT CONTAIN ANY SUPPORT FOR PPD FILES ANY MORE AND DOES NOT DEPEND ON LIBPPD. libppd ------ All PPD support which one finds in Linux distros with a CUPS/cups-filters printing stack is concentrated in libppd now. This way having PPD file support is completely optional. The library only needs to be installed if needed and being in a separate upstream repo and seperate Debian packages its maintenance can be stopped at any time while the maintenance and development of libcupsfilters continues. libppd (binary package libppd2, new source package libppd) is currently used by cups-filters (new binary packages cups-filters and cups-filters-core-drivers, new source package cups-filters) and pappl-retrofit ([1], added to Ubuntu in the next days, used by Printer Application which retro-fit classic CUPS drivers [2]). The former use case is only for systems using CUPS 2.x, the latter is mainly for systems in the New Architecture, using CUPS 3.x or the CUPS Snap [3][4] as these require all printer drivers being Printer Applications. None of the packages of the new cups-filters generation, PAPPL [5], pappl-retrofit, and the new (2.x) generation of CPDB [6] uses any PPD-file supporting functionality of libcups, so that a smooth transition to the libcups of CUPS 3.x is assured. Any PPD file support needs for legacy driver retro-fitting are covered by libppd. [1] https://github.com/OpenPrinting/pappl-retrofit [2] https://openprinting.github.io/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps [3] https://openprinting.github.io/achievements/#the-cups-snap [4] https://github.com/OpenPrinting/cups-snap [5] https://github.com/michaelrsweet/pappl/ [6] https://openprinting.github.io/achievements/#common-print-dialog-backends The source code is nearly completely overtaken from the CUPS source code: PPD file parsing and handling support in libcups (CUPS source: cups/ppd*.[ch], libppd source: ppd/*.c, API: ppd/ppd.h), PPD file collection handling and PPD file assignment to given printer (CUPS source: scheduler/cups-driverd.cxx, libppd source: ppd/ppd-collection.cxx, API: ppd/ppd.h), and generating PPD files from *.drv files (CUPS source: ppdc/*, libppd source: ppd/ppdc*.cxx, API ppd/ppdc.h). The PPD file generator for driverless printers (ppd/ppd-generator.c) is not the one from libcups but the one from the former libcupsfilters1, as that one supports generating the PPDs needed by printer clusters formed by cups-browsed. Some infrastructure got added for keeping PPD file support in the filter executables of CUPS 2.x, in ppd/ppd-filter.c, ppd/ppd-ipp.c, API is in ppd/ppd-filter.h. This infrastructure mainly parses the PPD file and turns the content of the PPD file into printer IPP attributes (what a driverless printer would respond when querying its capabilities). This way the non-PPD-supporting filter functions of libcupsfilters get to know the capabilities of the printer. cups-filters ------------ We get practically the same binaries as we had before in the cups-filters and cups-filters-core-drivers binary packages (old and new source package cups-filters), but they have changed internally: As told here earlier we have moved all the core functionality of the CUPS filters into libcupsfilters to have it available as library functions, the filter functions, so that they can be easily used by Printer Applications. Therefore the actual filter executables used for CUPS 2.x are only small wrappers which call a filter function to do the "dirty work". Only what does not make sense in the future PPD-less world keeps its code in the cups-filters upstream project: Legacy CUPS backends (backend/*), classic CUPS drivers (filter/*pclx*.c, filter/*escpx*.c), and the "driverless" utility (utils/*). A new feature is the "universal" CUPS filter (CUPS wrapper: filter/universal.c, PPD support wrapper in libppd: ppd/ppd-filter.c, core functionality in libcupsfilters: cupsfilters/universal.c). It makes use of having all filters as library functions in libcupsfilters to reduce the number of resource-consuming external executable calls by CUPS. It converts printer from practically any input format to practically any output format by calling chains of filter functions. So CUPS calls a single filter, "universal" instead of a chain of external filters. cups-filters will only be needed as long as we are using CUPS 2.x from Debian packages. If we have a distro using CUPS 3.x (planned from 24.04 LTS on) or the CUPS Snap (any CUPS version, planned from Ubuntu 23.10 on) cups-filters does not make sense any more, as we cannot add filters or backends either because CUPS is running from a sandboxed immutable image or does not support the filter/backend concept any more. cups-browsed ------------ The new cups-browsed binary package and the old one are practically identical in functionality. It is only split into its own upstream repository and with this into its own source Debian package for consistency of the splitting of cups-filters and for major changes in the future [1]. The actual source code suffered only changes for bug fixes and also for adaptation to changes in the API of the new libcupsfilters. It depends on the new libcupsfilters and also on libppd now. In the future it will get turned into a Printer Application [1] and not support and use PPD files any more, dropping the dependency on libppd. As all the rest of the current code from OpenPrinting it only uses non-PPD-supporting functionality of libcups, for a smooth transition to CUPS 3.x. [1] https://wiki.linuxfoundation.org/gsoc/google-summer-code-2023-openprinting-projects#turn_cups-browsed_into_a_printer_application === MIR REQUIREMENTS FOLLOWING TEMPLATE ==== https://github.com/canonical/ubuntu-mir === LIBCUPSFILTERS ========================= [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libcupsfilters It builds for the architectures it is designed to work on. It currently builds and works for the architetcures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - The package is required in Ubuntu Main as it is the libcupsfilters    which the cups-filters 2.x source package does not contain any    more, as it got separated into its own upstream source repo.  - libcupsfilters is part of Ubuntu's printing stack.  - libcupsfilters is part of the update of cups-filters from 1.x to 2.x  - The packages libcupsfilters is a new runtime dependency of the    package cups-filters that we already support  - The packages is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of libcupsfilters: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters  - All vulnerabilities are fixed, version with fix mentioned in the list.  - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - No sbin binaries in libcupsfilters  - Packages libcupsfilters does not install services,    timers or recurring jobs  - Package does not open privileged ports (ports < 1024)  - Package libcupsfilters provides the code for the filters run by    CUPS as the user "lp", to process print jobs. Most of the code is    the same as in the former cups-filters (1.x). [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package libcupsfilters does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libcupsfilters/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/libcupsfilters/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package libcupsfilters is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support    (no printer drivers, only print data file format converters, output     can be displayed with easily available, common free software tools:     evince, Ghostscript, eog, rasterview) [Quality assurance - testing]  - The packages libcupsfilters runs test suites on build time, if they    fail it makes the builds fail, link to build log    - https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz  - The packages libcupsfilters runs autopkgtests, and is    currently passing on all architectures listed under [Availability].    The very first migration process did not yet finish for    libcupsfilters    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libcupsfilters  - The package libcupsfilters does not have failing autopkgtests right now [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log:    https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz  - This package does not yield massive lintian Warnings, Errors  - This package has only    P: libcupsfilters source: very-long-line-length-in-source-file 525 >    512 [Makefile.in:1759]    This is not a problem, Makefile.in is auto-generated by the autotools    and the package builds without problems.  - Lintian overrides are not present for libcupsfilters  - This package does not rely on obsolete or about to be demoted    packages.  - This package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules file attached. [UI standards]  - Application is not end-user facing (does not need translation) [Dependencies]  - No further depends or recommends dependencies that are not yet in    main [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 this 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 descriptions explain the packages well Upstream Name are libcupsfilters (unchanged) Link to upstream projects:  - https://github.com/OpenPrinting/libcupsfilters === LIBPPD ================================= [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libppd It builds for the architectures it is designed to work on. It currently builds and works for the architectures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - To be prepared for the removal of PPD support in CUPS 3.x,    libcupsfilters does not contain any PPD file support any more. The    PPD file support got moved into libppd and cups-filters 2.x which    provides the filters for CUPS 2.x therefore needs libppd to    maintain the PPD support in these filters.  - libppd is part of Ubuntu's printing stack.  - libppd is part of the update of cups-filters from 1.x to 2.x  - libppd is a new runtime dependency of the package cups-filters that    we already support  - The package is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups, which is the origin of the code of libppd: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups  - All vulnerabilities are fixed, version with fix mentioned in the list. Openwall: 'site:www.openwall.com/lists/oss-security cups'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Released", "Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - No sbin binaries in libppd  - Package libppd does not install services timers or recurring jobs  - Package does not open privileged ports (ports < 1024)  - Package libppd provides code for the filters run by CUPS as the    user "lp", to process print jobs. Most of the code is the same as    in libcups2. [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package libppd does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libppd/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/libppd/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package libppd is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support    (no printer drivers, only print data file format converters, output     can be displayed with easily available, common free software tools:     evince, Ghostscript, eog, rasterview) [Quality assurance - testing]  - The package libppd runs test suites on build time, if they fail it    makes the builds fail, links to build log    - https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz  - The package libppd runs autopkgtests, and is currently passing on    all architectures listed under [Availability].    The very first migration process did not yet finish for both    libppd    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libppd  - The packages libppd does not have failing autopkgtests right now [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log:    https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz  - These packages do not yield massive lintian Warnings, Errors  - No lintian warnings or errors for libppd  - Lintian overrides are not present for libppd  - This package does not rely on obsolete or about to be demoted    packages.  - This package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules files attached. [UI standards]  - Application is not end-user facing (does not need translation)     - Executables in binary package ppdc are only for development and       debugging, or to keep existing scripts running, so nothing for       end users. [Dependencies]  - No further depends or recommends dependencies outside this MIR that    are not yet in main  - There are further dependencies that are not yet in main, the MIR    process for them is handled as part of this bug here.    - libppd depends on libcupsfilters -> in this same MIR [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 this 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 libppd (unchanged) Links to upstream project:  - https://github.com/OpenPrinting/libppd === CUPS-BROWSED =========================== [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/cups-browsed It builds for the architectures it is designed to work on. It currently builds and works for the architetcures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - The package is required in Ubuntu Main as it is the cups-browsed    which the cups-filters 2.x source package does not contain any    more, as it got separated into its own upstream source repo.  - cups-browsed is part of Ubuntu's printing stack.  - cups-browsed is part of the update of cups-filters from 1.x to 2.x  - cups-browsed has to be in Main as, as before, it needs to overcome    the lack of support for temporary CUPS queues in some print    dialogs.  - The package is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of cups-browsed: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters  - All vulnerabilities are fixed, version with fix mentioned in the list.  - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - Binary /usr/sbin/cups-browsed (of package cups-browsed) in sbin is    no problem. It is the cups-browsed which we already use for several    years, provided by the cups-filters (1.x) source package.    No actual changes have been done in the functionality of    cups-browsed, only minor bug fixes. Changes in the underlying    libraries (libcupsfilters, libppd) did not change the communication    of cups-browsed with the outside world, but only improve the PPD    files it uses and the reliability of a job being assigned to a    destination printer in a cluster.    The daemon listens to avahi-daemon (via D-Bus) to find out about IPP    network printers (physical devices, remote CUPS queues, Printer    Applications) appearing and disappearing and creates/removes/    modifies print queues on the running CUPS appropriately. It also    listens to CUPS on the D-Bus whether a new job got submitted    and in case it being on a queue managed by cups-browsed tells    to CUPS which is the destination printer.    So it listens on the (system) D-Bus and submits administrative    requests to CUPS (some kind of automatic, UI-less printer setup    tool).  - Package cups-browsed installs daemon, see above.     - /usr/sbin/cups-browsed       - Listens on system D-Bus (avahi-daemon, CUPS)       - Applies administrative requests (creating/removing/modifying         print queues) on CUPS       - Has AppArmor profile  - Package does not open privileged ports (ports < 1024) [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package cups-browsed does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/cups-browsed/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package cups-browsed is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support [Quality assurance - testing]  - The package cups-browsed does not run a test at build time because    as it was part of cups-filters there was no testing of the    cups-browsed daemon.  - The package cups-browsed does not run an autopkgtest because when    cups-browsed was still part of cups-filters there was no autopkgtest,    especially not for the cups-browsed daemon. [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log:    https://launchpadlibrarian.net/647984146/buildlog_ubuntu-lunar-amd64.cups-browsed_2.0~b2-0ubuntu4_BUILDING.txt.gz  - This package does not yield massive lintian Warnings, Errors  - No lintian warnings or errors at all for cups-browsed  - Lintian overrides are present for cups-browsed, but ok because    CUPS needs the special permissions and directory for its backends    # Upstream choices; they need to be run as root    cups-browsed: executable-is-not-world-readable usr/lib/cups/backend/implicitclass 0700    # That's how CUPS does it    cups-browsed: executable-in-usr-lib usr/lib/cups/backend/implicitclass  - This package does not rely on obsolete or about to be demoted    packages.  - These package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules file attached. [UI standards]  - Application is not end-user facing (does not need translation) [Dependencies]  - No further depends or recommends dependencies outside this MIR that    are not yet in main  - There are further dependencies that are not yet in main, the MIR    process for them is handled as part of this bug here.    - libppd depends on libcupsfilters -> in this same MIR    - cups-browsed depends on libcupsfilters and libppd -> in this same      MIR [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 all the packages - 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 cups-browsed (unchanged) Links to upstream projects:  - https://github.com/OpenPrinting/cups-browsed ========== Original Description ============ This is a simplified MIR for the splitting of the cups-filters source package. With the second generation (2.x) cups-filters upstream got split into 5 independent component repositories: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed See https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ braille-printer-app still needs some upstream work for getting released, the others were already released as 2.0b2. libcupsfilters, cups-filters, and cups-browsed contain mainly the code from the former cups-filters (1.x) which is already in Main. libppd contains code from CUPS (libcups and cups-ppdc) which is also in Main. As of https://github.com/canonical/ubuntu-mir ---------- If a new source package contains only code which is already in main (e.g. the result of a source package split or rename, or source packages with a version in the name), it may not need a full review. Submitting a MIR bug with an explanation (but without the full template) or updating/extending on the existing old MIR bug and re-opening it by setting it to "NEW" is sufficient. ---------- This report does not need the full template. The original packages (cups-filters and cups) are in Main already for more than a decade, so repetition of the original MIR would not be useful. cups was already in Ubuntu from the very beginning on and therefore probably in Main since the differentiation of Main and Universe got introduced. The binary packages are named as before (except SONAME of libraries being 2 instead of 1 now), binary packages for libppd added. So current dependencies and seeding should pull in everything (libppd is a library and cups-filters depends on it). libfontembed has been discontinued (folded into libcupsfilters, API removed) but no package uses it (except the components of cups-filters 1.x thenselves). braille-printer-app will be added to this report (or a new simplified MIR report created) as soon as it gets released upstream. Its binary package(s) will need to get seeded.
2023-01-26 18:26:56 Till Kamppeter description ========== Summary ========================= Source packages to be promoted to Main: - libcupsfilters - libppd - cups-browsed Binary packages to be promoted to Main: - libcupsfilters2 - libcupsfilters2-common - libppd-dev - libppd2 - libppd2-common - ppdc No source packages and no binary packages which are in Main should get demoted to Universe. ========== Overview ======================== Due to a major change in the printing architecture [1] the cups-filters upstream project at OpenPrinting got split into 5 components [2]: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed [1] https://openprinting.github.io/current/#the-new-architecture-for-printing-and-scanning [2] https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ To reflect this in the Debian/Ubuntu packaging also the cups-filters source package there is getting split, rendering 3 new source packages (+) and therefore we need this MIR: Binaries: Source BEFORE (1.x) Source AFTER (2.x) --------------------------------------------------------------------- cups-browsed cups-filters cups-browsed + cups-filters cups-filters cups-filters cups-filters-core-drivers cups-filters cups-filters libcupsfilters-dev cups-filters libcupsfilters + libcupsfilters1 X cups-filters Replaced by                                                   libcupsfilters2 * libcupsfilters2 + libcupsfilters + (NEW) libcupsfilters2-common + libcupsfilters + (NEW) libfontembed-dev X cups-filters REMOVED ** libfontembed X cups-filters REMOVED ** libppd-dev + libppd + (NEW) *** libppd2 + libppd + (NEW) *** libppd2-common + libppd + (NEW) *** ppdc + libppd + (NEW) *** * : libcupsfilters has new API generation/SONAME 1 -> 2 ** : libfontembed code folded into libcupsfilters, API removed, no other      package is using it. ***: libppd contains all PPD-supporting code of CUPS, as in CUPS 3.x      this code will get removed. libppd is for legacy-retro-fitting of      classic CUPS drivers with PPD files. Code comes from CUPS source:      cups/ppd*.[ch], scheduler/cups-driverd.cxx, ppdc/* X: Binary package getting REMOVED from Lunar +: Source or binary package to be promoted to Main via this MIR The purposes of the new generation's binary packages are principally the same as before: - cups-browsed: Daemon to auto-create queues for network printers and to                 form printer clusters - cups-filters: Print data format conversion filters and printer                 communication backends for CUPS 2.x - Complete set - cups-filters-core-drivers: Print data format conversion filters and                 printer communication backends for CUPS 2.x - Essential                 ones for minimum configurations, like mobile or IoT - libcupsfilters-dev: C Header files for libcupsfilters2 - libcupsfilters2: Shared library containing common code for print data                 conversion filters, printer drivers, printer model                 identification and distinction, PDF file manipulation,                 PDF font embedding, color space conversion, ... - libcupsfilters2-common: Architecture-indpendent auxiliary files - libppd2-dev: C Header files for libppd2 - libppd2: Shared library for support of PPD files, parsing the                 files, converting PPD options into IPP attributes,                 managing collections of PPDs, finding PPD for given                 printer, generating PPDs from CUPS' *.drv files - libppd2-common: Architecture-indpendent auxiliary files - ppdc: Command line tools to generate PPD files from *.drv                 files (only for development and debugging, or to                 keep scripts using them working, not end-user-facing) --> ALL THESE BINARY PACKAGES MUST BE IN MAIM, SO THE FOLLOWING BINARY PACKAGES NEED TO GET PROMOTED: - libcupsfilters2 - libcupsfilters2-common - libppd-dev - libppd2 - libppd2-common - ppdc For current CUPS (2.x, provided by Debian packages) there is actually no change. CUPS depends on cups-filters ("cups" binary on "cups-filters" binary and "cups-core-drivers" binary on "cups-filters-core-drivers") to get its filters and additional backends which it needs for actual printing, now the new-generation cups-filters. The new "cups-filters" and "cups-filters-core-drivers" depend on "libcupsfilters2" and "libppd2" providing the common functionality they need. "cups-browsed" is recommended by "cups-daemon". I do not know whether any of these packages is also seeded and whether the recommend of "cups-browsed" by "cups-daemon" is strong enough to pull "cups-browsed" into Main when the MIR is approved. cups-core-drivers   |   +--Depends--> cups-filters-core-drivers                   |     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups   |   +--Depends--> cups-filters                   |     +--Depends--> cups-filters-core-drivers     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups-daemon   |   +--Recommends--> cups-browsed                      |        +--Depends--> libcupsfilters2        +--Depends--> libppd2          |          +--Depends--> libcupsfilters2 --> SO NO NEW DEPENDENCIES IN PACKAGES ALREADY EXISTING     IN MAIN AND NO NEW SEEDS ARE NEEDED TO ACTUALLY GET EVERYTHING     INTO MAIN AFTER THE APPROVAL OF THIS MIR. As one can see from the table above, the former SOURCE package cups-filters is replaced by 4 SOURCE packages now: - libcupsfilters + - libppd + - cups-filters - cups-browsed + --> ALL THESE SOURCE PACKAGES NEED TO BE IN MAIN, THE ONES WITH + NEED     TO GET PROMOTED. --> CUPS-FILTERS IS ALREADY IN MAIN AND IT SHOULD CONTINUE IN MAIN. The braille-printer-app package is not yet completed upstream. As soon as this is done, it will also get uploaded to Ubuntu and a MIR for it posted. The splitting upstream is done to prepare for the New Architecture of printing, where printer drivers are not filters and PPD files any more but emulators of driverless IPP printers (Printer Applications). So a standard system installation does not need PPD file support any more, so we needed to completely separate the PPD file support code of CUPS and cups-filters into one optionally installable library but conserver as much as possible of the still valuable PPD-independent code in cups-filters, of 20 years of development and experience. Also filters need to get more accesible for Printer Applications, therefore we turned the former individual executables into library functions, the filter functions. With the introduction of libppd all use of libcups is now restricted to functionality which does not support PPD files and therefore will continue to be in libcups of CUPS 3.x ([1], future libcups3 binary package to appear in Ubuntu 24.04 LTS). This way we expect only small changes for the transition from libcups2 to libcups3. [1] https://github.com/OpenPrinting/libcups So we have now: libcupsfilters -------------- All the internal functionality of the filters which formerly was in the individual filter executables (cups-filters and cups-filters-core-drivers binary packages, new source package cups-filters) has moved into libcupsfilters (binary package libcupsfilters2, new source package libcupsfilters) as filter functions (source files cupsfilters/*to*.c*, cupsfilters/ghostscript.c, cupsfilters/pdftopdf/*, infrastructure in cupsfilters/filter.c, API in cupsfilters/filter.h). The handling of printer capabilities (media sizes, margins, color spaces, ...) and matching them with the jobs and job IPP attributes got vastly improved (cupsfilters/ipp.[ch], cupsfilters/raster.[ch].) Also API functions for handling human-readable strings/translations for option and choice names got created (cupsfilters/catalog.[ch]). The strings are taken from CUPS' message catalogs and also downloaded from driverless IPP printers. General functions for printers drivers, filters, color handling, PDF handling, ... from the old libcupsfilters (old binary package libcupsfilters1) got overtaken into the new libcupsfilters. The new libcupsfilters DOES NOT CONTAIN ANY SUPPORT FOR PPD FILES ANY MORE AND DOES NOT DEPEND ON LIBPPD. libppd ------ All PPD support which one finds in Linux distros with a CUPS/cups-filters printing stack is concentrated in libppd now. This way having PPD file support is completely optional. The library only needs to be installed if needed and being in a separate upstream repo and seperate Debian packages its maintenance can be stopped at any time while the maintenance and development of libcupsfilters continues. libppd (binary package libppd2, new source package libppd) is currently used by cups-filters (new binary packages cups-filters and cups-filters-core-drivers, new source package cups-filters) and pappl-retrofit ([1], added to Ubuntu in the next days, used by Printer Application which retro-fit classic CUPS drivers [2]). The former use case is only for systems using CUPS 2.x, the latter is mainly for systems in the New Architecture, using CUPS 3.x or the CUPS Snap [3][4] as these require all printer drivers being Printer Applications. None of the packages of the new cups-filters generation, PAPPL [5], pappl-retrofit, and the new (2.x) generation of CPDB [6] uses any PPD-file supporting functionality of libcups, so that a smooth transition to the libcups of CUPS 3.x is assured. Any PPD file support needs for legacy driver retro-fitting are covered by libppd. [1] https://github.com/OpenPrinting/pappl-retrofit [2] https://openprinting.github.io/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps [3] https://openprinting.github.io/achievements/#the-cups-snap [4] https://github.com/OpenPrinting/cups-snap [5] https://github.com/michaelrsweet/pappl/ [6] https://openprinting.github.io/achievements/#common-print-dialog-backends The source code is nearly completely overtaken from the CUPS source code: PPD file parsing and handling support in libcups (CUPS source: cups/ppd*.[ch], libppd source: ppd/*.c, API: ppd/ppd.h), PPD file collection handling and PPD file assignment to given printer (CUPS source: scheduler/cups-driverd.cxx, libppd source: ppd/ppd-collection.cxx, API: ppd/ppd.h), and generating PPD files from *.drv files (CUPS source: ppdc/*, libppd source: ppd/ppdc*.cxx, API ppd/ppdc.h). The PPD file generator for driverless printers (ppd/ppd-generator.c) is not the one from libcups but the one from the former libcupsfilters1, as that one supports generating the PPDs needed by printer clusters formed by cups-browsed. Some infrastructure got added for keeping PPD file support in the filter executables of CUPS 2.x, in ppd/ppd-filter.c, ppd/ppd-ipp.c, API is in ppd/ppd-filter.h. This infrastructure mainly parses the PPD file and turns the content of the PPD file into printer IPP attributes (what a driverless printer would respond when querying its capabilities). This way the non-PPD-supporting filter functions of libcupsfilters get to know the capabilities of the printer. cups-filters ------------ We get practically the same binaries as we had before in the cups-filters and cups-filters-core-drivers binary packages (old and new source package cups-filters), but they have changed internally: As told here earlier we have moved all the core functionality of the CUPS filters into libcupsfilters to have it available as library functions, the filter functions, so that they can be easily used by Printer Applications. Therefore the actual filter executables used for CUPS 2.x are only small wrappers which call a filter function to do the "dirty work". Only what does not make sense in the future PPD-less world keeps its code in the cups-filters upstream project: Legacy CUPS backends (backend/*), classic CUPS drivers (filter/*pclx*.c, filter/*escpx*.c), and the "driverless" utility (utils/*). A new feature is the "universal" CUPS filter (CUPS wrapper: filter/universal.c, PPD support wrapper in libppd: ppd/ppd-filter.c, core functionality in libcupsfilters: cupsfilters/universal.c). It makes use of having all filters as library functions in libcupsfilters to reduce the number of resource-consuming external executable calls by CUPS. It converts printer from practically any input format to practically any output format by calling chains of filter functions. So CUPS calls a single filter, "universal" instead of a chain of external filters. cups-filters will only be needed as long as we are using CUPS 2.x from Debian packages. If we have a distro using CUPS 3.x (planned from 24.04 LTS on) or the CUPS Snap (any CUPS version, planned from Ubuntu 23.10 on) cups-filters does not make sense any more, as we cannot add filters or backends either because CUPS is running from a sandboxed immutable image or does not support the filter/backend concept any more. cups-browsed ------------ The new cups-browsed binary package and the old one are practically identical in functionality. It is only split into its own upstream repository and with this into its own source Debian package for consistency of the splitting of cups-filters and for major changes in the future [1]. The actual source code suffered only changes for bug fixes and also for adaptation to changes in the API of the new libcupsfilters. It depends on the new libcupsfilters and also on libppd now. In the future it will get turned into a Printer Application [1] and not support and use PPD files any more, dropping the dependency on libppd. As all the rest of the current code from OpenPrinting it only uses non-PPD-supporting functionality of libcups, for a smooth transition to CUPS 3.x. [1] https://wiki.linuxfoundation.org/gsoc/google-summer-code-2023-openprinting-projects#turn_cups-browsed_into_a_printer_application === MIR REQUIREMENTS FOLLOWING TEMPLATE ==== https://github.com/canonical/ubuntu-mir === LIBCUPSFILTERS ========================= [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libcupsfilters It builds for the architectures it is designed to work on. It currently builds and works for the architetcures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - The package is required in Ubuntu Main as it is the libcupsfilters    which the cups-filters 2.x source package does not contain any    more, as it got separated into its own upstream source repo.  - libcupsfilters is part of Ubuntu's printing stack.  - libcupsfilters is part of the update of cups-filters from 1.x to 2.x  - The packages libcupsfilters is a new runtime dependency of the    package cups-filters that we already support  - The packages is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of libcupsfilters: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters  - All vulnerabilities are fixed, version with fix mentioned in the list.  - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - No sbin binaries in libcupsfilters  - Packages libcupsfilters does not install services,    timers or recurring jobs  - Package does not open privileged ports (ports < 1024)  - Package libcupsfilters provides the code for the filters run by    CUPS as the user "lp", to process print jobs. Most of the code is    the same as in the former cups-filters (1.x). [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package libcupsfilters does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libcupsfilters/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/libcupsfilters/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package libcupsfilters is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support    (no printer drivers, only print data file format converters, output     can be displayed with easily available, common free software tools:     evince, Ghostscript, eog, rasterview) [Quality assurance - testing]  - The packages libcupsfilters runs test suites on build time, if they    fail it makes the builds fail, link to build log    - https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz  - The packages libcupsfilters runs autopkgtests, and is    currently passing on all architectures listed under [Availability].    The very first migration process did not yet finish for    libcupsfilters    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libcupsfilters  - The package libcupsfilters does not have failing autopkgtests right now [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log:    https://launchpadlibrarian.net/647981122/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu9_BUILDING.txt.gz  - This package does not yield massive lintian Warnings, Errors  - This package has only    P: libcupsfilters source: very-long-line-length-in-source-file 525 >    512 [Makefile.in:1759]    This is not a problem, Makefile.in is auto-generated by the autotools    and the package builds without problems.  - Lintian overrides are not present for libcupsfilters  - This package does not rely on obsolete or about to be demoted    packages.  - This package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules file attached. [UI standards]  - Application is not end-user facing (does not need translation) [Dependencies]  - No further depends or recommends dependencies that are not yet in    main [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 this 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 descriptions explain the packages well Upstream Name are libcupsfilters (unchanged) Link to upstream projects:  - https://github.com/OpenPrinting/libcupsfilters === LIBPPD ================================= [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libppd It builds for the architectures it is designed to work on. It currently builds and works for the architectures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - To be prepared for the removal of PPD support in CUPS 3.x,    libcupsfilters does not contain any PPD file support any more. The    PPD file support got moved into libppd and cups-filters 2.x which    provides the filters for CUPS 2.x therefore needs libppd to    maintain the PPD support in these filters.  - libppd is part of Ubuntu's printing stack.  - libppd is part of the update of cups-filters from 1.x to 2.x  - libppd is a new runtime dependency of the package cups-filters that    we already support  - The package is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups, which is the origin of the code of libppd: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups  - All vulnerabilities are fixed, version with fix mentioned in the list. Openwall: 'site:www.openwall.com/lists/oss-security cups'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Released", "Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - No sbin binaries in libppd  - Package libppd does not install services timers or recurring jobs  - Package does not open privileged ports (ports < 1024)  - Package libppd provides code for the filters run by CUPS as the    user "lp", to process print jobs. Most of the code is the same as    in libcups2. [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package libppd does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libppd/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/libppd/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package libppd is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support    (no printer drivers, only print data file format converters, output     can be displayed with easily available, common free software tools:     evince, Ghostscript, eog, rasterview) [Quality assurance - testing]  - The package libppd runs test suites on build time, if they fail it    makes the builds fail, links to build log    - https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz  - The package libppd runs autopkgtests, and is currently passing on    all architectures listed under [Availability].    The very first migration process did not yet finish for both    libppd    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libppd  - The packages libppd does not have failing autopkgtests right now [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log:    https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz  - These packages do not yield massive lintian Warnings, Errors  - No lintian warnings or errors for libppd  - Lintian overrides are not present for libppd  - This package does not rely on obsolete or about to be demoted    packages.  - This package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules files attached. [UI standards]  - Application is not end-user facing (does not need translation)     - Executables in binary package ppdc are only for development and       debugging, or to keep existing scripts running, so nothing for       end users. [Dependencies]  - No further depends or recommends dependencies outside this MIR that    are not yet in main  - There are further dependencies that are not yet in main, the MIR    process for them is handled as part of this bug here.    - libppd depends on libcupsfilters -> in this same MIR [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 this 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 libppd (unchanged) Links to upstream project:  - https://github.com/OpenPrinting/libppd === CUPS-BROWSED =========================== [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/cups-browsed It builds for the architectures it is designed to work on. It currently builds and works for the architetcures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - The package is required in Ubuntu Main as it is the cups-browsed    which the cups-filters 2.x source package does not contain any    more, as it got separated into its own upstream source repo.  - cups-browsed is part of Ubuntu's printing stack.  - cups-browsed is part of the update of cups-filters from 1.x to 2.x  - cups-browsed has to be in Main as, as before, it needs to overcome    the lack of support for temporary CUPS queues in some print    dialogs.  - The package is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of cups-browsed: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters  - All vulnerabilities are fixed, version with fix mentioned in the list.  - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - Binary /usr/sbin/cups-browsed (of package cups-browsed) in sbin is    no problem. It is the cups-browsed which we already use for several    years, provided by the cups-filters (1.x) source package.    No actual changes have been done in the functionality of    cups-browsed, only minor bug fixes. Changes in the underlying    libraries (libcupsfilters, libppd) did not change the communication    of cups-browsed with the outside world, but only improve the PPD    files it uses and the reliability of a job being assigned to a    destination printer in a cluster.    The daemon listens to avahi-daemon (via D-Bus) to find out about IPP    network printers (physical devices, remote CUPS queues, Printer    Applications) appearing and disappearing and creates/removes/    modifies print queues on the running CUPS appropriately. It also    listens to CUPS on the D-Bus whether a new job got submitted    and in case it being on a queue managed by cups-browsed tells    to CUPS which is the destination printer.    So it listens on the (system) D-Bus and submits administrative    requests to CUPS (some kind of automatic, UI-less printer setup    tool).  - Package cups-browsed installs daemon, see above.     - /usr/sbin/cups-browsed       - Listens on system D-Bus (avahi-daemon, CUPS)       - Applies administrative requests (creating/removing/modifying         print queues) on CUPS       - Has AppArmor profile  - Package does not open privileged ports (ports < 1024) [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package cups-browsed does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/cups-browsed/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package cups-browsed is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support [Quality assurance - testing]  - The package cups-browsed does not run a test at build time because    as it was part of cups-filters there was no testing of the    cups-browsed daemon.  - The package cups-browsed does not run an autopkgtest because when    cups-browsed was still part of cups-filters there was no autopkgtest,    especially not for the cups-browsed daemon. [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log:    https://launchpadlibrarian.net/647984146/buildlog_ubuntu-lunar-amd64.cups-browsed_2.0~b2-0ubuntu4_BUILDING.txt.gz  - This package does not yield massive lintian Warnings, Errors  - No lintian warnings or errors at all for cups-browsed  - Lintian overrides are present for cups-browsed, but ok because    CUPS needs the special permissions and directory for its backends    # Upstream choices; they need to be run as root    cups-browsed: executable-is-not-world-readable usr/lib/cups/backend/implicitclass 0700    # That's how CUPS does it    cups-browsed: executable-in-usr-lib usr/lib/cups/backend/implicitclass  - This package does not rely on obsolete or about to be demoted    packages.  - These package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules file attached. [UI standards]  - Application is not end-user facing (does not need translation) [Dependencies]  - No further depends or recommends dependencies outside this MIR that    are not yet in main  - There are further dependencies that are not yet in main, the MIR    process for them is handled as part of this bug here.    - libppd depends on libcupsfilters -> in this same MIR    - cups-browsed depends on libcupsfilters and libppd -> in this same      MIR [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 all the packages - 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 cups-browsed (unchanged) Links to upstream projects:  - https://github.com/OpenPrinting/cups-browsed ========== Original Description ============ This is a simplified MIR for the splitting of the cups-filters source package. With the second generation (2.x) cups-filters upstream got split into 5 independent component repositories: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed See https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ braille-printer-app still needs some upstream work for getting released, the others were already released as 2.0b2. libcupsfilters, cups-filters, and cups-browsed contain mainly the code from the former cups-filters (1.x) which is already in Main. libppd contains code from CUPS (libcups and cups-ppdc) which is also in Main. As of https://github.com/canonical/ubuntu-mir ---------- If a new source package contains only code which is already in main (e.g. the result of a source package split or rename, or source packages with a version in the name), it may not need a full review. Submitting a MIR bug with an explanation (but without the full template) or updating/extending on the existing old MIR bug and re-opening it by setting it to "NEW" is sufficient. ---------- This report does not need the full template. The original packages (cups-filters and cups) are in Main already for more than a decade, so repetition of the original MIR would not be useful. cups was already in Ubuntu from the very beginning on and therefore probably in Main since the differentiation of Main and Universe got introduced. The binary packages are named as before (except SONAME of libraries being 2 instead of 1 now), binary packages for libppd added. So current dependencies and seeding should pull in everything (libppd is a library and cups-filters depends on it). libfontembed has been discontinued (folded into libcupsfilters, API removed) but no package uses it (except the components of cups-filters 1.x thenselves). braille-printer-app will be added to this report (or a new simplified MIR report created) as soon as it gets released upstream. Its binary package(s) will need to get seeded. ========== Summary ========================= Source packages to be promoted to Main: - libcupsfilters - libppd - cups-browsed Binary packages to be promoted to Main: - libcupsfilters2 - libcupsfilters2-common - libppd-dev - libppd2 - libppd2-common - ppdc No source packages and no binary packages which are in Main should get demoted to Universe. ========== Overview ======================== Due to a major change in the printing architecture [1] the cups-filters upstream project at OpenPrinting got split into 5 components [2]: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed [1] https://openprinting.github.io/current/#the-new-architecture-for-printing-and-scanning [2] https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ To reflect this in the Debian/Ubuntu packaging also the cups-filters source package there is getting split, rendering 3 new source packages (+) and therefore we need this MIR: Binaries: Source BEFORE (1.x) Source AFTER (2.x) --------------------------------------------------------------------- cups-browsed cups-filters cups-browsed + cups-filters cups-filters cups-filters cups-filters-core-drivers cups-filters cups-filters libcupsfilters-dev cups-filters libcupsfilters + libcupsfilters1 X cups-filters Replaced by                                                   libcupsfilters2 * libcupsfilters2 + libcupsfilters + (NEW) libcupsfilters2-common + libcupsfilters + (NEW) libfontembed-dev X cups-filters REMOVED ** libfontembed X cups-filters REMOVED ** libppd-dev + libppd + (NEW) *** libppd2 + libppd + (NEW) *** libppd2-common + libppd + (NEW) *** ppdc + libppd + (NEW) *** * : libcupsfilters has new API generation/SONAME 1 -> 2 ** : libfontembed code folded into libcupsfilters, API removed, no other      package is using it. ***: libppd contains all PPD-supporting code of CUPS, as in CUPS 3.x      this code will get removed. libppd is for legacy-retro-fitting of      classic CUPS drivers with PPD files. Code comes from CUPS source:      cups/ppd*.[ch], scheduler/cups-driverd.cxx, ppdc/* X: Binary package getting REMOVED from Lunar +: Source or binary package to be promoted to Main via this MIR The purposes of the new generation's binary packages are principally the same as before: - cups-browsed: Daemon to auto-create queues for network printers and to                 form printer clusters - cups-filters: Print data format conversion filters and printer                 communication backends for CUPS 2.x - Complete set - cups-filters-core-drivers: Print data format conversion filters and                 printer communication backends for CUPS 2.x - Essential                 ones for minimum configurations, like mobile or IoT - libcupsfilters-dev: C Header files for libcupsfilters2 - libcupsfilters2: Shared library containing common code for print data                 conversion filters, printer drivers, printer model                 identification and distinction, PDF file manipulation,                 PDF font embedding, color space conversion, ... - libcupsfilters2-common: Architecture-indpendent auxiliary files - libppd2-dev: C Header files for libppd2 - libppd2: Shared library for support of PPD files, parsing the                 files, converting PPD options into IPP attributes,                 managing collections of PPDs, finding PPD for given                 printer, generating PPDs from CUPS' *.drv files - libppd2-common: Architecture-indpendent auxiliary files - ppdc: Command line tools to generate PPD files from *.drv                 files (only for development and debugging, or to                 keep scripts using them working, not end-user-facing) --> ALL THESE BINARY PACKAGES MUST BE IN MAIM, SO THE FOLLOWING BINARY     PACKAGES NEED TO GET PROMOTED:       - libcupsfilters2       - libcupsfilters2-common       - libppd-dev       - libppd2       - libppd2-common       - ppdc For current CUPS (2.x, provided by Debian packages) there is actually no change. CUPS depends on cups-filters ("cups" binary on "cups-filters" binary and "cups-core-drivers" binary on "cups-filters-core-drivers") to get its filters and additional backends which it needs for actual printing, now the new-generation cups-filters. The new "cups-filters" and "cups-filters-core-drivers" depend on "libcupsfilters2" and "libppd2" providing the common functionality they need. "cups-browsed" is recommended by "cups-daemon". I do not know whether any of these packages is also seeded and whether the recommend of "cups-browsed" by "cups-daemon" is strong enough to pull "cups-browsed" into Main when the MIR is approved. cups-core-drivers   |   +--Depends--> cups-filters-core-drivers                   |     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups   |   +--Depends--> cups-filters                   |     +--Depends--> cups-filters-core-drivers     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups-daemon   |   +--Recommends--> cups-browsed                      |        +--Depends--> libcupsfilters2        +--Depends--> libppd2          |          +--Depends--> libcupsfilters2 --> SO NO NEW DEPENDENCIES IN PACKAGES ALREADY EXISTING     IN MAIN AND NO NEW SEEDS ARE NEEDED TO ACTUALLY GET EVERYTHING     INTO MAIN AFTER THE APPROVAL OF THIS MIR. As one can see from the table above, the former SOURCE package cups-filters is replaced by 4 SOURCE packages now: - libcupsfilters + - libppd + - cups-filters - cups-browsed + --> ALL THESE SOURCE PACKAGES NEED TO BE IN MAIN, THE ONES WITH + NEED     TO GET PROMOTED. --> CUPS-FILTERS IS ALREADY IN MAIN AND IT SHOULD CONTINUE IN MAIN. The braille-printer-app package is not yet completed upstream. As soon as this is done, it will also get uploaded to Ubuntu and a MIR for it posted. The splitting upstream is done to prepare for the New Architecture of printing, where printer drivers are not filters and PPD files any more but emulators of driverless IPP printers (Printer Applications). So a standard system installation does not need PPD file support any more, so we needed to completely separate the PPD file support code of CUPS and cups-filters into one optionally installable library but conserver as much as possible of the still valuable PPD-independent code in cups-filters, of 20 years of development and experience. Also filters need to get more accesible for Printer Applications, therefore we turned the former individual executables into library functions, the filter functions. With the introduction of libppd all use of libcups is now restricted to functionality which does not support PPD files and therefore will continue to be in libcups of CUPS 3.x ([1], future libcups3 binary package to appear in Ubuntu 24.04 LTS). This way we expect only small changes for the transition from libcups2 to libcups3. [1] https://github.com/OpenPrinting/libcups So we have now: libcupsfilters -------------- All the internal functionality of the filters which formerly was in the individual filter executables (cups-filters and cups-filters-core-drivers binary packages, new source package cups-filters) has moved into libcupsfilters (binary package libcupsfilters2, new source package libcupsfilters) as filter functions (source files cupsfilters/*to*.c*, cupsfilters/ghostscript.c, cupsfilters/pdftopdf/*, infrastructure in cupsfilters/filter.c, API in cupsfilters/filter.h). The handling of printer capabilities (media sizes, margins, color spaces, ...) and matching them with the jobs and job IPP attributes got vastly improved (cupsfilters/ipp.[ch], cupsfilters/raster.[ch].) Also API functions for handling human-readable strings/translations for option and choice names got created (cupsfilters/catalog.[ch]). The strings are taken from CUPS' message catalogs and also downloaded from driverless IPP printers. General functions for printers drivers, filters, color handling, PDF handling, ... from the old libcupsfilters (old binary package libcupsfilters1) got overtaken into the new libcupsfilters. The new libcupsfilters DOES NOT CONTAIN ANY SUPPORT FOR PPD FILES ANY MORE AND DOES NOT DEPEND ON LIBPPD. libppd ------ All PPD support which one finds in Linux distros with a CUPS/cups-filters printing stack is concentrated in libppd now. This way having PPD file support is completely optional. The library only needs to be installed if needed and being in a separate upstream repo and seperate Debian packages its maintenance can be stopped at any time while the maintenance and development of libcupsfilters continues. libppd (binary package libppd2, new source package libppd) is currently used by cups-filters (new binary packages cups-filters and cups-filters-core-drivers, new source package cups-filters) and pappl-retrofit ([1], added to Ubuntu in the next days, used by Printer Application which retro-fit classic CUPS drivers [2]). The former use case is only for systems using CUPS 2.x, the latter is mainly for systems in the New Architecture, using CUPS 3.x or the CUPS Snap [3][4] as these require all printer drivers being Printer Applications. None of the packages of the new cups-filters generation, PAPPL [5], pappl-retrofit, and the new (2.x) generation of CPDB [6] uses any PPD-file supporting functionality of libcups, so that a smooth transition to the libcups of CUPS 3.x is assured. Any PPD file support needs for legacy driver retro-fitting are covered by libppd. [1] https://github.com/OpenPrinting/pappl-retrofit [2] https://openprinting.github.io/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps [3] https://openprinting.github.io/achievements/#the-cups-snap [4] https://github.com/OpenPrinting/cups-snap [5] https://github.com/michaelrsweet/pappl/ [6] https://openprinting.github.io/achievements/#common-print-dialog-backends The source code is nearly completely overtaken from the CUPS source code: PPD file parsing and handling support in libcups (CUPS source: cups/ppd*.[ch], libppd source: ppd/*.c, API: ppd/ppd.h), PPD file collection handling and PPD file assignment to given printer (CUPS source: scheduler/cups-driverd.cxx, libppd source: ppd/ppd-collection.cxx, API: ppd/ppd.h), and generating PPD files from *.drv files (CUPS source: ppdc/*, libppd source: ppd/ppdc*.cxx, API ppd/ppdc.h). The PPD file generator for driverless printers (ppd/ppd-generator.c) is not the one from libcups but the one from the former libcupsfilters1, as that one supports generating the PPDs needed by printer clusters formed by cups-browsed. Some infrastructure got added for keeping PPD file support in the filter executables of CUPS 2.x, in ppd/ppd-filter.c, ppd/ppd-ipp.c, API is in ppd/ppd-filter.h. This infrastructure mainly parses the PPD file and turns the content of the PPD file into printer IPP attributes (what a driverless printer would respond when querying its capabilities). This way the non-PPD-supporting filter functions of libcupsfilters get to know the capabilities of the printer. cups-filters ------------ We get practically the same binaries as we had before in the cups-filters and cups-filters-core-drivers binary packages (old and new source package cups-filters), but they have changed internally: As told here earlier we have moved all the core functionality of the CUPS filters into libcupsfilters to have it available as library functions, the filter functions, so that they can be easily used by Printer Applications. Therefore the actual filter executables used for CUPS 2.x are only small wrappers which call a filter function to do the "dirty work". Only what does not make sense in the future PPD-less world keeps its code in the cups-filters upstream project: Legacy CUPS backends (backend/*), classic CUPS drivers (filter/*pclx*.c, filter/*escpx*.c), and the "driverless" utility (utils/*). A new feature is the "universal" CUPS filter (CUPS wrapper: filter/universal.c, PPD support wrapper in libppd: ppd/ppd-filter.c, core functionality in libcupsfilters: cupsfilters/universal.c). It makes use of having all filters as library functions in libcupsfilters to reduce the number of resource-consuming external executable calls by CUPS. It converts printer from practically any input format to practically any output format by calling chains of filter functions. So CUPS calls a single filter, "universal" instead of a chain of external filters. cups-filters will only be needed as long as we are using CUPS 2.x from Debian packages. If we have a distro using CUPS 3.x (planned from 24.04 LTS on) or the CUPS Snap (any CUPS version, planned from Ubuntu 23.10 on) cups-filters does not make sense any more, as we cannot add filters or backends either because CUPS is running from a sandboxed immutable image or does not support the filter/backend concept any more. cups-browsed ------------ The new cups-browsed binary package and the old one are practically identical in functionality. It is only split into its own upstream repository and with this into its own source Debian package for consistency of the splitting of cups-filters and for major changes in the future [1]. The actual source code suffered only changes for bug fixes and also for adaptation to changes in the API of the new libcupsfilters. It depends on the new libcupsfilters and also on libppd now. In the future it will get turned into a Printer Application [1] and not support and use PPD files any more, dropping the dependency on libppd. As all the rest of the current code from OpenPrinting it only uses non-PPD-supporting functionality of libcups, for a smooth transition to CUPS 3.x. [1] https://wiki.linuxfoundation.org/gsoc/google-summer-code-2023-openprinting-projects#turn_cups-browsed_into_a_printer_application === MIR REQUIREMENTS FOLLOWING TEMPLATE ==== https://github.com/canonical/ubuntu-mir === LIBCUPSFILTERS ========================= [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libcupsfilters It builds for the architectures it is designed to work on. It currently builds and works for the architetcures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - The package is required in Ubuntu Main as it is the libcupsfilters    which the cups-filters 2.x source package does not contain any    more, as it got separated into its own upstream source repo.  - libcupsfilters is part of Ubuntu's printing stack.  - libcupsfilters is part of the update of cups-filters from 1.x to 2.x  - The packages libcupsfilters is a new runtime dependency of the    package cups-filters that we already support  - The packages is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of libcupsfilters: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters  - All vulnerabilities are fixed, version with fix mentioned in the list.  - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - No sbin binaries in libcupsfilters  - Packages libcupsfilters does not install services,    timers or recurring jobs  - Package does not open privileged ports (ports < 1024)  - Package libcupsfilters provides the code for the filters run by    CUPS as the user "lp", to process print jobs. Most of the code is    the same as in the former cups-filters (1.x). [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package libcupsfilters does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libcupsfilters/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/libcupsfilters/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package libcupsfilters is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support    (no printer drivers, only print data file format converters, output     can be displayed with easily available, common free software tools:     evince, Ghostscript, eog, rasterview) [Quality assurance - testing]  - The packages libcupsfilters runs test suites on build time, if they    fail it makes the builds fail, link to build log    - https://launchpad.net/ubuntu/+source/libcupsfilters/2.0~b2-0ubuntu10/+build/25524340/+files/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu10_BUILDING.txt.gz  - The packages libcupsfilters runs autopkgtests, and is    currently passing on all architectures listed under [Availability].    The very first migration process did not yet finish for    libcupsfilters    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libcupsfilters  - The package libcupsfilters does not have failing autopkgtests right now [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log: https://launchpad.net/ubuntu/+source/libcupsfilters/2.0~b2-0ubuntu10/+build/25524340/+files/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu10_BUILDING.txt.gz  - This package does not yield massive lintian Warnings, Errors  - This package has only    P: libcupsfilters source: very-long-line-length-in-source-file 525 >    512 [Makefile.in:1759]    This is not a problem, Makefile.in is auto-generated by the autotools    and the package builds without problems.  - Lintian overrides are not present for libcupsfilters  - This package does not rely on obsolete or about to be demoted    packages.  - This package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules file attached. [UI standards]  - Application is not end-user facing (does not need translation) [Dependencies]  - No further depends or recommends dependencies that are not yet in    main [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 this 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 descriptions explain the packages well Upstream Name are libcupsfilters (unchanged) Link to upstream projects:  - https://github.com/OpenPrinting/libcupsfilters === LIBPPD ================================= [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libppd It builds for the architectures it is designed to work on. It currently builds and works for the architectures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - To be prepared for the removal of PPD support in CUPS 3.x,    libcupsfilters does not contain any PPD file support any more. The    PPD file support got moved into libppd and cups-filters 2.x which    provides the filters for CUPS 2.x therefore needs libppd to    maintain the PPD support in these filters.  - libppd is part of Ubuntu's printing stack.  - libppd is part of the update of cups-filters from 1.x to 2.x  - libppd is a new runtime dependency of the package cups-filters that    we already support  - The package is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups, which is the origin of the code of libppd: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups  - All vulnerabilities are fixed, version with fix mentioned in the list. Openwall: 'site:www.openwall.com/lists/oss-security cups'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Released", "Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - No sbin binaries in libppd  - Package libppd does not install services timers or recurring jobs  - Package does not open privileged ports (ports < 1024)  - Package libppd provides code for the filters run by CUPS as the    user "lp", to process print jobs. Most of the code is the same as    in libcups2. [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package libppd does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libppd/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/libppd/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package libppd is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support    (no printer drivers, only print data file format converters, output     can be displayed with easily available, common free software tools:     evince, Ghostscript, eog, rasterview) [Quality assurance - testing]  - The package libppd runs test suites on build time, if they fail it    makes the builds fail, links to build log    - https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz  - The package libppd runs autopkgtests, and is currently passing on    all architectures listed under [Availability].    The very first migration process did not yet finish for both    libppd    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libppd  - The packages libppd does not have failing autopkgtests right now [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log:    https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz  - These packages do not yield massive lintian Warnings, Errors  - No lintian warnings or errors for libppd  - Lintian overrides are not present for libppd  - This package does not rely on obsolete or about to be demoted    packages.  - This package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules files attached. [UI standards]  - Application is not end-user facing (does not need translation)     - Executables in binary package ppdc are only for development and       debugging, or to keep existing scripts running, so nothing for       end users. [Dependencies]  - No further depends or recommends dependencies outside this MIR that    are not yet in main  - There are further dependencies that are not yet in main, the MIR    process for them is handled as part of this bug here.    - libppd depends on libcupsfilters -> in this same MIR [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 this 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 libppd (unchanged) Links to upstream project:  - https://github.com/OpenPrinting/libppd === CUPS-BROWSED =========================== [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/cups-browsed It builds for the architectures it is designed to work on. It currently builds and works for the architetcures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - The package is required in Ubuntu Main as it is the cups-browsed    which the cups-filters 2.x source package does not contain any    more, as it got separated into its own upstream source repo.  - cups-browsed is part of Ubuntu's printing stack.  - cups-browsed is part of the update of cups-filters from 1.x to 2.x  - cups-browsed has to be in Main as, as before, it needs to overcome    the lack of support for temporary CUPS queues in some print    dialogs.  - The package is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of cups-browsed: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters  - All vulnerabilities are fixed, version with fix mentioned in the list.  - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - Binary /usr/sbin/cups-browsed (of package cups-browsed) in sbin is    no problem. It is the cups-browsed which we already use for several    years, provided by the cups-filters (1.x) source package.    No actual changes have been done in the functionality of    cups-browsed, only minor bug fixes. Changes in the underlying    libraries (libcupsfilters, libppd) did not change the communication    of cups-browsed with the outside world, but only improve the PPD    files it uses and the reliability of a job being assigned to a    destination printer in a cluster.    The daemon listens to avahi-daemon (via D-Bus) to find out about IPP    network printers (physical devices, remote CUPS queues, Printer    Applications) appearing and disappearing and creates/removes/    modifies print queues on the running CUPS appropriately. It also    listens to CUPS on the D-Bus whether a new job got submitted    and in case it being on a queue managed by cups-browsed tells    to CUPS which is the destination printer.    So it listens on the (system) D-Bus and submits administrative    requests to CUPS (some kind of automatic, UI-less printer setup    tool).  - Package cups-browsed installs daemon, see above.     - /usr/sbin/cups-browsed       - Listens on system D-Bus (avahi-daemon, CUPS)       - Applies administrative requests (creating/removing/modifying         print queues) on CUPS       - Has AppArmor profile  - Package does not open privileged ports (ports < 1024) [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package cups-browsed does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/cups-browsed/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package cups-browsed is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support [Quality assurance - testing]  - The package cups-browsed does not run a test at build time because    as it was part of cups-filters there was no testing of the    cups-browsed daemon.  - The package cups-browsed does not run an autopkgtest because when    cups-browsed was still part of cups-filters there was no autopkgtest,    especially not for the cups-browsed daemon. [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log:    https://launchpadlibrarian.net/647984146/buildlog_ubuntu-lunar-amd64.cups-browsed_2.0~b2-0ubuntu4_BUILDING.txt.gz  - This package does not yield massive lintian Warnings, Errors  - No lintian warnings or errors at all for cups-browsed  - Lintian overrides are present for cups-browsed, but ok because    CUPS needs the special permissions and directory for its backends    # Upstream choices; they need to be run as root    cups-browsed: executable-is-not-world-readable usr/lib/cups/backend/implicitclass 0700    # That's how CUPS does it    cups-browsed: executable-in-usr-lib usr/lib/cups/backend/implicitclass  - This package does not rely on obsolete or about to be demoted    packages.  - These package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules file attached. [UI standards]  - Application is not end-user facing (does not need translation) [Dependencies]  - No further depends or recommends dependencies outside this MIR that    are not yet in main  - There are further dependencies that are not yet in main, the MIR    process for them is handled as part of this bug here.    - libppd depends on libcupsfilters -> in this same MIR    - cups-browsed depends on libcupsfilters and libppd -> in this same      MIR [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 all the packages - 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 cups-browsed (unchanged) Links to upstream projects:  - https://github.com/OpenPrinting/cups-browsed ========== Original Description ============ This is a simplified MIR for the splitting of the cups-filters source package. With the second generation (2.x) cups-filters upstream got split into 5 independent component repositories: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed See https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ braille-printer-app still needs some upstream work for getting released, the others were already released as 2.0b2. libcupsfilters, cups-filters, and cups-browsed contain mainly the code from the former cups-filters (1.x) which is already in Main. libppd contains code from CUPS (libcups and cups-ppdc) which is also in Main. As of https://github.com/canonical/ubuntu-mir ---------- If a new source package contains only code which is already in main (e.g. the result of a source package split or rename, or source packages with a version in the name), it may not need a full review. Submitting a MIR bug with an explanation (but without the full template) or updating/extending on the existing old MIR bug and re-opening it by setting it to "NEW" is sufficient. ---------- This report does not need the full template. The original packages (cups-filters and cups) are in Main already for more than a decade, so repetition of the original MIR would not be useful. cups was already in Ubuntu from the very beginning on and therefore probably in Main since the differentiation of Main and Universe got introduced. The binary packages are named as before (except SONAME of libraries being 2 instead of 1 now), binary packages for libppd added. So current dependencies and seeding should pull in everything (libppd is a library and cups-filters depends on it). libfontembed has been discontinued (folded into libcupsfilters, API removed) but no package uses it (except the components of cups-filters 1.x thenselves). braille-printer-app will be added to this report (or a new simplified MIR report created) as soon as it gets released upstream. Its binary package(s) will need to get seeded.
2023-01-26 18:28:41 Till Kamppeter cups-browsed (Ubuntu): assignee Till Kamppeter (till-kamppeter) Didier Roche-Tolomelli (didrocks)
2023-01-26 18:29:01 Till Kamppeter libcupsfilters (Ubuntu): assignee Till Kamppeter (till-kamppeter) Didier Roche-Tolomelli (didrocks)
2023-01-26 18:29:30 Till Kamppeter libppd (Ubuntu): assignee Till Kamppeter (till-kamppeter) Didier Roche-Tolomelli (didrocks)
2023-01-26 18:29:39 Till Kamppeter cups-browsed (Ubuntu): status Incomplete New
2023-01-26 18:29:45 Till Kamppeter libcupsfilters (Ubuntu): status Incomplete New
2023-01-26 18:29:48 Till Kamppeter libppd (Ubuntu): status Incomplete New
2023-01-26 18:51:25 Till Kamppeter description ========== Summary ========================= Source packages to be promoted to Main: - libcupsfilters - libppd - cups-browsed Binary packages to be promoted to Main: - libcupsfilters2 - libcupsfilters2-common - libppd-dev - libppd2 - libppd2-common - ppdc No source packages and no binary packages which are in Main should get demoted to Universe. ========== Overview ======================== Due to a major change in the printing architecture [1] the cups-filters upstream project at OpenPrinting got split into 5 components [2]: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed [1] https://openprinting.github.io/current/#the-new-architecture-for-printing-and-scanning [2] https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ To reflect this in the Debian/Ubuntu packaging also the cups-filters source package there is getting split, rendering 3 new source packages (+) and therefore we need this MIR: Binaries: Source BEFORE (1.x) Source AFTER (2.x) --------------------------------------------------------------------- cups-browsed cups-filters cups-browsed + cups-filters cups-filters cups-filters cups-filters-core-drivers cups-filters cups-filters libcupsfilters-dev cups-filters libcupsfilters + libcupsfilters1 X cups-filters Replaced by                                                   libcupsfilters2 * libcupsfilters2 + libcupsfilters + (NEW) libcupsfilters2-common + libcupsfilters + (NEW) libfontembed-dev X cups-filters REMOVED ** libfontembed X cups-filters REMOVED ** libppd-dev + libppd + (NEW) *** libppd2 + libppd + (NEW) *** libppd2-common + libppd + (NEW) *** ppdc + libppd + (NEW) *** * : libcupsfilters has new API generation/SONAME 1 -> 2 ** : libfontembed code folded into libcupsfilters, API removed, no other      package is using it. ***: libppd contains all PPD-supporting code of CUPS, as in CUPS 3.x      this code will get removed. libppd is for legacy-retro-fitting of      classic CUPS drivers with PPD files. Code comes from CUPS source:      cups/ppd*.[ch], scheduler/cups-driverd.cxx, ppdc/* X: Binary package getting REMOVED from Lunar +: Source or binary package to be promoted to Main via this MIR The purposes of the new generation's binary packages are principally the same as before: - cups-browsed: Daemon to auto-create queues for network printers and to                 form printer clusters - cups-filters: Print data format conversion filters and printer                 communication backends for CUPS 2.x - Complete set - cups-filters-core-drivers: Print data format conversion filters and                 printer communication backends for CUPS 2.x - Essential                 ones for minimum configurations, like mobile or IoT - libcupsfilters-dev: C Header files for libcupsfilters2 - libcupsfilters2: Shared library containing common code for print data                 conversion filters, printer drivers, printer model                 identification and distinction, PDF file manipulation,                 PDF font embedding, color space conversion, ... - libcupsfilters2-common: Architecture-indpendent auxiliary files - libppd2-dev: C Header files for libppd2 - libppd2: Shared library for support of PPD files, parsing the                 files, converting PPD options into IPP attributes,                 managing collections of PPDs, finding PPD for given                 printer, generating PPDs from CUPS' *.drv files - libppd2-common: Architecture-indpendent auxiliary files - ppdc: Command line tools to generate PPD files from *.drv                 files (only for development and debugging, or to                 keep scripts using them working, not end-user-facing) --> ALL THESE BINARY PACKAGES MUST BE IN MAIM, SO THE FOLLOWING BINARY     PACKAGES NEED TO GET PROMOTED:       - libcupsfilters2       - libcupsfilters2-common       - libppd-dev       - libppd2       - libppd2-common       - ppdc For current CUPS (2.x, provided by Debian packages) there is actually no change. CUPS depends on cups-filters ("cups" binary on "cups-filters" binary and "cups-core-drivers" binary on "cups-filters-core-drivers") to get its filters and additional backends which it needs for actual printing, now the new-generation cups-filters. The new "cups-filters" and "cups-filters-core-drivers" depend on "libcupsfilters2" and "libppd2" providing the common functionality they need. "cups-browsed" is recommended by "cups-daemon". I do not know whether any of these packages is also seeded and whether the recommend of "cups-browsed" by "cups-daemon" is strong enough to pull "cups-browsed" into Main when the MIR is approved. cups-core-drivers   |   +--Depends--> cups-filters-core-drivers                   |     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups   |   +--Depends--> cups-filters                   |     +--Depends--> cups-filters-core-drivers     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups-daemon   |   +--Recommends--> cups-browsed                      |        +--Depends--> libcupsfilters2        +--Depends--> libppd2          |          +--Depends--> libcupsfilters2 --> SO NO NEW DEPENDENCIES IN PACKAGES ALREADY EXISTING     IN MAIN AND NO NEW SEEDS ARE NEEDED TO ACTUALLY GET EVERYTHING     INTO MAIN AFTER THE APPROVAL OF THIS MIR. As one can see from the table above, the former SOURCE package cups-filters is replaced by 4 SOURCE packages now: - libcupsfilters + - libppd + - cups-filters - cups-browsed + --> ALL THESE SOURCE PACKAGES NEED TO BE IN MAIN, THE ONES WITH + NEED     TO GET PROMOTED. --> CUPS-FILTERS IS ALREADY IN MAIN AND IT SHOULD CONTINUE IN MAIN. The braille-printer-app package is not yet completed upstream. As soon as this is done, it will also get uploaded to Ubuntu and a MIR for it posted. The splitting upstream is done to prepare for the New Architecture of printing, where printer drivers are not filters and PPD files any more but emulators of driverless IPP printers (Printer Applications). So a standard system installation does not need PPD file support any more, so we needed to completely separate the PPD file support code of CUPS and cups-filters into one optionally installable library but conserver as much as possible of the still valuable PPD-independent code in cups-filters, of 20 years of development and experience. Also filters need to get more accesible for Printer Applications, therefore we turned the former individual executables into library functions, the filter functions. With the introduction of libppd all use of libcups is now restricted to functionality which does not support PPD files and therefore will continue to be in libcups of CUPS 3.x ([1], future libcups3 binary package to appear in Ubuntu 24.04 LTS). This way we expect only small changes for the transition from libcups2 to libcups3. [1] https://github.com/OpenPrinting/libcups So we have now: libcupsfilters -------------- All the internal functionality of the filters which formerly was in the individual filter executables (cups-filters and cups-filters-core-drivers binary packages, new source package cups-filters) has moved into libcupsfilters (binary package libcupsfilters2, new source package libcupsfilters) as filter functions (source files cupsfilters/*to*.c*, cupsfilters/ghostscript.c, cupsfilters/pdftopdf/*, infrastructure in cupsfilters/filter.c, API in cupsfilters/filter.h). The handling of printer capabilities (media sizes, margins, color spaces, ...) and matching them with the jobs and job IPP attributes got vastly improved (cupsfilters/ipp.[ch], cupsfilters/raster.[ch].) Also API functions for handling human-readable strings/translations for option and choice names got created (cupsfilters/catalog.[ch]). The strings are taken from CUPS' message catalogs and also downloaded from driverless IPP printers. General functions for printers drivers, filters, color handling, PDF handling, ... from the old libcupsfilters (old binary package libcupsfilters1) got overtaken into the new libcupsfilters. The new libcupsfilters DOES NOT CONTAIN ANY SUPPORT FOR PPD FILES ANY MORE AND DOES NOT DEPEND ON LIBPPD. libppd ------ All PPD support which one finds in Linux distros with a CUPS/cups-filters printing stack is concentrated in libppd now. This way having PPD file support is completely optional. The library only needs to be installed if needed and being in a separate upstream repo and seperate Debian packages its maintenance can be stopped at any time while the maintenance and development of libcupsfilters continues. libppd (binary package libppd2, new source package libppd) is currently used by cups-filters (new binary packages cups-filters and cups-filters-core-drivers, new source package cups-filters) and pappl-retrofit ([1], added to Ubuntu in the next days, used by Printer Application which retro-fit classic CUPS drivers [2]). The former use case is only for systems using CUPS 2.x, the latter is mainly for systems in the New Architecture, using CUPS 3.x or the CUPS Snap [3][4] as these require all printer drivers being Printer Applications. None of the packages of the new cups-filters generation, PAPPL [5], pappl-retrofit, and the new (2.x) generation of CPDB [6] uses any PPD-file supporting functionality of libcups, so that a smooth transition to the libcups of CUPS 3.x is assured. Any PPD file support needs for legacy driver retro-fitting are covered by libppd. [1] https://github.com/OpenPrinting/pappl-retrofit [2] https://openprinting.github.io/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps [3] https://openprinting.github.io/achievements/#the-cups-snap [4] https://github.com/OpenPrinting/cups-snap [5] https://github.com/michaelrsweet/pappl/ [6] https://openprinting.github.io/achievements/#common-print-dialog-backends The source code is nearly completely overtaken from the CUPS source code: PPD file parsing and handling support in libcups (CUPS source: cups/ppd*.[ch], libppd source: ppd/*.c, API: ppd/ppd.h), PPD file collection handling and PPD file assignment to given printer (CUPS source: scheduler/cups-driverd.cxx, libppd source: ppd/ppd-collection.cxx, API: ppd/ppd.h), and generating PPD files from *.drv files (CUPS source: ppdc/*, libppd source: ppd/ppdc*.cxx, API ppd/ppdc.h). The PPD file generator for driverless printers (ppd/ppd-generator.c) is not the one from libcups but the one from the former libcupsfilters1, as that one supports generating the PPDs needed by printer clusters formed by cups-browsed. Some infrastructure got added for keeping PPD file support in the filter executables of CUPS 2.x, in ppd/ppd-filter.c, ppd/ppd-ipp.c, API is in ppd/ppd-filter.h. This infrastructure mainly parses the PPD file and turns the content of the PPD file into printer IPP attributes (what a driverless printer would respond when querying its capabilities). This way the non-PPD-supporting filter functions of libcupsfilters get to know the capabilities of the printer. cups-filters ------------ We get practically the same binaries as we had before in the cups-filters and cups-filters-core-drivers binary packages (old and new source package cups-filters), but they have changed internally: As told here earlier we have moved all the core functionality of the CUPS filters into libcupsfilters to have it available as library functions, the filter functions, so that they can be easily used by Printer Applications. Therefore the actual filter executables used for CUPS 2.x are only small wrappers which call a filter function to do the "dirty work". Only what does not make sense in the future PPD-less world keeps its code in the cups-filters upstream project: Legacy CUPS backends (backend/*), classic CUPS drivers (filter/*pclx*.c, filter/*escpx*.c), and the "driverless" utility (utils/*). A new feature is the "universal" CUPS filter (CUPS wrapper: filter/universal.c, PPD support wrapper in libppd: ppd/ppd-filter.c, core functionality in libcupsfilters: cupsfilters/universal.c). It makes use of having all filters as library functions in libcupsfilters to reduce the number of resource-consuming external executable calls by CUPS. It converts printer from practically any input format to practically any output format by calling chains of filter functions. So CUPS calls a single filter, "universal" instead of a chain of external filters. cups-filters will only be needed as long as we are using CUPS 2.x from Debian packages. If we have a distro using CUPS 3.x (planned from 24.04 LTS on) or the CUPS Snap (any CUPS version, planned from Ubuntu 23.10 on) cups-filters does not make sense any more, as we cannot add filters or backends either because CUPS is running from a sandboxed immutable image or does not support the filter/backend concept any more. cups-browsed ------------ The new cups-browsed binary package and the old one are practically identical in functionality. It is only split into its own upstream repository and with this into its own source Debian package for consistency of the splitting of cups-filters and for major changes in the future [1]. The actual source code suffered only changes for bug fixes and also for adaptation to changes in the API of the new libcupsfilters. It depends on the new libcupsfilters and also on libppd now. In the future it will get turned into a Printer Application [1] and not support and use PPD files any more, dropping the dependency on libppd. As all the rest of the current code from OpenPrinting it only uses non-PPD-supporting functionality of libcups, for a smooth transition to CUPS 3.x. [1] https://wiki.linuxfoundation.org/gsoc/google-summer-code-2023-openprinting-projects#turn_cups-browsed_into_a_printer_application === MIR REQUIREMENTS FOLLOWING TEMPLATE ==== https://github.com/canonical/ubuntu-mir === LIBCUPSFILTERS ========================= [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libcupsfilters It builds for the architectures it is designed to work on. It currently builds and works for the architetcures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - The package is required in Ubuntu Main as it is the libcupsfilters    which the cups-filters 2.x source package does not contain any    more, as it got separated into its own upstream source repo.  - libcupsfilters is part of Ubuntu's printing stack.  - libcupsfilters is part of the update of cups-filters from 1.x to 2.x  - The packages libcupsfilters is a new runtime dependency of the    package cups-filters that we already support  - The packages is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of libcupsfilters: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters  - All vulnerabilities are fixed, version with fix mentioned in the list.  - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - No sbin binaries in libcupsfilters  - Packages libcupsfilters does not install services,    timers or recurring jobs  - Package does not open privileged ports (ports < 1024)  - Package libcupsfilters provides the code for the filters run by    CUPS as the user "lp", to process print jobs. Most of the code is    the same as in the former cups-filters (1.x). [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package libcupsfilters does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libcupsfilters/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/libcupsfilters/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package libcupsfilters is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support    (no printer drivers, only print data file format converters, output     can be displayed with easily available, common free software tools:     evince, Ghostscript, eog, rasterview) [Quality assurance - testing]  - The packages libcupsfilters runs test suites on build time, if they    fail it makes the builds fail, link to build log    - https://launchpad.net/ubuntu/+source/libcupsfilters/2.0~b2-0ubuntu10/+build/25524340/+files/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu10_BUILDING.txt.gz  - The packages libcupsfilters runs autopkgtests, and is    currently passing on all architectures listed under [Availability].    The very first migration process did not yet finish for    libcupsfilters    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libcupsfilters  - The package libcupsfilters does not have failing autopkgtests right now [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log: https://launchpad.net/ubuntu/+source/libcupsfilters/2.0~b2-0ubuntu10/+build/25524340/+files/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu10_BUILDING.txt.gz  - This package does not yield massive lintian Warnings, Errors  - This package has only    P: libcupsfilters source: very-long-line-length-in-source-file 525 >    512 [Makefile.in:1759]    This is not a problem, Makefile.in is auto-generated by the autotools    and the package builds without problems.  - Lintian overrides are not present for libcupsfilters  - This package does not rely on obsolete or about to be demoted    packages.  - This package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules file attached. [UI standards]  - Application is not end-user facing (does not need translation) [Dependencies]  - No further depends or recommends dependencies that are not yet in    main [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 this 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 descriptions explain the packages well Upstream Name are libcupsfilters (unchanged) Link to upstream projects:  - https://github.com/OpenPrinting/libcupsfilters === LIBPPD ================================= [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libppd It builds for the architectures it is designed to work on. It currently builds and works for the architectures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - To be prepared for the removal of PPD support in CUPS 3.x,    libcupsfilters does not contain any PPD file support any more. The    PPD file support got moved into libppd and cups-filters 2.x which    provides the filters for CUPS 2.x therefore needs libppd to    maintain the PPD support in these filters.  - libppd is part of Ubuntu's printing stack.  - libppd is part of the update of cups-filters from 1.x to 2.x  - libppd is a new runtime dependency of the package cups-filters that    we already support  - The package is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups, which is the origin of the code of libppd: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups  - All vulnerabilities are fixed, version with fix mentioned in the list. Openwall: 'site:www.openwall.com/lists/oss-security cups'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Released", "Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - No sbin binaries in libppd  - Package libppd does not install services timers or recurring jobs  - Package does not open privileged ports (ports < 1024)  - Package libppd provides code for the filters run by CUPS as the    user "lp", to process print jobs. Most of the code is the same as    in libcups2. [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package libppd does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libppd/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/libppd/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package libppd is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support    (no printer drivers, only print data file format converters, output     can be displayed with easily available, common free software tools:     evince, Ghostscript, eog, rasterview) [Quality assurance - testing]  - The package libppd runs test suites on build time, if they fail it    makes the builds fail, links to build log    - https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz  - The package libppd runs autopkgtests, and is currently passing on    all architectures listed under [Availability].    The very first migration process did not yet finish for both    libppd    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libppd  - The packages libppd does not have failing autopkgtests right now [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log:    https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz  - These packages do not yield massive lintian Warnings, Errors  - No lintian warnings or errors for libppd  - Lintian overrides are not present for libppd  - This package does not rely on obsolete or about to be demoted    packages.  - This package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules files attached. [UI standards]  - Application is not end-user facing (does not need translation)     - Executables in binary package ppdc are only for development and       debugging, or to keep existing scripts running, so nothing for       end users. [Dependencies]  - No further depends or recommends dependencies outside this MIR that    are not yet in main  - There are further dependencies that are not yet in main, the MIR    process for them is handled as part of this bug here.    - libppd depends on libcupsfilters -> in this same MIR [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 this 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 libppd (unchanged) Links to upstream project:  - https://github.com/OpenPrinting/libppd === CUPS-BROWSED =========================== [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/cups-browsed It builds for the architectures it is designed to work on. It currently builds and works for the architetcures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - The package is required in Ubuntu Main as it is the cups-browsed    which the cups-filters 2.x source package does not contain any    more, as it got separated into its own upstream source repo.  - cups-browsed is part of Ubuntu's printing stack.  - cups-browsed is part of the update of cups-filters from 1.x to 2.x  - cups-browsed has to be in Main as, as before, it needs to overcome    the lack of support for temporary CUPS queues in some print    dialogs.  - The package is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of cups-browsed: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters  - All vulnerabilities are fixed, version with fix mentioned in the list.  - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - Binary /usr/sbin/cups-browsed (of package cups-browsed) in sbin is    no problem. It is the cups-browsed which we already use for several    years, provided by the cups-filters (1.x) source package.    No actual changes have been done in the functionality of    cups-browsed, only minor bug fixes. Changes in the underlying    libraries (libcupsfilters, libppd) did not change the communication    of cups-browsed with the outside world, but only improve the PPD    files it uses and the reliability of a job being assigned to a    destination printer in a cluster.    The daemon listens to avahi-daemon (via D-Bus) to find out about IPP    network printers (physical devices, remote CUPS queues, Printer    Applications) appearing and disappearing and creates/removes/    modifies print queues on the running CUPS appropriately. It also    listens to CUPS on the D-Bus whether a new job got submitted    and in case it being on a queue managed by cups-browsed tells    to CUPS which is the destination printer.    So it listens on the (system) D-Bus and submits administrative    requests to CUPS (some kind of automatic, UI-less printer setup    tool).  - Package cups-browsed installs daemon, see above.     - /usr/sbin/cups-browsed       - Listens on system D-Bus (avahi-daemon, CUPS)       - Applies administrative requests (creating/removing/modifying         print queues) on CUPS       - Has AppArmor profile  - Package does not open privileged ports (ports < 1024) [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package cups-browsed does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/cups-browsed/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package cups-browsed is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support [Quality assurance - testing]  - The package cups-browsed does not run a test at build time because    as it was part of cups-filters there was no testing of the    cups-browsed daemon.  - The package cups-browsed does not run an autopkgtest because when    cups-browsed was still part of cups-filters there was no autopkgtest,    especially not for the cups-browsed daemon. [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log:    https://launchpadlibrarian.net/647984146/buildlog_ubuntu-lunar-amd64.cups-browsed_2.0~b2-0ubuntu4_BUILDING.txt.gz  - This package does not yield massive lintian Warnings, Errors  - No lintian warnings or errors at all for cups-browsed  - Lintian overrides are present for cups-browsed, but ok because    CUPS needs the special permissions and directory for its backends    # Upstream choices; they need to be run as root    cups-browsed: executable-is-not-world-readable usr/lib/cups/backend/implicitclass 0700    # That's how CUPS does it    cups-browsed: executable-in-usr-lib usr/lib/cups/backend/implicitclass  - This package does not rely on obsolete or about to be demoted    packages.  - These package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules file attached. [UI standards]  - Application is not end-user facing (does not need translation) [Dependencies]  - No further depends or recommends dependencies outside this MIR that    are not yet in main  - There are further dependencies that are not yet in main, the MIR    process for them is handled as part of this bug here.    - libppd depends on libcupsfilters -> in this same MIR    - cups-browsed depends on libcupsfilters and libppd -> in this same      MIR [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 all the packages - 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 cups-browsed (unchanged) Links to upstream projects:  - https://github.com/OpenPrinting/cups-browsed ========== Original Description ============ This is a simplified MIR for the splitting of the cups-filters source package. With the second generation (2.x) cups-filters upstream got split into 5 independent component repositories: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed See https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ braille-printer-app still needs some upstream work for getting released, the others were already released as 2.0b2. libcupsfilters, cups-filters, and cups-browsed contain mainly the code from the former cups-filters (1.x) which is already in Main. libppd contains code from CUPS (libcups and cups-ppdc) which is also in Main. As of https://github.com/canonical/ubuntu-mir ---------- If a new source package contains only code which is already in main (e.g. the result of a source package split or rename, or source packages with a version in the name), it may not need a full review. Submitting a MIR bug with an explanation (but without the full template) or updating/extending on the existing old MIR bug and re-opening it by setting it to "NEW" is sufficient. ---------- This report does not need the full template. The original packages (cups-filters and cups) are in Main already for more than a decade, so repetition of the original MIR would not be useful. cups was already in Ubuntu from the very beginning on and therefore probably in Main since the differentiation of Main and Universe got introduced. The binary packages are named as before (except SONAME of libraries being 2 instead of 1 now), binary packages for libppd added. So current dependencies and seeding should pull in everything (libppd is a library and cups-filters depends on it). libfontembed has been discontinued (folded into libcupsfilters, API removed) but no package uses it (except the components of cups-filters 1.x thenselves). braille-printer-app will be added to this report (or a new simplified MIR report created) as soon as it gets released upstream. Its binary package(s) will need to get seeded. ========== Summary ========================= Source packages to be promoted to Main: - libcupsfilters - libppd - cups-browsed Binary packages to be promoted to Main: - libcupsfilters2 - libcupsfilters2-common - libppd-dev - libppd2 - libppd2-common - ppdc No source packages and no binary packages which are in Main should get demoted to Universe. ========== Overview ======================== Due to a major change in the printing architecture [1] the cups-filters upstream project at OpenPrinting got split into 5 components [2]: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed [1] https://openprinting.github.io/current/#the-new-architecture-for-printing-and-scanning [2] https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ To reflect this in the Debian/Ubuntu packaging also the cups-filters source package there is getting split, rendering 3 new source packages (+) and therefore we need this MIR: Binaries: Source BEFORE (1.x) Source AFTER (2.x) --------------------------------------------------------------------- cups-browsed cups-filters cups-browsed + cups-filters cups-filters cups-filters cups-filters-core-drivers cups-filters cups-filters libcupsfilters-dev cups-filters libcupsfilters + libcupsfilters1 X cups-filters Replaced by                                                   libcupsfilters2 * libcupsfilters2 + libcupsfilters + (NEW) libcupsfilters2-common + libcupsfilters + (NEW) libfontembed-dev X cups-filters REMOVED ** libfontembed X cups-filters REMOVED ** libppd-dev + libppd + (NEW) *** libppd2 + libppd + (NEW) *** libppd2-common + libppd + (NEW) *** ppdc + libppd + (NEW) *** * : libcupsfilters has new API generation/SONAME 1 -> 2 ** : libfontembed code folded into libcupsfilters, API removed, no other      package is using it. ***: libppd contains all PPD-supporting code of CUPS, as in CUPS 3.x      this code will get removed. libppd is for legacy-retro-fitting of      classic CUPS drivers with PPD files. Code comes from CUPS source:      cups/ppd*.[ch], scheduler/cups-driverd.cxx, ppdc/* X: Binary package getting REMOVED from Lunar +: Source or binary package to be promoted to Main via this MIR The purposes of the new generation's binary packages are principally the same as before: - cups-browsed: Daemon to auto-create queues for network printers and to                 form printer clusters - cups-filters: Print data format conversion filters and printer                 communication backends for CUPS 2.x - Complete set - cups-filters-core-drivers: Print data format conversion filters and                 printer communication backends for CUPS 2.x - Essential                 ones for minimum configurations, like mobile or IoT - libcupsfilters-dev: C Header files for libcupsfilters2 - libcupsfilters2: Shared library containing common code for print data                 conversion filters, printer drivers, printer model                 identification and distinction, PDF file manipulation,                 PDF font embedding, color space conversion, ... - libcupsfilters2-common: Architecture-indpendent auxiliary files - libppd2-dev: C Header files for libppd2 - libppd2: Shared library for support of PPD files, parsing the                 files, converting PPD options into IPP attributes,                 managing collections of PPDs, finding PPD for given                 printer, generating PPDs from CUPS' *.drv files - libppd2-common: Architecture-indpendent auxiliary files - ppdc: Command line tools to generate PPD files from *.drv                 files (only for development and debugging, or to                 keep scripts using them working, not end-user-facing) --> ALL THESE BINARY PACKAGES MUST BE IN MAIM, SO THE FOLLOWING BINARY     PACKAGES NEED TO GET PROMOTED:       - libcupsfilters2       - libcupsfilters2-common       - libppd-dev       - libppd2       - libppd2-common       - ppdc For current CUPS (2.x, provided by Debian packages) there is actually no change. CUPS depends on cups-filters ("cups" binary on "cups-filters" binary and "cups-core-drivers" binary on "cups-filters-core-drivers") to get its filters and additional backends which it needs for actual printing, now the new-generation cups-filters. The new "cups-filters" and "cups-filters-core-drivers" depend on "libcupsfilters2" and "libppd2" providing the common functionality they need. "cups-browsed" is recommended by "cups-daemon". I do not know whether any of these packages is also seeded and whether the recommend of "cups-browsed" by "cups-daemon" is strong enough to pull "cups-browsed" into Main when the MIR is approved. cups-core-drivers   |   +--Depends--> cups-filters-core-drivers                   |     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups   |   +--Depends--> cups-filters                   |     +--Depends--> cups-filters-core-drivers     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups-daemon   |   +--Recommends--> cups-browsed                      |        +--Depends--> libcupsfilters2        +--Depends--> libppd2          |          +--Depends--> libcupsfilters2 --> SO NO NEW DEPENDENCIES IN PACKAGES ALREADY EXISTING     IN MAIN AND NO NEW SEEDS ARE NEEDED TO ACTUALLY GET EVERYTHING     INTO MAIN AFTER THE APPROVAL OF THIS MIR. As one can see from the table above, the former SOURCE package cups-filters is replaced by 4 SOURCE packages now: - libcupsfilters + - libppd + - cups-filters - cups-browsed + --> ALL THESE SOURCE PACKAGES NEED TO BE IN MAIN, THE ONES WITH + NEED     TO GET PROMOTED. --> CUPS-FILTERS IS ALREADY IN MAIN AND IT SHOULD CONTINUE IN MAIN. The braille-printer-app package is not yet completed upstream. As soon as this is done, it will also get uploaded to Ubuntu and a MIR for it posted. The splitting upstream is done to prepare for the New Architecture of printing, where printer drivers are not filters and PPD files any more but emulators of driverless IPP printers (Printer Applications). So a standard system installation does not need PPD file support any more, so we needed to completely separate the PPD file support code of CUPS and cups-filters into one optionally installable library but conserver as much as possible of the still valuable PPD-independent code in cups-filters, of 20 years of development and experience. Also filters need to get more accesible for Printer Applications, therefore we turned the former individual executables into library functions, the filter functions. With the introduction of libppd all use of libcups is now restricted to functionality which does not support PPD files and therefore will continue to be in libcups of CUPS 3.x ([1], future libcups3 binary package to appear in Ubuntu 24.04 LTS). This way we expect only small changes for the transition from libcups2 to libcups3. [1] https://github.com/OpenPrinting/libcups So we have now: libcupsfilters -------------- All the internal functionality of the filters which formerly was in the individual filter executables (cups-filters and cups-filters-core-drivers binary packages, new source package cups-filters) has moved into libcupsfilters (binary package libcupsfilters2, new source package libcupsfilters) as filter functions (source files cupsfilters/*to*.c*, cupsfilters/ghostscript.c, cupsfilters/pdftopdf/*, infrastructure in cupsfilters/filter.c, API in cupsfilters/filter.h). The handling of printer capabilities (media sizes, margins, color spaces, ...) and matching them with the jobs and job IPP attributes got vastly improved (cupsfilters/ipp.[ch], cupsfilters/raster.[ch].) Also API functions for handling human-readable strings/translations for option and choice names got created (cupsfilters/catalog.[ch]). The strings are taken from CUPS' message catalogs and also downloaded from driverless IPP printers. General functions for printers drivers, filters, color handling, PDF handling, ... from the old libcupsfilters (old binary package libcupsfilters1) got overtaken into the new libcupsfilters. The new libcupsfilters DOES NOT CONTAIN ANY SUPPORT FOR PPD FILES ANY MORE AND DOES NOT DEPEND ON LIBPPD. libppd ------ All PPD support which one finds in Linux distros with a CUPS/cups-filters printing stack is concentrated in libppd now. This way having PPD file support is completely optional. The library only needs to be installed if needed and being in a separate upstream repo and seperate Debian packages its maintenance can be stopped at any time while the maintenance and development of libcupsfilters continues. libppd (binary package libppd2, new source package libppd) is currently used by cups-filters (new binary packages cups-filters and cups-filters-core-drivers, new source package cups-filters) and pappl-retrofit ([1], added to Ubuntu in the next days, used by Printer Application which retro-fit classic CUPS drivers [2]). The former use case is only for systems using CUPS 2.x, the latter is mainly for systems in the New Architecture, using CUPS 3.x or the CUPS Snap [3][4] as these require all printer drivers being Printer Applications. None of the packages of the new cups-filters generation, PAPPL [5], pappl-retrofit, and the new (2.x) generation of CPDB [6] uses any PPD-file supporting functionality of libcups, so that a smooth transition to the libcups of CUPS 3.x is assured. Any PPD file support needs for legacy driver retro-fitting are covered by libppd. [1] https://github.com/OpenPrinting/pappl-retrofit [2] https://openprinting.github.io/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps [3] https://openprinting.github.io/achievements/#the-cups-snap [4] https://github.com/OpenPrinting/cups-snap [5] https://github.com/michaelrsweet/pappl/ [6] https://openprinting.github.io/achievements/#common-print-dialog-backends The source code is nearly completely overtaken from the CUPS source code: PPD file parsing and handling support in libcups (CUPS source: cups/ppd*.[ch], libppd source: ppd/*.c, API: ppd/ppd.h), PPD file collection handling and PPD file assignment to given printer (CUPS source: scheduler/cups-driverd.cxx, libppd source: ppd/ppd-collection.cxx, API: ppd/ppd.h), and generating PPD files from *.drv files (CUPS source: ppdc/*, libppd source: ppd/ppdc*.cxx, API ppd/ppdc.h). The PPD file generator for driverless printers (ppd/ppd-generator.c) is not the one from libcups but the one from the former libcupsfilters1, as that one supports generating the PPDs needed by printer clusters formed by cups-browsed. Some infrastructure got added for keeping PPD file support in the filter executables of CUPS 2.x, in ppd/ppd-filter.c, ppd/ppd-ipp.c, API is in ppd/ppd-filter.h. This infrastructure mainly parses the PPD file and turns the content of the PPD file into printer IPP attributes (what a driverless printer would respond when querying its capabilities). This way the non-PPD-supporting filter functions of libcupsfilters get to know the capabilities of the printer. cups-filters ------------ We get practically the same binaries as we had before in the cups-filters and cups-filters-core-drivers binary packages (old and new source package cups-filters), but they have changed internally: As told here earlier we have moved all the core functionality of the CUPS filters into libcupsfilters to have it available as library functions, the filter functions, so that they can be easily used by Printer Applications. Therefore the actual filter executables used for CUPS 2.x are only small wrappers which call a filter function to do the "dirty work". Only what does not make sense in the future PPD-less world keeps its code in the cups-filters upstream project: Legacy CUPS backends (backend/*), classic CUPS drivers (filter/*pclx*.c, filter/*escpx*.c), and the "driverless" utility (utils/*). A new feature is the "universal" CUPS filter (CUPS wrapper: filter/universal.c, PPD support wrapper in libppd: ppd/ppd-filter.c, core functionality in libcupsfilters: cupsfilters/universal.c). It makes use of having all filters as library functions in libcupsfilters to reduce the number of resource-consuming external executable calls by CUPS. It converts printer from practically any input format to practically any output format by calling chains of filter functions. So CUPS calls a single filter, "universal" instead of a chain of external filters. cups-filters will only be needed as long as we are using CUPS 2.x from Debian packages. If we have a distro using CUPS 3.x (planned from 24.04 LTS on) or the CUPS Snap (any CUPS version, planned from Ubuntu 23.10 on) cups-filters does not make sense any more, as we cannot add filters or backends either because CUPS is running from a sandboxed immutable image or does not support the filter/backend concept any more. cups-browsed ------------ The new cups-browsed binary package and the old one are practically identical in functionality. It is only split into its own upstream repository and with this into its own source Debian package for consistency of the splitting of cups-filters and for major changes in the future [1]. The actual source code suffered only changes for bug fixes and also for adaptation to changes in the API of the new libcupsfilters. It depends on the new libcupsfilters and also on libppd now. In the future it will get turned into a Printer Application [1] and not support and use PPD files any more, dropping the dependency on libppd. As all the rest of the current code from OpenPrinting it only uses non-PPD-supporting functionality of libcups, for a smooth transition to CUPS 3.x. [1] https://wiki.linuxfoundation.org/gsoc/google-summer-code-2023-openprinting-projects#turn_cups-browsed_into_a_printer_application === MIR REQUIREMENTS FOLLOWING TEMPLATE ==== https://github.com/canonical/ubuntu-mir === LIBCUPSFILTERS ========================= [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libcupsfilters It builds for the architectures it is designed to work on. It currently builds and works for the architetcures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - The package is required in Ubuntu Main as it is the libcupsfilters    which the cups-filters 2.x source package does not contain any    more, as it got separated into its own upstream source repo.  - libcupsfilters is part of Ubuntu's printing stack.  - libcupsfilters is part of the update of cups-filters from 1.x to 2.x  - The packages libcupsfilters is a new runtime dependency of the    package cups-filters that we already support  - The packages is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of libcupsfilters: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters  - All vulnerabilities are fixed, version with fix mentioned in the list.  - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - No sbin binaries in libcupsfilters  - Packages libcupsfilters does not install services,    timers or recurring jobs  - Package does not open privileged ports (ports < 1024)  - Package libcupsfilters provides the code for the filters run by    CUPS as the user "lp", to process print jobs. Most of the code is    the same as in the former cups-filters (1.x). [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package libcupsfilters does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libcupsfilters/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/libcupsfilters/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package libcupsfilters is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support    (no printer drivers, only print data file format converters, output     can be displayed with easily available, common free software tools:     evince, Ghostscript, eog, rasterview) [Quality assurance - testing]  - The packages libcupsfilters runs test suites on build time, if they    fail it makes the builds fail, link to build log    - https://launchpad.net/ubuntu/+source/libcupsfilters/2.0~b2-0ubuntu10/+build/25524340/+files/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu10_BUILDING.txt.gz  - The packages libcupsfilters runs autopkgtests, and is    currently passing on all architectures listed under [Availability].    The very first migration process did not yet finish for    libcupsfilters    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libcupsfilters  - The package libcupsfilters does not have failing autopkgtests right now [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log:    https://launchpad.net/ubuntu/+source/libcupsfilters/2.0~b2-0ubuntu10/+build/25524340/+files/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu10_BUILDING.txt.gz  - This package does not yield massive lintian Warnings, Errors  - This package has only    P: libcupsfilters source: very-long-line-length-in-source-file 525 >    512 [Makefile.in:1759]    This is not a problem, Makefile.in is auto-generated by the autotools    and the package builds without problems.  - Lintian overrides are not present for libcupsfilters  - This package does not rely on obsolete or about to be demoted    packages.  - This package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules file attached. [UI standards]  - Application is not end-user facing (does not need translation) [Dependencies]  - No further depends or recommends dependencies that are not yet in    main [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 this 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 descriptions explain the packages well Upstream Name are libcupsfilters (unchanged) Link to upstream projects:  - https://github.com/OpenPrinting/libcupsfilters === LIBPPD ================================= [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libppd It builds for the architectures it is designed to work on. It currently builds and works for the architectures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - To be prepared for the removal of PPD support in CUPS 3.x,    libcupsfilters does not contain any PPD file support any more. The    PPD file support got moved into libppd and cups-filters 2.x which    provides the filters for CUPS 2.x therefore needs libppd to    maintain the PPD support in these filters.  - libppd is part of Ubuntu's printing stack.  - libppd is part of the update of cups-filters from 1.x to 2.x  - libppd is a new runtime dependency of the package cups-filters that    we already support  - The package is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups, which is the origin of the code of libppd: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups  - All vulnerabilities are fixed, version with fix mentioned in the list. Openwall: 'site:www.openwall.com/lists/oss-security cups'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Released", "Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - No sbin binaries in libppd  - Package libppd does not install services timers or recurring jobs  - Package does not open privileged ports (ports < 1024)  - Package libppd provides code for the filters run by CUPS as the    user "lp", to process print jobs. Most of the code is the same as    in libcups2. [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package libppd does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libppd/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/libppd/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package libppd is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support    (no printer drivers, only print data file format converters, output     can be displayed with easily available, common free software tools:     evince, Ghostscript, eog, rasterview) [Quality assurance - testing]  - The package libppd runs test suites on build time, if they fail it    makes the builds fail, links to build log    - https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz  - The package libppd runs autopkgtests, and is currently passing on    all architectures listed under [Availability].    The very first migration process did not yet finish for both    libppd    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libppd  - The packages libppd does not have failing autopkgtests right now [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log:    https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz  - These packages do not yield massive lintian Warnings, Errors  - No lintian warnings or errors for libppd  - Lintian overrides are not present for libppd  - This package does not rely on obsolete or about to be demoted    packages.  - This package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules files attached. [UI standards]  - Application is not end-user facing (does not need translation)     - Executables in binary package ppdc are only for development and       debugging, or to keep existing scripts running, so nothing for       end users. [Dependencies]  - No further depends or recommends dependencies outside this MIR that    are not yet in main  - There are further dependencies that are not yet in main, the MIR    process for them is handled as part of this bug here.    - libppd depends on libcupsfilters -> in this same MIR [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 this 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 libppd (unchanged) Links to upstream project:  - https://github.com/OpenPrinting/libppd === CUPS-BROWSED =========================== [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/cups-browsed It builds for the architectures it is designed to work on. It currently builds and works for the architetcures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - The package is required in Ubuntu Main as it is the cups-browsed    which the cups-filters 2.x source package does not contain any    more, as it got separated into its own upstream source repo.  - cups-browsed is part of Ubuntu's printing stack.  - cups-browsed is part of the update of cups-filters from 1.x to 2.x  - cups-browsed has to be in Main as, as before, it needs to overcome    the lack of support for temporary CUPS queues in some print    dialogs.  - The package is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of cups-browsed: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters  - All vulnerabilities are fixed, version with fix mentioned in the list.  - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - Binary /usr/sbin/cups-browsed (of package cups-browsed) in sbin is    no problem. It is the cups-browsed which we already use for several    years, provided by the cups-filters (1.x) source package.    No actual changes have been done in the functionality of    cups-browsed, only minor bug fixes. Changes in the underlying    libraries (libcupsfilters, libppd) did not change the communication    of cups-browsed with the outside world, but only improve the PPD    files it uses and the reliability of a job being assigned to a    destination printer in a cluster.    The daemon listens to avahi-daemon (via D-Bus) to find out about IPP    network printers (physical devices, remote CUPS queues, Printer    Applications) appearing and disappearing and creates/removes/    modifies print queues on the running CUPS appropriately. It also    listens to CUPS on the D-Bus whether a new job got submitted    and in case it being on a queue managed by cups-browsed tells    to CUPS which is the destination printer.    So it listens on the (system) D-Bus and submits administrative    requests to CUPS (some kind of automatic, UI-less printer setup    tool).  - Package cups-browsed installs daemon, see above.     - /usr/sbin/cups-browsed       - Listens on system D-Bus (avahi-daemon, CUPS)       - Applies administrative requests (creating/removing/modifying         print queues) on CUPS       - Has AppArmor profile  - Package does not open privileged ports (ports < 1024) [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package cups-browsed does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/cups-browsed/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package cups-browsed is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support [Quality assurance - testing]  - The package cups-browsed does not run a test at build time because    as it was part of cups-filters there was no testing of the    cups-browsed daemon.  - The package cups-browsed does not run an autopkgtest because when    cups-browsed was still part of cups-filters there was no autopkgtest,    especially not for the cups-browsed daemon. [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log:    https://launchpadlibrarian.net/647984146/buildlog_ubuntu-lunar-amd64.cups-browsed_2.0~b2-0ubuntu4_BUILDING.txt.gz  - This package does not yield massive lintian Warnings, Errors  - No lintian warnings or errors at all for cups-browsed  - Lintian overrides are present for cups-browsed, but ok because    CUPS needs the special permissions and directory for its backends    # Upstream choices; they need to be run as root    cups-browsed: executable-is-not-world-readable usr/lib/cups/backend/implicitclass 0700    # That's how CUPS does it    cups-browsed: executable-in-usr-lib usr/lib/cups/backend/implicitclass  - This package does not rely on obsolete or about to be demoted    packages.  - These package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules file attached. [UI standards]  - Application is not end-user facing (does not need translation) [Dependencies]  - No further depends or recommends dependencies outside this MIR that    are not yet in main  - There are further dependencies that are not yet in main, the MIR    process for them is handled as part of this bug here.    - libppd depends on libcupsfilters -> in this same MIR    - cups-browsed depends on libcupsfilters and libppd -> in this same      MIR [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 all the packages - 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 cups-browsed (unchanged) Links to upstream projects:  - https://github.com/OpenPrinting/cups-browsed ========== Original Description ============ This is a simplified MIR for the splitting of the cups-filters source package. With the second generation (2.x) cups-filters upstream got split into 5 independent component repositories: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed See https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ braille-printer-app still needs some upstream work for getting released, the others were already released as 2.0b2. libcupsfilters, cups-filters, and cups-browsed contain mainly the code from the former cups-filters (1.x) which is already in Main. libppd contains code from CUPS (libcups and cups-ppdc) which is also in Main. As of https://github.com/canonical/ubuntu-mir ---------- If a new source package contains only code which is already in main (e.g. the result of a source package split or rename, or source packages with a version in the name), it may not need a full review. Submitting a MIR bug with an explanation (but without the full template) or updating/extending on the existing old MIR bug and re-opening it by setting it to "NEW" is sufficient. ---------- This report does not need the full template. The original packages (cups-filters and cups) are in Main already for more than a decade, so repetition of the original MIR would not be useful. cups was already in Ubuntu from the very beginning on and therefore probably in Main since the differentiation of Main and Universe got introduced. The binary packages are named as before (except SONAME of libraries being 2 instead of 1 now), binary packages for libppd added. So current dependencies and seeding should pull in everything (libppd is a library and cups-filters depends on it). libfontembed has been discontinued (folded into libcupsfilters, API removed) but no package uses it (except the components of cups-filters 1.x thenselves). braille-printer-app will be added to this report (or a new simplified MIR report created) as soon as it gets released upstream. Its binary package(s) will need to get seeded.
2023-01-26 18:54:42 Till Kamppeter description ========== Summary ========================= Source packages to be promoted to Main: - libcupsfilters - libppd - cups-browsed Binary packages to be promoted to Main: - libcupsfilters2 - libcupsfilters2-common - libppd-dev - libppd2 - libppd2-common - ppdc No source packages and no binary packages which are in Main should get demoted to Universe. ========== Overview ======================== Due to a major change in the printing architecture [1] the cups-filters upstream project at OpenPrinting got split into 5 components [2]: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed [1] https://openprinting.github.io/current/#the-new-architecture-for-printing-and-scanning [2] https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ To reflect this in the Debian/Ubuntu packaging also the cups-filters source package there is getting split, rendering 3 new source packages (+) and therefore we need this MIR: Binaries: Source BEFORE (1.x) Source AFTER (2.x) --------------------------------------------------------------------- cups-browsed cups-filters cups-browsed + cups-filters cups-filters cups-filters cups-filters-core-drivers cups-filters cups-filters libcupsfilters-dev cups-filters libcupsfilters + libcupsfilters1 X cups-filters Replaced by                                                   libcupsfilters2 * libcupsfilters2 + libcupsfilters + (NEW) libcupsfilters2-common + libcupsfilters + (NEW) libfontembed-dev X cups-filters REMOVED ** libfontembed X cups-filters REMOVED ** libppd-dev + libppd + (NEW) *** libppd2 + libppd + (NEW) *** libppd2-common + libppd + (NEW) *** ppdc + libppd + (NEW) *** * : libcupsfilters has new API generation/SONAME 1 -> 2 ** : libfontembed code folded into libcupsfilters, API removed, no other      package is using it. ***: libppd contains all PPD-supporting code of CUPS, as in CUPS 3.x      this code will get removed. libppd is for legacy-retro-fitting of      classic CUPS drivers with PPD files. Code comes from CUPS source:      cups/ppd*.[ch], scheduler/cups-driverd.cxx, ppdc/* X: Binary package getting REMOVED from Lunar +: Source or binary package to be promoted to Main via this MIR The purposes of the new generation's binary packages are principally the same as before: - cups-browsed: Daemon to auto-create queues for network printers and to                 form printer clusters - cups-filters: Print data format conversion filters and printer                 communication backends for CUPS 2.x - Complete set - cups-filters-core-drivers: Print data format conversion filters and                 printer communication backends for CUPS 2.x - Essential                 ones for minimum configurations, like mobile or IoT - libcupsfilters-dev: C Header files for libcupsfilters2 - libcupsfilters2: Shared library containing common code for print data                 conversion filters, printer drivers, printer model                 identification and distinction, PDF file manipulation,                 PDF font embedding, color space conversion, ... - libcupsfilters2-common: Architecture-indpendent auxiliary files - libppd2-dev: C Header files for libppd2 - libppd2: Shared library for support of PPD files, parsing the                 files, converting PPD options into IPP attributes,                 managing collections of PPDs, finding PPD for given                 printer, generating PPDs from CUPS' *.drv files - libppd2-common: Architecture-indpendent auxiliary files - ppdc: Command line tools to generate PPD files from *.drv                 files (only for development and debugging, or to                 keep scripts using them working, not end-user-facing) --> ALL THESE BINARY PACKAGES MUST BE IN MAIM, SO THE FOLLOWING BINARY     PACKAGES NEED TO GET PROMOTED:       - libcupsfilters2       - libcupsfilters2-common       - libppd-dev       - libppd2       - libppd2-common       - ppdc For current CUPS (2.x, provided by Debian packages) there is actually no change. CUPS depends on cups-filters ("cups" binary on "cups-filters" binary and "cups-core-drivers" binary on "cups-filters-core-drivers") to get its filters and additional backends which it needs for actual printing, now the new-generation cups-filters. The new "cups-filters" and "cups-filters-core-drivers" depend on "libcupsfilters2" and "libppd2" providing the common functionality they need. "cups-browsed" is recommended by "cups-daemon". I do not know whether any of these packages is also seeded and whether the recommend of "cups-browsed" by "cups-daemon" is strong enough to pull "cups-browsed" into Main when the MIR is approved. cups-core-drivers   |   +--Depends--> cups-filters-core-drivers                   |     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups   |   +--Depends--> cups-filters                   |     +--Depends--> cups-filters-core-drivers     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups-daemon   |   +--Recommends--> cups-browsed                      |        +--Depends--> libcupsfilters2        +--Depends--> libppd2          |          +--Depends--> libcupsfilters2 --> SO NO NEW DEPENDENCIES IN PACKAGES ALREADY EXISTING     IN MAIN AND NO NEW SEEDS ARE NEEDED TO ACTUALLY GET EVERYTHING     INTO MAIN AFTER THE APPROVAL OF THIS MIR. As one can see from the table above, the former SOURCE package cups-filters is replaced by 4 SOURCE packages now: - libcupsfilters + - libppd + - cups-filters - cups-browsed + --> ALL THESE SOURCE PACKAGES NEED TO BE IN MAIN, THE ONES WITH + NEED     TO GET PROMOTED. --> CUPS-FILTERS IS ALREADY IN MAIN AND IT SHOULD CONTINUE IN MAIN. The braille-printer-app package is not yet completed upstream. As soon as this is done, it will also get uploaded to Ubuntu and a MIR for it posted. The splitting upstream is done to prepare for the New Architecture of printing, where printer drivers are not filters and PPD files any more but emulators of driverless IPP printers (Printer Applications). So a standard system installation does not need PPD file support any more, so we needed to completely separate the PPD file support code of CUPS and cups-filters into one optionally installable library but conserver as much as possible of the still valuable PPD-independent code in cups-filters, of 20 years of development and experience. Also filters need to get more accesible for Printer Applications, therefore we turned the former individual executables into library functions, the filter functions. With the introduction of libppd all use of libcups is now restricted to functionality which does not support PPD files and therefore will continue to be in libcups of CUPS 3.x ([1], future libcups3 binary package to appear in Ubuntu 24.04 LTS). This way we expect only small changes for the transition from libcups2 to libcups3. [1] https://github.com/OpenPrinting/libcups So we have now: libcupsfilters -------------- All the internal functionality of the filters which formerly was in the individual filter executables (cups-filters and cups-filters-core-drivers binary packages, new source package cups-filters) has moved into libcupsfilters (binary package libcupsfilters2, new source package libcupsfilters) as filter functions (source files cupsfilters/*to*.c*, cupsfilters/ghostscript.c, cupsfilters/pdftopdf/*, infrastructure in cupsfilters/filter.c, API in cupsfilters/filter.h). The handling of printer capabilities (media sizes, margins, color spaces, ...) and matching them with the jobs and job IPP attributes got vastly improved (cupsfilters/ipp.[ch], cupsfilters/raster.[ch].) Also API functions for handling human-readable strings/translations for option and choice names got created (cupsfilters/catalog.[ch]). The strings are taken from CUPS' message catalogs and also downloaded from driverless IPP printers. General functions for printers drivers, filters, color handling, PDF handling, ... from the old libcupsfilters (old binary package libcupsfilters1) got overtaken into the new libcupsfilters. The new libcupsfilters DOES NOT CONTAIN ANY SUPPORT FOR PPD FILES ANY MORE AND DOES NOT DEPEND ON LIBPPD. libppd ------ All PPD support which one finds in Linux distros with a CUPS/cups-filters printing stack is concentrated in libppd now. This way having PPD file support is completely optional. The library only needs to be installed if needed and being in a separate upstream repo and seperate Debian packages its maintenance can be stopped at any time while the maintenance and development of libcupsfilters continues. libppd (binary package libppd2, new source package libppd) is currently used by cups-filters (new binary packages cups-filters and cups-filters-core-drivers, new source package cups-filters) and pappl-retrofit ([1], added to Ubuntu in the next days, used by Printer Application which retro-fit classic CUPS drivers [2]). The former use case is only for systems using CUPS 2.x, the latter is mainly for systems in the New Architecture, using CUPS 3.x or the CUPS Snap [3][4] as these require all printer drivers being Printer Applications. None of the packages of the new cups-filters generation, PAPPL [5], pappl-retrofit, and the new (2.x) generation of CPDB [6] uses any PPD-file supporting functionality of libcups, so that a smooth transition to the libcups of CUPS 3.x is assured. Any PPD file support needs for legacy driver retro-fitting are covered by libppd. [1] https://github.com/OpenPrinting/pappl-retrofit [2] https://openprinting.github.io/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps [3] https://openprinting.github.io/achievements/#the-cups-snap [4] https://github.com/OpenPrinting/cups-snap [5] https://github.com/michaelrsweet/pappl/ [6] https://openprinting.github.io/achievements/#common-print-dialog-backends The source code is nearly completely overtaken from the CUPS source code: PPD file parsing and handling support in libcups (CUPS source: cups/ppd*.[ch], libppd source: ppd/*.c, API: ppd/ppd.h), PPD file collection handling and PPD file assignment to given printer (CUPS source: scheduler/cups-driverd.cxx, libppd source: ppd/ppd-collection.cxx, API: ppd/ppd.h), and generating PPD files from *.drv files (CUPS source: ppdc/*, libppd source: ppd/ppdc*.cxx, API ppd/ppdc.h). The PPD file generator for driverless printers (ppd/ppd-generator.c) is not the one from libcups but the one from the former libcupsfilters1, as that one supports generating the PPDs needed by printer clusters formed by cups-browsed. Some infrastructure got added for keeping PPD file support in the filter executables of CUPS 2.x, in ppd/ppd-filter.c, ppd/ppd-ipp.c, API is in ppd/ppd-filter.h. This infrastructure mainly parses the PPD file and turns the content of the PPD file into printer IPP attributes (what a driverless printer would respond when querying its capabilities). This way the non-PPD-supporting filter functions of libcupsfilters get to know the capabilities of the printer. cups-filters ------------ We get practically the same binaries as we had before in the cups-filters and cups-filters-core-drivers binary packages (old and new source package cups-filters), but they have changed internally: As told here earlier we have moved all the core functionality of the CUPS filters into libcupsfilters to have it available as library functions, the filter functions, so that they can be easily used by Printer Applications. Therefore the actual filter executables used for CUPS 2.x are only small wrappers which call a filter function to do the "dirty work". Only what does not make sense in the future PPD-less world keeps its code in the cups-filters upstream project: Legacy CUPS backends (backend/*), classic CUPS drivers (filter/*pclx*.c, filter/*escpx*.c), and the "driverless" utility (utils/*). A new feature is the "universal" CUPS filter (CUPS wrapper: filter/universal.c, PPD support wrapper in libppd: ppd/ppd-filter.c, core functionality in libcupsfilters: cupsfilters/universal.c). It makes use of having all filters as library functions in libcupsfilters to reduce the number of resource-consuming external executable calls by CUPS. It converts printer from practically any input format to practically any output format by calling chains of filter functions. So CUPS calls a single filter, "universal" instead of a chain of external filters. cups-filters will only be needed as long as we are using CUPS 2.x from Debian packages. If we have a distro using CUPS 3.x (planned from 24.04 LTS on) or the CUPS Snap (any CUPS version, planned from Ubuntu 23.10 on) cups-filters does not make sense any more, as we cannot add filters or backends either because CUPS is running from a sandboxed immutable image or does not support the filter/backend concept any more. cups-browsed ------------ The new cups-browsed binary package and the old one are practically identical in functionality. It is only split into its own upstream repository and with this into its own source Debian package for consistency of the splitting of cups-filters and for major changes in the future [1]. The actual source code suffered only changes for bug fixes and also for adaptation to changes in the API of the new libcupsfilters. It depends on the new libcupsfilters and also on libppd now. In the future it will get turned into a Printer Application [1] and not support and use PPD files any more, dropping the dependency on libppd. As all the rest of the current code from OpenPrinting it only uses non-PPD-supporting functionality of libcups, for a smooth transition to CUPS 3.x. [1] https://wiki.linuxfoundation.org/gsoc/google-summer-code-2023-openprinting-projects#turn_cups-browsed_into_a_printer_application === MIR REQUIREMENTS FOLLOWING TEMPLATE ==== https://github.com/canonical/ubuntu-mir === LIBCUPSFILTERS ========================= [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libcupsfilters It builds for the architectures it is designed to work on. It currently builds and works for the architetcures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - The package is required in Ubuntu Main as it is the libcupsfilters    which the cups-filters 2.x source package does not contain any    more, as it got separated into its own upstream source repo.  - libcupsfilters is part of Ubuntu's printing stack.  - libcupsfilters is part of the update of cups-filters from 1.x to 2.x  - The packages libcupsfilters is a new runtime dependency of the    package cups-filters that we already support  - The packages is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of libcupsfilters: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters  - All vulnerabilities are fixed, version with fix mentioned in the list.  - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - No sbin binaries in libcupsfilters  - Packages libcupsfilters does not install services,    timers or recurring jobs  - Package does not open privileged ports (ports < 1024)  - Package libcupsfilters provides the code for the filters run by    CUPS as the user "lp", to process print jobs. Most of the code is    the same as in the former cups-filters (1.x). [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package libcupsfilters does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libcupsfilters/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/libcupsfilters/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package libcupsfilters is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support    (no printer drivers, only print data file format converters, output     can be displayed with easily available, common free software tools:     evince, Ghostscript, eog, rasterview) [Quality assurance - testing]  - The packages libcupsfilters runs test suites on build time, if they    fail it makes the builds fail, link to build log    - https://launchpad.net/ubuntu/+source/libcupsfilters/2.0~b2-0ubuntu10/+build/25524340/+files/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu10_BUILDING.txt.gz  - The packages libcupsfilters runs autopkgtests, and is    currently passing on all architectures listed under [Availability].    The very first migration process did not yet finish for    libcupsfilters    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libcupsfilters  - The package libcupsfilters does not have failing autopkgtests right now [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log:    https://launchpad.net/ubuntu/+source/libcupsfilters/2.0~b2-0ubuntu10/+build/25524340/+files/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu10_BUILDING.txt.gz  - This package does not yield massive lintian Warnings, Errors  - This package has only    P: libcupsfilters source: very-long-line-length-in-source-file 525 >    512 [Makefile.in:1759]    This is not a problem, Makefile.in is auto-generated by the autotools    and the package builds without problems.  - Lintian overrides are not present for libcupsfilters  - This package does not rely on obsolete or about to be demoted    packages.  - This package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules file attached. [UI standards]  - Application is not end-user facing (does not need translation) [Dependencies]  - No further depends or recommends dependencies that are not yet in    main [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 this 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 descriptions explain the packages well Upstream Name are libcupsfilters (unchanged) Link to upstream projects:  - https://github.com/OpenPrinting/libcupsfilters === LIBPPD ================================= [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libppd It builds for the architectures it is designed to work on. It currently builds and works for the architectures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - To be prepared for the removal of PPD support in CUPS 3.x,    libcupsfilters does not contain any PPD file support any more. The    PPD file support got moved into libppd and cups-filters 2.x which    provides the filters for CUPS 2.x therefore needs libppd to    maintain the PPD support in these filters.  - libppd is part of Ubuntu's printing stack.  - libppd is part of the update of cups-filters from 1.x to 2.x  - libppd is a new runtime dependency of the package cups-filters that    we already support  - The package is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups, which is the origin of the code of libppd: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups  - All vulnerabilities are fixed, version with fix mentioned in the list. Openwall: 'site:www.openwall.com/lists/oss-security cups'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Released", "Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - No sbin binaries in libppd  - Package libppd does not install services timers or recurring jobs  - Package does not open privileged ports (ports < 1024)  - Package libppd provides code for the filters run by CUPS as the    user "lp", to process print jobs. Most of the code is the same as    in libcups2. [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package libppd does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libppd/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/libppd/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package libppd is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support    (no printer drivers, only print data file format converters, output     can be displayed with easily available, common free software tools:     evince, Ghostscript, eog, rasterview) [Quality assurance - testing]  - The package libppd runs test suites on build time, if they fail it    makes the builds fail, links to build log    - https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz  - The package libppd runs autopkgtests, and is currently passing on    all architectures listed under [Availability].    The very first migration process did not yet finish for both    libppd    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libppd  - The packages libppd does not have failing autopkgtests right now [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log:    https://launchpadlibrarian.net/647982722/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu7_BUILDING.txt.gz  - These packages do not yield massive lintian Warnings, Errors  - No lintian warnings or errors for libppd  - Lintian overrides are not present for libppd  - This package does not rely on obsolete or about to be demoted    packages.  - This package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules files attached. [UI standards]  - Application is not end-user facing (does not need translation)     - Executables in binary package ppdc are only for development and       debugging, or to keep existing scripts running, so nothing for       end users. [Dependencies]  - No further depends or recommends dependencies outside this MIR that    are not yet in main  - There are further dependencies that are not yet in main, the MIR    process for them is handled as part of this bug here.    - libppd depends on libcupsfilters -> in this same MIR [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 this 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 libppd (unchanged) Links to upstream project:  - https://github.com/OpenPrinting/libppd === CUPS-BROWSED =========================== [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/cups-browsed It builds for the architectures it is designed to work on. It currently builds and works for the architetcures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - The package is required in Ubuntu Main as it is the cups-browsed    which the cups-filters 2.x source package does not contain any    more, as it got separated into its own upstream source repo.  - cups-browsed is part of Ubuntu's printing stack.  - cups-browsed is part of the update of cups-filters from 1.x to 2.x  - cups-browsed has to be in Main as, as before, it needs to overcome    the lack of support for temporary CUPS queues in some print    dialogs.  - The package is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of cups-browsed: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters  - All vulnerabilities are fixed, version with fix mentioned in the list.  - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - Binary /usr/sbin/cups-browsed (of package cups-browsed) in sbin is    no problem. It is the cups-browsed which we already use for several    years, provided by the cups-filters (1.x) source package.    No actual changes have been done in the functionality of    cups-browsed, only minor bug fixes. Changes in the underlying    libraries (libcupsfilters, libppd) did not change the communication    of cups-browsed with the outside world, but only improve the PPD    files it uses and the reliability of a job being assigned to a    destination printer in a cluster.    The daemon listens to avahi-daemon (via D-Bus) to find out about IPP    network printers (physical devices, remote CUPS queues, Printer    Applications) appearing and disappearing and creates/removes/    modifies print queues on the running CUPS appropriately. It also    listens to CUPS on the D-Bus whether a new job got submitted    and in case it being on a queue managed by cups-browsed tells    to CUPS which is the destination printer.    So it listens on the (system) D-Bus and submits administrative    requests to CUPS (some kind of automatic, UI-less printer setup    tool).  - Package cups-browsed installs daemon, see above.     - /usr/sbin/cups-browsed       - Listens on system D-Bus (avahi-daemon, CUPS)       - Applies administrative requests (creating/removing/modifying         print queues) on CUPS       - Has AppArmor profile  - Package does not open privileged ports (ports < 1024) [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package cups-browsed does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/cups-browsed/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package cups-browsed is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support [Quality assurance - testing]  - The package cups-browsed does not run a test at build time because    as it was part of cups-filters there was no testing of the    cups-browsed daemon.  - The package cups-browsed does not run an autopkgtest because when    cups-browsed was still part of cups-filters there was no autopkgtest,    especially not for the cups-browsed daemon. [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log:    https://launchpadlibrarian.net/647984146/buildlog_ubuntu-lunar-amd64.cups-browsed_2.0~b2-0ubuntu4_BUILDING.txt.gz  - This package does not yield massive lintian Warnings, Errors  - No lintian warnings or errors at all for cups-browsed  - Lintian overrides are present for cups-browsed, but ok because    CUPS needs the special permissions and directory for its backends    # Upstream choices; they need to be run as root    cups-browsed: executable-is-not-world-readable usr/lib/cups/backend/implicitclass 0700    # That's how CUPS does it    cups-browsed: executable-in-usr-lib usr/lib/cups/backend/implicitclass  - This package does not rely on obsolete or about to be demoted    packages.  - These package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules file attached. [UI standards]  - Application is not end-user facing (does not need translation) [Dependencies]  - No further depends or recommends dependencies outside this MIR that    are not yet in main  - There are further dependencies that are not yet in main, the MIR    process for them is handled as part of this bug here.    - libppd depends on libcupsfilters -> in this same MIR    - cups-browsed depends on libcupsfilters and libppd -> in this same      MIR [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 all the packages - 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 cups-browsed (unchanged) Links to upstream projects:  - https://github.com/OpenPrinting/cups-browsed ========== Original Description ============ This is a simplified MIR for the splitting of the cups-filters source package. With the second generation (2.x) cups-filters upstream got split into 5 independent component repositories: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed See https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ braille-printer-app still needs some upstream work for getting released, the others were already released as 2.0b2. libcupsfilters, cups-filters, and cups-browsed contain mainly the code from the former cups-filters (1.x) which is already in Main. libppd contains code from CUPS (libcups and cups-ppdc) which is also in Main. As of https://github.com/canonical/ubuntu-mir ---------- If a new source package contains only code which is already in main (e.g. the result of a source package split or rename, or source packages with a version in the name), it may not need a full review. Submitting a MIR bug with an explanation (but without the full template) or updating/extending on the existing old MIR bug and re-opening it by setting it to "NEW" is sufficient. ---------- This report does not need the full template. The original packages (cups-filters and cups) are in Main already for more than a decade, so repetition of the original MIR would not be useful. cups was already in Ubuntu from the very beginning on and therefore probably in Main since the differentiation of Main and Universe got introduced. The binary packages are named as before (except SONAME of libraries being 2 instead of 1 now), binary packages for libppd added. So current dependencies and seeding should pull in everything (libppd is a library and cups-filters depends on it). libfontembed has been discontinued (folded into libcupsfilters, API removed) but no package uses it (except the components of cups-filters 1.x thenselves). braille-printer-app will be added to this report (or a new simplified MIR report created) as soon as it gets released upstream. Its binary package(s) will need to get seeded. ========== Summary ========================= Source packages to be promoted to Main: - libcupsfilters - libppd - cups-browsed Binary packages to be promoted to Main: - libcupsfilters2 - libcupsfilters2-common - libppd-dev - libppd2 - libppd2-common - ppdc No source packages and no binary packages which are in Main should get demoted to Universe. ========== Overview ======================== Due to a major change in the printing architecture [1] the cups-filters upstream project at OpenPrinting got split into 5 components [2]: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed [1] https://openprinting.github.io/current/#the-new-architecture-for-printing-and-scanning [2] https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ To reflect this in the Debian/Ubuntu packaging also the cups-filters source package there is getting split, rendering 3 new source packages (+) and therefore we need this MIR: Binaries: Source BEFORE (1.x) Source AFTER (2.x) --------------------------------------------------------------------- cups-browsed cups-filters cups-browsed + cups-filters cups-filters cups-filters cups-filters-core-drivers cups-filters cups-filters libcupsfilters-dev cups-filters libcupsfilters + libcupsfilters1 X cups-filters Replaced by                                                   libcupsfilters2 * libcupsfilters2 + libcupsfilters + (NEW) libcupsfilters2-common + libcupsfilters + (NEW) libfontembed-dev X cups-filters REMOVED ** libfontembed X cups-filters REMOVED ** libppd-dev + libppd + (NEW) *** libppd2 + libppd + (NEW) *** libppd2-common + libppd + (NEW) *** ppdc + libppd + (NEW) *** * : libcupsfilters has new API generation/SONAME 1 -> 2 ** : libfontembed code folded into libcupsfilters, API removed, no other      package is using it. ***: libppd contains all PPD-supporting code of CUPS, as in CUPS 3.x      this code will get removed. libppd is for legacy-retro-fitting of      classic CUPS drivers with PPD files. Code comes from CUPS source:      cups/ppd*.[ch], scheduler/cups-driverd.cxx, ppdc/* X: Binary package getting REMOVED from Lunar +: Source or binary package to be promoted to Main via this MIR The purposes of the new generation's binary packages are principally the same as before: - cups-browsed: Daemon to auto-create queues for network printers and to                 form printer clusters - cups-filters: Print data format conversion filters and printer                 communication backends for CUPS 2.x - Complete set - cups-filters-core-drivers: Print data format conversion filters and                 printer communication backends for CUPS 2.x - Essential                 ones for minimum configurations, like mobile or IoT - libcupsfilters-dev: C Header files for libcupsfilters2 - libcupsfilters2: Shared library containing common code for print data                 conversion filters, printer drivers, printer model                 identification and distinction, PDF file manipulation,                 PDF font embedding, color space conversion, ... - libcupsfilters2-common: Architecture-indpendent auxiliary files - libppd2-dev: C Header files for libppd2 - libppd2: Shared library for support of PPD files, parsing the                 files, converting PPD options into IPP attributes,                 managing collections of PPDs, finding PPD for given                 printer, generating PPDs from CUPS' *.drv files - libppd2-common: Architecture-indpendent auxiliary files - ppdc: Command line tools to generate PPD files from *.drv                 files (only for development and debugging, or to                 keep scripts using them working, not end-user-facing) --> ALL THESE BINARY PACKAGES MUST BE IN MAIM, SO THE FOLLOWING BINARY     PACKAGES NEED TO GET PROMOTED:       - libcupsfilters2       - libcupsfilters2-common       - libppd-dev       - libppd2       - libppd2-common       - ppdc For current CUPS (2.x, provided by Debian packages) there is actually no change. CUPS depends on cups-filters ("cups" binary on "cups-filters" binary and "cups-core-drivers" binary on "cups-filters-core-drivers") to get its filters and additional backends which it needs for actual printing, now the new-generation cups-filters. The new "cups-filters" and "cups-filters-core-drivers" depend on "libcupsfilters2" and "libppd2" providing the common functionality they need. "cups-browsed" is recommended by "cups-daemon". I do not know whether any of these packages is also seeded and whether the recommend of "cups-browsed" by "cups-daemon" is strong enough to pull "cups-browsed" into Main when the MIR is approved. cups-core-drivers   |   +--Depends--> cups-filters-core-drivers                   |     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups   |   +--Depends--> cups-filters                   |     +--Depends--> cups-filters-core-drivers     +--Depends--> libcupsfilters2     +--Depends--> libppd2                     |       +--Depends--> libcupsfilters2 cups-daemon   |   +--Recommends--> cups-browsed                      |        +--Depends--> libcupsfilters2        +--Depends--> libppd2          |          +--Depends--> libcupsfilters2 --> SO NO NEW DEPENDENCIES IN PACKAGES ALREADY EXISTING     IN MAIN AND NO NEW SEEDS ARE NEEDED TO ACTUALLY GET EVERYTHING     INTO MAIN AFTER THE APPROVAL OF THIS MIR. As one can see from the table above, the former SOURCE package cups-filters is replaced by 4 SOURCE packages now: - libcupsfilters + - libppd + - cups-filters - cups-browsed + --> ALL THESE SOURCE PACKAGES NEED TO BE IN MAIN, THE ONES WITH + NEED     TO GET PROMOTED. --> CUPS-FILTERS IS ALREADY IN MAIN AND IT SHOULD CONTINUE IN MAIN. The braille-printer-app package is not yet completed upstream. As soon as this is done, it will also get uploaded to Ubuntu and a MIR for it posted. The splitting upstream is done to prepare for the New Architecture of printing, where printer drivers are not filters and PPD files any more but emulators of driverless IPP printers (Printer Applications). So a standard system installation does not need PPD file support any more, so we needed to completely separate the PPD file support code of CUPS and cups-filters into one optionally installable library but conserver as much as possible of the still valuable PPD-independent code in cups-filters, of 20 years of development and experience. Also filters need to get more accesible for Printer Applications, therefore we turned the former individual executables into library functions, the filter functions. With the introduction of libppd all use of libcups is now restricted to functionality which does not support PPD files and therefore will continue to be in libcups of CUPS 3.x ([1], future libcups3 binary package to appear in Ubuntu 24.04 LTS). This way we expect only small changes for the transition from libcups2 to libcups3. [1] https://github.com/OpenPrinting/libcups So we have now: libcupsfilters -------------- All the internal functionality of the filters which formerly was in the individual filter executables (cups-filters and cups-filters-core-drivers binary packages, new source package cups-filters) has moved into libcupsfilters (binary package libcupsfilters2, new source package libcupsfilters) as filter functions (source files cupsfilters/*to*.c*, cupsfilters/ghostscript.c, cupsfilters/pdftopdf/*, infrastructure in cupsfilters/filter.c, API in cupsfilters/filter.h). The handling of printer capabilities (media sizes, margins, color spaces, ...) and matching them with the jobs and job IPP attributes got vastly improved (cupsfilters/ipp.[ch], cupsfilters/raster.[ch].) Also API functions for handling human-readable strings/translations for option and choice names got created (cupsfilters/catalog.[ch]). The strings are taken from CUPS' message catalogs and also downloaded from driverless IPP printers. General functions for printers drivers, filters, color handling, PDF handling, ... from the old libcupsfilters (old binary package libcupsfilters1) got overtaken into the new libcupsfilters. The new libcupsfilters DOES NOT CONTAIN ANY SUPPORT FOR PPD FILES ANY MORE AND DOES NOT DEPEND ON LIBPPD. libppd ------ All PPD support which one finds in Linux distros with a CUPS/cups-filters printing stack is concentrated in libppd now. This way having PPD file support is completely optional. The library only needs to be installed if needed and being in a separate upstream repo and seperate Debian packages its maintenance can be stopped at any time while the maintenance and development of libcupsfilters continues. libppd (binary package libppd2, new source package libppd) is currently used by cups-filters (new binary packages cups-filters and cups-filters-core-drivers, new source package cups-filters) and pappl-retrofit ([1], added to Ubuntu in the next days, used by Printer Application which retro-fit classic CUPS drivers [2]). The former use case is only for systems using CUPS 2.x, the latter is mainly for systems in the New Architecture, using CUPS 3.x or the CUPS Snap [3][4] as these require all printer drivers being Printer Applications. None of the packages of the new cups-filters generation, PAPPL [5], pappl-retrofit, and the new (2.x) generation of CPDB [6] uses any PPD-file supporting functionality of libcups, so that a smooth transition to the libcups of CUPS 3.x is assured. Any PPD file support needs for legacy driver retro-fitting are covered by libppd. [1] https://github.com/OpenPrinting/pappl-retrofit [2] https://openprinting.github.io/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps [3] https://openprinting.github.io/achievements/#the-cups-snap [4] https://github.com/OpenPrinting/cups-snap [5] https://github.com/michaelrsweet/pappl/ [6] https://openprinting.github.io/achievements/#common-print-dialog-backends The source code is nearly completely overtaken from the CUPS source code: PPD file parsing and handling support in libcups (CUPS source: cups/ppd*.[ch], libppd source: ppd/*.c, API: ppd/ppd.h), PPD file collection handling and PPD file assignment to given printer (CUPS source: scheduler/cups-driverd.cxx, libppd source: ppd/ppd-collection.cxx, API: ppd/ppd.h), and generating PPD files from *.drv files (CUPS source: ppdc/*, libppd source: ppd/ppdc*.cxx, API ppd/ppdc.h). The PPD file generator for driverless printers (ppd/ppd-generator.c) is not the one from libcups but the one from the former libcupsfilters1, as that one supports generating the PPDs needed by printer clusters formed by cups-browsed. Some infrastructure got added for keeping PPD file support in the filter executables of CUPS 2.x, in ppd/ppd-filter.c, ppd/ppd-ipp.c, API is in ppd/ppd-filter.h. This infrastructure mainly parses the PPD file and turns the content of the PPD file into printer IPP attributes (what a driverless printer would respond when querying its capabilities). This way the non-PPD-supporting filter functions of libcupsfilters get to know the capabilities of the printer. cups-filters ------------ We get practically the same binaries as we had before in the cups-filters and cups-filters-core-drivers binary packages (old and new source package cups-filters), but they have changed internally: As told here earlier we have moved all the core functionality of the CUPS filters into libcupsfilters to have it available as library functions, the filter functions, so that they can be easily used by Printer Applications. Therefore the actual filter executables used for CUPS 2.x are only small wrappers which call a filter function to do the "dirty work". Only what does not make sense in the future PPD-less world keeps its code in the cups-filters upstream project: Legacy CUPS backends (backend/*), classic CUPS drivers (filter/*pclx*.c, filter/*escpx*.c), and the "driverless" utility (utils/*). A new feature is the "universal" CUPS filter (CUPS wrapper: filter/universal.c, PPD support wrapper in libppd: ppd/ppd-filter.c, core functionality in libcupsfilters: cupsfilters/universal.c). It makes use of having all filters as library functions in libcupsfilters to reduce the number of resource-consuming external executable calls by CUPS. It converts printer from practically any input format to practically any output format by calling chains of filter functions. So CUPS calls a single filter, "universal" instead of a chain of external filters. cups-filters will only be needed as long as we are using CUPS 2.x from Debian packages. If we have a distro using CUPS 3.x (planned from 24.04 LTS on) or the CUPS Snap (any CUPS version, planned from Ubuntu 23.10 on) cups-filters does not make sense any more, as we cannot add filters or backends either because CUPS is running from a sandboxed immutable image or does not support the filter/backend concept any more. cups-browsed ------------ The new cups-browsed binary package and the old one are practically identical in functionality. It is only split into its own upstream repository and with this into its own source Debian package for consistency of the splitting of cups-filters and for major changes in the future [1]. The actual source code suffered only changes for bug fixes and also for adaptation to changes in the API of the new libcupsfilters. It depends on the new libcupsfilters and also on libppd now. In the future it will get turned into a Printer Application [1] and not support and use PPD files any more, dropping the dependency on libppd. As all the rest of the current code from OpenPrinting it only uses non-PPD-supporting functionality of libcups, for a smooth transition to CUPS 3.x. [1] https://wiki.linuxfoundation.org/gsoc/google-summer-code-2023-openprinting-projects#turn_cups-browsed_into_a_printer_application === MIR REQUIREMENTS FOLLOWING TEMPLATE ==== https://github.com/canonical/ubuntu-mir === LIBCUPSFILTERS ========================= [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libcupsfilters It builds for the architectures it is designed to work on. It currently builds and works for the architetcures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - The package is required in Ubuntu Main as it is the libcupsfilters    which the cups-filters 2.x source package does not contain any    more, as it got separated into its own upstream source repo.  - libcupsfilters is part of Ubuntu's printing stack.  - libcupsfilters is part of the update of cups-filters from 1.x to 2.x  - The packages libcupsfilters is a new runtime dependency of the    package cups-filters that we already support  - The packages is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of libcupsfilters: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters  - All vulnerabilities are fixed, version with fix mentioned in the list.  - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - No sbin binaries in libcupsfilters  - Packages libcupsfilters does not install services,    timers or recurring jobs  - Package does not open privileged ports (ports < 1024)  - Package libcupsfilters provides the code for the filters run by    CUPS as the user "lp", to process print jobs. Most of the code is    the same as in the former cups-filters (1.x). [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package libcupsfilters does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libcupsfilters/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/libcupsfilters/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package libcupsfilters is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support    (no printer drivers, only print data file format converters, output     can be displayed with easily available, common free software tools:     evince, Ghostscript, eog, rasterview) [Quality assurance - testing]  - The packages libcupsfilters runs test suites on build time, if they    fail it makes the builds fail, link to build log    - https://launchpad.net/ubuntu/+source/libcupsfilters/2.0~b2-0ubuntu10/+build/25524340/+files/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu10_BUILDING.txt.gz  - The packages libcupsfilters runs autopkgtests, and is    currently passing on all architectures listed under [Availability].    The very first migration process did not yet finish for    libcupsfilters    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libcupsfilters  - The package libcupsfilters does not have failing autopkgtests right now [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log:    https://launchpad.net/ubuntu/+source/libcupsfilters/2.0~b2-0ubuntu10/+build/25524340/+files/buildlog_ubuntu-lunar-amd64.libcupsfilters_2.0~b2-0ubuntu10_BUILDING.txt.gz  - This package does not yield massive lintian Warnings, Errors  - This package has only    P: libcupsfilters source: very-long-line-length-in-source-file 525 >    512 [Makefile.in:1759]    This is not a problem, Makefile.in is auto-generated by the autotools    and the package builds without problems.  - Lintian overrides are not present for libcupsfilters  - This package does not rely on obsolete or about to be demoted    packages.  - This package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules file attached. [UI standards]  - Application is not end-user facing (does not need translation) [Dependencies]  - No further depends or recommends dependencies that are not yet in    main [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 this 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 descriptions explain the packages well Upstream Name are libcupsfilters (unchanged) Link to upstream projects:  - https://github.com/OpenPrinting/libcupsfilters === LIBPPD ================================= [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/libppd It builds for the architectures it is designed to work on. It currently builds and works for the architectures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - To be prepared for the removal of PPD support in CUPS 3.x,    libcupsfilters does not contain any PPD file support any more. The    PPD file support got moved into libppd and cups-filters 2.x which    provides the filters for CUPS 2.x therefore needs libppd to    maintain the PPD support in these filters.  - libppd is part of Ubuntu's printing stack.  - libppd is part of the update of cups-filters from 1.x to 2.x  - libppd is a new runtime dependency of the package cups-filters that    we already support  - The package is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups, which is the origin of the code of libppd: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups  - All vulnerabilities are fixed, version with fix mentioned in the list. Openwall: 'site:www.openwall.com/lists/oss-security cups'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Released", "Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - No sbin binaries in libppd  - Package libppd does not install services timers or recurring jobs  - Package does not open privileged ports (ports < 1024)  - Package libppd provides code for the filters run by CUPS as the    user "lp", to process print jobs. Most of the code is the same as    in libcups2. [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package libppd does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libppd/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/libppd/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package libppd is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support    (no printer drivers, only print data file format converters, output     can be displayed with easily available, common free software tools:     evince, Ghostscript, eog, rasterview) [Quality assurance - testing]  - The package libppd runs test suites on build time, if they fail it    makes the builds fail, links to build log    - https://launchpadlibrarian.net/648114885/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu8_BUILDING.txt.gz  - The package libppd runs autopkgtests, and is currently passing on    all architectures listed under [Availability].    The very first migration process did not yet finish for both    libppd    https://people.canonical.com/~ubuntu-archive/proposed-migration/lunar/update_excuses.html#libppd  - The packages libppd does not have failing autopkgtests right now [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log:    https://launchpadlibrarian.net/648114885/buildlog_ubuntu-lunar-amd64.libppd_2%3A2.0~b2-0ubuntu8_BUILDING.txt.gz  - These packages do not yield massive lintian Warnings, Errors  - No lintian warnings or errors for libppd  - Lintian overrides are not present for libppd  - This package does not rely on obsolete or about to be demoted    packages.  - This package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules files attached. [UI standards]  - Application is not end-user facing (does not need translation)     - Executables in binary package ppdc are only for development and       debugging, or to keep existing scripts running, so nothing for       end users. [Dependencies]  - No further depends or recommends dependencies outside this MIR that    are not yet in main  - There are further dependencies that are not yet in main, the MIR    process for them is handled as part of this bug here.    - libppd depends on libcupsfilters -> in this same MIR [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 this 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 libppd (unchanged) Links to upstream project:  - https://github.com/OpenPrinting/libppd === CUPS-BROWSED =========================== [Availability] The package is uploaded to Ubuntu Universe: https://launchpad.net/ubuntu/+source/cups-browsed It builds for the architectures it is designed to work on. It currently builds and works for the architetcures:   amd64, arm64, armhf, ppc64el, riscv64, s390x [Rationale] Generally, see the above under OVERVIEW for the rationale of this MIR and the need of the packages in question in Main.  - The package is required in Ubuntu Main as it is the cups-browsed    which the cups-filters 2.x source package does not contain any    more, as it got separated into its own upstream source repo.  - cups-browsed is part of Ubuntu's printing stack.  - cups-browsed is part of the update of cups-filters from 1.x to 2.x  - cups-browsed has to be in Main as, as before, it needs to overcome    the lack of support for temporary CUPS queues in some print    dialogs.  - The package is required in Ubuntu Main no later than FF of Lunar,    as cups-filters 2.0~b2 is already uploaded to Lunar Main. [Security] Security vulnerabilities of cups-filters, which is the origin of the code of cups-browsed: CVE: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=cups-filters  - All vulnerabilities are fixed, version with fix mentioned in the list.  - Last vulnerability is from 2015. Openwall: 'site:www.openwall.com/lists/oss-security cups-filters'  - Shows the same vulnerabilities as CVE Ubuntu: https://ubuntu.com/security/cve?package=cups-filters  - Shows the same vulnerabilities as CVE, none as not fixed in a supported    Ubuntu release ("Not vulnerable", "Does not exist") Remark: On all GitHub repositories of OpenPrinting I have activated private bug reporting for security bugs this week. I only need to post a News Flash to announce it.  - no `suid` or `sgid` binaries  - Binary /usr/sbin/cups-browsed (of package cups-browsed) in sbin is    no problem. It is the cups-browsed which we already use for several    years, provided by the cups-filters (1.x) source package.    No actual changes have been done in the functionality of    cups-browsed, only minor bug fixes. Changes in the underlying    libraries (libcupsfilters, libppd) did not change the communication    of cups-browsed with the outside world, but only improve the PPD    files it uses and the reliability of a job being assigned to a    destination printer in a cluster.    The daemon listens to avahi-daemon (via D-Bus) to find out about IPP    network printers (physical devices, remote CUPS queues, Printer    Applications) appearing and disappearing and creates/removes/    modifies print queues on the running CUPS appropriately. It also    listens to CUPS on the D-Bus whether a new job got submitted    and in case it being on a queue managed by cups-browsed tells    to CUPS which is the destination printer.    So it listens on the (system) D-Bus and submits administrative    requests to CUPS (some kind of automatic, UI-less printer setup    tool).  - Package cups-browsed installs daemon, see above.     - /usr/sbin/cups-browsed       - Listens on system D-Bus (avahi-daemon, CUPS)       - Applies administrative requests (creating/removing/modifying         print queues) on CUPS       - Has AppArmor profile  - Package does not open privileged ports (ports < 1024) [Quality assurance - function/usage] The transition from cups-filters 1.x to cups-filters 2.x with the new source package cups-browsed does not cause any user-facing changes. All printing stack operations, as creating and modifying print queues, configuring printers, printing files, ... work as before. The user will only perceive some improvements in printing results due to improvements in internal code consistency, bug fixes, ...  - The package works well right after install [Quality assurance - maintenance]  - The package is maintained well in Debian/Ubuntu and has not too many    and long term critical bugs open    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug    - Ubuntu https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug    - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=cups-filters    - Upstream: https://github.com/OpenPrinting/cups-browsed/issues    - Upstream: https://github.com/OpenPrinting/cups-filters/issues    Note that the new package cups-browsed is not yet introduced in    Debian. It will get introduced to Debian Experimental    soon. Unstable is in freeze for the Bookworm release.  - The package does not deal with exotic hardware we cannot support [Quality assurance - testing]  - The package cups-browsed does not run a test at build time because    as it was part of cups-filters there was no testing of the    cups-browsed daemon.  - The package cups-browsed does not run an autopkgtest because when    cups-browsed was still part of cups-filters there was no autopkgtest,    especially not for the cups-browsed daemon. [Quality assurance - packaging]  - debian/watch is present and works  - debian/control defines a correct Maintainer field  - Build log:    https://launchpadlibrarian.net/647984146/buildlog_ubuntu-lunar-amd64.cups-browsed_2.0~b2-0ubuntu4_BUILDING.txt.gz  - This package does not yield massive lintian Warnings, Errors  - No lintian warnings or errors at all for cups-browsed  - Lintian overrides are present for cups-browsed, but ok because    CUPS needs the special permissions and directory for its backends    # Upstream choices; they need to be run as root    cups-browsed: executable-is-not-world-readable usr/lib/cups/backend/implicitclass 0700    # That's how CUPS does it    cups-browsed: executable-in-usr-lib usr/lib/cups/backend/implicitclass  - This package does not rely on obsolete or about to be demoted    packages.  - These package has no python2 or GTK2 dependencies  - This package will be installed by default, but does not ask debconf    questions higher than medium    - It does not ask debconf questions at all  - Packaging and build is easy, debian/rules file attached. [UI standards]  - Application is not end-user facing (does not need translation) [Dependencies]  - No further depends or recommends dependencies outside this MIR that    are not yet in main  - There are further dependencies that are not yet in main, the MIR    process for them is handled as part of this bug here.    - libppd depends on libcupsfilters -> in this same MIR    - cups-browsed depends on libcupsfilters and libppd -> in this same      MIR [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 all the packages - 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 cups-browsed (unchanged) Links to upstream projects:  - https://github.com/OpenPrinting/cups-browsed ========== Original Description ============ This is a simplified MIR for the splitting of the cups-filters source package. With the second generation (2.x) cups-filters upstream got split into 5 independent component repositories: - libcupsfilters - libppd - cups-filters - braille-printer-app - cups-browsed See https://openprinting.github.io/cups-filters-Second-Generation-First-Beta-Release/ braille-printer-app still needs some upstream work for getting released, the others were already released as 2.0b2. libcupsfilters, cups-filters, and cups-browsed contain mainly the code from the former cups-filters (1.x) which is already in Main. libppd contains code from CUPS (libcups and cups-ppdc) which is also in Main. As of https://github.com/canonical/ubuntu-mir ---------- If a new source package contains only code which is already in main (e.g. the result of a source package split or rename, or source packages with a version in the name), it may not need a full review. Submitting a MIR bug with an explanation (but without the full template) or updating/extending on the existing old MIR bug and re-opening it by setting it to "NEW" is sufficient. ---------- This report does not need the full template. The original packages (cups-filters and cups) are in Main already for more than a decade, so repetition of the original MIR would not be useful. cups was already in Ubuntu from the very beginning on and therefore probably in Main since the differentiation of Main and Universe got introduced. The binary packages are named as before (except SONAME of libraries being 2 instead of 1 now), binary packages for libppd added. So current dependencies and seeding should pull in everything (libppd is a library and cups-filters depends on it). libfontembed has been discontinued (folded into libcupsfilters, API removed) but no package uses it (except the components of cups-filters 1.x thenselves). braille-printer-app will be added to this report (or a new simplified MIR report created) as soon as it gets released upstream. Its binary package(s) will need to get seeded.
2023-02-14 10:09:55 Didier Roche-Tolomelli libcupsfilters (Ubuntu): assignee Didier Roche-Tolomelli (didrocks) Canonical Security Team (canonical-security)
2023-02-14 15:22:02 Didier Roche-Tolomelli cups-browsed (Ubuntu): assignee Didier Roche-Tolomelli (didrocks) Canonical Security Team (canonical-security)
2023-02-14 15:47:12 Didier Roche-Tolomelli cups-browsed (Ubuntu): assignee Canonical Security Team (canonical-security) Ubuntu Security Team (ubuntu-security)
2023-02-14 15:47:19 Didier Roche-Tolomelli libcupsfilters (Ubuntu): assignee Canonical Security Team (canonical-security) Ubuntu Security Team (ubuntu-security)
2023-02-16 20:52:35 Till Kamppeter attachment added debian/libcupsfilters2.symbols https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug/2003259/+attachment/5647901/+files/libcupsfilters2.symbols
2023-02-21 15:32:25 Didier Roche-Tolomelli libppd (Ubuntu): assignee Didier Roche-Tolomelli (didrocks) Ubuntu Security Team (ubuntu-security)
2023-02-21 15:32:49 Didier Roche-Tolomelli libppd (Ubuntu): assignee Ubuntu Security Team (ubuntu-security)
2023-02-21 15:41:11 Didier Roche-Tolomelli libppd (Ubuntu): assignee Ubuntu Security Team (ubuntu-security)
2023-03-22 15:56:36 Till Kamppeter cups-browsed (Ubuntu): importance High Critical
2023-03-22 15:56:38 Till Kamppeter libcupsfilters (Ubuntu): importance High Critical
2023-03-22 15:56:40 Till Kamppeter libppd (Ubuntu): importance High Critical
2023-03-22 20:49:35 Rodrigo Figueiredo Zaiden libcupsfilters (Ubuntu): status New In Progress
2023-03-22 20:49:59 Rodrigo Figueiredo Zaiden libcupsfilters (Ubuntu): status In Progress New
2023-03-22 20:50:03 Rodrigo Figueiredo Zaiden cups-browsed (Ubuntu): status New In Progress
2023-03-23 22:03:38 Rodrigo Figueiredo Zaiden cups-browsed (Ubuntu): assignee Ubuntu Security Team (ubuntu-security)
2023-03-24 04:45:58 Nishit Majithia libcupsfilters (Ubuntu): assignee Ubuntu Security Team (ubuntu-security)
2023-03-24 04:47:19 Nishit Majithia bug added subscriber Nishit Majithia
2023-03-24 11:07:14 Sebastien Bacher libcupsfilters (Ubuntu): status New Fix Released
2023-03-24 13:13:58 Sebastien Bacher cups-browsed (Ubuntu): status In Progress Fix Released
2023-03-24 14:54:30 Mark Esler libppd (Ubuntu): status New Invalid
2023-03-24 14:54:34 Mark Esler libppd (Ubuntu): assignee Ubuntu Security Team (ubuntu-security)
2023-03-24 15:30:28 Till Kamppeter libppd (Ubuntu): status Invalid New
2023-03-24 17:28:44 Mark Esler libppd (Ubuntu): assignee Ubuntu Security Team (ubuntu-security)
2023-03-24 17:31:58 Mark Esler attachment added coverity.txt https://bugs.launchpad.net/ubuntu/+source/libcupsfilters/+bug/2003259/+attachment/5657329/+files/coverity.txt
2023-03-25 00:24:54 Mark Esler libppd (Ubuntu): status New In Progress
2023-03-25 00:24:58 Mark Esler libppd (Ubuntu): assignee Ubuntu Security Team (ubuntu-security)
2023-03-25 00:25:06 Mark Esler bug added subscriber Mark Esler
2023-03-25 09:49:32 Sebastien Bacher libppd (Ubuntu): status In Progress Fix Released