** Changed in: libppd (Ubuntu)
       Status: Invalid => New

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to cups-browsed in Ubuntu.
https://bugs.launchpad.net/bugs/2003259

Title:
  [MIR] libcupsfilters libppd cups-browsed

Status in cups-browsed package in Ubuntu:
  Fix Released
Status in libcupsfilters package in Ubuntu:
  Fix Released
Status in libppd package in Ubuntu:
  New

Bug 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/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.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/cups-browsed/+bug/2003259/+subscriptions


-- 
Mailing list: https://launchpad.net/~desktop-packages
Post to     : desktop-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~desktop-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to