• Bug#1095231: apt,dpkg: two different meanings for the jargon term "comp

    From Simon McVittie@1:229/2 to All on Wed Feb 5 17:00:01 2025
    XPost: linux.debian.bugs.dist
    From: smcv@debian.org

    Package: apt,dpkg
    Severity: wishlist

    Prompted by recent discussion on #debian-devel:

    We have two different jargon meanings for "component" in the dpkg/apt
    packaging ecosystem, which seems like a source of confusion.

    In dpkg-source format 3.0 (quilt) with a multiple-upstream-tarball
    package, a component is the identifier for a secondary .orig tarball,
    and equivalently, the subdirectory of the source tree into which it
    unpacks. For example in `apt source yquake2`, which combines several closely-related upstream projects:

    yquake2_8.41+dfsg.orig.tar.gz
    yquake2_8.41+dfsg.orig-ctf.tar.gz
    yquake2_8.41+dfsg.orig-rogue.tar.gz
    yquake2_8.41+dfsg.orig-xatrix.tar.gz
    yquake2_8.41+dfsg-1.debian.tar.xz
    yquake2_8.41+dfsg-1.dsc

    the components are ctf, rogue and xatrix. I don't think this term
    is necessarily load-bearing API in dpkg itself, but it's part of the configuration file syntax in at least git-buildpackage and uscan. I'm
    not aware of any other jargon terms being used this particular concept.

    Meanwhile, in /etc/apt/sources.list.d/*.sources and in apt archive
    maintenance software like dak and reprepro, a component is something like
    main, contrib or universe, referred to in Policy as an "archive area"
    and in the Debian Social Contract as an "area". To add to the confusion,
    dpkg's deb-src-control(5) uses part of the Section field to store the
    archive area, and apt's apt-ftparchive(1) uses Sections to configure
    the list of archive areas (but a section is something different, like
    libdevel or x11).

    This can result in true statements that don't appear to make sense, like
    the fact that changing a package's component requires ftp team approval,
    but changing a packages's components does not :-)

    Would it be possible for one project or the other to introduce a new name
    for what it now calls components, and eventually deprecate the old name?

    For example apt could introduce "Archive-Areas: main contrib", turn
    Components into an alias for that, and eventually deprecate Components.
    (I'm not suggesting that it should ever actually be removed entirely:
    there is probably too much inertia for that.)

    Or, dpkg could start referring to the parts of a multiple-upstream-tarball
    as something else (subdirectories? subprojects? extra upstreams?), and encourage projects like git-buildpackage and uscan to prefer that name
    and deprecate calling it a component.

    Obviously there would be significant backwards compatibility considerations
    to take into account, either way, so this is not a trivial change.

    smcv

    --- SoupGate-Win32 v1.05
    * Origin: you cannot sedate... all the things you hate (1:229/2)
  • From Julian Andres Klode@1:229/2 to Simon McVittie on Wed Feb 5 18:40:01 2025
    XPost: linux.debian.bugs.dist
    From: jak@debian.org

    On Wed, Feb 05, 2025 at 03:49:03PM +0000, Simon McVittie wrote:
    Package: apt,dpkg
    Severity: wishlist

    Prompted by recent discussion on #debian-devel:

    We have two different jargon meanings for "component" in the dpkg/apt packaging ecosystem, which seems like a source of confusion.

    In dpkg-source format 3.0 (quilt) with a multiple-upstream-tarball
    package, a component is the identifier for a secondary .orig tarball,
    and equivalently, the subdirectory of the source tree into which it
    unpacks. For example in `apt source yquake2`, which combines several closely-related upstream projects:

    yquake2_8.41+dfsg.orig.tar.gz
    yquake2_8.41+dfsg.orig-ctf.tar.gz
    yquake2_8.41+dfsg.orig-rogue.tar.gz
    yquake2_8.41+dfsg.orig-xatrix.tar.gz
    yquake2_8.41+dfsg-1.debian.tar.xz
    yquake2_8.41+dfsg-1.dsc

    the components are ctf, rogue and xatrix. I don't think this term
    is necessarily load-bearing API in dpkg itself, but it's part of the configuration file syntax in at least git-buildpackage and uscan. I'm
    not aware of any other jargon terms being used this particular concept.

    Meanwhile, in /etc/apt/sources.list.d/*.sources and in apt archive maintenance software like dak and reprepro, a component is something like main, contrib or universe, referred to in Policy as an "archive area"
    and in the Debian Social Contract as an "area". To add to the confusion, dpkg's deb-src-control(5) uses part of the Section field to store the
    archive area, and apt's apt-ftparchive(1) uses Sections to configure
    the list of archive areas (but a section is something different, like libdevel or x11).

    This can result in true statements that don't appear to make sense, like
    the fact that changing a package's component requires ftp team approval,
    but changing a packages's components does not :-)

    I don't think there's a meaningful overlap in practice where the use of the term is ambiguous.


    Would it be possible for one project or the other to introduce a new name
    for what it now calls components, and eventually deprecate the old name?

    For example apt could introduce "Archive-Areas: main contrib", turn Components into an alias for that, and eventually deprecate Components.
    (I'm not suggesting that it should ever actually be removed entirely:
    there is probably too much inertia for that.)

    The name was picked over 20 years ago, and changing it now would
    generate more friction than the overlap with dpkg's term currently
    has. We want stuff to be easy to use, and having two ways to do it
    generally isn't.

    Or, dpkg could start referring to the parts of a multiple-upstream-tarball
    as something else (subdirectories? subprojects? extra upstreams?), and encourage projects like git-buildpackage and uscan to prefer that name
    and deprecate calling it a component.

    I think the colloquial verbiage is "additional orig tarball", because
    frankly nobody cares about remembering the name for it, that's also significantly reducing the impact of it.

    --
    debian developer - deb.li/jak | jak-linux.org - free software dev
    ubuntu core developer i speak de, en

    --- SoupGate-Win32 v1.05
    * Origin: you cannot sedate... all the things you hate (1:229/2)