• [RFC] General Resolution to deploy tag2upload

    From Sean Whitton@21:1/5 to All on Wed Jun 12 00:30:02 2024
    Hello everyone,

    This is a draft GR. I'm posting it now for textual review, because of
    the relative shortness of our official discussion periods.

    After some time for review, I'll post again seeking seconds.

    The first sections are an introductory discussion. For the actual GR
    text, scroll down to the bottom of this e-mail. Thanks.

    =====
    INTRODUCTION

    The tag2upload system, designed for deployment on official Debian infrastructure, allows DDs and DMs to make source-only uploads simply by pushing a signed git tag. There are two key advantages:

    - it will be much quicker and easier for us to do most of our uploads

    - it improves the traceability and auditability of our source-only
    uploads, in ways that are particular salient in the wake of xz-utils.

    The system works like this:

    1. Maintainer types 'git debpush' to sign and push a suitable git tag.
    The tag includes certain metadata that makes the maintainer's
    intention to upload fully traceable, and unambiguous.

    2. A robot on DSA infrastructure automatically, reliably and traceably
    builds the source package, and uploads it to the Debian Archive.

    tag2upload will be an additional option for your source-only uploads;
    no-one will be required to use it. For more information on the details
    of the system itself, I've included some links down below.

    The design is complete, and a prototype is fully implemented with a
    thorough test suite.
    In testing, it has been used to perform real uploads.

    As tag2upload is security-sensitive, the design has had careful,
    independent security review from Russ Allbery and Jonathan McDowell, who
    did not have any part in the original design and implementation.
    I note that Jonathan is one of the highly trusted maintainers of our
    keyring of human uploaders.

    =====
    NEED FOR A GR

    So, why am I proposing a GR?

    The ftpmaster team have refused to trust uploads coming from the
    tag2upload service. This GR is to override that decision.

    ftpmaster stated a hard requirement that dak has to be able to
    completely re-perform the verification of maintainer intent done by the tag2upload service. That goal cannot be met without fatally undermining
    the tag2upload design and user experience.

    Russ Allbery, and others, tried very hard to get ftpmaster to explain
    why this should be a requirement, but we never got an answer that we
    could understand as a strong technical objection, despite many attempts.

    We think that ftpmaster's position lies more in simple conservatism,
    being in favour of existing processes by default, than it lies in actual technical arguments against tag2upload.

    While we want people in Debian in critical paths for archive security to
    be relatively conservative, that conservatism can be taken too far, and
    we think that is what has happened in this case.

    In fact, tag2upload significantly *improves* the traceability of our source-only uploads.

    Currently, source packages are constructed from git with relatively
    ad-hoc command line invocations, using whatever tooling the maintainer
    has installed on their laptop. This does not give an adequate level of traceability.

    tag2upload will be a massive *improvement* to traceability since it will restore the formal and traceable link between what most maintainers
    actually work with and treat as canonical (git, nowadays), and what
    Debian as an institution officially publishes (packages).

    =====
    THE DESIGN & IMPLEMENTATION ARE LATE-STAGE

    We wish to be clear that tag2upload can be deployed without *any* code
    changes to dak. It just needs to be given a suitably trusted key,
    very similar to how buildds have trusted keys.

    There are a few loose ends we want to complete to turn the prototype
    into the finished service. Some design adjustments made in response to
    Russ Allbery's security review are still to be implemented, and we will
    arrange how the deployment will work in consultation with DSA.

    Should this GR pass, then the tag2upload project will be unstuck, and
    could be deployed in a matter of months, and the source-only uploads of
    as many of us who want it can become just 'git debpush' and done,
    without any other workflow changes or learning.

    There do not exist any other designs that are anywhere near complete,
    and there are no other implementations, for upload-by-git-tag.

    =====
    LINKS REGARDING THE DESIGN

    https://wiki.debian.org/DebianEvents/gb/2023/MiniDebConfCambridge/Jackson
    -- recent mini-debconf talk outlining the system

    https://salsa.debian.org/dgit-team/dgit/-/blob/master/git-debpush.1.pod
    -- the tool maintainers will use

    https://salsa.debian.org/dgit-team/dgit/-/blob/master/TAG2UPLOAD-DESIGN.txt
    -- the design & deployment of the service

    https://salsa.debian.org/dgit-team/dgit/-/blob/master/tag2upload.5.pod
    -- the syntax & semantics of the tags git-debpush makes

    The design is not expected to change significantly, but we may tweak
    details in response to feedback from d-vote, and while finishing the server-side deployment implementation, in consultation with DSA.

    =====
    BEGIN FORMAL RESOLUTION TEXT

    tag2upload allows DDs and DMs to upload simply by using the
    git-debpush(1) script to push a signed git tag.

    1. tag2upload, in the form designed and implemented by Sean Whitton and
    Ian Jackson, and reviewed by Jonathan McDowell and Russ Allbery,
    should be deployed to official Debian infrastructure.

    2. Under Constitution §4.1(3), we overrule the ftpmaster delegation's
    decision: The Debian archive should be configured to accept and trust
    uploads from the tag2upload service.

    3. Nothing in this resolution should be taken as requiring maintainers
    to use any particular git or salsa workflows.

    END FORMAL RESOLUTION TEXT
    =====

    This resolution will require a simple majority.
    There is no supermajority requirement for Constitution §4.1(3).

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Luca Boccassi@21:1/5 to Sean Whitton on Wed Jun 12 01:50:01 2024
    On Tue, 11 Jun 2024 at 23:25, Sean Whitton <[email protected]> wrote:

    Hello everyone,

    This is a draft GR. I'm posting it now for textual review, because of
    the relative shortness of our official discussion periods.

    After some time for review, I'll post again seeking seconds.

    The first sections are an introductory discussion. For the actual GR
    text, scroll down to the bottom of this e-mail. Thanks.

    =====
    INTRODUCTION

    The tag2upload system, designed for deployment on official Debian infrastructure, allows DDs and DMs to make source-only uploads simply by pushing a signed git tag. There are two key advantages:

    - it will be much quicker and easier for us to do most of our uploads

    - it improves the traceability and auditability of our source-only
    uploads, in ways that are particular salient in the wake of xz-utils.

    The system works like this:

    1. Maintainer types 'git debpush' to sign and push a suitable git tag.
    The tag includes certain metadata that makes the maintainer's
    intention to upload fully traceable, and unambiguous.

    2. A robot on DSA infrastructure automatically, reliably and traceably
    builds the source package, and uploads it to the Debian Archive.

    tag2upload will be an additional option for your source-only uploads;
    no-one will be required to use it. For more information on the details
    of the system itself, I've included some links down below.

    Hi,

    I like the idea of pushing a git tag to upload a lot, thanks for
    working on this!

    One comment on the linked document: https://salsa.debian.org/dgit-team/dgit/-/blob/master/TAG2UPLOAD-DESIGN.txt this just uses the term "dgit" without defining or linking to some documentation. I was not really familiar with it so I was a bit
    confused by it, I'd suggest maybe adding some clarification.

    And on the implementation details, I really do not like the idea of
    having a competing git forge with Salsa. This dgit server seems to
    just be a ye olde git-web interface. If this goes forward, in my
    opinion it should exclusively use Salsa as the git server, to avoid
    duplicating infrastructure. That way we have only one place to look at
    for all git repos.

    Kind regards,
    Luca Boccassi

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Soren Stoutner@21:1/5 to All on Tue Jun 11 17:24:21 2024
    Sean,

    Thanks for taking the time to put this together.

    On Tuesday, June 11, 2024 3:25:02 PM MST Sean Whitton wrote:
    ftpmaster stated a hard requirement that dak has to be able to
    completely re-perform the verification of maintainer intent done by the tag2upload service. That goal cannot be met without fatally undermining
    the tag2upload design and user experience.

    Russ Allbery, and others, tried very hard to get ftpmaster to explain
    why this should be a requirement, but we never got an answer that we
    could understand as a strong technical objection, despite many attempts.

    In order to make an informed decision, can you please explain in what way dak is not able to "completely re-perform the verification of maintainer intent done by the tag2upload service”?

    Thanks.

    --
    Soren Stoutner
    [email protected]
    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEJKVN2yNUZnlcqOI+wufLJ66wtgMFAmZo6rUACgkQwufLJ66w tgM39w//fvNS0Yi/0+X2Jyb3ePkyh8g/3VqxUNV8808jJrh03g5E6N6sMS3cSJFi UJiSamt2f9dv1i4dTokILFuZtGu2VaTeKw9km3BnbnQPgckxY/cX0kjSnOj7fP3s LMuma7SSeUrIfQ553AZv4a1cJi3Op2zc1VCIDCr3IrFBfDWUR0aamx6O3jvPX0B3 ayMhbR+BTbaVK5iaBuJvmV/J+tkAwUzewi9G9blYSBewdp2mZ9zGz2A8m3gcppmv 97aeDtFmBiTcf8/4jLjvTZrPPmrZ1cCeg4LJ/yv0ya/3U2Gp3J5uRAH46TW7FJvJ jWqF3PU1xOmu+cnpaxIvlyGy6X1Uy3tbybkI31WrCBP45bSwkUVI5BHyqJt2iyD1 jK9hrtBE57pimtYDJdzuDaDdLPS93BxwRkrUAqXot0HrYOCcPJbqkqZz3pTojsXP V8AuNlHfAyKt+59OQ6qoTEK8/IMnwZSr819nNQvlCLVOPTsYNqTD5hxF0qvYkJKq b55hRXvps4SwqJPIVc5BXrdpEorO4zJ2hpuRfgU+ngh8Ci5BDpqsDg60/F5nCWNh 2KOftYzZsFwYt2M6xy5+LzmOshmJuHp2KPYGO0MVhVOt7tdId4sD/1GFmLpMHhKZ C5+E31Kc1/4pQmsIzqQ2caFOcXeTkk5HrCdN/2lwlHlkpZuKC34=
    =5/OP
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Soren Stoutner on Wed Jun 12 03:50:01 2024
    Soren Stoutner <[email protected]> writes:
    On Tuesday, June 11, 2024 3:25:02 PM MST Sean Whitton wrote:

    ftpmaster stated a hard requirement that dak has to be able to
    completely re-perform the verification of maintainer intent done by the
    tag2upload service. That goal cannot be met without fatally
    undermining the tag2upload design and user experience.

    Russ Allbery, and others, tried very hard to get ftpmaster to explain
    why this should be a requirement, but we never got an answer that we
    could understand as a strong technical objection, despite many
    attempts.

    In order to make an informed decision, can you please explain in what
    way dak is not able to "completely re-perform the verification of
    maintainer intent done by the tag2upload service”?

    It was never clear to me exactly what this meant. I could speculate, but
    it would be better if one of the people with this objection could state it clearly (assuming they still hold it) rather than having someone else
    attempt to speak for them.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Luca Boccassi on Wed Jun 12 03:40:01 2024
    Luca Boccassi <[email protected]> writes:

    And on the implementation details, I really do not like the idea of
    having a competing git forge with Salsa. This dgit server seems to just
    be a ye olde git-web interface.

    Does it support gitweb? I thought it only supported regular Git
    operations, but I could be mistaken.

    If this goes forward, in my opinion it should exclusively use Salsa as
    the git server, to avoid duplicating infrastructure.

    I think you want the Git archive to be entirely separate from Salsa so
    that it's a reliable source of tracing information. You don't want to
    support force pushes, for example; the whole point is that it should be append-only, which would be a controversial choice for Salsa but which is
    fine for the archives of the uploaded packages. I would also want a much smaller attack surface for that type of record than than GitLab. GitLab
    is designed as a place to do interactive work, not to keep a reliable
    permanent record.

    That Git archive is not parallel to or competitive with Salsa and doesn't provide most of the functionality that Salsa does. It has a different
    purpose.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Soren Stoutner on Wed Jun 12 03:50:01 2024
    Hello,

    On Tue 11 Jun 2024 at 05:24pm -07, Soren Stoutner wrote:

    Sean,

    Thanks for taking the time to put this together.

    On Tuesday, June 11, 2024 3:25:02 PM MST Sean Whitton wrote:
    ftpmaster stated a hard requirement that dak has to be able to
    completely re-perform the verification of maintainer intent done by the
    tag2upload service. That goal cannot be met without fatally undermining
    the tag2upload design and user experience.

    Russ Allbery, and others, tried very hard to get ftpmaster to explain
    why this should be a requirement, but we never got an answer that we
    could understand as a strong technical objection, despite many attempts.

    In order to make an informed decision, can you please explain in what way dak is not able to "completely re-perform the verification of maintainer intent done by the tag2upload service”?

    The short answer is that the input to dak is a source package, not a git
    tag. And it's the latter that is signed by the maintainer, under
    tag2upload.

    A longer answer is that for dak to do that, it would need to reimplement
    all of tag2upload. As you will see from the design docs, we have
    carefully sandboxed the various stages of tag2upload's processing, for
    security isolation. It wouldn't make sense to implement all that again
    on dak. And indeed, the git-to-source-package processing should not
    happen on the same host where we have the master archive signing keys.

    Thanks for the query!

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Sean Whitton on Wed Jun 12 04:20:01 2024
    Hello,

    On Wed 12 Jun 2024 at 09:44am +08, Sean Whitton wrote:

    The short answer is that the input to dak is a source package, not a git
    tag. And it's the latter that is signed by the maintainer, under
    tag2upload.

    A longer answer is that for dak to do that, it would need to reimplement
    all of tag2upload. As you will see from the design docs, we have
    carefully sandboxed the various stages of tag2upload's processing, for security isolation. It wouldn't make sense to implement all that again
    on dak. And indeed, the git-to-source-package processing should not
    happen on the same host where we have the master archive signing keys.

    Let me withdraw this answer. I agree with Russ that what some
    ftpmasters really meant with this objection was never clear, and that
    it's better not to try to speak for them.

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Sean Whitton on Wed Jun 12 07:00:02 2024
    Hi,

    On Wed, 2024-06-12 at 06:25 +0800, Sean Whitton wrote:
    As tag2upload is security-sensitive, the design has had careful,
    independent security review from Russ Allbery and Jonathan McDowell,

    As I said several times before: the implementation has known security
    bugs (unless you fixed them). But I guess this is going to get ignored
    again anyway... Reviewing the design doesn't help with this.

    In addition it reintroduces trust in weak cryptographic hashes which
    effort was spent to remove.

    ftpmaster stated a hard requirement that dak has to be able to
    completely re-perform the verification of maintainer intent done by the tag2upload service.  That goal cannot be met without fatally undermining
    the tag2upload design and user experience.

    That's not the only issue. Known security issues are another.

    In addition from the history of WebPKI compromises, it should we well understood that having several paths to certificate issuance is not a
    good idea. Several paths to introduce source to Debian has similar
    problems.

    THE DESIGN & IMPLEMENTATION ARE LATE-STAGE

    We wish to be clear that tag2upload can be deployed without *any*
    code changes to dak.  It just needs to be given a suitably trusted
    key, very similar to how buildds have trusted keys.

    And we also remove the Debian Maintainer role as dak would no longer
    know who uploaded the package? Debian is larger than only Debian
    Developers.

    Should this GR pass, then the tag2upload project will be unstuck, and
    could be deployed in a matter of months, and the source-only uploads
    of
    as many of us who want it can become just 'git debpush' and done,
    without any other workflow changes or learning.

    If only one could use regular git instead of a custom, non-standard VCS
    built on top of Git that makes some workflows impossible and team
    maintenance harder by not supporting publishing intermediate work. :-(

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to [email protected] on Wed Jun 12 07:30:01 2024
    Ansgar 🙀 <[email protected]> writes:

    As I said several times before: the implementation has known security
    bugs (unless you fixed them). But I guess this is going to get ignored
    again anyway...

    Could you describe what known security vulnerabilities you believe exist, particularly if they are things that aren't already noted in the security review I posted? It's not very helpful to vaguely refer to security vulnerabilities without being specific and showing the analysis that leads
    you to that conclusion. This was one of the frustrating things that
    happened in previous debian-devel discussions as well.

    In addition it reintroduces trust in weak cryptographic hashes which
    effort was spent to remove.

    I think this concern is significantly overblown and attempted to explain precisely why I believe that in my security review. I'll also point out
    that using SHA-256 hashes in *.dsc files does not somehow mean that Debian
    is no longer trusting SHA-1 hashes, given that most Debian development is
    done in Git using SHA-1 hashes.

    I think we're all agreed that switching Git to SHA-256 hashes would be
    great and, once that work is done, we should take advantage of it,
    including in tag2upload.

    And we also remove the Debian Maintainer role as dak would no longer
    know who uploaded the package?

    dak knows who uploaded the package under the tag2upload proposal. That information is included in the signed source package as described in the specification.

    If only one could use regular git instead of a custom, non-standard VCS
    built on top of Git that makes some workflows impossible and team
    maintenance harder by not supporting publishing intermediate work. :-(

    What "custom, non-standard VCS" are you talking about? I am not aware of
    any such thing in the tag2upload proposal. The source package builder
    supports most common ways that Debian stores source packages in Git.
    (There is quite a lot of variety here, so it doesn't support all of them,
    but I think the common ones are reasonably well-covered.)

    The Git tags have to contain some structured metadata because an
    unstructured Git tag doesn't provide enough information to securely
    establish the intent of the tag, and thus there is a tool to conveniently
    make them. If you want to manually create a signed Git tag following the protocol, you can.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Holger Levsen@21:1/5 to All on Wed Jun 12 09:10:01 2024
    Am Tue, Jun 11, 2024 at 10:27:56PM -0700 schrieb Russ Allbery:
    As I said several times before: the implementation has known security
    bugs (unless you fixed them). But I guess this is going to get ignored again anyway...
    Could you describe what known security vulnerabilities you believe exist,

    does it matter if this GR is about a design? currently the RFC is not to
    vote about an implementation... :/

    (to be clear: I do find it very wrong to vote about a design, not an implementation. I'd probably also would find it wrong to vote for an implementation, but it's worse to decide by vote that a design should
    be implemented.)


    --
    cheers,
    Holger

    ⢀⣴⠾⠻⢶⣦⠀
    ⣾⠁⢠⠒⠀⣿⡁ holger@(debian|reproducible-builds|layer-acht).org
    ⢿⡄⠘⠷⠚⠋⠀ OpenPGP: B8BF54137B09D35CF026FE9D 091AB856069AAA1C
    ⠈⠳⣄

    I’ve said it once, and I’ll say it a thousand times: If the penalty for breaking a law is a fine, then that law only exists for the poor.

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEuL9UE3sJ01zwJv6dCRq4VgaaqhwFAmZpR2IACgkQCRq4Vgaa qhyqZg/6Aq7+wyQYYppz3Ba3khb+d8ZcVU+ic+cka0GqOJ6Ox0cZofwcYPMjnVhv gTDRXOnaupFkjO1nbSRMsVj26m6a4xtkMQSoNduZbabiwYmhbqC4uF0qzI9AkFF5 A22dWzmlo4SbiRuB+gRms1Z0X7uxWLG3J6G+sZcgRgHxWoSn1P986xzBSzjIqgmV EGvHtH3XIrSsWouxNBfdgNY7aHdz69CeI83B/BOZ0GZQBA21s3+D2XlZk+g/BhmZ R5NV53WYsDcw5PIb8h8Vmv1JOw0eOASd4nGi/y5vp+9JtxSVonj763ul9/27AW1u OHS/w3rZziL6kmFW7RFPQLlLag6av7W7xumRZbBlCvI0PZO1gO4JA4nxycwjKmUM QtQbQ9FS+Iy7ypQbCH9ETX/xooRr5MzA3h9euFPnA/nBXXAPuPQJBsrqQBz9SAmu PwHRp7lJXkhmOtrbZEsQRnGJr3ntLhXxLo998rs+QA71UxlH6ppglsXjBny8tfJA DG5H6n6vPDxAoAg+xtHs7yY68hvg8yQRIcXp
  • From Gard Spreemann@21:1/5 to Russ Allbery on Wed Jun 12 09:30:01 2024
    Russ Allbery <[email protected]> writes:

    Ansgar 🙀 <[email protected]> writes:

    In addition it reintroduces trust in weak cryptographic hashes which
    effort was spent to remove.

    I think this concern is significantly overblown and attempted to explain precisely why I believe that in my security review. I'll also point out
    that using SHA-256 hashes in *.dsc files does not somehow mean that Debian
    is no longer trusting SHA-1 hashes, given that most Debian development is done in Git using SHA-1 hashes.

    I think we're all agreed that switching Git to SHA-256 hashes would be
    great and, once that work is done, we should take advantage of it,
    including in tag2upload.

    I have not more than skimmed the architecture, so forgive me if this
    makes no sense: Could this fear (whether overblown or not) not be
    alleviated by including in the tag2upload structured metadata a SHA-256
    hash of all the files in the given commit?

    PS: Fantastic work by all involved! Tag2upload seems *wonderful*!


    Best,
    Gard

    --=-=-Content-Type: application/pgp-signature; name="signature.asc"

    -----BEGIN PGP SIGNATURE-----

    iQJGBAEBCgAwFiEEz8XvhRCFHnNVtV6AnRFYKv1UjPoFAmZpTQ4SHGdzcHJAbm9u ZW1wdHkub3JnAAoJEJ0RWCr9VIz6P8oP/RJ5HJRxunr7LX3AsOoHD73rAJR6w8aR NHr9jDp7InXWttVK5reNbslvgdFxdRsUQw8PgPYQmq1TB5x8SiSUzLSV+pGLRy4J 3XIrCfBBVjwK2JRalzYtJxGni1O+hrWEZA/R+gSDmoZkOdHXxVis3QTHWYtWjIP/ rHa4PTF4nbKhTmB4wWC0Fa6X2XDtrcQrGpnRjVv92KRl7wXu/SFnvdKL63UJdqod uIONJLErFNZVf07ipSw+lx0C6YGMR7KCl23n4xCBNTSIGOher2YeLNoV7ZP6z0ih lASfYddJb477VXR4JyQJV9oBFQbywG5Sl1LDuQTqLeynqWKgi5OIJj56EW/gRhtO jTLTE6R8LtGqhlzBenfVrtSAPd3oULH1rvQuFiExB8x/nGnQMwvHNWWmXdaiQbFd IoVME6KeQxTDV2ti6fEPua8x7Wxuix+zMntqpT4DJ2ki+0ycHwNhNNX6Rc4JN3Wq 6VQZ6dETT6Gyh1OXRUjGsHixN+iBIgID3zMBgwZWpCopRcxQZS5mNPmyX/GrTYXf +8UJmDG8rPp7J1FBacDmSRXi9C/C6rFHzybgDhxaiV6D7vSeAB8U530O1j+STEYS VOrKNTTxFVKgIcDJmKViM8CUlNDkT/w2+rkYdMy7n68sigm3IUixJ7vFk06RILdF
    0BnilEEIJqny
    =JKfK
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Luca Boccassi@21:1/5 to Russ Allbery on Wed Jun 12 10:30:01 2024
    On Wed, 12 Jun 2024 at 02:31, Russ Allbery <[email protected]> wrote:

    Luca Boccassi <[email protected]> writes:

    And on the implementation details, I really do not like the idea of
    having a competing git forge with Salsa. This dgit server seems to just
    be a ye olde git-web interface.

    Does it support gitweb? I thought it only supported regular Git
    operations, but I could be mistaken.

    I might be wrong, but this is what this looks like to me (it was
    linked to me on IRC yesterday, wasn't aware of it before):

    https://browse.dgit.debian.org/

    If this goes forward, in my opinion it should exclusively use Salsa as
    the git server, to avoid duplicating infrastructure.

    I think you want the Git archive to be entirely separate from Salsa so
    that it's a reliable source of tracing information. You don't want to support force pushes, for example; the whole point is that it should be append-only, which would be a controversial choice for Salsa but which is fine for the archives of the uploaded packages. I would also want a much smaller attack surface for that type of record than than GitLab. GitLab
    is designed as a place to do interactive work, not to keep a reliable permanent record.

    The git repositories, sure. The git forge? I don't see why. You can
    have these repositories in a separate namespace, which sets strong
    branch and tag protection rules to achieve what you describe. As far
    as I am aware, this is possible to do in Salsa already, it doesn't
    have to be a per-forge rule, it can be per-namespace, I think this is
    possible to achieve in Gitlab. I have not used tag protection rules
    (on gitlab, I used them on github though), but I do regularly use
    branch protection rules on my Salsa repositories.

    To be clear, I am exclusively talking about the git forge, as in salsa.debian.org, not the git repositories as they might exist on
    Salsa under the debian/ namespace or any other namespace.

    Having a separate namespace with strong ACLs seems exactly what you
    want, even if it duplicates the individual repositories (the backend
    git store deduplicates it anyway, so in practice it should be quite
    cheap). Having an entire separate git forge that competes with Salsa
    seems orthogonal to this, and counterproductive for the project.

    That Git archive is not parallel to or competitive with Salsa and doesn't provide most of the functionality that Salsa does. It has a different purpose.

    I disagree strongly. As we have seen in the recent Salsa thread on
    d-private, there are a few but very strongly opinionated people who
    are vehemently against Salsa and would like to see it gone. Having a
    parallel and competing git forge I fear would give them very strong
    ammunition to do so: "if the real uploads and the real repositories
    are on a separate and independent git forge, why have Salsa at all?
    Get rid of it and use the other forge exclusively."

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jonas Smedegaard@21:1/5 to All on Wed Jun 12 10:40:01 2024
    Quoting Luca Boccassi (2024-06-12 10:21:40)
    On Wed, 12 Jun 2024 at 02:31, Russ Allbery <[email protected]> wrote:

    Luca Boccassi <[email protected]> writes:

    And on the implementation details, I really do not like the idea of having a competing git forge with Salsa. This dgit server seems to just be a ye olde git-web interface.

    Does it support gitweb? I thought it only supported regular Git operations, but I could be mistaken.

    I might be wrong, but this is what this looks like to me (it was
    linked to me on IRC yesterday, wasn't aware of it before):

    https://browse.dgit.debian.org/

    If this goes forward, in my opinion it should exclusively use Salsa
    as the git server, to avoid duplicating infrastructure.

    I think you want the Git archive to be entirely separate from Salsa
    so that it's a reliable source of tracing information. You don't
    want to support force pushes, for example; the whole point is that it should be append-only, which would be a controversial choice for
    Salsa but which is fine for the archives of the uploaded packages. I
    would also want a much smaller attack surface for that type of record
    than than GitLab. GitLab is designed as a place to do interactive
    work, not to keep a reliable permanent record.

    The git repositories, sure. The git forge? I don't see why. You can
    have these repositories in a separate namespace, which sets strong
    branch and tag protection rules to achieve what you describe. As far
    as I am aware, this is possible to do in Salsa already, it doesn't
    have to be a per-forge rule, it can be per-namespace, I think this is possible to achieve in Gitlab. I have not used tag protection rules
    (on gitlab, I used them on github though), but I do regularly use
    branch protection rules on my Salsa repositories.

    To be clear, I am exclusively talking about the git forge, as in salsa.debian.org, not the git repositories as they might exist on
    Salsa under the debian/ namespace or any other namespace.

    Having a separate namespace with strong ACLs seems exactly what you
    want, even if it duplicates the individual repositories (the backend
    git store deduplicates it anyway, so in practice it should be quite
    cheap). Having an entire separate git forge that competes with Salsa
    seems orthogonal to this, and counterproductive for the project.

    I fail to recognize how strong ACLs achieves exactly the same separate
    storage on a separate host. Especially when the purpose is to minimize
    attack vectors.

    That Git archive is not parallel to or competitive with Salsa and doesn't provide most of the functionality that Salsa does. It has a different purpose.

    I disagree strongly. As we have seen in the recent Salsa thread on
    d-private, there are a few but very strongly opinionated people who
    are vehemently against Salsa and would like to see it gone. Having a
    parallel and competing git forge I fear would give them very strong ammunition to do so: "if the real uploads and the real repositories
    are on a separate and independent git forge, why have Salsa at all?
    Get rid of it and use the other forge exclusively."

    I don't follow d-private, but sounds to me like that argument goes both
    ways - i.e. also "if the real uploads and the real repositories are on
    (some specially locked down section of) same git forge, why not embrace additional features offered from same vendor of said forge?"


    - Jonas

    --
    * Jonas Smedegaard - idealist & Internet-arkitekt
    * Tlf.: +45 40843136 Website: http://dr.jones.dk/
    * Sponsorship: https://ko-fi.com/drjones

    [x] quote me freely [ ] ask before reusing [ ] keep private
    --============== 00578465379304449=MIME-Version: 1.0 Content-Transfer-Encoding: 7bit
    Content-Description: signature
    Content-Type: application/pgp-signature; name="signature.asc"; charset="us-ascii"

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEn+Ppw2aRpp/1PMaELHwxRsGgASEFAmZpXc4ACgkQLHwxRsGg ASFQYxAAgN8U0ytjqmB5Tq5PusXKEZtXIqeMhrtFkOz9hKvEVvs1jsT6PSwKkYCF tz9VduxwCaCYl6ySR7gv97ves4lEeI2ORWqwLiY78wwaFpJRtvmM3tQ4FmeGCcKa +mG2s4Fe2tZYjHOq2PqHv4mtlSEvEp5a9fv/rUJYPJyXAHAb5HZgsvYct704XWf3 KaHf2vVp+QOZwoW8WbyM518mDuIOhcBYBi3GtyJsZ2lFmBatdg6/iYfwOrOGmNIy crmFcvfJGiAx1OGh5E91Qyhx9HliRvqfYuXRt7FVqqBAHI7lxuebhv937Si+usiO 3IkSvQ3d6DMjlZz3q9dtBVB9RHPyuAfBPQPbwVWEkonMsstTWT/kF3Kp3vFLBhGT UmkjdL9QESU8XVBB6ivFSsJ9y+FekyyoCCf47adCnOcYtDQKJcY9zupxaptj0S/z QAyyujU+BaAW1E2qfMXpytrKKtbUgCVLyQhvudSe
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Gard Spreemann on Wed Jun 12 11:20:01 2024
    Hi,

    On Wed, 2024-06-12 at 09:18 +0200, Gard Spreemann wrote:
    Russ Allbery <[email protected]> writes:
    Ansgar 🙀 <[email protected]> writes:
    In addition it reintroduces trust in weak cryptographic hashes which effort was spent to remove.

    I think this concern is significantly overblown and attempted to explain precisely why I believe that in my security review.  I'll also point out that using SHA-256 hashes in *.dsc files does not somehow mean that Debian is no longer trusting SHA-1 hashes, given that most Debian development is done in Git using SHA-1 hashes.

    I think we're all agreed that switching Git to SHA-256 hashes would be great and, once that work is done, we should take advantage of it, including in tag2upload.

    I have not more than skimmed the architecture, so forgive me if this
    makes no sense: Could this fear (whether overblown or not) not be
    alleviated by including in the tag2upload structured metadata a SHA-256
    hash of all the files in the given commit?

    Yes, that was suggested as a compromise in the past, but tag2upload
    upstream was not interested in having any changes.

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Helmut Grohne@21:1/5 to All on Wed Jun 12 11:20:01 2024
    On Wed, Jun 12, 2024 at 06:50:44AM +0200, Ansgar 🙀 wrote:
    On Wed, 2024-06-12 at 06:25 +0800, Sean Whitton wrote:
    As tag2upload is security-sensitive, the design has had careful, independent security review from Russ Allbery and Jonathan McDowell,

    As I said several times before: the implementation has known security
    bugs (unless you fixed them). But I guess this is going to get ignored
    again anyway... Reviewing the design doesn't help with this.

    In the interest of avoiding repetition it would help to establish a
    reference to earlier discussions. If you don't like to dig into message
    ids, you probably still remember on which list it was discussed and
    maybe also roughly when or on what subject.

    In addition it reintroduces trust in weak cryptographic hashes which
    effort was spent to remove.

    Thanks for reminding. While I've seen arguments in favour of the
    weaknesses of sha1 not affecting our use much, the xz-incident changes
    the weights of those arguments for me. I am now wondering whether we can
    be more proactive about changing the hash function used by git. For new repositories, this seems as simple as git init --object-format=sha256.
    Doing so will make repositories inaccessible to people running buster or
    older and I guess we can live with that limitation. It is not clear to
    me how repositories are converted. To me it seems plausible to deny use
    of sha1 hashes with debpush at this time (even though that is not
    implemented right now).

    I note that use of weak hashes in the current tag2upload is not a
    fundamental blocker but something that I expect proponents to work on in
    case the GR passes. Would one of the proponents confirm that they see
    this as worth spending their time on (on the condition that the GR
    passes)?

    ftpmaster stated a hard requirement that dak has to be able to
    completely re-perform the verification of maintainer intent done by the tag2upload service.  That goal cannot be met without fatally undermining the tag2upload design and user experience.

    That's not the only issue. Known security issues are another.

    In addition from the history of WebPKI compromises, it should we well understood that having several paths to certificate issuance is not a
    good idea. Several paths to introduce source to Debian has similar
    problems.

    I think you this depends on the bigger picture. When the /usr-merge
    transition was started, it was repeatedly sold as opt-in, but it really
    was not meant as opt-in. Maybe tag2upload is similar. While the mail
    thread suggests that it does not have to be used, I wouldn't be
    surprised to be talking about terminating non-git uploads later. Once
    that happens, we'd back to one path of issuance and that one path is
    tag2upload then. It is not entirely clear whether this is the vision or
    not and to me this vision would make the argument for tag2upload
    stronger due to the reason you give.

    We only really have two ways of changing the upload process. Either we temporarily add a new process and later remove the old process or we do
    a flag-day transition. I guess that most of us agree that doing a
    flag-day transition from .dsc uploads to git-debpush would not pass
    muster. So we have little options but adding it if we agree that the
    upload process needs changes.

    THE DESIGN & IMPLEMENTATION ARE LATE-STAGE

    We wish to be clear that tag2upload can be deployed without *any*
    code changes to dak.  It just needs to be given a suitably trusted
    key, very similar to how buildds have trusted keys.

    And we also remove the Debian Maintainer role as dak would no longer
    know who uploaded the package? Debian is larger than only Debian
    Developers.

    This is a policy aspect. When we need to revoke a key used for uploading
    this happens via keyring maintainers as far as I understand, but in
    urgent cases it is ftp master who can also deny upload rights more
    quickly than via a keyring update. In moving to tag2upload as a service external to ftp, we partially move this capability from ftp master to
    the entity running tag2upload (DSA afaiui). Is there a sensible way to
    leave this policy aspect with the ftp team when using the tag2upload
    service? In effect, I'm asking whether ftp could somehow provide an authorization oracle to be used by tag2upload.

    If only one could use regular git instead of a custom, non-standard VCS
    built on top of Git that makes some workflows impossible and team
    maintenance harder by not supporting publishing intermediate work. :-(

    Even though the people behind the tag2upload work are the same as dgit,
    the tag2upload service has been carefully designed to actually work with
    most maintainer views. It also uploads to dgit, but I think tag2upload
    would also work if that dgit part were skipped (please correct me if I'm
    wrong about this). Hence, tag2upload provides a very important value to
    me: I then get a an authentication chain from the Debian archive signing
    key to the actual git object used for uploading. That is a property that
    I would formerly only get from using dgit and only for the dgit view.
    With tag2upload, we would be authenticating actual maintainer tags of maintainer histories on salsa from the archive signing key. To me, this
    is a significant step affecting my workflows in a positive way.

    Helmut

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Holger Levsen on Wed Jun 12 11:20:01 2024
    Hi,

    On Wed, 2024-06-12 at 08:59 +0200, Holger Levsen wrote:
    Am Tue, Jun 11, 2024 at 10:27:56PM -0700 schrieb Russ Allbery:
    As I said several times before: the implementation has known
    security
    bugs (unless you fixed them). But I guess this is going to get
    ignored
    again anyway...
    Could you describe what known security vulnerabilities you believe
    exist,

    does it matter if this GR is about a design? currently the RFC is not
    to vote about an implementation... :/

    As far as I understand, the GR is about pushing the design and
    implementation as is, without any changes. It very explicitly says so.

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Luca Boccassi@21:1/5 to Helmut Grohne on Wed Jun 12 11:40:01 2024
    On Wed, 12 Jun 2024 at 10:14, Helmut Grohne <[email protected]> wrote:

    On Wed, Jun 12, 2024 at 06:50:44AM +0200, Ansgar 🙀 wrote:
    In addition it reintroduces trust in weak cryptographic hashes which
    effort was spent to remove.

    Thanks for reminding. While I've seen arguments in favour of the
    weaknesses of sha1 not affecting our use much, the xz-incident changes
    the weights of those arguments for me. I am now wondering whether we can
    be more proactive about changing the hash function used by git. For new repositories, this seems as simple as git init --object-format=sha256.
    Doing so will make repositories inaccessible to people running buster or older and I guess we can live with that limitation. It is not clear to
    me how repositories are converted. To me it seems plausible to deny use
    of sha1 hashes with debpush at this time (even though that is not
    implemented right now).

    I note that use of weak hashes in the current tag2upload is not a
    fundamental blocker but something that I expect proponents to work on in
    case the GR passes. Would one of the proponents confirm that they see
    this as worth spending their time on (on the condition that the GR
    passes)?

    A side note, but related: recently I had the (dis)pleasure of having
    to deal with a git repository that was switched to sha256 (SUSE's
    Gitea instance). The conversion is destructive, and breaks, for
    example, git submodules functionality (a sha1 repository cannot use
    sha256 submodules). So I'd be very careful in assuming repositories
    can be converted later.

    It would seem to me to be much, much safer to do this from day one:
    wait for Gitlab to introduce sha256 (they are bound to, as there's
    really no choice), then add a tag2upload namespace that forces all
    repos under it to use sha256, and use it from the get-go.

    Converting later I am afraid would risk causing a huge amount of pain,
    from the experience dealing with this.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Holger Levsen@21:1/5 to All on Wed Jun 12 11:40:01 2024
    On Wed, Jun 12, 2024 at 11:14:53AM +0200, Ansgar 🙀 wrote:
    As far as I understand, the GR is about pushing the design and
    implementation as is, without any changes. It very explicitly says so.

    the RFC for this GR only links to some design documents, at least
    that's what the RFC says, I haven't followed those links yet.

    And it certainly doesnt describe a (minimal) version/git tag/release of said implementation.


    --
    cheers,
    Holger

    ⢀⣴⠾⠻⢶⣦⠀
    ⣾⠁⢠⠒⠀⣿⡁ holger@(debian|reproducible-builds|layer-acht).org
    ⢿⡄⠘⠷⠚⠋⠀ OpenPGP: B8BF54137B09D35CF026FE9D 091AB856069AAA1C
    ⠈⠳⣄

    “We live in capitalism. Its power seems inescapable. So did the divine right
    of kings. Any human power can be resisted and changed by human beings.
    Resistance and change often begin in art, and very often in our art, the art
    of words.” ― Ursula K. Le Guin

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEuL9UE3sJ01zwJv6dCRq4VgaaqhwFAmZpa1wACgkQCRq4Vgaa qhzmuA//TRAijZdXWbyDs2w837lf8wYxjopomxbYQA7VKNr/OW/Ef5m3k4f8GS7o N87c4tQKZZZ0sNUjub+j6fsP5M4fFNW+CBVoXdAKW99jUsWmlnSJGmcLdjDwYmFc 5N7qu7fSiK3JKUWGhrxRqko8yH8ikn5qjP0JKhZSFDl3CzF3uHGb/Ks8xOb0woaM 1vyWtDcMQp5eSzrJAQx3Y5GV5Lxf1yC9pDSfT2GzQth1VkuOLvykIadrRfl8/jQl cQY29q18UXhXU97W13xgWQGV6urislxPbWh9xcciEstx7pXtkbZaTUKxcO/1nEG/ 4LTQGoDjPEayQP20fmNUzhQTItHh16NxyRh1ATUZRiv4z9iR/ylWfjqpfFPyeeu/ 7TZutWIGRINB96XBVeb309y31AGV0VUBteUwxNYuwNp
  • From Sean Whitton@21:1/5 to All on Wed Jun 12 13:00:02 2024
    Hello,

    On Wed 12 Jun 2024 at 11:10am +02, Ansgar 🙀 wrote:

    On Wed, 2024-06-12 at 09:18 +0200, Gard Spreemann wrote:

    I have not more than skimmed the architecture, so forgive me if this
    makes no sense: Could this fear (whether overblown or not) not be
    alleviated by including in the tag2upload structured metadata a SHA-256
    hash of all the files in the given commit?

    Yes, that was suggested as a compromise in the past, but tag2upload
    upstream was not interested in having any changes.

    We are (and were) interested in all well-motivated change proposals.

    Gard, thank you for your interest. I will not reply directly to what
    you say, because I do not think that it is productive to discuss these questions at this level of generality.

    Fortunately, we have Russ's security review to use as a basis for
    discussion. This we did not have four years ago.

    If you think there is an improvement to be made, then I would ask you to

    - identify the relevant attack vector enumerated in the report

    - explain why the current design does not adequately address the threat

    - explain how your proposed change would address the threat in a way
    that the current design does not.

    We will not do ourselves any favours if we make the design and
    implementation more complex without being sure that in doing so we are
    actually mitigating any threats.

    --
    Sean Whitton

    --=-=-Content-Type: application/pgp-signature; name="signature.asc"

    -----BEGIN PGP SIGNATURE-----

    iQJNBAEBCgA3FiEEm5FwB64DDjbk/CSLaVt65L8GYkAFAmZpfVMZHHNwd2hpdHRv bkBzcHdoaXR0b24ubmFtZQAKCRBpW3rkvwZiQGpND/99IcAIFmV9DJ3rf0ZYtNV/ 1UzauVQROM8A5lTmdhW9HDbTNDXX8FrUbSpapXpry3RAtAhdX2fXSH/Ev6OhCQFT mGJVaWg1yMpg0PlJbzZBrCJIIqKqES3d23j5tJgITCMHQYiXvoqo4J4tB30TqT0Y llz4Mg+l1bdJPHyewG0LVKqbzYGKg6supkyHBqsGKidcLdmiQtGOvDRZw51xkU6w etRqPkbDsezQ+0ijduBSOevBSYk/HW3+gBg1z9o1zhjqDRevdbeJ/TmxBSJWboqT wg80/nhlTFnhn/hYzFFqLsl2zY0BMlyAteZ8L+2g839CfJueWKGls47XtrbAYJ5P xFeTX7Dic1/nGHd3rMiJm1YzHB6QMTNaMsCSecPUTj9oFLc4VdLpYKdreKEboLcX GoHImUcyqPDGOAithjihCF+3p7W090skBVQxj7a7sJm5E/4/odmzWv0KHshmnQWR sNZGzxcjPIxL0qTK1LxWW6809iaat6Via9ybucQfbHIr8AYbINtaR0JQS3hA4jHB 4Vyh3qi2X1syl//osRSEXd2ks/v4Q9+CM6QkiERqI3Mmbl9aJTa1NOGO7HiJ1ukW KG8CFOm/n9m+dVEJechJydBrziA/vweOBo98NqOYzq/JBXxqbykDH+vmzCZ3Nkk0 Ock+11/stcCg6zOrh6T1zg==OKjs
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Us
  • From Luca Boccassi@21:1/5 to Jonas Smedegaard on Wed Jun 12 12:30:02 2024
    On Wed, 12 Jun 2024 at 09:35, Jonas Smedegaard <[email protected]> wrote:

    Quoting Luca Boccassi (2024-06-12 10:21:40)
    On Wed, 12 Jun 2024 at 02:31, Russ Allbery <[email protected]> wrote:

    Luca Boccassi <[email protected]> writes:

    And on the implementation details, I really do not like the idea of having a competing git forge with Salsa. This dgit server seems to just be a ye olde git-web interface.

    Does it support gitweb? I thought it only supported regular Git operations, but I could be mistaken.

    I might be wrong, but this is what this looks like to me (it was
    linked to me on IRC yesterday, wasn't aware of it before):

    https://browse.dgit.debian.org/

    If this goes forward, in my opinion it should exclusively use Salsa
    as the git server, to avoid duplicating infrastructure.

    I think you want the Git archive to be entirely separate from Salsa
    so that it's a reliable source of tracing information. You don't
    want to support force pushes, for example; the whole point is that it should be append-only, which would be a controversial choice for
    Salsa but which is fine for the archives of the uploaded packages. I would also want a much smaller attack surface for that type of record than than GitLab. GitLab is designed as a place to do interactive
    work, not to keep a reliable permanent record.

    The git repositories, sure. The git forge? I don't see why. You can
    have these repositories in a separate namespace, which sets strong
    branch and tag protection rules to achieve what you describe. As far
    as I am aware, this is possible to do in Salsa already, it doesn't
    have to be a per-forge rule, it can be per-namespace, I think this is possible to achieve in Gitlab. I have not used tag protection rules
    (on gitlab, I used them on github though), but I do regularly use
    branch protection rules on my Salsa repositories.

    To be clear, I am exclusively talking about the git forge, as in salsa.debian.org, not the git repositories as they might exist on
    Salsa under the debian/ namespace or any other namespace.

    Having a separate namespace with strong ACLs seems exactly what you
    want, even if it duplicates the individual repositories (the backend
    git store deduplicates it anyway, so in practice it should be quite
    cheap). Having an entire separate git forge that competes with Salsa
    seems orthogonal to this, and counterproductive for the project.

    I fail to recognize how strong ACLs achieves exactly the same separate storage on a separate host. Especially when the purpose is to minimize attack vectors.

    As per the security review just shared, admin access to Salsa allows
    to push commits anyway which would get uploaded just the same, and
    again as per security review, this case benefits from centralizing:
    one host to maintain, and one set of admins to trust, is better than
    two. Especially as Salsa is Gitlab, which is maintained upstream and
    benefits from the many-eyes-and-many-users situation, while a
    completely custom local git forge reimplementation, other than
    inevitably suffering from bitrot at some point in the future, like all
    custom infrastructure, will have the disadvantage that nobody else
    uses it. This is the reason Alioth is gone, and it's a very good
    reason.

    That Git archive is not parallel to or competitive with Salsa and doesn't provide most of the functionality that Salsa does. It has a different purpose.

    I disagree strongly. As we have seen in the recent Salsa thread on d-private, there are a few but very strongly opinionated people who
    are vehemently against Salsa and would like to see it gone. Having a parallel and competing git forge I fear would give them very strong ammunition to do so: "if the real uploads and the real repositories
    are on a separate and independent git forge, why have Salsa at all?
    Get rid of it and use the other forge exclusively."

    I don't follow d-private, but sounds to me like that argument goes both
    ways - i.e. also "if the real uploads and the real repositories are on
    (some specially locked down section of) same git forge, why not embrace additional features offered from same vendor of said forge?"

    I don't follow, we already use features from Salsa? Like the CI
    pipeline, which is awesome. ACLs on repositories are not really unique
    or particular to Github, modern forges pretty much have to support
    them, Github has them too.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jonas Smedegaard@21:1/5 to All on Wed Jun 12 13:10:01 2024
    Quoting Luca Boccassi (2024-06-12 12:28:21)
    On Wed, 12 Jun 2024 at 09:35, Jonas Smedegaard <[email protected]> wrote:

    Quoting Luca Boccassi (2024-06-12 10:21:40)
    On Wed, 12 Jun 2024 at 02:31, Russ Allbery <[email protected]> wrote:

    Luca Boccassi <[email protected]> writes:

    And on the implementation details, I really do not like the idea of having a competing git forge with Salsa. This dgit server seems to just
    be a ye olde git-web interface.

    Does it support gitweb? I thought it only supported regular Git operations, but I could be mistaken.

    I might be wrong, but this is what this looks like to me (it was
    linked to me on IRC yesterday, wasn't aware of it before):

    https://browse.dgit.debian.org/

    If this goes forward, in my opinion it should exclusively use Salsa as the git server, to avoid duplicating infrastructure.

    I think you want the Git archive to be entirely separate from Salsa
    so that it's a reliable source of tracing information. You don't
    want to support force pushes, for example; the whole point is that it should be append-only, which would be a controversial choice for
    Salsa but which is fine for the archives of the uploaded packages. I would also want a much smaller attack surface for that type of record than than GitLab. GitLab is designed as a place to do interactive work, not to keep a reliable permanent record.

    The git repositories, sure. The git forge? I don't see why. You can
    have these repositories in a separate namespace, which sets strong
    branch and tag protection rules to achieve what you describe. As far
    as I am aware, this is possible to do in Salsa already, it doesn't
    have to be a per-forge rule, it can be per-namespace, I think this is possible to achieve in Gitlab. I have not used tag protection rules
    (on gitlab, I used them on github though), but I do regularly use
    branch protection rules on my Salsa repositories.

    To be clear, I am exclusively talking about the git forge, as in salsa.debian.org, not the git repositories as they might exist on
    Salsa under the debian/ namespace or any other namespace.

    Having a separate namespace with strong ACLs seems exactly what you
    want, even if it duplicates the individual repositories (the backend
    git store deduplicates it anyway, so in practice it should be quite cheap). Having an entire separate git forge that competes with Salsa seems orthogonal to this, and counterproductive for the project.

    I fail to recognize how strong ACLs achieves exactly the same separate storage on a separate host. Especially when the purpose is to minimize attack vectors.

    As per the security review just shared, admin access to Salsa allows
    to push commits anyway which would get uploaded just the same, and
    again as per security review, this case benefits from centralizing:
    one host to maintain, and one set of admins to trust, is better than
    two. Especially as Salsa is Gitlab, which is maintained upstream and
    benefits from the many-eyes-and-many-users situation, while a
    completely custom local git forge reimplementation, other than
    inevitably suffering from bitrot at some point in the future, like all
    custom infrastructure, will have the disadvantage that nobody else
    uses it. This is the reason Alioth is gone, and it's a very good
    reason.

    So your argument is that that strong ACLs achieve exactly the same as
    separate storage on a separate host, because separate storage on a
    separate host inevitably leads to bitrot and lack of eyeballs.

    I rest my case.

    That Git archive is not parallel to or competitive with Salsa and doesn't
    provide most of the functionality that Salsa does. It has a different purpose.

    I disagree strongly. As we have seen in the recent Salsa thread on d-private, there are a few but very strongly opinionated people who
    are vehemently against Salsa and would like to see it gone. Having a parallel and competing git forge I fear would give them very strong ammunition to do so: "if the real uploads and the real repositories
    are on a separate and independent git forge, why have Salsa at all?
    Get rid of it and use the other forge exclusively."

    I don't follow d-private, but sounds to me like that argument goes both ways - i.e. also "if the real uploads and the real repositories are on (some specially locked down section of) same git forge, why not embrace additional features offered from same vendor of said forge?"

    I don't follow, we already use features from Salsa? Like the CI
    pipeline, which is awesome. ACLs on repositories are not really unique
    or particular to Github, modern forges pretty much have to support
    them, Github has them too.

    Sorry, I cannot possibly get a point across a cloud of awesomeness.

    - Jonas

    --
    * Jonas Smedegaard - idealist & Internet-arkitekt
    * Tlf.: +45 40843136 Website: http://dr.jones.dk/
    * Sponsorship: https://ko-fi.com/drjones

    [x] quote me freely [ ] ask before reusing [ ] keep private --==============47098541218245506=MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Description: signature
    Content-Type: application/pgp-signature; name="signature.asc"; charset="us-ascii"

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEn+Ppw2aRpp/1PMaELHwxRsGgASEFAmZpgIQACgkQLHwxRsGg ASFIvA/+NYeJREqt6KxFm/dxEojKpYXZ2n6i3Z+sBl9GkPU91CkNVE51+0BsEHaH QD2p7Cs2PvKOvO1l7w+kQznBjRlb3Y92FLKtHD2zytVXvLEstJqDvVj71jDS2zKo KG4/u+gw0kCikVT9YuseDLRn8FZ/nQruhtFf3l2u+QmTuPWq0BJvhH0kcrg/CPsw LGKJH04/W+JSUV/x2hQRI95i2WE8mZ25Gce+U8wdIhzF1wViMf/ZV7op3LwIXWD/ zHwa1Vea4Dazl67VtBy6gfSqAStavGaFmw1wO0hnC33rOPalzR7o8lYj8Jb5j4D3 k8aNy30kY8ZrT1pOPGac353yLfEpucF7vyoAnbA5MKaEcd6ZNdXWj7u7LDg/zrgc d9UwPBqF9gvJSHvPyQv07IywlOPCIiNfE5ijnURcpoEU4HUeBF9NvMm/0WlpMoDL Lf04LyOBBn95zNtB2/yP5VJAlaWgbpRkETPBh0f5
  • From Ian Jackson@21:1/5 to Luca Boccassi on Wed Jun 12 13:30:02 2024
    Luca Boccassi writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    a completely custom local git forge reimplementation, other than
    inevitably suffering from bitrot at some point in the future, like
    all custom infrastructure, will have the disadvantage that nobody
    else uses it.

    The only significant custom code on the dgit repos git server is the
    program `dgit-repos-server` which performs access control for
    `git push`.

    This program is needed because access control for uploading in Debian
    is based on PGP signatures and the archive keyring, not ssh keys.
    Ie, it is the implementation of the dak upload policy, but for git,
    based on signed tags.

    (A design goal for tag2upload and dgit is to work *within* the
    existing workfllws, access control model, and so on. So tag2upload's
    access control is precisely that of the Debian archive.)

    dgit-repos-server has existed since 2014 and is currently 1500 lines
    long. It is part of src:dgit and dgit-infrastructure.deb, and is
    thoroughly tested in CI. I don't think it's in significant danger of
    rotting.

    This is the reason Alioth is gone, and it's a very good reason.

    Indeed dgit-repos-server was written to get rid of a dependency on
    Alioth, well before it was even known that Alioth was going to be
    retired.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Luca Boccassi@21:1/5 to Jonas Smedegaard on Wed Jun 12 13:20:01 2024
    On Wed, 12 Jun 2024 at 12:03, Jonas Smedegaard <[email protected]> wrote:

    Quoting Luca Boccassi (2024-06-12 12:28:21)
    On Wed, 12 Jun 2024 at 09:35, Jonas Smedegaard <[email protected]> wrote:

    Quoting Luca Boccassi (2024-06-12 10:21:40)
    On Wed, 12 Jun 2024 at 02:31, Russ Allbery <[email protected]> wrote:

    Luca Boccassi <[email protected]> writes:

    And on the implementation details, I really do not like the idea of having a competing git forge with Salsa. This dgit server seems to just
    be a ye olde git-web interface.

    Does it support gitweb? I thought it only supported regular Git operations, but I could be mistaken.

    I might be wrong, but this is what this looks like to me (it was
    linked to me on IRC yesterday, wasn't aware of it before):

    https://browse.dgit.debian.org/

    If this goes forward, in my opinion it should exclusively use Salsa as the git server, to avoid duplicating infrastructure.

    I think you want the Git archive to be entirely separate from Salsa so that it's a reliable source of tracing information. You don't want to support force pushes, for example; the whole point is that it should be append-only, which would be a controversial choice for Salsa but which is fine for the archives of the uploaded packages. I would also want a much smaller attack surface for that type of record than than GitLab. GitLab is designed as a place to do interactive work, not to keep a reliable permanent record.

    The git repositories, sure. The git forge? I don't see why. You can have these repositories in a separate namespace, which sets strong branch and tag protection rules to achieve what you describe. As far
    as I am aware, this is possible to do in Salsa already, it doesn't
    have to be a per-forge rule, it can be per-namespace, I think this is possible to achieve in Gitlab. I have not used tag protection rules
    (on gitlab, I used them on github though), but I do regularly use branch protection rules on my Salsa repositories.

    To be clear, I am exclusively talking about the git forge, as in salsa.debian.org, not the git repositories as they might exist on
    Salsa under the debian/ namespace or any other namespace.

    Having a separate namespace with strong ACLs seems exactly what you want, even if it duplicates the individual repositories (the backend git store deduplicates it anyway, so in practice it should be quite cheap). Having an entire separate git forge that competes with Salsa seems orthogonal to this, and counterproductive for the project.

    I fail to recognize how strong ACLs achieves exactly the same separate storage on a separate host. Especially when the purpose is to minimize attack vectors.

    As per the security review just shared, admin access to Salsa allows
    to push commits anyway which would get uploaded just the same, and
    again as per security review, this case benefits from centralizing:
    one host to maintain, and one set of admins to trust, is better than
    two. Especially as Salsa is Gitlab, which is maintained upstream and benefits from the many-eyes-and-many-users situation, while a
    completely custom local git forge reimplementation, other than
    inevitably suffering from bitrot at some point in the future, like all custom infrastructure, will have the disadvantage that nobody else
    uses it. This is the reason Alioth is gone, and it's a very good
    reason.

    So your argument is that that strong ACLs achieve exactly the same as separate storage on a separate host, because separate storage on a
    separate host inevitably leads to bitrot and lack of eyeballs.

    I rest my case.

    No, my argument is that append-only can (as far as I can tell) be
    achieved on Salsa too, it doesn't seem to necessitate a bespoke forge.
    The centralizing argument is not mine, it's from the security review
    that was published this morning:

    "My security recommendation in this case is therefore to centralize
    the risk as much as possible, moving it off of individual uploader
    systems with unknown security profiles and onto a central system that
    can be analyzed and iteratively improved."

    https://lists.debian.org/debian-vote/2024/06/msg00004.html

    That Git archive is not parallel to or competitive with Salsa and doesn't
    provide most of the functionality that Salsa does. It has a different
    purpose.

    I disagree strongly. As we have seen in the recent Salsa thread on d-private, there are a few but very strongly opinionated people who
    are vehemently against Salsa and would like to see it gone. Having a parallel and competing git forge I fear would give them very strong ammunition to do so: "if the real uploads and the real repositories
    are on a separate and independent git forge, why have Salsa at all?
    Get rid of it and use the other forge exclusively."

    I don't follow d-private, but sounds to me like that argument goes both ways - i.e. also "if the real uploads and the real repositories are on (some specially locked down section of) same git forge, why not embrace additional features offered from same vendor of said forge?"

    I don't follow, we already use features from Salsa? Like the CI
    pipeline, which is awesome. ACLs on repositories are not really unique
    or particular to Github, modern forges pretty much have to support
    them, Github has them too.

    Sorry, I cannot possibly get a point across a cloud of awesomeness.

    "Having an easy-to-use and working CI is really bad for a software
    development organization, actually" is... a bold take, no doubt about
    that.

    But anyway, thanks for proving my point for me: there is a small but
    loud minority who would like to kill Salsa, and this proposal as
    implemented would help them achieve that goal. If it goes to a GR,
    this is enough to make me vote against it, as while the concept is
    really nice and I like it a lot, it's not worth jeopardizing Salsa's
    existence.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Bastian Blank@21:1/5 to Holger Levsen on Wed Jun 12 13:30:02 2024
    On Wed, Jun 12, 2024 at 08:59:46AM +0200, Holger Levsen wrote:
    Am Tue, Jun 11, 2024 at 10:27:56PM -0700 schrieb Russ Allbery:
    As I said several times before: the implementation has known security bugs (unless you fixed them). But I guess this is going to get ignored again anyway...
    Could you describe what known security vulnerabilities you believe exist,

    does it matter if this GR is about a design? currently the RFC is not to
    vote about an implementation... :/

    If we need a design, then we can easily avoid the problem points. There
    is a working counter proposal open:

    https://bblank.thinkmo.de/introducing-uploads-debian-git.html

    Bastian

    --
    Those who hate and fight must stop themselves -- otherwise it is not stopped.
    -- Spock, "Day of the Dove", stardate unknown

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Luca Boccassi on Wed Jun 12 13:40:01 2024
    Luca Boccassi writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    On Wed, 12 Jun 2024 at 02:31, Russ Allbery <[email protected]> wrote:
    Does it support gitweb? I thought it only supported regular Git operations, but I could be mistaken.

    I might be wrong, but this is what this looks like to me (it was
    linked to me on IRC yesterday, wasn't aware of it before):

    https://browse.dgit.debian.org/

    Thanks for taking an interest.

    That is indeed a cgit view of the dgit git server.

    The git repositories, sure. The git forge?

    I'm not sure what you mean by "forge". I think "forge" means
    "something like gitlab / sourcehut / github / ...". Ie, a system
    which doesn't just do git repository hosting, but also has (some or
    all of) a linked issue tracker, merge request review systme,
    discussion tooling, CI, etc.

    The t2u/dgit git server doesn't have any of those things. It's purely
    a git server, with some bespoke access control. So I don't think it's
    a "forge".

    It *does* present the contents of its repositories via a web interface
    for use by a web browser, but that view is completely read-only.
    (Indeed in the current setup in Debian it's served from a mirror.)

    Whatever the definition of "forge" the key point you are making is
    that you see it as competing with Salsa. But, I don't think it does
    compete with Salsa. It doesn't offer any of the useful features that
    Salsa has.

    (In another sense, the Debian archive + ci.debian.net + the BTS +
    britney etc. etc., *is* competing with Salsa. In this view of things, browse.dgit.d.o is a view of part of the archive. But I don't think
    that's where you're coming from.)

    Salsa is not really suitable for use as the t2u/dgit repos git server,
    for the reasons others have explained in this thread. Very early in
    dgit's history, the dgit repos were hosted on Alioth, but we replaced
    that with a dedicated server for many reasons, some of which are security-related and discussed in Russ's review.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Holger Levsen on Wed Jun 12 13:40:01 2024
    Holger Levsen writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    does it matter if this GR is about a design? currently the RFC is not to
    vote about an implementation... :/

    (to be clear: I do find it very wrong to vote about a design, not an implementation. I'd probably also would find it wrong to vote for an implementation, but it's worse to decide by vote that a design should
    be implemented.)

    As noted by Sean, most of the implementation already exists.

    I demonstrated an upload in a lightning talk in Curitiba in 2019,
    and again in my talk in the 2023 Cambridge MiniDebconf. [1]

    I stopped working on the final implementation details when it became
    clear that deployment would be rejected by ftpmaster. Are you saying
    you think I should complete the programming work now, and hope that
    the political blockage will be overcome in the future? It's been 4
    years already and there has been no movement.

    Ian.

    [1]
    video of my 2023 talk, slides, and transcript:
    https://wiki.debian.org/DebianEvents/gb/2023/MiniDebConfCambridge/Jackson

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Holger Levsen on Wed Jun 12 13:50:01 2024
    Holger Levsen writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    the RFC for this GR only links to some design documents, at least
    that's what the RFC says, I haven't followed those links yet.

    And it certainly doesnt describe a (minimal) version/git tag/release of said implementation.

    I think we probably need to provide more links, then.
    Let me try to help.

    The implementation is in src:dgit, which is maintained here:
    https://salsa.debian.org/dgit-team/dgit

    The tag generation is done by `git-debpush`:
    https://salsa.debian.org/dgit-team/dgit/-/blob/master/git-debpush?ref_type=heads

    The tag interpretation is done by `dgit-repos-server`
    in its `tag2upload` invocation mode:
    https://salsa.debian.org/dgit-team/dgit/-/blob/master/infra/dgit-repos-server?ref_type=heads

    Source package construction etc. is done by calling out
    to `dgit`, which embodies all the knowledge of how different Debian
    git workflows (eg, the patches-unapplied git branches typically
    used with git-buildpackage) correspond to source packages.

    This latter is the really hard part, partly because there are multiple
    git workflows, but also because there are a *lot* of wrinkly edge
    cases even in the most common git packaging workflows. Happily
    for tag2upload. `dgit push-source` already needs to be able to do all
    this stuff and is extremely mature and robust.

    The missing (not yet implemented) parts are the daemon(s) to receive
    webhook requests, set up and tear down chroots, and so on. Plumbing
    (albeing security-relevant plumbing), basically.

    Hope this helps.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Luca Boccassi@21:1/5 to [email protected] on Wed Jun 12 13:40:01 2024
    On Wed, 12 Jun 2024 at 12:10, Ian Jackson
    <[email protected]> wrote:

    Luca Boccassi writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    On Wed, 12 Jun 2024 at 02:31, Russ Allbery <[email protected]> wrote:
    Does it support gitweb? I thought it only supported regular Git operations, but I could be mistaken.

    I might be wrong, but this is what this looks like to me (it was
    linked to me on IRC yesterday, wasn't aware of it before):

    https://browse.dgit.debian.org/

    Thanks for taking an interest.

    That is indeed a cgit view of the dgit git server.

    The git repositories, sure. The git forge?

    I'm not sure what you mean by "forge". I think "forge" means
    "something like gitlab / sourcehut / github / ...". Ie, a system
    which doesn't just do git repository hosting, but also has (some or
    all of) a linked issue tracker, merge request review systme,
    discussion tooling, CI, etc.

    The t2u/dgit git server doesn't have any of those things. It's purely
    a git server, with some bespoke access control. So I don't think it's
    a "forge".

    It *does* present the contents of its repositories via a web interface
    for use by a web browser, but that view is completely read-only.
    (Indeed in the current setup in Debian it's served from a mirror.)

    This is largely in the eye of the beholder as there's no strict
    definition that I am aware of, so one could or could not include
    these, but I do note that what you describe above is not really that
    different from Alioth - that also didn't have merge requests or CIs,
    and we didn't really use the rudimentary ticket system (IIRC it did
    have one? Might be wrong). If Alioth was a forge, and I think it was,
    then this alternative system also sounds like a forge to me.

    One might have a different definition that results in different
    subsets being included, but to me a forge is fundamentally a remote
    git server hosting multiple repositories, where multiple people push
    to.

    Whatever the definition of "forge" the key point you are making is
    that you see it as competing with Salsa. But, I don't think it does
    compete with Salsa. It doesn't offer any of the useful features that
    Salsa has.

    (In another sense, the Debian archive + ci.debian.net + the BTS +
    britney etc. etc., *is* competing with Salsa. In this view of things, browse.dgit.d.o is a view of part of the archive. But I don't think
    that's where you're coming from.)

    Well, yes that is where I am coming from, as that's one of the
    arguments being made by those opposed to Salsa. My understanding of
    that position is the fact that it doesn't offer features is a _plus_,
    not a minus.

    Salsa is not really suitable for use as the t2u/dgit repos git server,
    for the reasons others have explained in this thread. Very early in
    dgit's history, the dgit repos were hosted on Alioth, but we replaced
    that with a dedicated server for many reasons, some of which are security-related and discussed in Russ's review.

    As far as I can tell, from what was shared in these documents, the
    security feature needed is an append-only repository, with safeguards
    that an individual developer cannot bypass. As far as I can tell, the
    same setup can be achieved with repository ACLs, and it would have the
    same vulnerability: an admin with full access to the server can bypass
    such measures, in either case. Is there something else I am missing?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Luca Boccassi on Wed Jun 12 14:00:01 2024
    Luca Boccassi writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    As far as I can tell, from what was shared in these documents, the
    security feature needed is an append-only repository, with safeguards
    that an individual developer cannot bypass. As far as I can tell, the
    same setup can be achieved with repository ACLs, and it would have the
    same vulnerability: an admin with full access to the server can bypass
    such measures, in either case. Is there something else I am missing?

    There is also an assurance question. Salsa is running gitlab, which
    is an extremely complicated piece of software with very many features.
    Any one of those features (which are constantly changing) offers an
    opportunity for compromise of Salsa. Also, we don't have the
    resources to audit all the code comeing from gitlab upstream.

    The attack surface of the dgit repos server is much smaller. Its
    supply chain integrity is much better. So it is much less likely to
    be compromised. (Also, diversity of implementation is helpful.)

    And, while I find gitlab and Salsa very convenient, we have already
    had one git forge fall by the wayside. As I say, the dgit repos
    server has already survived the death of one forge and it needs to
    survive any problem with Salsa.

    Finally, using Salsa instead would involve modelling the Debian upload permissions model in repository ACLs, which we don't currently do.
    We would need to link uploaders' PGP keys to their ssh keys and rely
    on ssh keys, I think.

    Given how much resistance there is to even t2u's current dssign, I
    don't think placing this much reliance on Salsa etc. is politically
    viable even if it were wise (which I think it wouldn't be).

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jonas Smedegaard@21:1/5 to All on Wed Jun 12 13:50:01 2024
    Quoting Luca Boccassi (2024-06-12 13:15:47)
    On Wed, 12 Jun 2024 at 12:03, Jonas Smedegaard <[email protected]> wrote:

    Quoting Luca Boccassi (2024-06-12 12:28:21)
    On Wed, 12 Jun 2024 at 09:35, Jonas Smedegaard <[email protected]> wrote:

    Quoting Luca Boccassi (2024-06-12 10:21:40)
    On Wed, 12 Jun 2024 at 02:31, Russ Allbery <[email protected]> wrote:

    Luca Boccassi <[email protected]> writes:

    And on the implementation details, I really do not like the idea of
    having a competing git forge with Salsa. This dgit server seems to just
    be a ye olde git-web interface.

    Does it support gitweb? I thought it only supported regular Git operations, but I could be mistaken.

    I might be wrong, but this is what this looks like to me (it was linked to me on IRC yesterday, wasn't aware of it before):

    https://browse.dgit.debian.org/

    If this goes forward, in my opinion it should exclusively use Salsa
    as the git server, to avoid duplicating infrastructure.

    I think you want the Git archive to be entirely separate from Salsa so that it's a reliable source of tracing information. You don't want to support force pushes, for example; the whole point is that it
    should be append-only, which would be a controversial choice for Salsa but which is fine for the archives of the uploaded packages. I
    would also want a much smaller attack surface for that type of record
    than than GitLab. GitLab is designed as a place to do interactive work, not to keep a reliable permanent record.

    The git repositories, sure. The git forge? I don't see why. You can have these repositories in a separate namespace, which sets strong branch and tag protection rules to achieve what you describe. As far as I am aware, this is possible to do in Salsa already, it doesn't have to be a per-forge rule, it can be per-namespace, I think this is possible to achieve in Gitlab. I have not used tag protection rules (on gitlab, I used them on github though), but I do regularly use branch protection rules on my Salsa repositories.

    To be clear, I am exclusively talking about the git forge, as in salsa.debian.org, not the git repositories as they might exist on Salsa under the debian/ namespace or any other namespace.

    Having a separate namespace with strong ACLs seems exactly what you want, even if it duplicates the individual repositories (the backend git store deduplicates it anyway, so in practice it should be quite cheap). Having an entire separate git forge that competes with Salsa seems orthogonal to this, and counterproductive for the project.

    I fail to recognize how strong ACLs achieves exactly the same separate storage on a separate host. Especially when the purpose is to minimize attack vectors.

    As per the security review just shared, admin access to Salsa allows
    to push commits anyway which would get uploaded just the same, and
    again as per security review, this case benefits from centralizing:
    one host to maintain, and one set of admins to trust, is better than
    two. Especially as Salsa is Gitlab, which is maintained upstream and benefits from the many-eyes-and-many-users situation, while a
    completely custom local git forge reimplementation, other than
    inevitably suffering from bitrot at some point in the future, like all custom infrastructure, will have the disadvantage that nobody else
    uses it. This is the reason Alioth is gone, and it's a very good
    reason.

    So your argument is that that strong ACLs achieve exactly the same as separate storage on a separate host, because separate storage on a
    separate host inevitably leads to bitrot and lack of eyeballs.

    I rest my case.

    No, my argument is that append-only can (as far as I can tell) be
    achieved on Salsa too, it doesn't seem to necessitate a bespoke forge.
    The centralizing argument is not mine, it's from the security review
    that was published this morning:

    "My security recommendation in this case is therefore to centralize
    the risk as much as possible, moving it off of individual uploader
    systems with unknown security profiles and onto a central system that
    can be analyzed and iteratively improved."

    https://lists.debian.org/debian-vote/2024/06/msg00004.html

    That Git archive is not parallel to or competitive with Salsa and doesn't
    provide most of the functionality that Salsa does. It has a different
    purpose.

    I disagree strongly. As we have seen in the recent Salsa thread on d-private, there are a few but very strongly opinionated people who are vehemently against Salsa and would like to see it gone. Having a parallel and competing git forge I fear would give them very strong ammunition to do so: "if the real uploads and the real repositories are on a separate and independent git forge, why have Salsa at all? Get rid of it and use the other forge exclusively."

    I don't follow d-private, but sounds to me like that argument goes both ways - i.e. also "if the real uploads and the real repositories are on (some specially locked down section of) same git forge, why not embrace additional features offered from same vendor of said forge?"

    I don't follow, we already use features from Salsa? Like the CI
    pipeline, which is awesome. ACLs on repositories are not really unique
    or particular to Github, modern forges pretty much have to support
    them, Github has them too.

    Sorry, I cannot possibly get a point across a cloud of awesomeness.

    "Having an easy-to-use and working CI is really bad for a software development organization, actually" is... a bold take, no doubt about
    that.

    But anyway, thanks for proving my point for me: there is a small but
    loud minority who would like to kill Salsa, and this proposal as
    implemented would help them achieve that goal. If it goes to a GR,
    this is enough to make me vote against it, as while the concept is
    really nice and I like it a lot, it's not worth jeopardizing Salsa's existence.

    Ohh, it was me you were referring to (because yes, I did read you the
    first time, just didn't recognize you pointing fingers in my direction).

    If it was me derailing this conversation, then I sincerely apologize.

    - Jonas

    --
    * Jonas Smedegaard - idealist & Internet-arkitekt
    * Tlf.: +45 40843136 Website: http://dr.jones.dk/
    * Sponsorship: https://ko-fi.com/drjones

    [x] quote me freely [ ] ask before reusing [ ] keep private --==============�63746828598189771=MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Description: signature
    Content-Type: application/pgp-signature; name="signature.asc"; charset="us-ascii"

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEn+Ppw2aRpp/1PMaELHwxRsGgASEFAmZpiX8ACgkQLHwxRsGg ASGWHw//fXJ9IWgJHn/iV+uAe1ZmyHW1IKWYLA44he8bZ+W4upJmcSsqdPIFFdt2 EpEyHaMN5ovMG3eFJvM0vvh1ejGGp1/MwQ+Hx/JLucA5RlFTeIfYBBIbDDSGDuJC 7M1ytH3NjCv65cU2ggKVUj+b8xg1wWaZknYElCSTBe7FmNhdAhL+gI43hxJHxpg3 9lKd0POivqmXAgkS9LKCFuwKr0WlGyjiCtDk/OaDyo9I8v5DQ3htP4QXznTE8fqd qzUTqEFnHXcDfsuE7QOFJSsnH8zcyiK7xMwC6x9JJSRkUJpCPvX/cP7MNYmxClCT WE4u13NCi/zHwYpZj3NFxmFIDttPa8dTXVqEClDQyCTA+s5eIlFG3VnvXi7cRUzZ S5E8NPjZs3kNY89hHVBzC9/N2DcAC99fXofdS4kz7w5LeDjl3iU6ABcNryt6ZYZ1 hPkzFj5I5MGqGTB5sNaAF8gfKsrNnK5arABoZopC
  • From Ian Jackson@21:1/5 to Gard Spreemann on Wed Jun 12 14:20:01 2024
    Gard Spreemann writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    I have not more than skimmed the architecture, so forgive me if this
    makes no sense: Could this fear (whether overblown or not) not be
    alleviated by including in the tag2upload structured metadata a SHA-256
    hash of all the files in the given commit?

    Notwithstanding Sean's comments, I think it is worth responding to
    this. It's an obvious suggestion that we ought to discuss and dispose
    of. And it relates to key points of dispute.

    Yes, it would be possible to have the git tag contain a complete
    SHA256 manifest of some kind. We (Sean and I, the tag2upload
    developers) have considered this option and rejected it, for the
    following reasons:


    1. It is an important property of tag2upload that the git tag is
    really just a git tag. [1] This has a number of important
    consequences:

    * The tag can be generated by a variety of software,
    even by hand if you want to.

    * The tag can be fully parsed and checked easily, with git-verify-tag,
    optionally with some scanning it for desired metadata, not only
    processed by complex bespoke tooling.

    * The tag can be reviewed by a human and everything in it is
    transparent.

    * Reusing git's existing semantics greatly simplifies the model.

    Overall, we very much want tag2upload to be as close to "normal git"
    as possible. We're trying to get rid of some of Debian's needless
    weird shit. [2]


    2. Typically, generating such a SAA256 manifest would be hard (!)

    Usually, this suggestion is combined with the notion tha dak would be
    able to verify the manifest. This means that the SAH256 manifest must
    contain the hashes of the files in the .dsc.

    But git to .dsc conversion is astonishingly complicated. (Even most
    Debian maintainers greatly underestimate how complicated it is to do
    this well in the general case. We, the dgit maintainers, have
    discovered all of this the hard way.) Source package construction can
    requires out-of-git data that the uploading system doesn't even have,
    and which is a pain to manage, such as orig tarballs; it can involve
    strange patch application processes (search dgit.git/dgit for "absurd"
    and you'll see some of what I mean). It can be very slow.

    A key benefit of tag2upload is to get rid of all this crap [2] from
    the uploading user's machine. Having the user's machine effectvely
    create and discard a source package defeats most of the point.

    The alternative would be a SHA256 manifest of the git tree. That
    would work and be only moderately annoying. But it is a pretty ugly
    bodge, which exists only as a kind of stopgap pending git sha256
    transition. dak wouldn't be able to verify the manifest.


    3. Overall, we don't think the risk from SHA-1 is worth such
    countermeasures. Russ's review deals with this at length.


    I hope this helps explain.

    Ian.


    [1] You can see the specfication for the metadata here
    https://manpages.debian.org/testing/git-debpush/tag2upload.5.en.html

    [2] Yes, I'm being very rude about Debian source packages. I think I
    am allowed, since I invented them in 1992/3. They were a good idea at
    the time (as `3.0 (quilt)` was in its day) but nowadays we have git.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Holger Levsen@21:1/5 to Ian Jackson on Wed Jun 12 14:40:01 2024
    On Wed, Jun 12, 2024 at 12:43:42PM +0100, Ian Jackson wrote:
    I think we probably need to provide more links, then.
    Let me try to help.
    [...]
    Hope this helps.

    It does help, thank you. Will reply with more substance later.


    --
    cheers,
    Holger

    ⢀⣴⠾⠻⢶⣦⠀
    ⣾⠁⢠⠒⠀⣿⡁ holger@(debian|reproducible-builds|layer-acht).org
    ⢿⡄⠘⠷⠚⠋⠀ OpenPGP: B8BF54137B09D35CF026FE9D 091AB856069AAA1C
    ⠈⠳⣄

    The hardest part about defending against social engineering is that it
    doesn't attack attack the weakness of a community. It attacks its
    *strengths*: trust, collaboration, and mutual assistance. (Russ Allbery)

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEuL9UE3sJ01zwJv6dCRq4VgaaqhwFAmZplQEACgkQCRq4Vgaa qhzh8g//Y8X3hSA6NzqdFiFkUos2qNKR6g232LYkWnhu0XqUAZniWqZmxWN55lPw lcYVuktCXDM+MmcvP7ff05Ii/ie6WH6f58O+3FNvUed9C2VTWTvokRSRlXFjdwRS /s3RSosUavPOHC46SBxXoQtQdikY9xJqeBBqAHXLBHz4X5j+UXVEyrMGxG1l5zkV aNFcGJPH2XYlCJoB3exC0hH0IXtwFt668PwRfuOUhejCopk5aN/JPkXNQSeMXsnx GEf7342k10HYb3fI9DfcrTJHq6+Z5NvtOuK1M2Rr5kAxrW8W2QriGF0oj7Mq1Fmj x+DOEFHVhEN5/DZfNM9RKLJSN5b+BV46lch5p4qHnUXapUxhQX1g3nPAOIdZo98p jV/evHQ9r9a3eFmsflS9ZiWwssdeKFBlqkdqpaVB7D/++0K+VFYEbwXr4XVC2yu9 hpbQ3ZIDowrRukVxc0lI/tSukQE1cO+u
  • From Luca Boccassi@21:1/5 to [email protected] on Wed Jun 12 14:50:01 2024
    On Wed, 12 Jun 2024 at 12:52, Ian Jackson
    <[email protected]> wrote:

    Luca Boccassi writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    As far as I can tell, from what was shared in these documents, the
    security feature needed is an append-only repository, with safeguards
    that an individual developer cannot bypass. As far as I can tell, the
    same setup can be achieved with repository ACLs, and it would have the
    same vulnerability: an admin with full access to the server can bypass
    such measures, in either case. Is there something else I am missing?

    There is also an assurance question. Salsa is running gitlab, which
    is an extremely complicated piece of software with very many features.
    Any one of those features (which are constantly changing) offers an opportunity for compromise of Salsa. Also, we don't have the
    resources to audit all the code comeing from gitlab upstream.

    The attack surface of the dgit repos server is much smaller. Its
    supply chain integrity is much better. So it is much less likely to
    be compromised. (Also, diversity of implementation is helpful.)

    Given we had a very well done and professional security review (thanks
    Russ!), I think we should defer to that and take it into serious
    consideration, and its conclusion seems quite clear to me in this
    regard:

    "My security recommendation in this case is therefore to centralize
    the risk as much as possible, moving it off of individual uploader
    systems with unknown security profiles and onto a central system that
    can be analyzed and iteratively improved."

    So I don't think this is a good argument. One system is better than
    two. And we need to secure all of it anyway, as Salsa is a component
    of the solution anyway.

    And, while I find gitlab and Salsa very convenient, we have already
    had one git forge fall by the wayside. As I say, the dgit repos
    server has already survived the death of one forge and it needs to
    survive any problem with Salsa.

    The proposed solution already integrates with Salsa, so this point
    seems moot to me. If we ever move off Gitlab, this would move too.

    Finally, using Salsa instead would involve modelling the Debian upload permissions model in repository ACLs, which we don't currently do.
    We would need to link uploaders' PGP keys to their ssh keys and rely
    on ssh keys, I think.

    Why is that needed? From reading the document here: https://salsa.debian.org/dgit-team/dgit/-/blob/master/TAG2UPLOAD-DESIGN.txt#L14 it seems to me developers would not be allowed at all to push directly
    to this namespace, but only the tag2upload service would be allowed
    (developers push to their normal repo, as they do today) by the ACLs,
    and deleting tags/force pushing/deleting branches/etc would be
    disallowed on top of that.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Helmut Grohne on Wed Jun 12 14:50:01 2024
    Helmut Grohne writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    Thanks for reminding. While I've seen arguments in favour of the
    weaknesses of sha1 not affecting our use much, the xz-incident changes
    the weights of those arguments for me. I am now wondering whether we can
    be more proactive about changing the hash function used by git. For new repositories, this seems as simple as git init --object-format=sha256.

    It is an important feature of most of the best Debian git workflows
    that the Debian git branch is a descendant of the upstream git. It's
    been a while since I looked at the git plans for sha25 transition. Is
    it the case that a whole project and all its forks needs to change all
    at once? (That's a very undesirable property, obvously.)

    I note that use of weak hashes in the current tag2upload is not a
    fundamental blocker but something that I expect proponents to work on in
    case the GR passes. Would one of the proponents confirm that they see
    this as worth spending their time on (on the condition that the GR
    passes)?

    I do not have any plans to try to help push git's hash transition, in
    upstream git, or on Salsa. (I did have a go a number of years ago,
    but my sketch of a workable transition plan was rejected by the
    upstream git maintainers, who at the time instead seemed intent on
    adopting an inferior model which would make transition much more
    awkward.)

    On the other hand, when the dependencies are sorted out, I will
    certainly make sure that better hashes can be used with tag2upload,
    and develop and deploy appropriate barriers to use the old hashes
    where they oughtn't to be appearing.

    I think you this depends on the bigger picture. When the /usr-merge transition was started, it was repeatedly sold as opt-in, but it really
    was not meant as opt-in. Maybe tag2upload is similar. While the mail
    thread suggests that it does not have to be used, I wouldn't be
    surprised to be talking about terminating non-git uploads later. Once
    that happens, we'd back to one path of issuance and that one path is tag2upload then. It is not entirely clear whether this is the vision or
    not and to me this vision would make the argument for tag2upload
    stronger due to the reason you give.

    Well, I do have a vision. However, unlike the proponents of usrmerge,
    I do not intend to force my views on maintainers and users.
    Personally I do see tag2upload as a next step in a more complete
    Debian git transition.

    I do expect tag2upload to become very popular very quickly, simply
    because it's so convenient. I'm also hoping that we can get it (and
    dgit) supported for uploads to securit.d.o and do something about
    with-binaries uploads. I want everyone to have the option of using
    tag2upload, for every upload.

    If tag2upload becomes very popular, and always possible, we might make
    it possible for a maintainer to declare that a particular package
    ought not to be uploaded with a raw .dsc - or perhaps for a PGP key
    owner to declare that such and such a key will only be used for
    tag2upload uploads.

    I can't see Debian abolishing the ability to upload a raw source
    package any time in the foreseeable future.

    We only really have two ways of changing the upload process. Either we temporarily add a new process and later remove the old process or we do
    a flag-day transition. I guess that most of us agree that doing a
    flag-day transition from .dsc uploads to git-debpush would not pass
    muster. So we have little options but adding it if we agree that the
    upload process needs changes.

    Quite so.

    And we also remove the Debian Maintainer role as dak would no longer
    know who uploaded the package? Debian is larger than only Debian Developers.

    This is a policy aspect. When we need to revoke a key used for uploading
    this happens via keyring maintainers as far as I understand, but in
    urgent cases it is ftp master who can also deny upload rights more
    quickly than via a keyring update. In moving to tag2upload as a service external to ftp, we partially move this capability from ftp master to
    the entity running tag2upload (DSA afaiui). Is there a sensible way to
    leave this policy aspect with the ftp team when using the tag2upload
    service? In effect, I'm asking whether ftp could somehow provide an authorization oracle to be used by tag2upload.

    tag2upload leaves this policy with the ftpmaster team. It uses the
    archive keyrings and dak's list of Debian Maintainers.

    So there is no change here.

    If only one could use regular git instead of a custom, non-standard VCS built on top of Git that makes some workflows impossible and team maintenance harder by not supporting publishing intermediate work. :-(

    Even though the people behind the tag2upload work are the same as dgit,
    the tag2upload service has been carefully designed to actually work with
    most maintainer views. It also uploads to dgit, but I think tag2upload
    would also work if that dgit part were skipped (please correct me if I'm wrong about this). Hence, tag2upload provides a very important value to
    me: I then get a an authentication chain from the Debian archive signing
    key to the actual git object used for uploading. That is a property that
    I would formerly only get from using dgit and only for the dgit view.
    With tag2upload, we would be authenticating actual maintainer tags of maintainer histories on salsa from the archive signing key. To me, this
    is a significant step affecting my workflows in a positive way.

    I think this exchange contains a fundamental misunderstanding about
    what dgit is. It's not a "custom nonstandard VCS built on top of
    git". IHNI what "not supporting publishing intermediate work" refers
    to. The expected way for an uploader to use dgit is to replace the
    upload step with `dgit push-source`, not to replace Salsa.

    If there is a custom nonstandard VCS built on top of git in this
    picture, it's git-buildpackage.

    Helmut's reference to "the dgit part" doesn't seem to make any sense
    to me. tag2upload uses dgit to convert the git branch to a canonical
    form (ie, a form treesame to `dpkg-source -x`), and then build a
    source package from that.

    Both dgit and tag2upload publish the git information (both forms)
    and the .dsc to their respective servers (*.dgit.d.o, ftp.d.o).
    None of that could or should be skipped.

    dgit (the program) is needed here because it's the only program that
    can reliably convert every suitable git branch to a .dsc. (It often
    does much of its work by calling git-buildpackage, but sadly, that is
    by no means everything that needs sorting out and fixing up.)

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Luca Boccassi@21:1/5 to Jonas Smedegaard on Wed Jun 12 15:00:01 2024
    On Wed, 12 Jun 2024 at 13:47, Jonas Smedegaard <[email protected]> wrote:

    Quoting Luca Boccassi (2024-06-12 14:40:01)
    On Wed, 12 Jun 2024 at 12:52, Ian Jackson
    <[email protected]> wrote:

    Luca Boccassi writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    As far as I can tell, from what was shared in these documents, the security feature needed is an append-only repository, with safeguards that an individual developer cannot bypass. As far as I can tell, the same setup can be achieved with repository ACLs, and it would have the same vulnerability: an admin with full access to the server can bypass such measures, in either case. Is there something else I am missing?

    There is also an assurance question. Salsa is running gitlab, which
    is an extremely complicated piece of software with very many features. Any one of those features (which are constantly changing) offers an opportunity for compromise of Salsa. Also, we don't have the
    resources to audit all the code comeing from gitlab upstream.

    The attack surface of the dgit repos server is much smaller. Its
    supply chain integrity is much better. So it is much less likely to
    be compromised. (Also, diversity of implementation is helpful.)

    Given we had a very well done and professional security review (thanks Russ!), I think we should defer to that and take it into serious consideration, and its conclusion seems quite clear to me in this
    regard:

    "My security recommendation in this case is therefore to centralize
    the risk as much as possible, moving it off of individual uploader
    systems with unknown security profiles and onto a central system that
    can be analyzed and iteratively improved."

    So I don't think this is a good argument. One system is better than
    two. And we need to secure all of it anyway, as Salsa is a component
    of the solution anyway.

    I read the analysis more that two systems is better than one thousand systems.

    I.e. centralizing (compared to building done on developers' systems) to a system that can be analyzed (which Gitlab is quite a challenge to do).

    "centralize the risk as much as possible" applies to both cases, as
    does the justification for it. And again, Salsa is already part of the solution, so this argument doesn't seem very strong to me.

    Having a bespoke system that nobody else uses has disadvantages too.
    Yes you can minimize it and tailor it to the exact use case (as it is
    today, and then you'll need to forever chase the trend of software
    dev, as we have seen with Alioth). No security researcher is going to
    spend any time doing audits of such a system (unless we pay them to),
    but there's plenty of work done analyzing Gitlab. This concept that
    everything needs to be internally auditable is very weird to me for an
    open source project (I expect to see it and I do see it for internal proprietary components in entreprises), presumably any such system
    will run on a Linux kernel, but we are not asking maintainers of these
    systems to personally audit the entire kernel (and libc and compiler
    and and and), because they are widely used components that get enough
    scrutiny externally w.r.t. the project. That's a good thing. By
    reusing widely available and widely used open source components we can
    share the burden of security audits, maintenance, development, etc.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Kitterman@21:1/5 to All on Wed Jun 12 08:53:40 2024
    On Tuesday, June 11, 2024 6:25:02 PM EDT Sean Whitton wrote:
    - it improves the traceability and auditability of our source-only
    uploads, in ways that are particular salient in the wake of xz-utils.

    As I understand it, Debian was affected by the xz-utils hack, in part, because some artifacts were inserted into an upstream tarball that were not
    represented in the upstream git. Please explain how use of tag2upload is relevant to this scenario? I'm afraid I don't follow.

    Scott K
    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEE53Kb/76FQA/u7iOxeNfe+5rVmvEFAmZpmlQACgkQeNfe+5rV mvHCNQ/+L2ipeJuJ/Ta+wWQJc7wupIMYNizqYs/X1nnHCEdKURCD1P5yhwIx/1zv kq7lgtrTmvSkS99NHpZh5TVLtvXnYxBpKm4PuqOC561zl/pk9Vkv9znUmMkI2dS4 WYtB04M8+wBMfPU1NnvDYTJWw3yc6drRv1Fo54JMggbakemshm5iz6WLVa33EhwS TGC6pX5jOvGERIL9jZXNpskm29TzGLgYBXvmXSNIXu1Mg8q3IHS7F8ifHafXv4is GkUZTWGB87oouhSDV5T5wcLpiXSbA3M+UDWUCWH41Xhqdqbhrgq8dhfo3KoT7+uV kCmwuAIx7i8wmqXgOLhHB+2JOW4PzfDyxdfsVf+/mHp98vNfU6OVi9Q0WpIrKkHr LZ0nTQxyPELnjlTU01y6bZW6OwxdCM8w1nydeen76EpG3Oze8SXFXvpxPzKP+C3N 0Mq9QvEa5IXyf/HKU5DcGRbRh5huqf0fmSklmqnp5SJYXxRrjWGTQifxgOzhHSBR HJ9Z9xetp1DLHP1jtOh3JrMBHsmNlFyw14WCY/Z4jH5nM1CSaHrnIgPhD8t8RfU3 LdMnoTdetGuQs7VL84mxy06POmHlpU+LHiF+vjM8oP5z1n9VY5oWGU6+X1QWCTB6 fW6x4h0Y2ZdpGdfbqLjtH8he+857XqafXA8MuEcu7XG6+0GUsv4=
    =s8rQ
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jonas Smedegaard@21:1/5 to All on Wed Jun 12 14:50:02 2024
    Quoting Luca Boccassi (2024-06-12 14:40:01)
    On Wed, 12 Jun 2024 at 12:52, Ian Jackson
    <[email protected]> wrote:

    Luca Boccassi writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    As far as I can tell, from what was shared in these documents, the security feature needed is an append-only repository, with safeguards that an individual developer cannot bypass. As far as I can tell, the same setup can be achieved with repository ACLs, and it would have the same vulnerability: an admin with full access to the server can bypass such measures, in either case. Is there something else I am missing?

    There is also an assurance question. Salsa is running gitlab, which
    is an extremely complicated piece of software with very many features.
    Any one of those features (which are constantly changing) offers an opportunity for compromise of Salsa. Also, we don't have the
    resources to audit all the code comeing from gitlab upstream.

    The attack surface of the dgit repos server is much smaller. Its
    supply chain integrity is much better. So it is much less likely to
    be compromised. (Also, diversity of implementation is helpful.)

    Given we had a very well done and professional security review (thanks Russ!), I think we should defer to that and take it into serious consideration, and its conclusion seems quite clear to me in this
    regard:

    "My security recommendation in this case is therefore to centralize
    the risk as much as possible, moving it off of individual uploader
    systems with unknown security profiles and onto a central system that
    can be analyzed and iteratively improved."

    So I don't think this is a good argument. One system is better than
    two. And we need to secure all of it anyway, as Salsa is a component
    of the solution anyway.

    I read the analysis more that two systems is better than one thousand
    systems.

    I.e. centralizing (compared to building done on developers' systems) to a system that can be analyzed (which Gitlab is quite a challenge to do).

    - Jonas

    --
    * Jonas Smedegaard - idealist & Internet-arkitekt
    * Tlf.: +45 40843136 Website: http://dr.jones.dk/
    * Sponsorship: https://ko-fi.com/drjones

    [x] quote me freely [ ] ask before reusing [ ] keep private --==============X73223009712585820=MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Description: signature
    Content-Type: application/pgp-signature; name="signature.asc"; charset="us-ascii"

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEn+Ppw2aRpp/1PMaELHwxRsGgASEFAmZpmOEACgkQLHwxRsGg ASEroBAAmLgcmi1hRDqZZsdYHt0fanHB3B+hp9T5Qc4bqpZUQ66HCCXUbRBWdSqt Py7ZD1GKDSPWWdl0V4hePX6a1fnyQfrKvjED1WqFubpNjsHf/X7AEpDIJ04nBoCC Ura+GplziL7bA8VFsZwbJudI/Axw2R1H5xvcz3QuyZHxRnz9c9yMmhKspigjxRJf pUe9epx00qoOW3YgxF/JhA71Eo73IGtup5Fd8SwsS+AGN/GpwM6+tTnRRUzboCR+ ZhEodNF5kIc8Ynj1f9eoRMz3t0RzjhWVFxVQRoG8eF1OGo3SzdN8gGR9fRPDXUon Oc+i3JGTM2IusASUPJ2kTiv3+WrH/OilSHIqy+G6vE4FeWGaFm+qpSl23wo2GLqM H1dcTyjQQ3uAFJnUzlQoXSdWcZR8Lv+r5Ss74dIX6k8sx0oc/wITm19sMx/TJGZ7 I24AFRn9KjzugxbdxfNj5/rIXrSloSrG/qNmLg9X
  • From Jonas Smedegaard@21:1/5 to All on Wed Jun 12 15:20:02 2024
    Quoting Luca Boccassi (2024-06-12 14:55:13)
    On Wed, 12 Jun 2024 at 13:47, Jonas Smedegaard <[email protected]> wrote:

    [...]

    Luca Boccassi writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    As far as I can tell, from what was shared in these documents, the security feature needed is an append-only repository, with safeguards that an individual developer cannot bypass. As far as I can tell, the same setup can be achieved with repository ACLs, and it would have the
    same vulnerability: an admin with full access to the server can bypass
    such measures, in either case. Is there something else I am missing?

    [...]

    I read the analysis more that two systems is better than one thousand systems.

    I.e. centralizing (compared to building done on developers' systems)
    to a system that can be analyzed (which Gitlab is quite a challenge
    to do).

    "centralize the risk as much as possible" applies to both cases, as
    does the justification for it. And again, Salsa is already part of the solution, so this argument doesn't seem very strong to me.

    No, not centralizing as much as possible, only as much as sensible.

    You apparently find it equally sensible, specifically as a security
    measure, a) apply ACLs on an otherwise massively multi-user-write-access
    host and b) use a separate far-less-featured host.

    You claim that both setups have equal vulnerabilities.

    I disagree. I think you are mistaken - and no, it is totally irrelevant
    for this accusation whether or not I am a fan of Salsa, and whether or
    not I represent a loud or silent minority or majority. This is not about
    me.

    - Jonas

    --
    * Jonas Smedegaard - idealist & Internet-arkitekt
    * Tlf.: +45 40843136 Website: http://dr.jones.dk/
    * Sponsorship: https://ko-fi.com/drjones

    [x] quote me freely [ ] ask before reusing [ ] keep private --==============532720483058464207=MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Description: signature
    Content-Type: application/pgp-signature; name="signature.asc"; charset="us-ascii"

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEn+Ppw2aRpp/1PMaELHwxRsGgASEFAmZpn1EACgkQLHwxRsGg ASHhKg//fnn3LsFMi3Opa7mPpoVoBvqQZEP9umsBdZY2jkbuGk6jpzAbCRcuU5hJ +Q/9WHlEx2I71fBhfg6eIlbXl9PuYwlb5B9IGR2p7ZU5Hhy9uTvCkpRHw57rTWEp t1TWl8tDAZ9A8peWV+GhRog6uK8O3kYLp+c9tsO8Hw8QCbG+w/xr+3WaSChBlWfM ZNR5R4R1gE3uJvmmlVMdF1xhfTgWBy8Pgj++4llDg/F/Vr8daq8Qdu6XYfRi0SB7 YF8qYw14Sbh8y7X3MJZ45FXhmvHCotR32TlSTQM/VR9LE6AX/vHd7O22hQxXvkvQ iCK07Bl7Y1k1xzGgHr7zbNelVGxisXluP89mU+t8QLC4S7SUR+rquczOAysOcg99 GEBproVbr5ZBvYV/s8WkYYNjBhGfCOkWadfWvD+vz6f0EVYCmDclJAPZlEyuKFY6 QLfljYgBroFVCalbT+srb92v96E9C79tgrfoiIEz
  • From Luca Boccassi@21:1/5 to Jonas Smedegaard on Wed Jun 12 15:30:01 2024
    On Wed, 12 Jun 2024 at 14:15, Jonas Smedegaard <[email protected]> wrote:

    Quoting Luca Boccassi (2024-06-12 14:55:13)
    On Wed, 12 Jun 2024 at 13:47, Jonas Smedegaard <[email protected]> wrote:

    [...]

    Luca Boccassi writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    As far as I can tell, from what was shared in these documents, the security feature needed is an append-only repository, with safeguards
    that an individual developer cannot bypass. As far as I can tell, the
    same setup can be achieved with repository ACLs, and it would have the
    same vulnerability: an admin with full access to the server can bypass
    such measures, in either case. Is there something else I am missing?

    [...]

    I read the analysis more that two systems is better than one thousand systems.

    I.e. centralizing (compared to building done on developers' systems)
    to a system that can be analyzed (which Gitlab is quite a challenge
    to do).

    "centralize the risk as much as possible" applies to both cases, as
    does the justification for it. And again, Salsa is already part of the solution, so this argument doesn't seem very strong to me.

    No, not centralizing as much as possible, only as much as sensible.

    That's not what it says though. If you have an alternative security
    review, please share it in its entirety, and it can be discussed.

    You apparently find it equally sensible, specifically as a security
    measure, a) apply ACLs on an otherwise massively multi-user-write-access
    host and b) use a separate far-less-featured host.

    You claim that both setups have equal vulnerabilities.

    No, I claim they have different sets of vulnerabilities, disadvantages
    and advantages, and that both can provide the required feature:
    disallow force pushes/deleting tags. The hardest thing with security
    is that it requires a constant, ongoing effort, that will never end,
    and will only get harder. A widely used software like Gitlab is better
    for this, as is a widely used kernel like Linux. Or are you suggesting
    such a server should run on Hurd, given it's far-less-featured and
    thus has a much smaller attack surface than Linux?

    I disagree. I think you are mistaken - and no, it is totally irrelevant
    for this accusation whether or not I am a fan of Salsa, and whether or
    not I represent a loud or silent minority or majority. This is not about
    me.

    And I think it is very much relevant, given the obvious end goal of
    some individuals is to kill Salsa, which this proposal - as it stands
    - would facilitate.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Luca Boccassi on Wed Jun 12 16:00:01 2024
    Luca Boccassi writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    A side note, but related: recently I had the (dis)pleasure of having
    to deal with a git repository that was switched to sha256 (SUSE's
    Gitea instance). The conversion is destructive, and breaks, for
    example, git submodules functionality (a sha1 repository cannot use
    sha256 submodules). So I'd be very careful in assuming repositories
    can be converted later.

    Since we want to base our work on upstream git, we can't just
    unilaterally make fresh sha256 repos, I think? (I'm not familiar with
    the current upstream git notions of the sha256 transition plan.)

    As for submodules, this is just another way they're broken.
    Never use git submodules. Blog psot:
    https://diziet.dreamwidth.org/14666.html

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Scott Kitterman on Wed Jun 12 16:30:01 2024
    Scott Kitterman writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    On Tuesday, June 11, 2024 6:25:02 PM EDT Sean Whitton wrote:
    - it improves the traceability and auditability of our source-only
    uploads, in ways that are particular salient in the wake of xz-utils.

    As I understand it, Debian was affected by the xz-utils hack, in
    part, because some artifacts were inserted into an upstream tarball
    that were not represented in the upstream git. Please explain how
    use of tag2upload is relevant to this scenario? I'm afraid I don't
    follow.

    Disclaimer: I don't know precisely the Debian xz's maintainer's
    workflow.

    tag2upload, like dgit, ensures and insists that the git tree you are
    uploading corresponds precisely [1] to the generated source package.

    If you base your Debian git maintainer branch on the upstream git (as
    you should) and there is a discrepancy between the contents of the
    upstream git branch, and the .orig.tar.gz you're using, the upload
    will fail.

    In the xz case, if the .orig.tar.gz is upstream's, that would have
    detected the attack. More realistically, since the attacker was
    targeting Debian, they would instead have had to put all of the
    malicious code into the git repository, which is possible, but riskier
    - so it makes the attack harder, or easier to detect, but doesn't rule
    it out.

    There are some cavests to this.

    I believe some maintainers maintain a "upstream tarball imports"
    branch, which has upstream git as its ancestor, but whose tree
    contents are the upstream tarballs. They then base the Debian branch
    on that. That workflow is vulnerable to "random stuff" in the
    tarballs.

    It would also be possible to create a debian/patches/ patch [2]
    representing the difference between git and the tarball. There are
    various tools in Debian that might make such a patch, including (I
    think) dpkg-source, gbp and perhaps dgit, depending on what workflow
    and options and so on.

    There are probably other workflows that have similar weaknesses.
    I wouldn't recommend any of them.


    Stepping back a bit, the underlying theme is (obviously) that the
    upstream tarball wasn't great, in this case.

    In Debian we have historically had a strong culture of wanting to use
    upstream release tarballs. That made a lot of sense 20-30 years ago
    when almost all free software projects released tarballs, and
    considered them primary, and the VCS situation was a total mess.

    Nowadays, for most projects, the upstream developers work in git. So
    git is the source code. Upstream provides tarballs via some
    semi-automated process, but it's not what they work with. Ie the
    tarballs are an intermediate build product.

    In Debian we are supposed to use the source code. We should be using
    the same thing as upstream.

    There are other reasons why tarballs can be worse, than that they
    could be maliciously modified. Often tarballs contain prebuilt stuff
    of various kinds. In Debian we usually want to build everything from
    source. That's much easier to get right if we start from the actual
    source!

    Ian.


    [1] Modulo "patches-applied" vs "patches-unapplied" and some other
    fiddly details which aren't relevant to this discussion.

    [2] Assuming a gbp workflow and `3.0 (quilt)`, for the moment.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jonas Smedegaard@21:1/5 to All on Wed Jun 12 16:30:02 2024
    Quoting Luca Boccassi (2024-06-12 15:27:36)
    On Wed, 12 Jun 2024 at 14:15, Jonas Smedegaard <[email protected]> wrote:
    You apparently find it equally sensible, specifically as a security measure, a) apply ACLs on an otherwise massively multi-user-write-access host and b) use a separate far-less-featured host.

    You claim that both setups have equal vulnerabilities.

    No, I claim they have different sets of vulnerabilities, disadvantages
    and advantages, and that both can provide the required feature:
    disallow force pushes/deleting tags. The hardest thing with security
    is that it requires a constant, ongoing effort, that will never end,
    and will only get harder. A widely used software like Gitlab is better
    for this, as is a widely used kernel like Linux. Or are you suggesting
    such a server should run on Hurd, given it's far-less-featured and
    thus has a much smaller attack surface than Linux?

    No, I am not suggesting the use of the Hurd here, and I am having a hard
    time assuming good faith with the potential undertones of that question.

    To answer your convoluted question, I am suggesting that Salsa and
    tag2upload has very different needs (multi-user write versus multi-user append-only, drastically simplified), and consequently to not argue that
    reuse of Salsa for hosting tag2upload is a security benefit.

    I disagree. I think you are mistaken - and no, it is totally
    irrelevant for this accusation whether or not I am a fan of Salsa,
    and whether or not I represent a loud or silent minority or majority.
    This is not about me.

    And I think it is very much relevant, given the obvious end goal of
    some individuals is to kill Salsa, which this proposal - as it stands
    - would facilitate.

    Ok, since you insist that it is relevant: Please provide proof to support
    your claims that a) some "silent minority" exists in Debian aiming to
    "kill Salsa", and b) I belong to said group, and c) it is "very much
    relevant" here that I belong to that group.

    - Jonas

    --
    * Jonas Smedegaard - idealist & Internet-arkitekt
    * Tlf.: +45 40843136 Website: http://dr.jones.dk/
    * Sponsorship: https://ko-fi.com/drjones

    [x] quote me freely [ ] ask before reusing [ ] keep private --==============U17177365112695487=MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Description: signature
    Content-Type: application/pgp-signature; name="signature.asc"; charset="us-ascii"

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEn+Ppw2aRpp/1PMaELHwxRsGgASEFAmZprpIACgkQLHwxRsGg ASGXwQ/7BjAJIcYRancPjG+mHx8uEt4z2hxUuvmNEss9f82rmReUZOhrGxvVeI0b NFqFtC4Z+ZZOrvxcizb8oVsDUCgKoEHOVoTyebMJf4QUATIDTQDFBgmwY/OiUW03 DABLUhcJ8jJkuh2wNjI+WWEJf0d+ZsMqvEwSStcJa0L/nXOJenviJylsgje4Dss4 vlD+Zlh/bWLSfRCrhrDo1pimQiGARWdPQIW8YvGcgnDJrgALso7iB2JRhjjd7QSG FvHkbJURa1IXGC8hZvO4bowK/9LQ2j6r1OSI/aiJhdMTMso0FOrAUXMh+pJ9AIzW Yf3SQCkpYRLZB8A4N6G8tS6xBFxB4zg1I7I/Kbl9heU3ylnSPPTNhqCJnWJ82lnb G9b+iQS6Qi2Khlx4keJDbrMcWFipCiYC+4XcWuMH3hRyOP3S35ATDWgtxJDJM4BC 25zR/bVuB6yO4SrEHQmIA/jCbthv+DVxIEXn8T90
  • From Ian Jackson@21:1/5 to Luca Boccassi on Wed Jun 12 16:40:01 2024
    Luca Boccassi writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    And I think it is very much relevant, given the obvious end goal of
    some individuals is to kill Salsa, which this proposal - as it stands
    - would facilitate.

    Gosh. Are you serious?

    For the avoidance of doubt: I'm a fan of gitlab and of Salsa.
    I don't want it killed.

    I think tag2upload would make it harder for Salsa's enemies to kill
    it [1], since t2u will be popular and you can't use t2u without having
    your project on Salsa. [2] So it might increase adoption of Salsa and
    will certainly increase reliance on it.

    Ian.

    [1] Supposing for the sake of argument that Salsa has enemies who want
    to kill it.

    [2] tag2upload's design is compatible with there being multiple forge instances, where the upload instruction tag could be pushed.[3] But
    we're not contemplating supporting any other instances.

    [3] For the avoidance of doubt: for these purposes, the *.dgit.d.o git
    server is *not* a forge. The t2u design is not compatible with using git.dgit.d.o as the place the maintainer pushes the upload instruction
    tag. For t2u, git.dgit.d.o must be only an output.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Marco d'Itri@21:1/5 to [email protected] on Wed Jun 12 16:50:01 2024
    [email protected] wrote:

    As I understand it, Debian was affected by the xz-utils hack, in part, because >some artifacts were inserted into an upstream tarball that were not >represented in the upstream git. Please explain how use of tag2upload is >relevant to this scenario? I'm afraid I don't follow.
    I think that it was assumed, and I agree, that a well-maintained Debian
    git source tree has the upstream branch pulled from the upstream git repository, keeping the complete history, and not created locally by
    importing upstream tar release archives.

    --
    ciao,
    Marco

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Luca Boccassi@21:1/5 to [email protected] on Wed Jun 12 16:50:01 2024
    On Wed, 12 Jun 2024 at 15:34, Ian Jackson
    <[email protected]> wrote:

    Luca Boccassi writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    And I think it is very much relevant, given the obvious end goal of
    some individuals is to kill Salsa, which this proposal - as it stands
    - would facilitate.

    Gosh. Are you serious?

    For the avoidance of doubt: I'm a fan of gitlab and of Salsa.
    I don't want it killed.

    I did not say you do! Nor did I say it was intentional. I am saying
    that a few people do (and you know this), and I am worried that this
    proposal could be taken advantage of for that purpose. I am not saying
    nor implying nor suggesting nor thinking that the proposers/developers/maintainers of tag2upload want to do that. Hope
    this clarifies any misunderstandings, sorry for not being clear the
    first time.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Marco d'Itri@21:1/5 to [email protected] on Wed Jun 12 16:50:02 2024
    [email protected] wrote:

    In addition it reintroduces trust in weak cryptographic hashes which
    effort was spent to remove.
    While SHA-1 is generally deprecated, it is not "weak" in the way that it
    is used by git so I do not believe that this is a valid argument.

    --
    ciao,
    Marco

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Kitterman@21:1/5 to All on Wed Jun 12 10:44:40 2024
    On Wednesday, June 12, 2024 10:20:45 AM EDT Ian Jackson wrote:
    Scott Kitterman writes ("Re: [RFC] General Resolution to deploy
    tag2upload"):
    On Tuesday, June 11, 2024 6:25:02 PM EDT Sean Whitton wrote:
    - it improves the traceability and auditability of our source-only

    uploads, in ways that are particular salient in the wake of xz-utils.

    As I understand it, Debian was affected by the xz-utils hack, in
    part, because some artifacts were inserted into an upstream tarball
    that were not represented in the upstream git. Please explain how
    use of tag2upload is relevant to this scenario? I'm afraid I don't
    follow.

    Disclaimer: I don't know precisely the Debian xz's maintainer's
    workflow.

    tag2upload, like dgit, ensures and insists that the git tree you are uploading corresponds precisely [1] to the generated source package.

    If you base your Debian git maintainer branch on the upstream git (as
    you should) and there is a discrepancy between the contents of the
    upstream git branch, and the .orig.tar.gz you're using, the upload
    will fail.

    In the xz case, if the .orig.tar.gz is upstream's, that would have
    detected the attack. More realistically, since the attacker was
    targeting Debian, they would instead have had to put all of the
    malicious code into the git repository, which is possible, but riskier
    - so it makes the attack harder, or easier to detect, but doesn't rule
    it out.

    There are some cavests to this.

    I believe some maintainers maintain a "upstream tarball imports"
    branch, which has upstream git as its ancestor, but whose tree
    contents are the upstream tarballs. They then base the Debian branch
    on that. That workflow is vulnerable to "random stuff" in the
    tarballs.

    It would also be possible to create a debian/patches/ patch [2]
    representing the difference between git and the tarball. There are
    various tools in Debian that might make such a patch, including (I
    think) dpkg-source, gbp and perhaps dgit, depending on what workflow
    and options and so on.

    There are probably other workflows that have similar weaknesses.
    I wouldn't recommend any of them.


    Stepping back a bit, the underlying theme is (obviously) that the
    upstream tarball wasn't great, in this case.

    In Debian we have historically had a strong culture of wanting to use upstream release tarballs. That made a lot of sense 20-30 years ago
    when almost all free software projects released tarballs, and
    considered them primary, and the VCS situation was a total mess.

    Nowadays, for most projects, the upstream developers work in git. So
    git is the source code. Upstream provides tarballs via some
    semi-automated process, but it's not what they work with. Ie the
    tarballs are an intermediate build product.

    In Debian we are supposed to use the source code. We should be using
    the same thing as upstream.

    There are other reasons why tarballs can be worse, than that they
    could be maliciously modified. Often tarballs contain prebuilt stuff
    of various kinds. In Debian we usually want to build everything from
    source. That's much easier to get right if we start from the actual
    source!

    Ian.


    [1] Modulo "patches-applied" vs "patches-unapplied" and some other
    fiddly details which aren't relevant to this discussion.

    [2] Assuming a gbp workflow and `3.0 (quilt)`, for the moment.

    If I am understanding you correctly, tag2upload is only relevant to the XZ Utils type attack if the maintainer uses the upstream git rather than the upstream provided tarball as the basis for their Debian work. Is that right?

    If so, it seems to me that is entirely tangential to this proposed GR. Any maintainer that wants to do that now, can and no maintainer is forced to do so if Debian deploys tag2upload, per the GR. I think it would be useful if the
    GR focused on the benefits of the GR and did not try to market itself based on the threat of the day.

    Scott K

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEE53Kb/76FQA/u7iOxeNfe+5rVmvEFAmZptFgACgkQeNfe+5rV mvH4iBAAqxP6Jq+g+2aW4kPk6vzPkrZDsLc+lABLCr7Fi83tUpFG4525HPjwnBc/ pj62WZdxNwTOpTE4GFv9v3BnEJhfr9fkxUS6o9jGVMxIZVEpDA3UPZa/cj+XQQFD 9b3SlP2de2j21mXB/V1ahmt9HihFeA7pH2QU1wP4rm3qi/1qXpazSGl2+TOhGWMI R+/fTzdxQK1gxkRFgk/MEzl+pM5fUntpxOQoADfUq5Yv4Qc30Y+Q2R6wQNEXU350 lKZT6VtZx3YkNk5iJyB6hNMB/wwGHqauxN3QpgbfPbeERXTDwiI1P5KzD5IB61BB QhO4EBU2own/VAWaFn2nYb4fwkrx3SaN0dnh//eiVcuQwiLLo+TRdvNZwtNVAf20 ZeSX7kCjpSGSo1WyaX9TC5xtXvC8kJcPkFVNQHifO9Tprk7c99vQTfCiNYOrJRBY X/fLRulYq2Je7CT6kpRyWZhtL/LPmgGOisJj7aehCIdNTraOr8HmOV4nUDCcwuL7 7CxKoqeWM9A8ftgGVsT38oLvjNe9RP9mQgdAIDT8JPdWD/Qllws8obNZhaZ46fsi GrN08qSCVjGIA/+zfitv7Lzyvx9BxRQxnxtrwwpulDepp+mH38PuU4xvSupNJoaP jPYRvM4yVB92FGQ3EFlDrPS9AUZ7vj96PHW2cPKRpuCmLWorr5Q=
    =BjBm
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon McVittie@21:1/5 to Ian Jackson on Wed Jun 12 17:30:01 2024
    On Wed, 12 Jun 2024 at 15:20:45 +0100, Ian Jackson wrote:
    tag2upload, like dgit, ensures and insists that the git tree you are uploading corresponds precisely [1] to the generated source package.

    If you base your Debian git maintainer branch on the upstream git (as
    you should) and there is a discrepancy between the contents of the
    upstream git branch, and the .orig.tar.gz you're using, the upload
    will fail.

    Is your position here that if your upstream releases source tarballs
    that intentionally differ from what's in git (notably this is true
    for Autotools `make dist`), then any Good™ maintainer must generate
    their own .orig.tar.* from upstream git and use those in the upload, disregarding upstream's source tarball entirely?

    That approach has many advantages, but it flatly contradicts what devref
    claims a Good™ maintainer would do, which is to always use the pristine source tarball as released by upstream (unless it's non-free) - which
    implies that if they're using dgit, then the upstream tree must match
    an import of the tarball.

    Or are you saying that we should simply not package software produced
    by such upstreams? (If that, we're going to need replacements for most
    of GNU...)

    I'd prefer not to be in a situation where whatever a maintainer does,
    some segment of the project will consider them to be failing to meet
    the project's basic expectations - that seems like a recipe for burnout.

    In the xz case, if the .orig.tar.gz is upstream's, that would have
    detected the attack.

    xz-utils is built using Autotools, so if the .orig.tar.gz is upstream's
    `make dist`, it is *always* going to differ from what's in git[1]: for
    example ./configure exists in the tarball but not in git. The xz attacker
    was counting on that - the glue code to activate their malicious payload
    was hidden in a diff that was already expected to be inconveniently
    large for reasons that are usually considered to be benign.

    It would be easy to say "well your upstream shouldn't behave like that"
    but, realistically, many of them do, and they are not all going to change
    just because we say so.

    In the projects where I'm an upstream maintainer, I *am* trying to move
    towards the official source release being equivalent to a `git archive` (including replacing Autotools with Meson, replacing submodules with
    subtrees, etc.), but I don't have the resources or social capital to do
    that instantaneously, even in the few projects where I have influence.

    smcv

    [1] unless your upstream is one of the rare upstreams that is happy to
    commit all the Autotools-generated files to upstream git, which
    comes with its own problems

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jonathan Carter@21:1/5 to Luca Boccassi on Wed Jun 12 17:20:01 2024
    Hi Luca

    On 2024/06/12 10:21, Luca Boccassi wrote:
    Having a separate namespace with strong ACLs seems exactly what you
    want, even if it duplicates the individual repositories (the backend
    git store deduplicates it anyway, so in practice it should be quite
    cheap). Having an entire separate git forge that competes with Salsa
    seems orthogonal to this, and counterproductive for the project.

    I found the overview of tag2upload from Ian at MDC Campbridge quite
    useful (and the workflow diagrams that he presented). From my
    understanding (and I may still have the wrong end of a stick here), the additional git store used for tag2upload becomes a replacement for
    source packages that happens to use git. So from my understanding, it's
    more a competitor to source packages rather than to salsa.

    Video of the talk:
    https://peertube.debian.social/w/pav68XBWdurWzfTYvDgWRM

    -Jonathan

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?utf-8?Q?Antoine_Beaupr=C3=A9?=@21:1/5 to Sean Whitton on Wed Jun 12 17:40:01 2024
    On 2024-06-12 06:25:02, Sean Whitton wrote:
    Hello everyone,

    This is a draft GR. I'm posting it now for textual review, because of
    the relative shortness of our official discussion periods.

    After some time for review, I'll post again seeking seconds.

    The first sections are an introductory discussion. For the actual GR
    text, scroll down to the bottom of this e-mail. Thanks.

    Hi Sean and dgit folks! :)

    Thank you for bringing this up. I think it's important to have this
    discussion, at long last, about git and dgit and salsa and ftp and oh
    dear...

    TL;DR:

    1. how does this change my gbp/salsa/dput workflow? can i *just* s/dput/dgit/?
    2. does this scale to the archive?
    3. what does this mean for salsa/jenkins/bts/etc?

    Context
    =======

    I'm not exactly sure where to start because, I think this proposal is
    the tip of a very large iceberg with many components. The other thread
    about salsa is one of the chunks lying below the surface, but we could
    have the same discussion about the BTS and Jenkins, obviously... This
    proposal doesn't *directly* address those, but it definitely goes in a
    certain direction and I think a proper GR should more clearly address
    that elephant in the room otherwise Further Discussion might ensue, and
    we all know how well that goes... ;)

    In my case, specifically, as a Debian developer, I wonder how this will
    affect me short, medium and long term. For context, I've been using git
    for a long time at this point. I've used Alioth and Salsa, I use GitLab
    at work and I've also used numerous VCS: RCS, CVS, SVN, hg, darcs, and
    what not...

    Right now my workflow is basically git-buildpackage + salsa + dput, relunctantly using pristine-tar sometimes. I have *tried* to use dgit,
    but it seemed... rather opinionated about things. I didn't like that it
    seemed to have its own ideas as to where I should push my things and how
    to lay out the branches on the repository. I've also repeatedly had
    trouble grasping exactly how everything works. For example now I thought
    "hey, I wonder what dgit does with my packages" and was surprised to not
    find any of them on browse.dgit.debian.org... I guess that's because I
    haven't used it yet?

    1. how does this change my gbp/salsa/dput workflow? can i *just* s/dput/dgit/? ==============================================================================

    So, in the short term, I wonder if I should be using this, and if I do,
    how much of the dgit workflow would I actually need to adopt. Can I just
    keep doing gbp + salsa and switch the "dput" bit to "dgit" or
    "tag2upload" without changing anything else? That would be kind of neat,
    but I'm not sure *why* I would do that in the first place...

    2. does this scale to the archive?
    ==================================

    In the medium term, I am a little worried about the maintainability of
    this. I maintain a GitLab server at work, and we have *just* manage to
    retire a secondary, parallel gitolite/gitweb infrastructure, and I'm
    quite happy about that. For me, the idea of *re*introducing a *second*
    git hosting service in parallel to Salsa seems like a step
    backwards. Git repos, while fairly efficient, *do* get pretty big and we
    have some pretty massive ones out there (hello Firefox and
    LibreOffice!)...

    So what's the plan for dealing with the sheer size of the Debian
    archive, assuming that eventually everything might reasonably be
    expected to be *both* on dgit and salsa, if I understand the proposal correctly?

    (Well, technically, the proposal says "this is opt-in, entirely
    optional", but Ian at least has explicitly stated he expects people to enthusiastically start to use dgit massively in the future, so even if
    that's not actually part of the proposal, we should take that scenario
    into account.)

    3. what does this mean for salsa/jenkins/bts/etc? =================================================

    In the long term, what do you actually think we should do about the
    duplication of tools out there? We are wasting a lot of energy here
    maintaining two CI systems (Jenkins and GitLab CI), two bug trackers
    (BTS and GitLab issues), two wiki systems (MoinMoin and GitLab Wikis),
    two (or more?) VCS hosting systems (dgit and GitLab repos)?

    I understand the proposal doesn't directly say "oh yeah, we're actually thinking we should ditch salsa and replace it with all those nice little
    small components", but it is certainly taking a stand that Salsa is not
    good enough to provide the level of security that is required to upload packages in Debian, and saying that is saying a lot because I suspect we
    are *actually* trusting Salsa and GitLab with our code much more than we
    would like to admit...

    Anyways, I hope I'm not throwing a brick here, I do really have those
    questions and concerns and I am hoping a GR would pre-emptively answer
    them so we have a better idea of what we're actually voting on here,
    because I think the proposal, as it stands now, hides a lot of the
    unresolved issues and problems we have.

    a.

    --
    Il est sage de nous réconcilier avec notre adolescence ; haїr, mépriser, nier ou simplement oublier l’adolescent que nous fûmes est en soi une attitude adolescente.
    - Daniel Pennac, Comme un roman

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Bastian Blank@21:1/5 to Simon McVittie on Wed Jun 12 17:50:01 2024
    On Wed, Jun 12, 2024 at 04:23:29PM +0100, Simon McVittie wrote:
    On Wed, 12 Jun 2024 at 15:20:45 +0100, Ian Jackson wrote:
    tag2upload, like dgit, ensures and insists that the git tree you are uploading corresponds precisely [1] to the generated source package.

    If you base your Debian git maintainer branch on the upstream git (as
    you should) and there is a discrepancy between the contents of the
    upstream git branch, and the .orig.tar.gz you're using, the upload
    will fail.

    How would it fail?

    Is your position here that if your upstream releases source tarballs
    that intentionally differ from what's in git (notably this is true
    for Autotools `make dist`), then any Good™ maintainer must generate
    their own .orig.tar.* from upstream git and use those in the upload, disregarding upstream's source tarball entirely?

    This actually means we need to get rid of orig.tar completely.
    Something that does not exist can't differ.

    Bastian

    --
    I'm a soldier, not a diplomat. I can only tell the truth.
    -- Kirk, "Errand of Mercy", stardate 3198.9

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Marco d'Itri@21:1/5 to [email protected] on Wed Jun 12 18:20:01 2024
    [email protected] wrote:

    Is your position here that if your upstream releases source tarballs
    that intentionally differ from what's in git (notably this is true
    for Autotools `make dist`), then any Good™ maintainer must generate
    their own .orig.tar.* from upstream git and use those in the upload, >disregarding upstream's source tarball entirely?
    It is mine, and this is what I have been doing for a long time for all
    my packages.

    Another interesting consequence of always using the upstream git tree as
    the Debian source is that packaging snapshots then becomes trivial.
    Practical examples are kmod and inn2.

    (I even have some automation to pull, tag and merge a new upstream
    snapshot.)

    --
    ciao,
    Marco

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Luca Boccassi on Wed Jun 12 18:40:01 2024
    Luca Boccassi writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    On Wed, 12 Jun 2024 at 15:34, Ian Jackson
    For the avoidance of doubt: I'm a fan of gitlab and of Salsa.
    I don't want it killed.

    I did not say you do! Nor did I say it was intentional. I am saying
    that a few people do (and you know this), and I am worried that this
    proposal could be taken advantage of for that purpose.

    I see. OK, thanks for the clarification!

    I hope the rest of my message explained why I think tag2upload
    strengthens rather than weakens the political position of Salsa,
    insofar as that position is contested.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Bastian Blank on Wed Jun 12 18:50:01 2024
    Bastian Blank <[email protected]> writes:

    If we need a design, then we can easily avoid the problem points. There
    is a working counter proposal open:

    https://bblank.thinkmo.de/introducing-uploads-debian-git.html

    It requires a sufficiently reproducible build for source packages.
    Right now it is only known to work with the special 3.0 (gitarchive)
    source format, but even that requires the latest version of this
    format. No idea if it is possible to use others, like 3.0 (quilt) for
    this purpose.

    This sounds like a major blocker to me. tag2upload works with the
    existing representations of Debian packages in Git and with the existing supported source package formats.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Luca Boccassi on Wed Jun 12 18:50:01 2024
    Luca Boccassi <[email protected]> writes:

    As per the security review just shared, admin access to Salsa allows
    to push commits anyway which would get uploaded just the same,

    I'm not sure that I understand what you're saying here, but if I did
    understand this correctly, no, this is not correct. My security review
    says the exact opposite of this: admin access to Salsa does not allow you
    to bypass the tag2upload checks or upload a source package.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon McVittie@21:1/5 to Marco d'Itri on Wed Jun 12 18:50:02 2024
    On Wed, 12 Jun 2024 at 16:04:34 -0000, Marco d'Itri wrote:
    Is your position here that if your upstream releases source tarballs
    that intentionally differ from what's in git (notably this is true
    for Autotools `make dist`), then any Good™ maintainer must generate
    their own .orig.tar.* from upstream git and use those in the upload, >disregarding upstream's source tarball entirely?

    It is mine, and this is what I have been doing for a long time for all
    my packages.

    If there is consensus that devref is lagging behind best-practice and
    actually this is fine (or preferable, or should-be-required), perhaps
    someone who advocates this model could propose a replacement for devref §6.8.8?

    smcv

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Simon McVittie on Wed Jun 12 19:20:01 2024
    Simon McVittie <[email protected]> writes:
    On Wed, 12 Jun 2024 at 16:04:34 -0000, Marco d'Itri wrote:

    Is your position here that if your upstream releases source tarballs
    that intentionally differ from what's in git (notably this is true for
    Autotools `make dist`), then any Good™ maintainer must generate their
    own .orig.tar.* from upstream git and use those in the upload,
    disregarding upstream's source tarball entirely?

    It is mine, and this is what I have been doing for a long time for all
    my packages.

    If there is consensus that devref is lagging behind best-practice and actually this is fine (or preferable, or should-be-required), perhaps
    someone who advocates this model could propose a replacement for devref §6.8.8?

    As one of the people who used to advocate for the current devref guidance
    to be best practices, I think we should relax the guidance somewhat here.
    I don't think it's wrong to package for Debian that way, and there are
    some traceability advantages to being able to reuse the upstream tarball signature if there is one, but there are also significant disadvantages.
    It's a complicated tradeoff with good arguments for both approaches.

    To some extent the best choice today depends on upstream's maintenance practices. To take an obvious example, if an upstream treated signed Git
    tags as their foundational release artifact and tarballs as an annoying byproduct they produce only because people insist on them (or just let
    GitHub autogenerate from tags), I don't think following the devref
    guidance and putting more weight on the upstream tarballs than upstream
    does would be best practice.

    In my personal opinion, tag2upload is more compelling for packages where
    the upstream maintainer treats Git tags as their primary release artifact,
    and less compelling for packages where the upstream maintainer views Git
    as a possibly incomplete implementation detail of their workflow and
    signed tarball releases as the only supported release artifact. I would
    pick and choose when to use it based on those sorts of factors. That's
    one of the reasons, in my mind, why use of it would be entirely optional.
    It's an extension of Debian packaging practices to a Git-first world, and therefore makes the most sense when upstream has adopted a Git-first development approach.

    (Although, that said, it's still very tempting to move source package construction off of local machines and into a buildd-style clean and reproducible environment. That security and reliability advantage may
    make it worth it to me to break the provenance link with upstream signed tarballs, even though I still think it's a shame to have to do that.
    Hopefully more upstreams will adopt signed Git tags as well, even if they
    want to continue making signed tarball releases.)

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Gunnar Wolf@21:1/5 to All on Wed Jun 12 19:20:01 2024
    Ian Jackson dijo [Wed, Jun 12, 2024 at 12:52:52PM +0100]:
    There is also an assurance question. Salsa is running gitlab, which
    is an extremely complicated piece of software with very many features.
    Any one of those features (which are constantly changing) offers an opportunity for compromise of Salsa. Also, we don't have the
    resources to audit all the code comeing from gitlab upstream.

    The attack surface of the dgit repos server is much smaller. Its
    supply chain integrity is much better. So it is much less likely to
    be compromised. (Also, diversity of implementation is helpful.)

    This is an important point, as you intend to give the dgit server a
    lot of responsability and power. After all, were Salsa (or dgit, or
    whatever) capable of modifying and inserting hostile bits in built
    packages from a clean Git tree would be catastrophic. However...

    And, while I find gitlab and Salsa very convenient, we have already
    had one git forge fall by the wayside. As I say, the dgit repos
    server has already survived the death of one forge and it needs to
    survive any problem with Salsa.

    Finally, using Salsa instead would involve modelling the Debian upload permissions model in repository ACLs, which we don't currently do.
    We would need to link uploaders' PGP keys to their ssh keys and rely
    on ssh keys, I think.

    Given how much resistance there is to even t2u's current dssign, I
    don't think placing this much reliance on Salsa etc. is politically
    viable even if it were wise (which I think it wouldn't be).

    Salsa is a set of services structured around, and based upon, a set of
    Git repositories. Git has the excellent property, as you are aware,
    that it's very easy to replicate repositories and be reasonably sure
    that all copies are perfectly equivalent. Even more so if SHA256 were
    to be adopted as soon as it is available, as Russ' analysis points
    out.

    I am still making my way through the discussion, however, and there
    are many bits I haven't understood. But the project has (mostly)
    decided and adopted Salsa as our project-wide Git "thingy". If it were
    feasible to adequate Salsa to add the ACLs needed for tag2upload to be
    securely deployable, I don't follow the need to have a second Git implementation we'd all have to interface with (in order to use
    tag2upload).

    And even if Salsa is deemed insufficiently prepared (or having a too
    large vulnerability footprint), a second, hidden Git-based server
    could be made to pull from Salsa, quietly syncing and acting when the
    right tags are found. And, of course, loudly complaining to users if
    any invalid operation (i.e. history rewrites involving published tags)
    were attempted.

    I am mentioning this because I see quite a bit of friction in this
    regard. Some people see your tag2upload proposal as a step to diminish
    Salsa's place in Debian and probably even have it fully replaced in
    the future. I'm just suggesting this as a way to keep our project Git interacions with Salsa. Again, I'm jsut in a first stage of
    understanding the proposal and what it involves, but... am I pointing
    in a generally correct direction?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Rakhmatullin@21:1/5 to Simon McVittie on Wed Jun 12 19:20:01 2024
    On Wed, Jun 12, 2024 at 05:45:25PM +0100, Simon McVittie wrote:
    Is your position here that if your upstream releases source tarballs
    that intentionally differ from what's in git (notably this is true
    for Autotools `make dist`), then any Good™ maintainer must generate >their own .orig.tar.* from upstream git and use those in the upload, >disregarding upstream's source tarball entirely?

    It is mine, and this is what I have been doing for a long time for all
    my packages.

    If there is consensus that devref is lagging behind best-practice and actually this is fine (or preferable, or should-be-required), perhaps
    someone who advocates this model could propose a replacement for devref §6.8.8?

    I think this is one of the areas where multiple incompatible forkflow
    exist and there is no project consensus on many details of those
    workflows.

    --
    WBR, wRAR

    -----BEGIN PGP SIGNATURE-----

    iQJhBAABCgBLFiEEolIP6gqGcKZh3YxVM2L3AxpJkuEFAmZp164tFIAAAAAAFQAP cGthLWFkZHJlc3NAZ251cGcub3Jnd3JhckBkZWJpYW4ub3JnAAoJEDNi9wMaSZLh QQkQAIe8NCq7Kc46PTnHoKJQVxreDnv+1Wj8yus4JDNDdKPUkEMnRlfnEnhoJMxr Wj9zSge+JpNnxRHCNTci3IfzOfONm/aRO3Fk65ZU94NItqu8p+bqFzbB5m0aRW3M wBvVeV2mQVy+PykwGyw6j03vIJrXW2cZ4urVcGF5+6E2V6dQrvIkBqz+ZkZvwCGv /phFJT0xUjzYrlcXzO1GYxmmJuAwNMkygi+jrTClYz7wc02J0bbPWQ3b/MSifoSO et0O4EYN6dIcTLIvpE1Q807JaQlV7rPC5TxsQ8DUlqrVi70OlOfwTRSArgU+MrKO DSWRyHpY6N4d3t3q5krAc4FqK/T3LDKrxiHfVxxUJXEMxAds8LiHO5q0hr7oCYFB cyKzY3DII+zoVxy9nrd5+JoGldArppPQ0AQ+n3WD5AUEBzEP4mDXwGp5S/78b9Gg p2HByKQnlaX6/l8xfu4xQQ+yB0VK7GPeQasG/qNUvEowZH31dcwLaTjWLSROXoxR tmKxsg19HkwbsK4JtAsisI5hnXqKLWozxwhlhHhzB9NxwFYfjEcVUBtSY7mWftGA AadppPuWvhNd2n/oP7SzGZgJokmUL0ahEzmHHU9OHt61OizIwvLX5KYwzhkUabG0 rba3Ei2YPDVxiqDBwQkOTM4ywDJg/xCjTsFtpbrsY6XfqYj2
    =gvDv
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Gunnar Wolf@21:1/5 to All on Wed Jun 12 19:30:01 2024
    Umh...

    I am still making my way through the discussion, however, and there
    are many bits I haven't understood. But the project has (mostly)
    decided and adopted Salsa as our project-wide Git "thingy". If it were feasible to adequate Salsa to add the ACLs needed for tag2upload to be securely deployable, I don't follow the need to have a second Git implementation we'd all have to interface with (in order to use
    tag2upload).

    And even if Salsa is deemed insufficiently prepared (or having a too
    large vulnerability footprint), a second, hidden Git-based server
    could be made to pull from Salsa, quietly syncing and acting when the
    right tags are found. And, of course, loudly complaining to users if
    any invalid operation (i.e. history rewrites involving published tags)
    were attempted.

    After reading a bit more, I find I'm describing... precisely bits that
    you have already considered and incorporated in the proposal itself.

    so, sorry for the noise. I shall continue reading in order
    to... understand why the controversy I'm replying to even started :-Þ

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Soren Stoutner@21:1/5 to All on Wed Jun 12 10:37:23 2024
    On Wednesday, June 12, 2024 10:10:58 AM MST Russ Allbery wrote:
    In my personal opinion, tag2upload is more compelling for packages where
    the upstream maintainer treats Git tags as their primary release artifact, and less compelling for packages where the upstream maintainer views Git
    as a possibly incomplete implementation detail of their workflow and
    signed tarball releases as the only supported release artifact. I would
    pick and choose when to use it based on those sorts of factors. That's
    one of the reasons, in my mind, why use of it would be entirely optional. It's an extension of Debian packaging practices to a Git-first world, and therefore makes the most sense when upstream has adopted a Git-first development approach.

    I completely endorse this statement. What works best for packaging depends a lot on how upstream is organized. Having the *option* to do everything in Git when that matches upstream or otherwise is desirable is a rational progression in Debian’s architecture.

    --
    Soren Stoutner
    [email protected]
    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEJKVN2yNUZnlcqOI+wufLJ66wtgMFAmZp3NMACgkQwufLJ66w tgMh7g/8C5DewkiCP5lPOS2mjyzhMO8qn8v1tnXU1H/ss+7b9QCMyCk7g9M/cTME jepL1Jhk+iaD9CHCW3I2AqkBTpE5VgmXwl9n/ueSeXwpHHonxPa7f/SbwWoL4Gli FsiawB3sAPrgR6xas4SFqzw5JWd+WrRiP+zxMD4gcpYBN0YWWuEcdE+5TF4STmlm la0gVri8mOFG3yiOyR1MsysmErTd3qIpLvYmLywe5dAHaW0J6Ss4LvAkI6QBURat qlYDQFNH1rqvJ474cJ/ge5SAec4RWYMZLWyeqxwZewAWI+5p7jOfMzYKW88jiJ9W f3WhZb2EYK+UrK0Mw9HZ9M/pntvyzf8ERrcMHvF9baaQvFK4VpPih+kvP2rG3omY O/3Djamgk+rLyi3W3tcKMaWhXfvhe77mVuZEWQZ7wCuKu+ZqX8J5UwvD38vGpZRD FKw++U1sAzbhhIdRctEVNM14bi6jZdjJ6kA8FXNejUHJ65uF6cjr9/Stj1d79YpF JvTe6L5XtB0Zw2x356f5xpx7kuvtfmfkBbVDu4ykYZYRjDsPaaGgPzcQWHzunyDb zI+Vhq2jPYMv/uwSF3kCjGKVFiaGmFcQLw2A4AeR3tT/Td5jpuAOhYPKJe/ym8J5 0V2PN+gdweq+xiTlY61cQeaVU1b1MLeE79uQSb/9ukTywHPXfyc=
    =SBj5
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Gunnar Wolf on Wed Jun 12 19:50:01 2024
    Gunnar Wolf <[email protected]> writes:

    I am still making my way through the discussion, however, and there are
    many bits I haven't understood. But the project has (mostly) decided and adopted Salsa as our project-wide Git "thingy". If it were feasible to adequate Salsa to add the ACLs needed for tag2upload to be securely deployable, I don't follow the need to have a second Git implementation
    we'd all have to interface with (in order to use tag2upload).

    And even if Salsa is deemed insufficiently prepared (or having a too
    large vulnerability footprint), a second, hidden Git-based server could
    be made to pull from Salsa, quietly syncing and acting when the right
    tags are found. And, of course, loudly complaining to users if any
    invalid operation (i.e. history rewrites involving published tags) were attempted.

    I know that you already self-replied to this saying basically the same
    thing, but for anyone reading the thread, I wanted to make clear that the suggestion in your second paragraph is indeed how the dgit-repos server
    works. No one has to interact with the dgit-repos server directly. The
    signed tag is pushed only to Salsa, and the push to the dgit-repos server
    is done under the hood by the tag2upload server.

    The dgit-repos server offers some other features unrelated to tag2upload
    that people may wish to use (such as dgit clone), but for tag2upload
    purposes it can be ignored entirely for the normal workflow. It's there
    to keep a persistent append-only record of the exact Git trees that were converted to source packages, should that be needed for later detection or tracing of some issue.

    There was more confusion about this point than I had anticipated, so I
    want to emphasize that the dgit-repos server is not a forge, is not a competitor to Salsa, doesn't replace Salsa in any way, and is not
    something that people interact with the way that they interact with Salsa.
    It's much closer to a Git equivalent of archive.debian.org: a persistent historical record accessible via the Git protocol and (as I discovered
    during this thread) a cgit web interface.

    I think it's important to keep the dgit-repos server separate from Salsa
    for the reasonsn that Ian pointed out in another part of the thread, most
    of which reduce to the fact that Salsa is, necessarily, a very large and complicated thing with a ton of functionality because it is trying to
    solve a very hard problem, namely interactive development using a huge
    variety of Git-based workflows. Keeping the persistent append-only
    archive separate maintains separation of duties, provides a nice security boundary, similar in spirit to keeping off-site backups, and reduces the lateral movement security threat by making it harder to leverage a Salsa compromise into a compromise of the historic record of our Git trees.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Adam D. Barratt@21:1/5 to Russ Allbery on Wed Jun 12 20:00:01 2024
    On Wed, 2024-06-12 at 10:43 -0700, Russ Allbery wrote:
    There was more confusion about this point than I had anticipated, so
    I want to emphasize that the dgit-repos server is not a forge, is not
    a competitor to Salsa, doesn't replace Salsa in any way, and is not
    something that people interact with the way that they interact with
    Salsa.
    It's much closer to a Git equivalent of archive.debian.org: a
    persistent historical record accessible via the Git protocol and (as
    I discovered during this thread) a cgit web interface.

    In that sense, it's more like snapshot.debian.org, I think?

    archive.d.o stores historical releases of Debian as a whole, not
    individual uploads that happen between stable releases. (With perfect hindsight, "archive" is a horribly overloaded word in Debian terms,
    but...)

    Regards,

    Adam

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Adam D. Barratt on Wed Jun 12 20:30:01 2024
    "Adam D. Barratt" <[email protected]> writes:
    On Wed, 2024-06-12 at 10:43 -0700, Russ Allbery wrote:

    There was more confusion about this point than I had anticipated, so I
    want to emphasize that the dgit-repos server is not a forge, is not a
    competitor to Salsa, doesn't replace Salsa in any way, and is not
    something that people interact with the way that they interact with
    Salsa. It's much closer to a Git equivalent of archive.debian.org: a
    persistent historical record accessible via the Git protocol and (as I
    discovered during this thread) a cgit web interface.

    In that sense, it's more like snapshot.debian.org, I think?

    Yes, apologies, that's a much better analogy.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Luca Boccassi@21:1/5 to Russ Allbery on Wed Jun 12 22:10:01 2024
    On Wed, 12 Jun 2024 at 19:24, Russ Allbery <[email protected]> wrote:

    "Adam D. Barratt" <[email protected]> writes:
    On Wed, 2024-06-12 at 10:43 -0700, Russ Allbery wrote:

    There was more confusion about this point than I had anticipated, so I
    want to emphasize that the dgit-repos server is not a forge, is not a
    competitor to Salsa, doesn't replace Salsa in any way, and is not
    something that people interact with the way that they interact with
    Salsa. It's much closer to a Git equivalent of archive.debian.org: a
    persistent historical record accessible via the Git protocol and (as I
    discovered during this thread) a cgit web interface.

    In that sense, it's more like snapshot.debian.org, I think?

    Yes, apologies, that's a much better analogy.

    But you don't push to snapshot, it's just a backup method, it doesn't
    take any input from DDs (AFAIK? Am I wrong?). Given https://browse.dgit.debian.org/ exists and has tons of stuff already,
    and this proposal for tag2upload doesn't exist yet, I gather that dgit
    is already a thing that is used independently of tag2upload? I mean,
    that's how it was explained to me yesterday anyway.

    So I don't think this analogy works. One couldn't say "let's remove archive.debian.org, just push to snapshot.debian.org", but one could
    say "let's remove salsa.debian.org, just push to dgit.debian.org".

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Luca Boccassi@21:1/5 to Jonas Smedegaard on Wed Jun 12 22:10:01 2024
    On Wed, 12 Jun 2024 at 15:20, Jonas Smedegaard <[email protected]> wrote:

    Quoting Luca Boccassi (2024-06-12 15:27:36)
    On Wed, 12 Jun 2024 at 14:15, Jonas Smedegaard <[email protected]> wrote:
    You apparently find it equally sensible, specifically as a security measure, a) apply ACLs on an otherwise massively multi-user-write-access host and b) use a separate far-less-featured host.

    You claim that both setups have equal vulnerabilities.

    No, I claim they have different sets of vulnerabilities, disadvantages
    and advantages, and that both can provide the required feature:
    disallow force pushes/deleting tags. The hardest thing with security
    is that it requires a constant, ongoing effort, that will never end,
    and will only get harder. A widely used software like Gitlab is better
    for this, as is a widely used kernel like Linux. Or are you suggesting
    such a server should run on Hurd, given it's far-less-featured and
    thus has a much smaller attack surface than Linux?

    No, I am not suggesting the use of the Hurd here, and I am having a hard
    time assuming good faith with the potential undertones of that question.

    To answer your convoluted question, I am suggesting that Salsa and
    tag2upload has very different needs (multi-user write versus multi-user append-only, drastically simplified), and consequently to not argue that reuse of Salsa for hosting tag2upload is a security benefit.

    The argument is about attack surface, number of features, size of code
    base, auditability, etc. If you make that argument about the git stack
    running on a server, then the same argument applies for every other
    component in the same server that interact in any way with the
    payload(s) - kernel, libc, compilers, etc. Otherwise you are just
    cherrypicking what is convenient, and ignoring what is not. If Gitlab
    can't be used in a security-relevant component because it's too big to
    audit, then so are the Linux kernel and GCC.

    My argument is that having a single system is beneficial for
    maintenance costs (fewer platforms, fewer moving parts), for security (components in widespread usage with heavy commercial backing spending
    the big $$$$ to ensure it's not completely borken), and for
    rationalizing and avoiding duplication.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Luca Boccassi@21:1/5 to Russ Allbery on Wed Jun 12 22:20:02 2024
    On Wed, 12 Jun 2024 at 17:46, Russ Allbery <[email protected]> wrote:

    Luca Boccassi <[email protected]> writes:

    As per the security review just shared, admin access to Salsa allows
    to push commits anyway which would get uploaded just the same,

    I'm not sure that I understand what you're saying here, but if I did understand this correctly, no, this is not correct. My security review
    says the exact opposite of this: admin access to Salsa does not allow you
    to bypass the tag2upload checks or upload a source package.

    Probably "push commits anyway" was a wrong oversimplification, what I
    was referring to was all the various "someone with admin access on
    Salsa" mentions on the document you shared.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Luca Boccassi on Wed Jun 12 22:40:01 2024
    Luca Boccassi <[email protected]> writes:

    But you don't push to snapshot, it's just a backup method, it doesn't
    take any input from DDs (AFAIK? Am I wrong?). Given https://browse.dgit.debian.org/ exists and has tons of stuff already,
    and this proposal for tag2upload doesn't exist yet, I gather that dgit
    is already a thing that is used independently of tag2upload?

    Correct. I've been using dgit to upload my packages for years now. The packages are all maintained on Salsa. dgit push-source (the command to
    upload a package) both pushes to the dgit-repos server and runs dput,
    along with a few other things including source package construction and signing.

    (dgit, the command-line tool, is independent of the tag2upload server.
    You do not have to use dgit to use tag2upload.)

    So I don't think this analogy works. One couldn't say "let's remove archive.debian.org, just push to snapshot.debian.org", but one could say "let's remove salsa.debian.org, just push to dgit.debian.org".

    In what sense could one say that? What do you think pushing to
    dgit.debian.org would do? I think you have some confusion here about what
    the dgit-repos server is for and what it does, but I'm having a hard time figuring out the exact source of the confusion.

    If you're saying that if one doesn't care about making work in progress available, doesn't want pull requests, doesn't want multiple people to be
    able to work on a package together, and doesn't want CI, but only and exclusively wants a Git server to archive a record of what Git trees were uploaded as source packages, one could use only the dgit-repos server and
    not Salsa, then yes, that's true.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Luca Boccassi on Wed Jun 12 22:50:02 2024
    Luca Boccassi <[email protected]> writes:
    On Wed, 12 Jun 2024 at 17:46, Russ Allbery <[email protected]> wrote:

    I'm not sure that I understand what you're saying here, but if I did
    understand this correctly, no, this is not correct. My security review
    says the exact opposite of this: admin access to Salsa does not allow
    you to bypass the tag2upload checks or upload a source package.

    Probably "push commits anyway" was a wrong oversimplification, what I
    was referring to was all the various "someone with admin access on
    Salsa" mentions on the document you shared.

    Hm, I think you're referring to this section?

    | - Administrative access to Salsa would make SHA-1 collision attacks
    | easier, as discussed below. However, this still assumes the attacker
    | is able to create Git trees with colliding hash digests.
    |
    | - Security vulnerabilities in the Git client used by the tag2upload
    | source package construction sandbox could be exploited by a malicious
    | Salsa Git server to compromise the VM and introduce malicious code
    | into the source package it constructs. Since a malicious Git server
    | could similarly be used to compromise the systems of the numerous
    | Debian contributors who use Salsa via Git clients regularly, I don't
    | believe this introduces substantial new risk, but it does create a new
    | avenue of attack that is possibly less likely to be detected.

    I think those are the only two places where administrative access to Salsa helps attack tag2upload specifically. Those are the two that I mentioned
    in the security review.

    Administrative access to Salsa could be abused to do other things earlier
    in the workflow unrelated to tag2upload, although a lot of them would be
    easily detected by anyone with an existing Git checkout once they tried to update it because they would require force pushes.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Luca Boccassi@21:1/5 to Russ Allbery on Wed Jun 12 23:10:01 2024
    On Wed, 12 Jun 2024 at 21:32, Russ Allbery <[email protected]> wrote:

    Luca Boccassi <[email protected]> writes:

    But you don't push to snapshot, it's just a backup method, it doesn't
    take any input from DDs (AFAIK? Am I wrong?). Given https://browse.dgit.debian.org/ exists and has tons of stuff already,
    and this proposal for tag2upload doesn't exist yet, I gather that dgit
    is already a thing that is used independently of tag2upload?

    Correct. I've been using dgit to upload my packages for years now. The packages are all maintained on Salsa. dgit push-source (the command to upload a package) both pushes to the dgit-repos server and runs dput,
    along with a few other things including source package construction and signing.

    (dgit, the command-line tool, is independent of the tag2upload server.
    You do not have to use dgit to use tag2upload.)

    So I don't think this analogy works. One couldn't say "let's remove archive.debian.org, just push to snapshot.debian.org", but one could say "let's remove salsa.debian.org, just push to dgit.debian.org".

    In what sense could one say that? What do you think pushing to dgit.debian.org would do? I think you have some confusion here about what the dgit-repos server is for and what it does, but I'm having a hard time figuring out the exact source of the confusion.

    If you're saying that if one doesn't care about making work in progress available, doesn't want pull requests, doesn't want multiple people to be able to work on a package together, and doesn't want CI, but only and exclusively wants a Git server to archive a record of what Git trees were uploaded as source packages, one could use only the dgit-repos server and
    not Salsa, then yes, that's true.

    Yes, that's the argument - all Salsa features are bad and "bloat":
    issues are bad, teams are bad, CIs are bad, merge requests are bad,
    the only thing needed is to push&pull to some git backend, everything
    else is bad and unneeded.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joerg Jaspert@21:1/5 to Luca Boccassi on Wed Jun 12 23:10:01 2024
    On 17258 March 1977, Luca Boccassi wrote:


    "My security recommendation in this case is therefore to centralize
    the risk as much as possible, moving it off of individual uploader
    systems with unknown security profiles and onto a central system that
    can be analyzed and iteratively improved."

    So I don't think this is a good argument. One system is better than
    two. And we need to secure all of it anyway, as Salsa is a component
    of the solution anyway.

    Nah. Without having looked through the dgit source - having a system
    beside salsa do this for Debian is much preferable.

    The gitlab for salsa is
    a.) forcing us to follow a way that does *not* fit how Debian works for
    uploads
    b.) a codebase so much larger and made out of so many more components
    than all of this proposals code combined together, it will be *worse*.
    I mean, look at the security history of Gitlab. Sure, they are fast in
    fixing. But they are *constantly* fixing things up with "critical
    release, apply ASAP".

    While I haven't had the time to look in detail into this dgit/tag2upload/whatever thingie, I am happy it is separate. If it's
    able to integrate with Salsa (or any forge) by, say, receiving webhooks
    or something (or just reading from it), thats the interface I would like
    it to have. Nicely separate, but interacting.

    Has another advantage: Makes it easier to switch away from gitlab to
    whatever other forge we may want to switch to, at some point. I'm sure
    it will happen at some point that gitlab won't fit us anymore.

    --
    bye, Joerg

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Luca Boccassi on Wed Jun 12 23:20:01 2024
    Luca Boccassi <[email protected]> writes:

    Yes, that's the argument - all Salsa features are bad and "bloat":
    issues are bad, teams are bad, CIs are bad, merge requests are bad, the
    only thing needed is to push&pull to some git backend, everything else
    is bad and unneeded.

    Doesn't the dgit server only accept signed tags? If I'm right about that,
    it seems like a very coarse collaboration boundary. I'm not sure that qualifies as push/pull in the way that you mean it. It certainly wasn't intended as a Git hosting platform, and I think it is not obviously usable
    as one because it was designed for a different purpose.

    Anyway, just to make it obvious, I don't agree with that argument, none of
    the dgit developers agree with it, and as I understand it neither do you.
    I'm not sure that anyone in the project is seriously advocating replacing
    Salsa with just a Git archive server; we may be exploring the implications
    of a straw-man position.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Luca Boccassi@21:1/5 to Joerg Jaspert on Wed Jun 12 23:20:01 2024
    On Wed, 12 Jun 2024 at 22:01, Joerg Jaspert <[email protected]> wrote:

    On 17258 March 1977, Luca Boccassi wrote:


    "My security recommendation in this case is therefore to centralize
    the risk as much as possible, moving it off of individual uploader
    systems with unknown security profiles and onto a central system that
    can be analyzed and iteratively improved."

    So I don't think this is a good argument. One system is better than
    two. And we need to secure all of it anyway, as Salsa is a component
    of the solution anyway.

    Nah. Without having looked through the dgit source - having a system
    beside salsa do this for Debian is much preferable.

    The gitlab for salsa is
    a.) forcing us to follow a way that does *not* fit how Debian works for
    uploads

    I have no idea what this means, sorry.

    b.) a codebase so much larger and made out of so many more components
    than all of this proposals code combined together, it will be *worse*.
    I mean, look at the security history of Gitlab. Sure, they are fast in
    fixing. But they are *constantly* fixing things up with "critical
    release, apply ASAP".

    You can take that paragraph, do s/Gitlab/Linux kernel/ and it would
    still 100% apply. So do you propose that this additional forge runs on
    Hurd then? It's got no security advisories! A nice and clean security
    history.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jonas Smedegaard@21:1/5 to All on Wed Jun 12 23:30:02 2024
    Quoting Luca Boccassi (2024-06-12 22:00:04)
    On Wed, 12 Jun 2024 at 15:20, Jonas Smedegaard <[email protected]> wrote:

    Quoting Luca Boccassi (2024-06-12 15:27:36)
    On Wed, 12 Jun 2024 at 14:15, Jonas Smedegaard <[email protected]> wrote:
    You apparently find it equally sensible, specifically as a security measure, a) apply ACLs on an otherwise massively multi-user-write-access
    host and b) use a separate far-less-featured host.

    You claim that both setups have equal vulnerabilities.

    No, I claim they have different sets of vulnerabilities, disadvantages and advantages, and that both can provide the required feature:
    disallow force pushes/deleting tags. The hardest thing with security
    is that it requires a constant, ongoing effort, that will never end,
    and will only get harder. A widely used software like Gitlab is better for this, as is a widely used kernel like Linux. Or are you suggesting such a server should run on Hurd, given it's far-less-featured and
    thus has a much smaller attack surface than Linux?

    No, I am not suggesting the use of the Hurd here, and I am having a hard time assuming good faith with the potential undertones of that question.

    To answer your convoluted question, I am suggesting that Salsa and tag2upload has very different needs (multi-user write versus multi-user append-only, drastically simplified), and consequently to not argue that reuse of Salsa for hosting tag2upload is a security benefit.

    The argument is about attack surface, number of features, size of code
    base, auditability, etc. If you make that argument about the git stack running on a server, then the same argument applies for every other
    component in the same server that interact in any way with the
    payload(s) - kernel, libc, compilers, etc. Otherwise you are just cherrypicking what is convenient, and ignoring what is not. If Gitlab
    can't be used in a security-relevant component because it's too big to
    audit, then so are the Linux kernel and GCC.

    My point above, reframed to your new context, is that regardless of how overwhelmingly large the attack surface of GCC+linux is, the attack
    surface of GCC+linux+Gitlab is much larger, while that of
    GCC+linux+tag2upload is little larger.

    My argument is that having a single system is beneficial for
    maintenance costs (fewer platforms, fewer moving parts), for security (components in widespread usage with heavy commercial backing spending
    the big $$$$ to ensure it's not completely borken), and for
    rationalizing and avoiding duplication.

    Ok, if your argument is no longer that "the same setup can be achieved
    with repository ACLs, and it would have the same vulnerability" but that security+economy+maintenance combined makes your previous security-only
    point less relevant to discuss, then I have nothing sensible to
    contribute to this new path of yours.

    - Jonas

    --
    * Jonas Smedegaard - idealist & Internet-arkitekt
    * Tlf.: +45 40843136 Website: http://dr.jones.dk/
    * Sponsorship: https://ko-fi.com/drjones

    [x] quote me freely [ ] ask before reusing [ ] keep private --==============Q78330737904066253=MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Description: signature
    Content-Type: application/pgp-signature; name="signature.asc"; charset="us-ascii"

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEn+Ppw2aRpp/1PMaELHwxRsGgASEFAmZqEokACgkQLHwxRsGg ASF9JxAAktid2Tn/TyH5pYPE/qUtV30fxJmOCpM740TlqC2ANa97sjpKYW6Xkmby 6V29kN564Wn6j+ynUNHGCKaACBl8DcUj6J4vbNhbdTqYE/FddPm/yL9g1BlBH73G nonamFGRqSRLsRPuSY/jNEcO0IdzlaxIOrvpUD51g2cex1pWdRAu91tlqHHATuEF uPutJtyrsrPPHNzT8PvpCiCsnmyOMxEnXw5h3sIQKkhoA2YD19/NO2oaaL/Dy/vD /5xRZnXvM7I1bCpDyBVR8w709bfuqUsF7xdNktsr5jsIXLcoxkZqCkZJAxX6L6GE nsjZnGs878v43EVFczLJ4MmX9Qw7nYH9bKeMpILds1sJxsy5jldV4Kj9p28LkTUE u6ZiHtHeYSHPvbAZpwWknphFhJSiaMlJvCxJsPUW1odY49Ocw3meHTA7c0qkQlt5 Ka9myYttDXg91d5ZJH1lW4DpMdAKwrRXmJ1XJ4MR
  • From Joerg Jaspert@21:1/5 to Ian Jackson on Wed Jun 12 23:30:02 2024
    On 17258 March 1977, Ian Jackson wrote:

    And we also remove the Debian Maintainer role as dak would no
    longer
    know who uploaded the package? Debian is larger than only Debian
    Developers.
    This is a policy aspect. When we need to revoke a key used for
    uploading
    this happens via keyring maintainers as far as I understand, but in
    urgent cases it is ftp master who can also deny upload rights more
    quickly than via a keyring update. In moving to tag2upload as a
    service
    external to ftp, we partially move this capability from ftp master to
    the entity running tag2upload (DSA afaiui). Is there a sensible way
    to
    leave this policy aspect with the ftp team when using the tag2upload
    service? In effect, I'm asking whether ftp could somehow provide an
    authorization oracle to be used by tag2upload.
    tag2upload leaves this policy with the ftpmaster team. It uses the
    archive keyrings and dak's list of Debian Maintainers.

    So there is no change here.

    Actually, we can set acls on fingerprints and then that key wont be able
    to upload anymore. That is not something recorded in the keyrings or the
    DM list. Obviously that is not something used often (really really
    seldom), it is more for "this key is compromised badly, please turn off anything with it *NOW*" situations, which it's what Helmut meant with
    the
    urgent cases.

    --
    bye, Joerg

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to All on Wed Jun 12 23:40:01 2024
    Hello Antoine,

    Thank you for your interest.

    I think I should say right away that tag2upload != dgit.
    With tag2upload, you will be able to replace 'dpkg-buildpackage -S' and
    'dput' with just 'git debpush'. Your other gbp usage is unchanged.

    Thank you for sharing your recent work experience with scalability and
    concerns that it might apply to the dgit-repos server.
    I'll let Ian reply to that part.

    It is interesting that you see this proposal as the tip of an iceberg
    and that you would like to see more of the wider context, because Helmut
    said something similar to me yesterday.

    The way I see it, one thing that we can be sure about is that whatever
    else we might want to do in the future with our git/salsa transition, we
    know that we will want to do source-only uploads by pushing a signed git
    tag. We can implement that now, so let's do it.

    On Wed 12 Jun 2024 at 11:08am -04, Antoine Beaupré wrote:

    I understand the proposal doesn't directly say "oh yeah, we're actually thinking we should ditch salsa and replace it with all those nice little small components", but it is certainly taking a stand that Salsa is not
    good enough to provide the level of security that is required to upload packages in Debian, and saying that is saying a lot because I suspect we
    are *actually* trusting Salsa and GitLab with our code much more than we would like to admit...

    I don't think we are taking a stand that salsa is not good enough to
    provide any particular form of security.
    In fact, I don't think that tag2upload changes the extent to which we
    trust salsa: we would not be trusting it any more nor any less. Perhaps
    you could take another look at the design.

    (In the background: I very much share your view that we are actually
    trusting salsa far much than we generally think we are.)

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joerg Jaspert@21:1/5 to Luca Boccassi on Wed Jun 12 23:40:01 2024
    On 17258 March 1977, Luca Boccassi wrote:

    Whatever end goals some individuals may have is *NOT* a good base to
    decide on how a technical implementation for Debian should be.

    If it turns out that this new thingie makes Salsa entirely
    unneccessary,
    then so be it. Good for us.

    I highly doubt this will happen. The dgit stuff only implements a
    small
    subset of features. The BTS does *not* provide what Salsa issues do.
    There isn't anything even near to do what MRs do. CI integration?
    Even
    less so. No idea why anyone should fear this dgit thing will lead to
    Salsa getting turned off, at this point.

    But really, if we end up getting something that makes an installation
    of
    gitlab unneccessary, then yay, party. It is not something to be
    feared.

    So in other words, I am 100% right to worry about this being the thin
    end of the wedge that some will use to try and kill Salsa. Sounds like
    below NoTA if it goes to GR for anybody who, like me, doesn't want
    Salsa to be jeopardised, then.

    WTF is up with you? Honest question. I just explained, in a load of
    words, that this thing is *really* unlikely to provide whatever it needs
    to replace Salsa, as there is basically nothing actually providing the
    features Salsa provides. And your conclusion is more "trying to kill
    Salsa"?

    What?

    --
    bye, Joerg

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Luca Boccassi@21:1/5 to Jonas Smedegaard on Wed Jun 12 23:40:01 2024
    On Wed, 12 Jun 2024 at 22:26, Jonas Smedegaard <[email protected]> wrote:

    Quoting Luca Boccassi (2024-06-12 22:00:04)
    On Wed, 12 Jun 2024 at 15:20, Jonas Smedegaard <[email protected]> wrote:

    Quoting Luca Boccassi (2024-06-12 15:27:36)
    On Wed, 12 Jun 2024 at 14:15, Jonas Smedegaard <[email protected]> wrote:
    You apparently find it equally sensible, specifically as a security measure, a) apply ACLs on an otherwise massively multi-user-write-access
    host and b) use a separate far-less-featured host.

    You claim that both setups have equal vulnerabilities.

    No, I claim they have different sets of vulnerabilities, disadvantages and advantages, and that both can provide the required feature: disallow force pushes/deleting tags. The hardest thing with security
    is that it requires a constant, ongoing effort, that will never end, and will only get harder. A widely used software like Gitlab is better for this, as is a widely used kernel like Linux. Or are you suggesting such a server should run on Hurd, given it's far-less-featured and
    thus has a much smaller attack surface than Linux?

    No, I am not suggesting the use of the Hurd here, and I am having a hard time assuming good faith with the potential undertones of that question.

    To answer your convoluted question, I am suggesting that Salsa and tag2upload has very different needs (multi-user write versus multi-user append-only, drastically simplified), and consequently to not argue that reuse of Salsa for hosting tag2upload is a security benefit.

    The argument is about attack surface, number of features, size of code base, auditability, etc. If you make that argument about the git stack running on a server, then the same argument applies for every other component in the same server that interact in any way with the
    payload(s) - kernel, libc, compilers, etc. Otherwise you are just cherrypicking what is convenient, and ignoring what is not. If Gitlab
    can't be used in a security-relevant component because it's too big to audit, then so are the Linux kernel and GCC.

    My point above, reframed to your new context, is that regardless of how overwhelmingly large the attack surface of GCC+linux is, the attack
    surface of GCC+linux+Gitlab is much larger, while that of GCC+linux+tag2upload is little larger.

    The attack surface of GCC+linux+tag2upload is orders of magnitude
    larger than that of TCC+hurd+tag2upload. Are you going to advocate for
    that switch to happen? If not, why? Why do you think it's worth to
    deprecate Salsa because of its much larger attack surface, but it's
    not worth deprecating Linux and GCC for their demonstrably much larger
    attack surfaces? Could it be, maybe, perhaps, that a superficial
    comparison of perceived attack surfaces alone is not really a good
    metric to make a decision?

    My argument is that having a single system is beneficial for
    maintenance costs (fewer platforms, fewer moving parts), for security (components in widespread usage with heavy commercial backing spending
    the big $$$$ to ensure it's not completely borken), and for
    rationalizing and avoiding duplication.

    Ok, if your argument is no longer that "the same setup can be achieved
    with repository ACLs, and it would have the same vulnerability" but that security+economy+maintenance combined makes your previous security-only
    point less relevant to discuss, then I have nothing sensible to
    contribute to this new path of yours.

    My argument has always been the same, which is: a custom forge is not
    needed to satisfy the requirement that force pushes/deleting tags is
    disallowed to users, which is what the design document uses to justify
    its choice as I understand it. If you understood something else from
    my point, then I'm afraid you were simply mistaken.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Joerg Jaspert on Wed Jun 12 23:50:01 2024
    Hello,

    On Wed 12 Jun 2024 at 11:23pm +02, Joerg Jaspert wrote:

    On 17258 March 1977, Ian Jackson wrote:

    And we also remove the Debian Maintainer role as dak would no > longer >>> > know who uploaded the package? Debian is larger than only Debian
    Developers.
    This is a policy aspect. When we need to revoke a key used for uploading >>> this happens via keyring maintainers as far as I understand, but in
    urgent cases it is ftp master who can also deny upload rights more
    quickly than via a keyring update. In moving to tag2upload as a service
    external to ftp, we partially move this capability from ftp master to
    the entity running tag2upload (DSA afaiui). Is there a sensible way to
    leave this policy aspect with the ftp team when using the tag2upload
    service? In effect, I'm asking whether ftp could somehow provide an
    authorization oracle to be used by tag2upload.
    tag2upload leaves this policy with the ftpmaster team. It uses the
    archive keyrings and dak's list of Debian Maintainers.

    So there is no change here.

    Actually, we can set acls on fingerprints and then that key wont be able
    to upload anymore. That is not something recorded in the keyrings or the
    DM list. Obviously that is not something used often (really really
    seldom), it is more for "this key is compromised badly, please turn off anything with it *NOW*" situations, which it's what Helmut meant with the urgent cases.

    Could you say more specifically how seldom, and also how long it usually
    takes between you flicking the emergency switch, and the keyring team
    pushing an update?

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Luca Boccassi@21:1/5 to Joerg Jaspert on Wed Jun 12 23:50:01 2024
    On Wed, 12 Jun 2024 at 22:35, Joerg Jaspert <[email protected]> wrote:

    On 17258 March 1977, Luca Boccassi wrote:

    Whatever end goals some individuals may have is *NOT* a good base to
    decide on how a technical implementation for Debian should be.

    If it turns out that this new thingie makes Salsa entirely
    unneccessary,
    then so be it. Good for us.

    I highly doubt this will happen. The dgit stuff only implements a
    small
    subset of features. The BTS does *not* provide what Salsa issues do.
    There isn't anything even near to do what MRs do. CI integration?
    Even
    less so. No idea why anyone should fear this dgit thing will lead to
    Salsa getting turned off, at this point.

    But really, if we end up getting something that makes an installation
    of
    gitlab unneccessary, then yay, party. It is not something to be
    feared.

    So in other words, I am 100% right to worry about this being the thin
    end of the wedge that some will use to try and kill Salsa. Sounds like below NoTA if it goes to GR for anybody who, like me, doesn't want
    Salsa to be jeopardised, then.

    WTF is up with you? Honest question. I just explained, in a load of
    words, that this thing is *really* unlikely to provide whatever it needs
    to replace Salsa, as there is basically nothing actually providing the features Salsa provides. And your conclusion is more "trying to kill
    Salsa"?

    You _literally_ just wrote:

    If it turns out that this new thingie makes Salsa entirely unneccessary,
    then so be it. Good for us.

    But really, if we end up getting something that makes an installation of
    gitlab unneccessary, then yay, party. It is not something to be feared.

    Not even an hour ago. How can you expect someone to reach any _other_ conclusion? WTF right back at you.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to All on Thu Jun 13 00:00:01 2024
    Hello,

    On Wed 12 Jun 2024 at 06:50am +02, Ansgar 🙀 wrote:

    THE DESIGN & IMPLEMENTATION ARE LATE-STAGE

    We wish to be clear that tag2upload can be deployed without *any*
    code changes to dak.  It just needs to be given a suitably trusted
    key, very similar to how buildds have trusted keys.

    And we also remove the Debian Maintainer role as dak would no longer
    know who uploaded the package? Debian is larger than only Debian
    Developers.

    Should this GR pass, then the tag2upload project will be unstuck, and
    could be deployed in a matter of months, and the source-only uploads
    of
    as many of us who want it can become just 'git debpush' and done,
    without any other workflow changes or learning.

    If only one could use regular git instead of a custom, non-standard VCS
    built on top of Git that makes some workflows impossible and team
    maintenance harder by not supporting publishing intermediate work. :-(

    Russ already replied here, but let me say unambiguously that

    - we are not proposing changing anything about DMs; and

    - we are not proposing forcing any non-standard VCS on anyone.

    tag2upload already supports most existing workflows (including the one
    you yourself prefer, where only debian/ is committed to git).

    We would not be proposing this if we were asking people to stop using
    gbp or something. That would not be a valuable contribution to Debian.

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jonas Smedegaard@21:1/5 to All on Wed Jun 12 23:50:01 2024
    Quoting Luca Boccassi (2024-06-12 23:36:53)
    On Wed, 12 Jun 2024 at 22:26, Jonas Smedegaard <[email protected]> wrote:
    My point above, reframed to your new context, is that regardless of
    how overwhelmingly large the attack surface of GCC+linux is, the
    attack surface of GCC+linux+Gitlab is much larger, while that of GCC+linux+tag2upload is little larger.

    The attack surface of GCC+linux+tag2upload is orders of magnitude
    larger than that of TCC+hurd+tag2upload. Are you going to advocate for
    that switch to happen? If not, why? Why do you think it's worth to
    deprecate Salsa because of its much larger attack surface, but it's
    not worth deprecating Linux and GCC for their demonstrably much larger
    attack surfaces? Could it be, maybe, perhaps, that a superficial
    comparison of perceived attack surfaces alone is not really a good
    metric to make a decision?

    You keep repeating the unsubstantiated accusation that I want Salsa dead.

    I do not want to kill Salsa.

    It is not my intention with this conversation to get rid of Salsa.

    - Jonas

    --
    * Jonas Smedegaard - idealist & Internet-arkitekt
    * Tlf.: +45 40843136 Website: http://dr.jones.dk/
    * Sponsorship: https://ko-fi.com/drjones

    [x] quote me freely [ ] ask before reusing [ ] keep private --==============Y57851854043997024=MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Description: signature
    Content-Type: application/pgp-signature; name="signature.asc"; charset="us-ascii"

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEn+Ppw2aRpp/1PMaELHwxRsGgASEFAmZqF9sACgkQLHwxRsGg ASEC1xAAiUuckSgg4ufButLN/Ac50LoIzdO47h349M+6IQ8EG27fO4/KawL4WAXL kSqdbr9AwwOIb2ktcedTSGtZcrPPXQPeMDj6VeRlg1y9PlhVdJfkl31ZroTs7I9g v1Dlb5DMYrwkoh8LY9MY8DlsQuXJjordaQ6q9yjEk0jukUvt9lrDVYGrC/7wo68q 8EpRY3zXu7ibEtZDC0IfzhUIkqHkms3HAX6vZG8cjonBDPLPHpABaFvGyNeY55zK LZ2RTazemDZKW0YKAZzMvGFplW2Ges9vlqe81/qiixaOvX3sqDqZHMFLbOnj0blt YkRL5NisUNCYMaiaYcPiSYPRBlIm/VCceMFdDU6lTBOGZu43kVQm0P5wzdbVUkfb Pdqvx57qQer9o8NzmgwFC6apQpWm0vr6CbCMCj2sqFAu3D4ys08npINe72887Rte 4ZRKl16eZiRELTntcKF07SKSwSykaP1HNG8CDYyu
  • From Alexander Wirt@21:1/5 to Luca Boccassi on Thu Jun 13 00:00:01 2024
    On Wed, Jun 12, 2024 at 10:43:04PM +0100, Luca Boccassi wrote:
    On Wed, 12 Jun 2024 at 22:35, Joerg Jaspert <[email protected]> wrote:

    On 17258 March 1977, Luca Boccassi wrote:

    Whatever end goals some individuals may have is *NOT* a good base to
    decide on how a technical implementation for Debian should be.

    If it turns out that this new thingie makes Salsa entirely
    unneccessary,
    then so be it. Good for us.

    I highly doubt this will happen. The dgit stuff only implements a
    small
    subset of features. The BTS does *not* provide what Salsa issues do.
    There isn't anything even near to do what MRs do. CI integration?
    Even
    less so. No idea why anyone should fear this dgit thing will lead to
    Salsa getting turned off, at this point.

    But really, if we end up getting something that makes an installation
    of
    gitlab unneccessary, then yay, party. It is not something to be
    feared.

    So in other words, I am 100% right to worry about this being the thin
    end of the wedge that some will use to try and kill Salsa. Sounds like below NoTA if it goes to GR for anybody who, like me, doesn't want
    Salsa to be jeopardised, then.

    WTF is up with you? Honest question. I just explained, in a load of
    words, that this thing is *really* unlikely to provide whatever it needs
    to replace Salsa, as there is basically nothing actually providing the features Salsa provides. And your conclusion is more "trying to kill Salsa"?

    You _literally_ just wrote:

    If it turns out that this new thingie makes Salsa entirely unneccessary,
    then so be it. Good for us.

    But really, if we end up getting something that makes an installation of
    gitlab unneccessary, then yay, party. It is not something to be feared.

    Not even an hour ago. How can you expect someone to reach any _other_ conclusion? WTF right back at you.

    Speaking as listmaster: please calm down everyone.

    Alex


    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEbjlmweHRXblz0FtJHkX4yp3iOxYFAmZqGQcACgkQHkX4yp3i OxbzgA/+Jz0Oi7QSHH+UeP67MVY19JLWfoawzaEeVZEqoEZWWbuI9WYs9YmvXjnn lZp4RusIAGt5i/C15vLqVJ42F9EQe7Pe1+ihlTdE3Busm6gqgYWvUNeLBPnOcDHv DBpX0ibPJq090uCTQP/3hoUBLmyNnw4IzMoH06X3Gv8BoG1fisLz/wh6+975naSa YpvX+4uUjzhd2LAZBZV4P9zzhvSb41fG3xECOZbvJvqUJgolAHTxmGtP7MDb4okp tcGRb5R7/bphBrnodyzy9eYi6fCZoBrusSdyfSWIeqkY1C8mHSK3HzDSZYNd6Cds N+hI/nf7UFfrZTIWXiXxXbOToZLxa09AgQHRHmfKrK32cVKCujxOkprBgCNHCsVk fC0yNJ+qkX3dSnTRXNV546f1WoefD4vKJtQsKkdm8hXOfDt9TkOIC+Y9HoIs8IUZ 8/6l2CqsfVG+8CPE1uurkWEFxj3Kbc0LHoiG8l9YpbKT8tdfmtfnBNT+sx5TKgWO O70nPgFNXG/AfvAT3sPGsnoF3JGQc7qbQrfHFXis7k1z5RkgD5NKd8aHVAPAam7N u8+yj4SULwqRrqui3+U/shSoUISXX5i/41dMZyWqurXS+roDycg+lz6PvtZo//FQ d7WeBeje10du6/GpIZ/arYRqwlbl8XkDEb+WC44oy9EB5NOPoCg=
    =K49+
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joerg Jaspert@21:1/5 to Sean Whitton on Thu Jun 13 00:10:04 2024
    On 17258 March 1977, Sean Whitton wrote:

    So there is no change here.
    Actually, we can set acls on fingerprints and then that key wont be
    able
    to upload anymore. That is not something recorded in the keyrings or
    the
    DM list. Obviously that is not something used often (really really
    seldom), it is more for "this key is compromised badly, please turn
    off
    anything with it *NOW*" situations, which it's what Helmut meant with
    the
    urgent cases.
    Could you say more specifically how seldom, and also how long it
    usually
    takes between you flicking the emergency switch, and the keyring team
    pushing an update?

    *Really* seldom. I would have to dig and see when, especially for the
    timing thing with keyring team.

    --
    bye, Joerg

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joerg Jaspert@21:1/5 to Luca Boccassi on Thu Jun 13 00:10:05 2024
    On 17258 March 1977, Luca Boccassi wrote:

    WTF is up with you? Honest question. I just explained, in a load of
    words, that this thing is *really* unlikely to provide whatever it
    needs
    to replace Salsa, as there is basically nothing actually providing
    the
    features Salsa provides. And your conclusion is more "trying to kill
    Salsa"?
    You _literally_ just wrote:
    If it turns out that this new thingie makes Salsa entirely
    unneccessary,
    then so be it. Good for us.
    But really, if we end up getting something that makes an installation
    of
    gitlab unneccessary, then yay, party. It is not something to be
    feared.
    Not even an hour ago. How can you expect someone to reach any _other_ conclusion? WTF right back at you.

    Ok. So once more:
    Speaking as a Salsa admin, I can assure you, that we will, in a hurry
    and really fast, switch to another forge, if there is one coming our
    way, that offers a comparable feature set, is not too hard to convert to
    (this means more than just the admin side, obviously) and is entirely
    free. Salsa in it's current form will be *dead* then. Please stop being attached to a specific implementation of a forge.


    Now, again: tag2upload/dgit is not in this category. Not even a little
    nor close to. And it won't ever be, even if *all* packages of Debian use
    it for uploading.


    And yes, I wrote both of that. Your conclusion that it is set out to
    kill Salsa from those two is just wrong.


    And then something that didn't appear yet: Has anyone asked the Salsa
    admins if they even would like tag2upload? Tell you what, the answer is
    *no*. This does *NOT* belong on Salsa. This should *not* end up on
    Salsa, and we will fight any such move. This is good to go on a
    different host and stay seperate. Different people and different
    machine. It is an addition, probably a useful one, but nothing to
    co-exist on the existing forge.


    --
    bye, Joerg

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Kitterman@21:1/5 to Luca Boccassi on Thu Jun 13 00:30:01 2024
    On June 12, 2024 8:03:59 PM UTC, Luca Boccassi <[email protected]> wrote:
    On Wed, 12 Jun 2024 at 19:24, Russ Allbery <[email protected]> wrote:

    "Adam D. Barratt" <[email protected]> writes:
    On Wed, 2024-06-12 at 10:43 -0700, Russ Allbery wrote:

    There was more confusion about this point than I had anticipated, so I
    want to emphasize that the dgit-repos server is not a forge, is not a
    competitor to Salsa, doesn't replace Salsa in any way, and is not
    something that people interact with the way that they interact with
    Salsa. It's much closer to a Git equivalent of archive.debian.org: a
    persistent historical record accessible via the Git protocol and (as I
    discovered during this thread) a cgit web interface.

    In that sense, it's more like snapshot.debian.org, I think?

    Yes, apologies, that's a much better analogy.

    But you don't push to snapshot, it's just a backup method, it doesn't
    take any input from DDs (AFAIK? Am I wrong?). Given >https://browse.dgit.debian.org/ exists and has tons of stuff already,
    and this proposal for tag2upload doesn't exist yet, I gather that dgit
    is already a thing that is used independently of tag2upload? I mean,
    that's how it was explained to me yesterday anyway.

    So I don't think this analogy works. One couldn't say "let's remove >archive.debian.org, just push to snapshot.debian.org", but one could
    say "let's remove salsa.debian.org, just push to dgit.debian.org".

    I think it is more accurate to say that they are mirrors. They both contain details of current and historical packages. The difference is that snapshot is downstream of the archive, while these putative the tag2upload repositories are upstream.

    It's it being upstream of the primary archive that makes it far more security sensitive.

    Scott K

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?utf-8?Q?Antoine_Beaupr=C3=A9?=@21:1/5 to Sean Whitton on Thu Jun 13 03:30:01 2024
    On 2024-06-13 05:31:13, Sean Whitton wrote:
    Hello Antoine,

    Thank you for your interest.

    I think I should say right away that tag2upload != dgit.
    With tag2upload, you will be able to replace 'dpkg-buildpackage -S' and 'dput' with just 'git debpush'. Your other gbp usage is unchanged.

    Oh, interesting. I actually rarely run dpkg-buildpackage -S
    directly. It's a thing I know of, but I kind of always rebuild a binary
    package from scratch. I know it's kind of silly, but I kind of think
    it's important to have the package actually compile all the way through
    before uploading...

    [...]

    On Wed 12 Jun 2024 at 11:08am -04, Antoine Beaupré wrote:

    I understand the proposal doesn't directly say "oh yeah, we're actually
    thinking we should ditch salsa and replace it with all those nice little
    small components", but it is certainly taking a stand that Salsa is not
    good enough to provide the level of security that is required to upload
    packages in Debian, and saying that is saying a lot because I suspect we
    are *actually* trusting Salsa and GitLab with our code much more than we
    would like to admit...

    I don't think we are taking a stand that salsa is not good enough to
    provide any particular form of security.
    In fact, I don't think that tag2upload changes the extent to which we
    trust salsa: we would not be trusting it any more nor any less. Perhaps
    you could take another look at the design.

    Yep, clearly I missed something. I somehow assumed that we were
    bypassing salsa entirely here, but reading rra's audit, I see we
    actually fire a hook from salsa to to get the tag2upload machinery into
    gear, so that lessens that concern quite a bit!

    (In the background: I very much share your view that we are actually
    trusting salsa far much than we generally think we are.)

    Yeah, that thing is just scary, I have to say... But that's the hand
    we're given, alas.

    a.
    --
    Man is, at one and the same time, a solitary being and a social being,
    - Albert Einstein

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon Richter@21:1/5 to Luca Boccassi on Thu Jun 13 08:10:01 2024
    Hi,

    On 6/13/24 06:00, Luca Boccassi wrote:

    Yes, that's the argument - all Salsa features are bad and "bloat":
    issues are bad, teams are bad, CIs are bad, merge requests are bad,
    the only thing needed is to push&pull to some git backend, everything
    else is bad and unneeded.

    The requirements for the archive differ from and sometimes conflict with
    the requirements for collaborative packaging, which differ from and
    sometimes conflict with the requirements for regular development.

    It is completely valid, and in my opinion also better, to deploy
    multiple targeted solutions in parallel and make them interface with
    each other than try to graft the missing use cases onto a 95% solution
    that is being built by an external party that has their own product road
    map which does not include these use cases.[1]

    The archive does not need to keep the full collaboration history, for
    example -- in fact it is counterproductive, because the archive is being mirrored and archived, and we need to keep the size small.

    The archive also has a strict requirement *never* to execute any code
    from uploaded packages on machines used in upload processing. From the
    point of view of the archive software, we are dealing with data only.
    This is a requirement salsa cannot ever fulfill.

    In the reverse direction, that is also true: the archive maintenance
    software can not perform a CI build because the security posture it
    takes forbids it from doing so, so it can not replace salsa.

    GitLab issues are missing the archive integration of the Debian BTS, and
    the tracking of issues forwarded to other bug trackers. Therefore, salsa
    cannot replace the Debian BTS for packaging work. We could try writing
    bots, but it would be a graft, not a targeted solution.

    On the other hand, the Debian BTS does not have git integration, so I
    cannot refer to bugs from commits and track individual work items
    between releases this way -- it mainly provides an external view, and an interface for users, and is less useful for team-internal collaboration.

    Again, we have two different use cases, and two different tools, and
    neither can replace the other. There is no working hierarchy in which
    one is objectively better than the other, because the measuring stick is fitness for a particular purpose.[1]

    Simon

    [1] this applies to salsa and systemd.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mathias Behrle@21:1/5 to All on Thu Jun 13 09:30:01 2024
    * Marco d'Itri: " Re: [RFC] General Resolution to deploy tag2upload" (Wed, 12
    Jun 2024 14:37:25 -0000 (UTC)):

    [email protected] wrote:

    As I understand it, Debian was affected by the xz-utils hack, in part, >because some artifacts were inserted into an upstream tarball that were not >represented in the upstream git. Please explain how use of tag2upload is >relevant to this scenario? I'm afraid I don't follow.
    I think that it was assumed, and I agree, that a well-maintained Debian
    git source tree has the upstream branch pulled from the upstream git repository, keeping the complete history, and not created locally by importing upstream tar release archives.

    Just as a note often forgotten in this discussion:

    There are upstreams, that don't use git and are even heavily opposed to git. Hopefully I have nevertheless "well-maintained Debian git source trees" for the Tryton suite... ;)

    --

    Mathias Behrle
    PGP/GnuPG key availabable from any keyserver, ID: 0xD6D09BE48405BBF6
    AC29 7E5C 46B9 D0B6 1C71 7681 D6D0 9BE4 8405 BBF6

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Russ Allbery on Thu Jun 13 10:30:01 2024
    Hello,

    On Wed 12 Jun 2024 at 09:42am -07, Russ Allbery wrote:

    Bastian Blank <[email protected]> writes:

    If we need a design, then we can easily avoid the problem points. There
    is a working counter proposal open:

    https://bblank.thinkmo.de/introducing-uploads-debian-git.html

    It requires a sufficiently reproducible build for source packages.
    Right now it is only known to work with the special 3.0 (gitarchive)
    source format, but even that requires the latest version of this
    format. No idea if it is possible to use others, like 3.0 (quilt) for
    this purpose.

    This sounds like a major blocker to me. tag2upload works with the
    existing representations of Debian packages in Git and with the existing supported source package formats.

    Yes. A proposal that has not yet engaged with the complexities of
    3.0 (quilt) is not one in which we can yet have any confidence.
    As we discovered building dgit, it's substantially more complex than one realises.

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Luca Boccassi on Thu Jun 13 10:40:01 2024
    Hello,

    On Wed 12 Jun 2024 at 12:37pm +01, Luca Boccassi wrote:

    This is largely in the eye of the beholder as there's no strict
    definition that I am aware of, so one could or could not include
    these, but I do note that what you describe above is not really that different from Alioth - that also didn't have merge requests or CIs,
    and we didn't really use the rudimentary ticket system (IIRC it did
    have one? Might be wrong). If Alioth was a forge, and I think it was,
    then this alternative system also sounds like a forge to me.

    You can't push work-in-progress to dgit-repos. You can only push there
    by uploading. We all push work-in-progress things to salsa all the
    time, between uploads.

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Thomas Goirand on Thu Jun 13 10:30:01 2024
    Hello,

    On Thu 13 Jun 2024 at 08:23am +02, Thomas Goirand wrote:

    One thing I really dislike, is having a single gpg key to upoload them all. I very much preferred the design that Didier explained during Debconf Kosovo, where the .changes signature is uploaded together with the tagged commit.

    Your thoughts?

    Cheers,

    Thomas Goirand (zigo)

    P.S: The thread is huge, I have no time to read it all, sorry if someone else also raised the same concern.

    I'm not sure about the characterisation that it's one key to upload them
    all. tag2upload will be an official service, no less so than ftp-master
    -- you could as well say that the current archive signing key is one key
    to release them all.

    This message from Ian argues against adding things like .changes files: <https://lists.debian.org/debian-vote/2024/06/msg00031.html>.

    Please excuse me if this does not address exactly Didier's design, with
    which I am not familiar.

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Joerg Jaspert on Thu Jun 13 10:40:01 2024
    Hello,

    On Thu 13 Jun 2024 at 12:04am +02, Joerg Jaspert wrote:

    Now, again: tag2upload/dgit is not in this category. Not even a little
    nor close to.

    Indeed.

    And then something that didn't appear yet: Has anyone asked the Salsa
    admins if they even would like tag2upload? Tell you what, the answer is
    *no*. This does *NOT* belong on Salsa. This should *not* end up on
    Salsa, and we will fight any such move. This is good to go on a
    different host and stay seperate. Different people and different
    machine. It is an addition, probably a useful one, but nothing to
    co-exist on the existing forge.

    Thanks for sharing this, good to be on the same page.

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andreas Tille@21:1/5 to All on Thu Jun 13 10:40:01 2024
    Hi,

    thanks to all for this GR. I like tag2upload in principle. The only
    thing I'm a bit scared about is that it simplifies uploading something
    that was never built before on the local machine. Sure, this can be
    done with source-only uploads as well, but tag2upload makes it even
    easier.

    Maybe I missed it in the long thread and I need to admit that I have not
    read the docs, thus the explicit question here: Is the package
    undergoing some CI test (maybe not only building but also autopkgtest
    which I'm doing locally for any package I'm uploading) before it is
    forwarded to dak?

    Thanks again for all your work
    Andreas.

    --
    https://fam-tille.de

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Gunnar Wolf on Thu Jun 13 10:50:01 2024
    Hello,

    On Wed 12 Jun 2024 at 11:18am -06, Gunnar Wolf wrote:

    I am mentioning this because I see quite a bit of friction in this
    regard. Some people see your tag2upload proposal as a step to diminish Salsa's place in Debian and probably even have it fully replaced in
    the future.

    I think you have figured this out for yourself, but just to say:
    "some people" is here just one person, Luca.

    It is very clear to me that tag2upload cements the position of salsa.

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Andreas Tille on Thu Jun 13 11:00:01 2024
    Hello,

    On Thu 13 Jun 2024 at 10:33am +02, Andreas Tille wrote:

    thanks to all for this GR. I like tag2upload in principle. The only
    thing I'm a bit scared about is that it simplifies uploading something
    that was never built before on the local machine. Sure, this can be
    done with source-only uploads as well, but tag2upload makes it even
    easier.

    I don't believe it makes any difference. We already have 'dgit
    push-source' which will do a source-only upload with a single command invocation. And if 'dgit push-source' errors out, that's equivalent to tag2upload failing to upload and e-mailing you.

    Maybe I missed it in the long thread and I need to admit that I have
    not read the docs, thus the explicit question here: Is the package
    undergoing some CI test (maybe not only building but also autopkgtest
    which I'm doing locally for any package I'm uploading) before it is
    forwarded to dak?

    No, there is nothing additional being done.

    Now we have salsa CI, though, we have various good options for automated pre-upload testing.

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Simon McVittie on Thu Jun 13 10:50:01 2024
    Hello,

    On Wed 12 Jun 2024 at 04:23pm +01, Simon McVittie wrote:

    On Wed, 12 Jun 2024 at 15:20:45 +0100, Ian Jackson wrote:
    tag2upload, like dgit, ensures and insists that the git tree you are
    uploading corresponds precisely [1] to the generated source package.

    If you base your Debian git maintainer branch on the upstream git (as
    you should) and there is a discrepancy between the contents of the
    upstream git branch, and the .orig.tar.gz you're using, the upload
    will fail.

    Is your position here that if your upstream releases source tarballs
    that intentionally differ from what's in git (notably this is true
    for Autotools `make dist`), then any Good™ maintainer must generate
    their own .orig.tar.* from upstream git and use those in the upload, disregarding upstream's source tarball entirely?

    That approach has many advantages, but it flatly contradicts what devref claims a Good™ maintainer would do, which is to always use the pristine source tarball as released by upstream (unless it's non-free) - which
    implies that if they're using dgit, then the upstream tree must match
    an import of the tarball.

    dev-ref is out-of-date here, I think. There is no longer a conesnsus we
    should be doing that.

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to All on Thu Jun 13 11:00:01 2024
    Hello,

    On Wed 12 Jun 2024 at 11:14am +02, Ansgar 🙀 wrote:

    Hi,

    On Wed, 2024-06-12 at 08:59 +0200, Holger Levsen wrote:
    Am Tue, Jun 11, 2024 at 10:27:56PM -0700 schrieb Russ Allbery:
    As I said several times before: the implementation has known
    security
    bugs (unless you fixed them). But I guess this is going to get
    ignored
    again anyway...
    Could you describe what known security vulnerabilities you believe
    exist,

    does it matter if this GR is about a design? currently the RFC is not
    to vote about an implementation... :/

    As far as I understand, the GR is about pushing the design and
    implementation as is, without any changes. It very explicitly says so.

    It does not say this.

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Joerg Jaspert on Thu Jun 13 11:00:01 2024
    Hello,

    On Thu 13 Jun 2024 at 12:08am +02, Joerg Jaspert wrote:

    On 17258 March 1977, Sean Whitton wrote:

    So there is no change here.
    Actually, we can set acls on fingerprints and then that key wont be able >>> to upload anymore. That is not something recorded in the keyrings or the >>> DM list. Obviously that is not something used often (really really
    seldom), it is more for "this key is compromised badly, please turn off
    anything with it *NOW*" situations, which it's what Helmut meant with the >>> urgent cases.
    Could you say more specifically how seldom, and also how long it usually
    takes between you flicking the emergency switch, and the keyring team
    pushing an update?

    *Really* seldom. I would have to dig and see when, especially for the
    timing thing with keyring team.

    Thanks. Then possibly it is sufficient for ftpmaster just to disable tag2upload's whole key until the keyring update is pushed.

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Timo =?utf-8?Q?R=C3=B6hling?=@21:1/5 to All on Thu Jun 13 11:10:01 2024
    Hello Sean,

    first of all, I have been a very happy user of dgit for some time
    now, and I want to use the opportunity to thank Ian and you for your
    excellent work. I consider dgit to be one of two major improvements
    to my packaging workflow (the other being sbuild with unshare
    backend), and I have no doubt that tag2upload will be just as
    reliable and useful.

    * Sean Whitton <[email protected]> [2024-06-12 06:25]:
    =====
    BEGIN FORMAL RESOLUTION TEXT

    tag2upload allows DDs and DMs to upload simply by using the
    git-debpush(1) script to push a signed git tag.

    1. tag2upload, in the form designed and implemented by Sean Whitton and
    Ian Jackson, and reviewed by Jonathan McDowell and Russ Allbery,
    should be deployed to official Debian infrastructure.
    Considering that tag2upload is supposed to become a critical
    component of our infrastructure, I am missing (or may have
    overlooked) some information on how the deployment is going to be
    maintained.

    I assume that you will continue to work on the code itself, but who
    is going to be responsible for keeping the tag2upload service
    operational? Are you going to manage the deployment as well, has DSA
    agreed to do it, or do you have an altogether different arrangement
    in mind?

    Again, thank you your for work on this!

    Cheers
    Timo

    --
    ⢀⣴⠾⠻⢶⣦⠀ ╭────────────────────────────────────────────────────╮
    ⣾⠁⢠⠒⠀⣿⡁ │ Timo Röhling │
    ⢿⡄⠘⠷⠚⠋⠀ │ 9B03 EBB9 8300 DF97 C2B1 23BF CC8C 6BDD 1403 F4CA │
    ⠈⠳⣄⠀⠀⠀⠀ ╰────────────────────────────────────────────────────╯

    -----BEGIN PGP SIGNATURE-----

    iQIzBAEBCgAdFiEEmwPruYMA35fCsSO/zIxr3RQD9MoFAmZqtlwACgkQzIxr3RQD 9MqAJA//WRgdnRRoG9gO5eRWS3jlk4vXyhSsNLrem+rfv4/lUej5g1mTY7MKyO0R 3AENB3xVkqK0InYgTmaJzHL3cR29Gc3HVzKvtiFQrL2/WaZ5AB1r7gxTSv5KWUm0 R1tvimynNfyQBAJNn4uzNc4vT6cJVfcE26FYOao8C2otBA0YtuE5qhm0sVve8VVN /M8Go5IlwhntJXXrNAd7T5aNS1dBrhn9nORZgwGmn3XJvHf5+fBVK005l3TUasVn ux6oyUA3I5WHu5byhrHHbRe82ssE0SHYBFIUfj2hY1dxUS8oEB59QWGUH1FxoRQl d8eSh8MKaaG/ViiGxiLWf2pIcVF9wfwBSVWQKKwfvbR
  • From Aigars Mahinovs@21:1/5 to Jonas Smedegaard on Thu Jun 13 11:10:01 2024
    On Wed, 12 Jun 2024 at 16:20, Jonas Smedegaard <[email protected]> wrote:
    To answer your convoluted question, I am suggesting that Salsa and
    tag2upload has very different needs (multi-user write versus multi-user append-only, drastically simplified), and consequently to not argue that reuse of Salsa for hosting tag2upload is a security benefit.

    IMHO this is an interesting point that can be a real and useful
    feature of the tag2upload system.

    Think of it as a source version of snapshots.debian.org - if
    tag2upload always saves the tagged state
    of the repository to a separate append-only git server whenever it
    processes a signed tag, that
    would provide a clear archival backup of the exact state of software
    that was processed for upload.

    It does not matter where tag2upload gets the initial tags from - it
    could be Salsa, it could be Github,
    it could be a developers self-hosted git server that is added to some tag2upload config file for polling,
    like Plane Debian works. tag2upload could pull from a bunch of git
    sources. The config of those
    repos does not matter anymore because tag2upload takes care of
    signature verification and of archiving.

    And where exactly tag2upload keeps it archive does not really matter,
    as long as it is an append-only
    git server (at least for the repos that tag2upload writes to, which
    can be separate from actual development repos).

    With that kind of setup, you could not only (like today) go to snapshots.debian.org to get the exact binary of the
    uploaded Debian package with its real state at any particular day in
    the past, but also go to the archive git
    server of tag2upload and for any processed tag check out the exact git
    state that was processed, regardless
    of anything that was later done to the original development
    repo/server. Even if that server goes down, the archive
    will remain.

    --
    Best regards,
    Aigars Mahinovs mailto:[email protected]
    #--------------------------------------------------------------#
    | .''`. Debian GNU/Linux (http://www.debian.org) |
    | : :' : Latvian Open Source Assoc. (http://www.laka.lv) |
    | `. `' Linux Administration and Free Software Consulting |
    | `- (http://www.aiteki.com) |
    #--------------------------------------------------------------#

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?utf-8?Q?Pierre-Elliott_B=C3=A9cue@21:1/5 to Luca Boccassi on Thu Jun 13 11:00:01 2024
    Hi,

    Luca Boccassi <[email protected]> wrote on 12/06/2024 at 13:15:47+0200:

    On Wed, 12 Jun 2024 at 12:03, Jonas Smedegaard <[email protected]> wrote:

    Quoting Luca Boccassi (2024-06-12 12:28:21)
    On Wed, 12 Jun 2024 at 09:35, Jonas Smedegaard <[email protected]> wrote:

    Quoting Luca Boccassi (2024-06-12 10:21:40)
    On Wed, 12 Jun 2024 at 02:31, Russ Allbery <[email protected]> wrote:

    Luca Boccassi <[email protected]> writes:

    And on the implementation details, I really do not like the idea of
    having a competing git forge with Salsa. This dgit server seems to just
    be a ye olde git-web interface.

    Does it support gitweb? I thought it only supported regular Git
    operations, but I could be mistaken.

    I might be wrong, but this is what this looks like to me (it was
    linked to me on IRC yesterday, wasn't aware of it before):

    https://browse.dgit.debian.org/

    If this goes forward, in my opinion it should exclusively use Salsa
    as the git server, to avoid duplicating infrastructure.

    I think you want the Git archive to be entirely separate from Salsa >> > > > > so that it's a reliable source of tracing information. You don't
    want to support force pushes, for example; the whole point is that it
    should be append-only, which would be a controversial choice for
    Salsa but which is fine for the archives of the uploaded packages. I
    would also want a much smaller attack surface for that type of record
    than than GitLab. GitLab is designed as a place to do interactive >> > > > > work, not to keep a reliable permanent record.

    The git repositories, sure. The git forge? I don't see why. You can
    have these repositories in a separate namespace, which sets strong
    branch and tag protection rules to achieve what you describe. As far >> > > > as I am aware, this is possible to do in Salsa already, it doesn't
    have to be a per-forge rule, it can be per-namespace, I think this is >> > > > possible to achieve in Gitlab. I have not used tag protection rules
    (on gitlab, I used them on github though), but I do regularly use
    branch protection rules on my Salsa repositories.

    To be clear, I am exclusively talking about the git forge, as in
    salsa.debian.org, not the git repositories as they might exist on
    Salsa under the debian/ namespace or any other namespace.

    Having a separate namespace with strong ACLs seems exactly what you
    want, even if it duplicates the individual repositories (the backend >> > > > git store deduplicates it anyway, so in practice it should be quite
    cheap). Having an entire separate git forge that competes with Salsa >> > > > seems orthogonal to this, and counterproductive for the project.

    I fail to recognize how strong ACLs achieves exactly the same separate >> > > storage on a separate host. Especially when the purpose is to minimize >> > > attack vectors.

    As per the security review just shared, admin access to Salsa allows
    to push commits anyway which would get uploaded just the same, and
    again as per security review, this case benefits from centralizing:
    one host to maintain, and one set of admins to trust, is better than
    two. Especially as Salsa is Gitlab, which is maintained upstream and
    benefits from the many-eyes-and-many-users situation, while a
    completely custom local git forge reimplementation, other than
    inevitably suffering from bitrot at some point in the future, like all
    custom infrastructure, will have the disadvantage that nobody else
    uses it. This is the reason Alioth is gone, and it's a very good
    reason.

    So your argument is that that strong ACLs achieve exactly the same as
    separate storage on a separate host, because separate storage on a
    separate host inevitably leads to bitrot and lack of eyeballs.

    I rest my case.

    No, my argument is that append-only can (as far as I can tell) be
    achieved on Salsa too, it doesn't seem to necessitate a bespoke forge.
    The centralizing argument is not mine, it's from the security review
    that was published this morning:

    "My security recommendation in this case is therefore to centralize
    the risk as much as possible, moving it off of individual uploader
    systems with unknown security profiles and onto a central system that
    can be analyzed and iteratively improved."

    https://lists.debian.org/debian-vote/2024/06/msg00004.html

    That Git archive is not parallel to or competitive with Salsa and doesn't
    provide most of the functionality that Salsa does. It has a different
    purpose.

    I disagree strongly. As we have seen in the recent Salsa thread on
    d-private, there are a few but very strongly opinionated people who
    are vehemently against Salsa and would like to see it gone. Having a >> > > > parallel and competing git forge I fear would give them very strong
    ammunition to do so: "if the real uploads and the real repositories
    are on a separate and independent git forge, why have Salsa at all?
    Get rid of it and use the other forge exclusively."

    I don't follow d-private, but sounds to me like that argument goes both >> > > ways - i.e. also "if the real uploads and the real repositories are on >> > > (some specially locked down section of) same git forge, why not embrace >> > > additional features offered from same vendor of said forge?"

    I don't follow, we already use features from Salsa? Like the CI
    pipeline, which is awesome. ACLs on repositories are not really unique
    or particular to Github, modern forges pretty much have to support
    them, Github has them too.

    Sorry, I cannot possibly get a point across a cloud of awesomeness.

    "Having an easy-to-use and working CI is really bad for a software development organization, actually" is... a bold take, no doubt about
    that.

    But anyway, thanks for proving my point for me: there is a small but
    loud minority who would like to kill Salsa, and this proposal as
    implemented would help them achieve that goal. If it goes to a GR,
    this is enough to make me vote against it, as while the concept is
    really nice and I like it a lot, it's not worth jeopardizing Salsa's existence.

    Note: this is my personal PoV, I've not discussed it with my teammates.

    From a DSA point of view, (all of this will be Debian infra),
    considering what GitLab is, how much trouble it can cause and how
    resilient we expect our upload stack to be, I would not use it for
    tag2upload.

    (And yes, I still enjoy having gitlab, but let's be realistic about infrastructure aspects)

    For the rest, I have a hard time being eager to overrule FTP Masters via
    a GR.

    --
    PEB

    --=-=-Content-Type: application/pgp-signature; name="signature.asc"

    -----BEGIN PGP SIGNATURE-----

    iQJDBAEBCgAtFiEE5CQeth7uIW7ehIz87iFbn7jEWwsFAmZqtL8PHHBlYkBkZWJp YW4ub3JnAAoJEO4hW5+4xFsLW3gP/Rl+ZiZz5dA0lyIXshYra4XKcOwsUcz+YC7S W9dr+wjSvUQIcmCGH0cokrqbTjLM7G+6j4SK+tBkxDs5FyLYPF1j1UKJREv/rocr gJ75U6iiImowGo9Om5jS6+97pAUV31C5kwvj+oDhaepeIS8wu0hEnFzazz2Xvd5o VOlEoIypO6fr1DxYWkafrmBUvOYDKhhEPdKVO7xYAvIFsrppHtL4wk5fKL+fjB2I liHai6dkIstIIPgNdc3LaHvvO+/8tdQHfy355pljH5S1HEGOARIo7cgr4jNYjFsM WScspMxwazMb0PB2z0EdNwRDCGUp7kOAi4AREUQJbuY1y7s6Evvwq6GAYS6tOBQi ARD0Y5U1q0cMb3vtFB+buphbH4k9xt2mH4pmUQtEF5JG8LHqPf8yO+BIM6tYCt4c FM/fpLNt6p6NMrC87oL5VqgTTYNdQQ+L9Q/XrqFotpOjlxpH6Z7Jo+zSogiBNSt/ J+wxvEucPKMEg+bkl7sVSOv1ePsmMJk/vnAIfuAvSzvWiBMGgp1krBeFL+jgkZBd T2iKNW6QO3evPPLUrbUlKi9GS413K/V2QpuYICRxn/4E1F0gOPZ8vukFocn7CVB7 a5F0BJRA8S+3r5RPnViXSOjI+/BYz75P1WJic9R+huZz5RsQ+C9an7tOVZENn9M+
    o3Xki/du
    =oEFa
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andreas Tille@21:1/5 to All on Thu Jun 13 11:40:02 2024
    Hi Sean,

    Am Thu, Jun 13, 2024 at 04:53:56PM +0800 schrieb Sean Whitton:
    thanks to all for this GR. I like tag2upload in principle. The only
    thing I'm a bit scared about is that it simplifies uploading something
    that was never built before on the local machine. Sure, this can be
    done with source-only uploads as well, but tag2upload makes it even
    easier.

    I don't believe it makes any difference. We already have 'dgit
    push-source' which will do a source-only upload with a single command invocation. And if 'dgit push-source' errors out, that's equivalent to tag2upload failing to upload and e-mailing you.

    That means some package build process is done before the source
    package is forwarded to dak and sends some e-mail back?

    No, there is nothing additional being done.

    Now we have salsa CI, though, we have various good options for automated pre-upload testing.

    I know we have this. My point is that tag2upload users might forget
    to use it before using tag2upload service. I simply want to make
    sure that tag2upload is not another way to upload anything that does
    not build on buildservices.

    Kind regards
    Andreas.

    --
    https://fam-tille.de

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Jonathan Carter on Thu Jun 13 12:00:01 2024
    Jonathan Carter writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    On 2024/06/12 10:21, Luca Boccassi wrote:
    Having a separate namespace with strong ACLs seems exactly what you
    want, even if it duplicates the individual repositories (the backend
    git store deduplicates it anyway, so in practice it should be quite
    cheap). Having an entire separate git forge that competes with Salsa
    seems orthogonal to this, and counterproductive for the project.

    I found the overview of tag2upload from Ian at MDC Campbridge quite
    useful (and the workflow diagrams that he presented). From my
    understanding (and I may still have the wrong end of a stick here), the additional git store used for tag2upload becomes a replacement for
    source packages that happens to use git. So from my understanding, it's
    more a competitor to source packages rather than to salsa.

    Yes. Russ's comparisons to archive.d.o and snapshot.d.o are helpful.
    (Because git inherently has history, the dgit-repos server can
    perform both functions at once.)

    Scott Kitterman writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    I think it is more accurate to say that they are mirrors. They both contain details of current and historical packages. The difference is that snapshot is downstream of the archive, while these putative the tag2upload repositories are upstream.

    It's it being upstream of the primary archive that makes it far more security sensitive.

    The dgit-repos server (*.dgit.d.o) is not upstream of
    archive.debian.org.

    The tag2upload conversion server is upstream of both, and is indeed
    very security sensitive.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Sean Whitton on Thu Jun 13 12:10:01 2024
    Sean Whitton writes ("Re: [RFC] General Resolution to deploy tag2upload"): >[Joerg Jaspert wrote:]
    Actually, we can set acls on fingerprints and then that key wont be able
    to upload anymore. That is not something recorded in the keyrings or the
    DM list. Obviously that is not something used often (really really
    seldom), it is more for "this key is compromised badly, please turn off
    anything with it *NOW*" situations, which it's what Helmut meant with the
    urgent cases.
    [and]
    *Really* seldom. I would have to dig and see when, especially for the
    timing thing with keyring team.

    Thanks. Then possibly it is sufficient for ftpmaster just to disable tag2upload's whole key until the keyring update is pushed.

    I'm not sure this is a sufficient answer. We don't want uploads by
    revoked keys to appear on *.dgit.d.o either.

    Joerg, is there some way that this fingerprint block information could
    be made available in a more timely manner? Ideally we would update push.dgit.d.o to use this information, regardless of tag2upload.
    (And the t2u conversion system should use it too.)

    I think maybe we should take this to a different venue, than this
    thread on -vote. How about a bug against ftp.d.o and/or
    dgit-infrastructure ?

    Thanks,
    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Aigars Mahinovs@21:1/5 to [email protected] on Thu Jun 13 12:20:01 2024
    On Thu, 13 Jun 2024 at 12:02, Ian Jackson
    <[email protected]> wrote:

    Sean Whitton writes ("Re: [RFC] General Resolution to deploy tag2upload"): >[Joerg Jaspert wrote:]
    Actually, we can set acls on fingerprints and then that key wont be able >> to upload anymore. That is not something recorded in the keyrings or the >> DM list. Obviously that is not something used often (really really
    seldom), it is more for "this key is compromised badly, please turn off
    anything with it *NOW*" situations, which it's what Helmut meant with the >> urgent cases.
    [and]
    *Really* seldom. I would have to dig and see when, especially for the
    timing thing with keyring team.

    Thanks. Then possibly it is sufficient for ftpmaster just to disable tag2upload's whole key until the keyring update is pushed.

    I'm not sure this is a sufficient answer. We don't want uploads by
    revoked keys to appear on *.dgit.d.o either.

    Correct me if I am wrong, but if we are looking at dgit.d.o as
    snapshot and audit log
    of the tag2upload service, would it not be beneficial for the auditing
    and back-tracing
    process to actually keep the code that someone tried to upload via
    tag2upload even
    if their key is revoked, expired or signature is invalid?

    Maybe re-tagged to something like invalid_$original_tag but still kept
    around for people
    to inspect if needed.

    --
    Best regards,
    Aigars Mahinovs mailto:[email protected]
    #--------------------------------------------------------------#
    | .''`. Debian GNU/Linux (http://www.debian.org) |
    | : :' : Latvian Open Source Assoc. (http://www.laka.lv) |
    | `. `' Linux Administration and Free Software Consulting |
    | `- (http://www.aiteki.com) |
    #--------------------------------------------------------------#

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Bastian Blank on Thu Jun 13 12:50:01 2024
    Bastian Blank writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    On Wed, Jun 12, 2024 at 04:23:29PM +0100, Simon McVittie wrote:
    On Wed, 12 Jun 2024 at 15:20:45 +0100, Ian Jackson wrote:
    tag2upload, like dgit, ensures and insists that the git tree you are uploading corresponds precisely [1] to the generated source package.

    If you base your Debian git maintainer branch on the upstream git (as
    you should) and there is a discrepancy between the contents of the upstream git branch, and the .orig.tar.gz you're using, the upload
    will fail.

    How would it fail?

    git-debpuah has code in it to try to check that your upload is likely
    to succeed. It should detect this situation, and report an error
    message, before it even makes the tag for you.

    You can override that check, since it's just there for your
    convenience. Or you could make and push the tag2upload
    `please-upload` tag by hand. If you do so, the discrepancy will be
    detected by the tag2upload conversion system during source package construction. You'd receive an error report by email.

    This actually means we need to get rid of orig.tar completely.
    Something that does not exist can't differ.

    .orig.tar.gz is still useful as a space optimisation for incremental
    updates to source packages.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon Richter@21:1/5 to Ian Jackson on Thu Jun 13 12:50:01 2024
    Hi Ian,

    On 6/13/24 18:57, Ian Jackson wrote:

    (Because git inherently has history, the dgit-repos server can
    perform both functions at once.)

    Do we actually want or need to hoard all the collaboration history?

    Simon

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to All on Thu Jun 13 13:00:02 2024
    Timo R�hling writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    Considering that tag2upload is supposed to become a critical
    component of our infrastructure, I am missing (or may have
    overlooked) some information on how the deployment is going to be maintained.

    I assume that you will continue to work on the code itself, but who
    is going to be responsible for keeping the tag2upload service
    operational? Are you going to manage the deployment as well, has DSA
    agreed to do it, or do you have an altogether different arrangement
    in mind?

    Again, thank you your for work on this!

    I'm expecting that Sean and I will become the service owner, and that
    DSA will manage the VMs.

    Currently the *.dgit.d.o git servers (two hosts) are managed that way.
    I've had a good working relationship with DSA there. The t2u
    conversion service is rather more complex but I don't foresee
    difficulties. Note, though, that I haven't actually had any specific conversations with DSA bout these kind of details, at this stage.

    Obviously, as with everything in Debian, more help would be very
    welcome. If anyone would like to join in please just let us know!

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Simon Richter on Thu Jun 13 13:10:01 2024
    Simon Richter writes ("Re: [RFC] General Resolution to deploy tag2upload [and 1 more messages]"):
    On 6/13/24 18:57, Ian Jackson wrote:
    (Because git inherently has history, the dgit-repos server can
    perform both functions at once.)

    Do we actually want or need to hoard all the collaboration history?

    In short, yes, we certainly want to and we may need to.

    Nowadays for software maintained in git, the git *history* is usually
    an important part of the source code - it's part of the "preferred
    form for modification" as the GPL has it.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Aigars Mahinovs on Thu Jun 13 13:10:01 2024
    Aigars Mahinovs writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    Correct me if I am wrong, but if we are looking at dgit.d.o as
    snapshot and audit log of the tag2upload service, would it not be
    beneficial for the auditing and back-tracing process to actually
    keep the code that someone tried to upload via tag2upload even if
    their key is revoked, expired or signature is invalid?

    This is an interesting idea. There are some potential trouble
    vectors, there, though (eg, malicious people could cause the sytem to
    store Bad Stuff). And also it's not entirely straightforward to
    implement because the system would need suitable access to whatever
    the bad-uploads archive server is.

    With the current design, it might be possible to retrieve the tag from
    Salsa, perhaps with admin assistance, at least for a while. That's
    not great, but I'm hoping the need for this will be quite rare.

    I think I would like to treat your suggestion as a possibility for
    future enhancement, rather than something we'd have from day one.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Sean Whitton on Thu Jun 13 13:10:01 2024
    On Thu, 2024-06-13 at 16:58 +0800, Sean Whitton wrote:
    On Wed 12 Jun 2024 at 11:14am +02, Ansgar 🙀 wrote:

    As far as I understand, the GR is about pushing the design and implementation as is, without any changes. It very explicitly says
    so.

    It does not say this.

    Quote:

    ---
    1. tag2upload, in the form designed and implemented by Sean Whitton and
    Ian Jackson, and reviewed by Jonathan McDowell and Russ Allbery,
    should be deployed to official Debian infrastructure.
    ---

    I understand that as the form as designed and implemented (now), not
    only a future version with possible changes.

    If you only want to deploy a modified version, then the text should
    probably be amended.

    The statement also reads like the implementation was reviewed by Russ
    which as far as I understand isn't the case either? Or do you only plan
    to deploy a version once such a review happened?

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Marco d'Itri@21:1/5 to [email protected] on Thu Jun 13 13:40:02 2024
    [email protected] wrote:

    Do we actually want or need to hoard all the collaboration history?
    Of course: this makes auditing much easier.

    --
    ciao,
    Marco

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to All on Thu Jun 13 13:40:02 2024
    Antoine Beaupr� writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    Right now my workflow is basically git-buildpackage + salsa + dput, relunctantly using pristine-tar sometimes.

    I have *tried* to use dgit, but [...]

    I think maybe I should make a blog post explaining what dgit is, and
    isn't. But that's probably rather out-of-scope for this thread.

    1. how does this change my gbp/salsa/dput workflow?
    can i *just* s/dput/dgit/?

    By "this" I'm going to take you to mean "tag2upload".
    With tag2upload you don't run dgit.

    You replace gbp/salsa/dput with git-debpush. git-debpush will push to
    your branch salsa for you, as well as making and pushing the git tag.
    The tag2upload service will take care of the rest.

    You'll still want to run gbp, etc., as part of your pre-upload
    testing, of course.

    Can I just keep doing gbp + salsa and switch the "dput" bit to
    "dgit" or "tag2upload" without changing anything else? That would be
    kind of neat, but I'm not sure *why* I would do that in the first
    place...

    There are two good reasons why you might want to adopt tag2upload,
    (and they mostly apply to dgit push).

    Firstly, tag2upload is much simpler, more convenient and faster.
    (dgit is also simpler to use and more convenient, but not quite so
    simple as tag2upload, and it isn't faster than old-school uploads.)

    Secondly, tag2upload is more reliable, more traceable, and provides a
    better result for users. (These advantages apply to dgit too.)
    NB "reliable" here often means "more likely to stop and report a
    problem, than blindly carry on and perhaps do a wrong thing".

    tag2upload and dgit have many additional safety checks that help avoid mistakes. For example, you can be sure that the git tree you are
    about to upload is precisely what ends up in the archive - so you can
    rely on git diff and never need to run debdiff on source packages.
    It is much harder to accidentally undo an NMU. etc.

    2. does this scale to the archive?
    ==================================
    ...
    So what's the plan for dealing with the sheer size of the Debian
    archive, assuming that eventually everything might reasonably be
    expected to be *both* on dgit and salsa, if I understand the proposal correctly?

    It's true that this is a lot of data. It's going to be comparable in
    size to the archive. Scalability is a reasonable concern.

    There is one singleton service push.dgit.d.o, which is used only by
    uploaders (and the tag2upload robot). So it shouldn't become
    overloaded.

    Non-uploading clients use {browse,git}.dgit.d.o. Currently that is a
    single host, which is also shared with some other services. But it is
    a read-only mirror and we could scale up to multiple mirrors.

    (Well, technically, the proposal says "this is opt-in, entirely
    optional", but Ian at least has explicitly stated he expects people to enthusiastically start to use dgit massively in the future, so even if
    that's not actually part of the proposal, we should take that scenario
    into account.)

    YM enthusiastically start to use tag2upload. But, yes.

    3. what does this mean for salsa/jenkins/bts/etc?

    Nothing.

    In the long term, what do you actually think we should do about the duplication of tools out there? We are wasting a lot of energy here maintaining two CI systems (Jenkins and GitLab CI), two bug trackers
    (BTS and GitLab issues), two wiki systems (MoinMoin and GitLab Wikis),

    I don't think I have an opinion about that. (Or at least, maybe I do,
    but it's not relevant.)

    tag2upload is not a competitor to any of the things you list.

    In the long term, tag2upload depends on there being one or more things
    that are a enough like git forges that they can call webhooks and
    serve up git tags. Right now that's Salsa. If Debian wants to
    replace gitlab with some other forge that's not something that
    tag2upload has much of an opinion about.

    Ultimately, *.dgit.d.o is in some sense a competitor to
    archive.debian.org, but I don't see us abolishing archive.d.o.
    Instead, tag2upload is getting us further towards on dual running,
    where we accept either source packages or git trees, and publish both.

    two (or more?) VCS hosting systems (dgit and GitLab repos)?

    dgit-repos is complementary to gitlab. (The relationship to salsa has
    been discussed extensively elsewhere in this megathread.)

    I understand the proposal doesn't directly say "oh yeah, we're actually thinking we should ditch salsa and replace it with all those nice little small components", but it is certainly taking a stand that Salsa is not
    good enough to provide the level of security that is required to upload packages in Debian, and saying that is saying a lot because I suspect we
    are *actually* trusting Salsa and GitLab with our code much more than we would like to admit...

    To be completely clear: tag2upload is not a replacement for Salsa, and
    it cannot be such a replacement. In the planned deployment it
    *depends on* Salsa.

    Anyways, I hope I'm not throwing a brick here, I do really have those questions and concerns and I am hoping a GR would pre-emptively answer
    them so we have a better idea of what we're actually voting on here,
    because I think the proposal, as it stands now, hides a lot of the
    unresolved issues and problems we have.

    Past experience with GRs suggests very strongly that GR proposals
    should be short. So I think the background has to be outside the
    formal GR - in places like this discussion thread.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Andreas Tille on Thu Jun 13 13:50:02 2024
    Andreas Tille writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    That means some package build process is done before the source
    package is forwarded to dak and sends some e-mail back?

    Only a source package build.

    I know we have this. My point is that tag2upload users might forget
    to use it before using tag2upload service. I simply want to make
    sure that tag2upload is not another way to upload anything that does
    not build on buildservices.

    I'm afriad that tag2upload is precisely another way to do that.

    That's because that's how uploading works now, and tag2upload is
    another way to make an upload. Uploads must be source-only nowadays
    (in most cases). So there is, by design, nothing in the existing
    setup that ensures that a maintainer built binaries. (I get the
    feeling that you're not happy with this situation, but that's how
    Debian is now, and I think it's a jolly good thing.)

    You might argue that tag2upload makes this worse because it makes it
    easier to perform uploads. It certainly *does* make it easier to
    perform uploads. That's a big part of the point.

    I think this can only be a *downside* if you think it is a good
    thing that uploading is difficult.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to All on Thu Jun 13 14:20:02 2024
    Hello,

    On Thu 13 Jun 2024 at 01:05pm +02, Ansgar 🙀 wrote:

    On Thu, 2024-06-13 at 16:58 +0800, Sean Whitton wrote:
    On Wed 12 Jun 2024 at 11:14am +02, Ansgar 🙀 wrote:

    As far as I understand, the GR is about pushing the design and
    implementation as is, without any changes. It very explicitly says
    so.

    It does not say this.

    Quote:

    ---
    1. tag2upload, in the form designed and implemented by Sean Whitton and
    Ian Jackson, and reviewed by Jonathan McDowell and Russ Allbery,
    should be deployed to official Debian infrastructure.
    ---

    It also says "The design is not expected to change significantly, but we
    may tweak details in response to feedback from d-vote, and while
    finishing the server-side deployment implementation, in consultation
    with DSA."

    The idea of the GR text is to give the named designers a certain amount
    of latitude to make appropriate changes.

    Thanks for the feedback here.

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to All on Thu Jun 13 14:50:01 2024
    Hello,

    On Thu 13 Jun 2024 at 01:05pm +02, Ansgar 🙀 wrote:

    The statement also reads like the implementation was reviewed by Russ
    which as far as I understand isn't the case either? Or do you only plan
    to deploy a version once such a review happened?

    We weren't planning for this to be done, no.

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Luca Boccassi@21:1/5 to [email protected] on Thu Jun 13 15:30:01 2024
    On Thu, 13 Jun 2024 at 12:47, Ian Jackson
    <[email protected]> wrote:

    Andreas Tille writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    That means some package build process is done before the source
    package is forwarded to dak and sends some e-mail back?

    Only a source package build.

    As far as I understand in the current proposal the trigger is a
    webhook running on Salsa after a push - have you considered instead
    having the trigger be a stage in the salsa-ci pipeline, that would run
    after the previous stages have completed successfully? IE, like we can
    do today with aptly or pages publishing, for example. What runs in the
    pipeline is still under the control of the individual repo
    maintainers, but the default would mean having this additional CI
    step, which I think is what Andreas is hinting at, but solve it on the
    other end of the pipeline - at the beginning, rather than at the end.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?utf-8?Q?Pierre-Elliott_B=C3=A9cue@21:1/5 to Sean Whitton on Thu Jun 13 15:20:01 2024
    Sean Whitton <[email protected]> wrote on 13/06/2024 at 14:44:57+0200:

    Hello,

    On Thu 13 Jun 2024 at 01:05pm +02, Ansgar 🙀 wrote:

    The statement also reads like the implementation was reviewed by Russ
    which as far as I understand isn't the case either? Or do you only plan
    to deploy a version once such a review happened?

    We weren't planning for this to be done, no.

    I'm sorry but I have a problem here.

    You stated in your first mail that both rra and noodles audited your
    work, and here it seems that audited is potentially a bit more than what
    has been done.

    Could you elaborate explicitly on what you mean with "audited"?

    Bests,
    --
    PEB

    --=-=-Content-Type: application/pgp-signature; name="signature.asc"

    -----BEGIN PGP SIGNATURE-----

    iQJDBAEBCgAtFiEE5CQeth7uIW7ehIz87iFbn7jEWwsFAmZq8AwPHHBlYkBkZWJp YW4ub3JnAAoJEO4hW5+4xFsLjfUQAI1f9e8zh8H01IHaWVYGDrUPp/Sxsv6tE8Hu d+eW7LynIy2XaMI5jlxj1prlFJ04EGstUmcSwqyQL3hJwyKYOIEXEtGkUbQ1fPPv 2wzVEtfMgZedxKy/PXCM3K8p2mvrnQ3b1lJ9gqigOzZHpwzR+uVCXimALwUBErpY x/9pYcl4NFo1LwyELibIvptXhUW5rXB6J/CGd+1GageKz2kZmybEqBvJtWUdUOlR a/EHLB2FDSUQgjeBlMHtCPEq7nC2Ys9XsX0N+PjYlCOYZ/YUmP28x1hW5PNc9Vw3 9TlAwTzPgjl6omA+hk2t53H4cwFiREDHd9yk6gdZ+fibkXJ+CKZMgWMLlWD02J4j oyhCBHe2rS/aFIx3oUwyYgPkOH53Muu9CDNzNjEdcWjfHY6t2WwUVzFa749yfFp9 jfnOMVvP9spbq79uUzsuFPQeguyTrUbIjXEmTJ3CLo65iU5sZQMJ15Db/4+4845A 2fT0TbYV72XZYq+n7SHWqNsllZFnviOqy+PZAsr0kSodt6yoAhgFZvjPCJdtYK7g NyIWKwELA97yXiA02OYZ2LWGZFUDrXrctHmwqiR+9EeJNgACsi/QQtVnjISJ+776 oAxrqmWmX0Ni9QYk4rNr1tSma+nnkeYhTzqum/TZT9q34WHtpR4NhiSRyO95BFjA
    66rJRA4v
    =RQ2L
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon Richter@21:1/5 to Marco d'Itri on Thu Jun 13 15:50:01 2024
    Hi,

    On 6/13/24 20:29, Marco d'Itri wrote:

    Do we actually want or need to hoard all the collaboration history?

    Of course: this makes auditing much easier.

    That is a *massive* amount of data though, especially if we're expected
    to import the entire upstream git history as well and base the packaging
    branch on top of an upstream commit.

    We will also need to be prepared for removal requests, so there needs to
    be a procedure in place for that, people authorized to perform it, and
    an audit framework for that.

    I don't think any additional auditing of upstream sources will be
    performed because of this either, they will just be pulled in and used
    as-is. We might get additional insights after a breach, perhaps, if
    Github decide to take a compromised repository offline and our copy is
    still accessible.

    We could add some mechanisms, like enforcing that merge commits pulling
    in a new upstream version will only modify files outside of debian/ in
    one subtree, and files inside debian/ in the other, but that conflicts
    with workflows that maintain Debian-specific patches as commits instead
    of patch files.

    Without such a mechanism, these merge commits would immediately become
    the most obvious place to hide malicious code in a large changeset.

    We have several 90% solutions of mapping Debian packaging onto git, but
    all of these are incomplete and annoying to use because we disagree with
    git on what constitutes data, and what constitutes metadata, so the data
    model does not match reality or requirements, and from a security
    standpoint that concerns me more than improved forensics.

    Simon

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Timo =?utf-8?Q?R=C3=B6hling?=@21:1/5 to All on Thu Jun 13 15:40:01 2024
    Hi,

    * Luca Boccassi <[email protected]> [2024-06-13 14:23]:
    As far as I understand in the current proposal the trigger is a
    webhook running on Salsa after a push - have you considered instead
    having the trigger be a stage in the salsa-ci pipeline, that would run
    after the previous stages have completed successfully?
    I hate that idea. From past experience, the Salsa CI pipeline is
    slower and much more flaky than the buildds, so I'm not going to
    spend several hours (and retries) per upload waiting to see if the
    Salsa CI deemed my upload worthy.


    Cheers
    Timo

    --
    ⢀⣴⠾⠻⢶⣦⠀ ╭────────────────────────────────────────────────────╮
    ⣾⠁⢠⠒⠀⣿⡁ │ Timo Röhling │
    ⢿⡄⠘⠷⠚⠋⠀ │ 9B03 EBB9 8300 DF97 C2B1 23BF CC8C 6BDD 1403 F4CA │
    ⠈⠳⣄⠀⠀⠀⠀ ╰────────────────────────────────────────────────────╯

    -----BEGIN PGP SIGNATURE-----

    iQIzBAEBCgAdFiEEmwPruYMA35fCsSO/zIxr3RQD9MoFAmZq9VsACgkQzIxr3RQD 9Mo8ew//akO6cJEB8Ii5C+uI8UWP4m2mfMkp0qm32oeJozOWdrZM7gvO4Mkq26r2 3LOZP1tEtSeAyjfzo93i+mKJ0NoT9XeH4Yix7MdF/r/duEhSNph1fJjpxUgirClt yBNePrKPG4PIK8fDHWBzWWF3VMU+6ZDlUGmDZe99e3IoiCiocJfIchpfYtxnYIRH gjZy+DmZX11mZFAmBIFqwPpRNzUpZ4x9VTMZHMe+G+GxpSyFEBYZA8Oi0bIO8+97 JfUChNgb05nI9TohJuN47BKDONlR6b0Nje70p0x5EjkdAY7tHIjHRGyVeGCNsnOe 3MOgp3Yp//PG4OXiS+l7AqyeU3S6rI5fGJugzHS4jNT
  • From Ian Jackson@21:1/5 to All on Thu Jun 13 15:50:01 2024
    Timo R�hling writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    Luca Boccassi <[email protected]> [2024-06-13 14:23]:
    As far as I understand in the current proposal the trigger is a
    webhook running on Salsa after a push - have you considered instead
    having the trigger be a stage in the salsa-ci pipeline, that would run >after the previous stages have completed successfully?

    I hate that idea. From past experience, the Salsa CI pipeline is
    slower and much more flaky than the buildds, so I'm not going to
    spend several hours (and retries) per upload waiting to see if the
    Salsa CI deemed my upload worthy.

    I hope Luca wasn't suggesting that Salsa CI as a blocker ought to be
    mandatory. Like so many things in this space, some people love what
    others hate.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Luca Boccassi on Thu Jun 13 15:50:01 2024
    Luca Boccassi writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    As far as I understand in the current proposal the trigger is a
    webhook running on Salsa after a push - have you considered instead
    having the trigger be a stage in the salsa-ci pipeline, that would run
    after the previous stages have completed successfully? IE, like we can
    do today with aptly or pages publishing, for example. What runs in the pipeline is still under the control of the individual repo
    maintainers, but the default would mean having this additional CI
    step, which I think is what Andreas is hinting at, but solve it on the
    other end of the pipeline - at the beginning, rather than at the end.

    I think would be possible in principle. It would certainly be nice to
    be able to say "please upload this but only if the Salsa CI passes".

    It is more complicated, though, than simply having the webhook run off
    CI jobs instead. A webhook is supposed just to be a trigger to look
    at something, not a definitive API call; conversely, the user ought
    not to make a signed tag requesting an unconditonal upload if what
    theyt really mean is "upload if CI passes".

    So to do this properly the t2u server should somehow separately verify
    that the CI has passed. I think this probably means having a CI job
    job which signs a "tests passed on this commit" tag using a key
    available to Salsa, and providing the t2u server with *both*
    signatures. (Since we don't want the t2u server making API calls to
    salsa!)

    I don't propose to implement this right away.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Luca Boccassi@21:1/5 to [email protected] on Thu Jun 13 16:00:01 2024
    On Thu, 13 Jun 2024 at 14:49, Ian Jackson
    <[email protected]> wrote:

    Timo Röhling writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    Luca Boccassi <[email protected]> [2024-06-13 14:23]:
    As far as I understand in the current proposal the trigger is a
    webhook running on Salsa after a push - have you considered instead >having the trigger be a stage in the salsa-ci pipeline, that would run >after the previous stages have completed successfully?

    I hate that idea. From past experience, the Salsa CI pipeline is
    slower and much more flaky than the buildds, so I'm not going to
    spend several hours (and retries) per upload waiting to see if the
    Salsa CI deemed my upload worthy.

    I hope Luca wasn't suggesting that Salsa CI as a blocker ought to be mandatory. Like so many things in this space, some people love what
    others hate.

    I was not, I wasn't suggesting to make this a hard requirement, as you
    say that's more complicated. Merely moving the fire-and-forget webhook
    as the last stage of the pipeline, as the default setting/setup/config/whatever. This is not to provide strong
    guarantees, but merely an easy default that encourages a QA pass
    first. Then maintainers can override the pipeline config and skip it,
    if they don't want it for any reason. If it was the default, I suspect
    de-facto the majority of uploads would go through it, and we would
    gain in quality, on average (exceptions apply, etc etc).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?utf-8?Q?Antoine_Beaupr=C3=A9?=@21:1/5 to Ian Jackson on Thu Jun 13 16:00:01 2024
    On 2024-06-13 12:38:36, Ian Jackson wrote:
    Antoine Beaupré writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    Right now my workflow is basically git-buildpackage + salsa + dput,
    relunctantly using pristine-tar sometimes.

    I have *tried* to use dgit, but [...]

    I think maybe I should make a blog post explaining what dgit is, and
    isn't. But that's probably rather out-of-scope for this thread.

    I think the dgit documentation is actually pretty good, I don't think
    that's the issue here.

    1. how does this change my gbp/salsa/dput workflow?
    can i *just* s/dput/dgit/?

    By "this" I'm going to take you to mean "tag2upload".
    With tag2upload you don't run dgit.

    Well, isn't tag2upload part of dgit? Or at least git-debpush, the binary package, seems to be part of the dgit source package here... we're also
    talking frequently about dgit.debian.org as part of this infrastructure,
    so clearly this whole thing is kind of a part of dgit...

    I am not sure saying those things are completely separate here is
    helpful, it would be more useful to clarify exactly what component we're adopting and what patterns we need to change if we want to adopt
    this. For example, does this respect DEP-14? Which parts?

    You replace gbp/salsa/dput with git-debpush. git-debpush will push to
    your branch salsa for you, as well as making and pushing the git tag.
    The tag2upload service will take care of the rest.

    See that's a different answer than what Sean said, I believe, which is
    that you replace `dpkg-buildpackage -S` with git-debpush. :)

    You'll still want to run gbp, etc., as part of your pre-upload
    testing, of course.

    Right. But I don't upload the resulting source package, that's thrown
    away, basically...

    Can I just keep doing gbp + salsa and switch the "dput" bit to
    "dgit" or "tag2upload" without changing anything else? That would be
    kind of neat, but I'm not sure *why* I would do that in the first
    place...

    [...]

    tag2upload and dgit have many additional safety checks that help avoid mistakes. For example, you can be sure that the git tree you are
    about to upload is precisely what ends up in the archive - so you can
    rely on git diff and never need to run debdiff on source packages.
    It is much harder to accidentally undo an NMU. etc.

    This brings another question to mind. Right now, I understand that some
    people use dgit for NMUs, on packages they do not own. Does this
    workflow still support the old NMU process where i get a debdiff with an
    upload someone makes for me, or if someone opts in to this process, for
    an NMU, *I*, as a maintainer, now have to figure out dgit? :)

    2. does this scale to the archive?
    ==================================
    ...
    So what's the plan for dealing with the sheer size of the Debian
    archive, assuming that eventually everything might reasonably be
    expected to be *both* on dgit and salsa, if I understand the proposal
    correctly?

    It's true that this is a lot of data. It's going to be comparable in
    size to the archive. Scalability is a reasonable concern.

    There is one singleton service push.dgit.d.o, which is used only by
    uploaders (and the tag2upload robot). So it shouldn't become
    overloaded.

    Non-uploading clients use {browse,git}.dgit.d.o. Currently that is a
    single host, which is also shared with some other services. But it is
    a read-only mirror and we could scale up to multiple mirrors.

    Are those two different hosts with their own replicas of the git repos?
    Because then that means we have *three* replicas (push.dgit.d.o, browse.dgit.d.o and salsa.d.o) of those repositories...

    [...]

    3. what does this mean for salsa/jenkins/bts/etc?

    Nothing.

    In the long term, what do you actually think we should do about the
    duplication of tools out there? We are wasting a lot of energy here
    maintaining two CI systems (Jenkins and GitLab CI), two bug trackers
    (BTS and GitLab issues), two wiki systems (MoinMoin and GitLab Wikis),

    I don't think I have an opinion about that. (Or at least, maybe I do,
    but it's not relevant.)

    I do think it's relevant. Right now, there's a huge tension between "the
    old ways" of doing things, and some people (at least me) believe we
    should be converging towards a smaller set of standard tools that we all
    use. I, for example, believe we should all use debhelper and ditch CDBS,
    use Git (and Salsa) for keeping history, use git-buildpackage as a
    standard workflow. I don't believe it's productive to go around fighting
    to standardize this, or at least I don't know how to get there, but
    that's my bias.

    You, I suspect, have a bias as well. If you don't state it clearly,
    people will (and have, already!) speculate as to what your underlying intentions are. Sean, for example, has clearly stated he likes Salsa and
    wants it to stick around, which probably will comfort people who worry
    about this.

    I think if you, in particular, would speak your mind about this, it
    could help alleviate some of those concerns, or at least clarify the
    scope of concerns people should have. :p

    tag2upload is not a competitor to any of the things you list.

    In the long term, tag2upload depends on there being one or more things
    that are a enough like git forges that they can call webhooks and
    serve up git tags. Right now that's Salsa. If Debian wants to
    replace gitlab with some other forge that's not something that
    tag2upload has much of an opinion about.

    Ultimately, *.dgit.d.o is in some sense a competitor to
    archive.debian.org, but I don't see us abolishing archive.d.o.
    Instead, tag2upload is getting us further towards on dual running,
    where we accept either source packages or git trees, and publish both.

    hmmm... maybe I'm missing something, but archive.d.o also has binary
    packages, dgit.d.o doesn't do that, does it? Or are you only refering to
    the source packages part?

    [...]

    Anyways, I hope I'm not throwing a brick here, I do really have those
    questions and concerns and I am hoping a GR would pre-emptively answer
    them so we have a better idea of what we're actually voting on here,
    because I think the proposal, as it stands now, hides a lot of the
    unresolved issues and problems we have.

    Past experience with GRs suggests very strongly that GR proposals
    should be short. So I think the background has to be outside the
    formal GR - in places like this discussion thread.

    Yeah, except I suspect a lot of people will not read the entire thread
    and it would certainly be useful to have this, if not directly as part
    of the GR, at least as an company document of some sort...

    At least I know that I don't have time to catchup on all the traffic on debian-vote and (:surprised-pikachu:) don't always read all those emails
    before voting... :)

    a.

    --
    Nothing in life is to be feared, it is only to be understood.
    Now is the time to understand more, so that we may fear less.
    - Marie Curie

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Simon Richter on Thu Jun 13 16:10:01 2024
    Simon Richter writes ("Re: [RFC] General Resolution to deploy tag2upload [and 1 more messages]"):
    On 6/13/24 20:29, Marco d'Itri wrote:
    Of course: this makes auditing much easier.

    That is a *massive* amount of data though, especially if we're expected
    to import the entire upstream git history as well and base the packaging branch on top of an upstream commit.

    In practice IME the full git history is usually a small integer
    multiple of the current codebase size. archive.d.o already has to
    contain many copies of the source code. And we already want to keep
    all uploaded versions indefinitely (that's what snapshot.d.o is).

    I think it is possible that there will be a handful of packages where
    things are significantly more awkward, which might not be able to
    adopt tag2upload.

    We will also need to be prepared for removal requests, so there needs to
    be a procedure in place for that, people authorized to perform it, and
    an audit framework for that.

    Yes.

    The dgit git server is already set up for this, from an infrastructure
    point of view. We have mechanisms that allow an administrator (Sean
    or I in this case) to rewind a repository, and also to prevent harmful
    git objects from being re-uploaded.

    In the 10 years that dgit-repos has existed, this has been necessary
    once, due to a bug in dgit itself (that caused corrupted commits that
    were accepted by git but rejected by most forges, #850469/#849041).

    We don't have a very developed process flow but I think we could
    probably make it up without too much trouble.

    We could add some mechanisms, like enforcing that merge commits pulling
    in a new upstream version will only modify files outside of debian/ in
    one subtree, and files inside debian/ in the other, but that conflicts
    with workflows that maintain Debian-specific patches as commits instead
    of patch files.

    This sounds a bit like `git-debrebase`, which is a git workflow tool -
    a competitor to gbp and git-dpm. The src:xen team uses it, for
    example. But I don't think it's suitable for everyone.

    git packaging and delta management workflows (and the associated
    tools) all have both strengths and weaknesses. Maintainers are going
    to have to continue to decide which set of tradeoffs to choose.

    We have several 90% solutions of mapping Debian packaging onto git, but
    all of these are incomplete and annoying to use because we disagree with
    git on what constitutes data, and what constitutes metadata, so the data model does not match reality or requirements, and from a security
    standpoint that concerns me more than improved forensics.

    I think tag2upload brings Debian's model closer to git and to
    upstream's. That's a big part of the point.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Timo =?utf-8?Q?R=C3=B6hling?=@21:1/5 to All on Thu Jun 13 17:00:01 2024
    Hi,

    * Luca Boccassi <[email protected]> [2024-06-13 14:51]:
    I was not, I wasn't suggesting to make this a hard requirement, as
    you say that's more complicated. Merely moving the fire-and-forget
    webhook as the last stage of the pipeline, as the default >setting/setup/config/whatever. This is not to provide strong
    guarantees, but merely an easy default that encourages a QA pass
    first. Then maintainers can override the pipeline config and skip
    it, if they don't want it for any reason. If it was the default, I
    suspect de-facto the majority of uploads would go through it, and
    we would gain in quality, on average (exceptions apply, etc etc).

    Sure, having the option and even having the option as default is
    perfectly fine. If I can instruct tag2upload not to wait for the CI
    on certain uploads, I might even leave it on ;)

    Cheers
    Timo


    --
    ⢀⣴⠾⠻⢶⣦⠀ ╭────────────────────────────────────────────────────╮
    ⣾⠁⢠⠒⠀⣿⡁ │ Timo Röhling │
    ⢿⡄⠘⠷⠚⠋⠀ │ 9B03 EBB9 8300 DF97 C2B1 23BF CC8C 6BDD 1403 F4CA │
    ⠈⠳⣄⠀⠀⠀⠀ ╰────────────────────────────────────────────────────╯

    -----BEGIN PGP SIGNATURE-----

    iQIzBAEBCgAdFiEEmwPruYMA35fCsSO/zIxr3RQD9MoFAmZrB7MACgkQzIxr3RQD 9Mq7jQ/9FiXrCSCDiYFVyCtqcDFXhRtqYLFNnLsESKL1Z6K4lgKAmz/OK8TSFOk5 Lu3/BDiHTsxnRmshljS2AyT5dOyQuQKJgYWF9HnWraQIMwbkhmyAiXnkM1hY4KbR VlpNkl05wUrJRwiT99cpoG/cOP+r5JO5xPlvxs717jGt1OjbCIo54sfpxTuDTVQe iGgCS9kVcf0/78Ct4KdTCN/IQj6SubYq/KGmBLKLH+n6wkSZEo3kPXaCnv71jAe8 2Q912YtU+vSNCYn7OjVaFfyAORE+rQlHskOwWFf13zaDug6vkOaObd8Z/HolbRym baFOAgDvIpJMVjI6NyWc5y6ZtuJ6HG6EqX5Q4OEceyO
  • From Sean Whitton@21:1/5 to All on Thu Jun 13 16:20:01 2024
    Hello,

    On Thu 13 Jun 2024 at 03:11pm +02, Pierre-Elliott Bécue wrote:

    Sean Whitton <[email protected]> wrote on 13/06/2024 at 14:44:57+0200:

    Hello,

    On Thu 13 Jun 2024 at 01:05pm +02, Ansgar 🙀 wrote:

    The statement also reads like the implementation was reviewed by Russ
    which as far as I understand isn't the case either? Or do you only plan
    to deploy a version once such a review happened?

    We weren't planning for this to be done, no.

    I'm sorry but I have a problem here.

    You stated in your first mail that both rra and noodles audited your
    work, and here it seems that audited is potentially a bit more than what
    has been done.

    Could you elaborate explicitly on what you mean with "audited"?

    That's fair, I'll disambiguate the wording of (2).

    Russ and Jonathan thoroughly reviewed the design and its security
    properties. They've looked at bits of the implementation but not in a completely systematic way.

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to All on Thu Jun 13 17:00:01 2024
    Antoine Beaupr� writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    On 2024-06-13 12:38:36, Ian Jackson wrote:
    Antoine Beaupr� writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    3. what does this mean for salsa/jenkins/bts/etc?

    Nothing.
    ...
    I don't think I have an opinion about that. (Or at least, maybe I do,
    but it's not relevant.)

    I do think it's relevant. [...]

    You, I suspect, have a bias as well. If you don't state it clearly,
    people will (and have, already!) speculate as to what your underlying intentions are. Sean, for example, has clearly stated he likes Salsa and wants it to stick around, which probably will comfort people who worry
    about this.

    tag2upload doesn't care about Jenkins vs gitlab CI; doesn't care about
    BTS vis gitlab issues; and doesn't care about wiki systems.

    But, you're right, I do have biases. My two main biases here:

    1. I think git is great and we should be using it much more. I think
    source packages, which I designed decades ago (and which others
    have since added features to), are weird, buggy, and obsolete.
    I wish I would never have to deal with source packages.

    2. But, I very much don't want to impose things on anyone. Debian is
    only fun when we all have our autonomy. Also Debian is very big
    and different situations call for different solutions.

    So, I try to provide software which people will love to use.

    At the risk of derailing things:

    Unlike certain other camps in Debian, I definitely don't want to force
    anyone to use my software. I've put my reputation on the line, and
    fought many very horrible fights in Debian, to try to help preserve my co-developers and users' technological autonomy. My ideology about transitioning to git is no different.

    I see the fear others have here, that the dgit and tag2upload projects
    are somehow a plot to force everyone into using some weird thing I
    invented. Given Debian's overall attitude, and past crises and
    events, that is a reasonable fear.

    But no-one has anything to fear from *me* on that point.

    I say this even though I think currently mainstream practices in
    Debian as a whole fail to properly provide our users with the source
    code. IMO we, as a project, are grievously failing to meet our core objectives.

    My answer to this is to try to provide tools that enable us all to do
    our work, effectively, and also meet our ideological obligations.
    dgit is part of that. tag2upload is the next step.

    My biases are hardly secret. Try maybe these two blog posts:
    https://diziet.dreamwidth.org/17579.html
    https://diziet.dreamwidth.org/9556.html
    They are aimed at our non-Debian-expert users. They contain
    apologies. I don't want to have to apologise on Debian's behalf.
    So I'm trying to make it easy for everyone in Debian to do better.

    I think if you, in particular, would speak your mind about this, it
    could help alleviate some of those concerns, or at least clarify the
    scope of concerns people should have. :p

    HTH.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to All on Thu Jun 13 17:10:01 2024
    Antoine Beaupr� writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    Well, isn't tag2upload part of dgit? Or at least git-debpush, the binary package, seems to be part of the dgit source package here... we're also talking frequently about dgit.debian.org as part of this infrastructure,
    so clearly this whole thing is kind of a part of dgit...

    Rather, dgit is part of the implementation strategy for tag2upload,
    because dgit is the only program that knows how to canonicalise
    git trees and turn them into to source packages.

    And the t2u code lives in src:dgit because src:dgit has lots of useful infrastructure, eg for testing involving git and source packages.

    I am not sure saying those things are completely separate here is
    helpful, it would be more useful to clarify exactly what component we're adopting and what patterns we need to change if we want to adopt
    this. For example, does this respect DEP-14? Which parts?

    tag2upload doesn't concern itself with the ref namespace, so those
    parts of DEP-14 aren't relevant.

    tag2upload *does* use DEP-14 tag naming, including DEP-14 version
    mangling. (Indeed as part of our git integraton work, we enhanced
    DEP-14's mangling to cover a missing edge case.)

    https://manpages.debian.org/testing/git-debpush/tag2upload.5.en.html#GIT_METADATA

    tag2upload and dgit have many additional safety checks that help avoid mistakes. For example, you can be sure that the git tree you are
    about to upload is precisely what ends up in the archive - so you can
    rely on git diff and never need to run debdiff on source packages.
    It is much harder to accidentally undo an NMU. etc.

    This brings another question to mind. Right now, I understand that some people use dgit for NMUs, on packages they do not own. Does this
    workflow still support the old NMU process where i get a debdiff with an upload someone makes for me, or if someone opts in to this process, for
    an NMU, *I*, as a maintainer, now have to figure out dgit? :)

    Nothing changes for you.

    An NMUer, whether they use dgit or not, is supposed to send you the
    diff. (An NMUer who does their work with dgit will probably use
    git-diff or git-format-patch to generate the diffs they send to the
    BTS.)

    With tag2upload you apply the NMU diff to your git tree in whatever
    way you do so currently.

    An NMUer can use tag2upload, too. That doesn't interfere with your
    use of it.

    2. does this scale to the archive?
    ...
    There is one singleton service push.dgit.d.o, ...
    Non-uploading clients use {browse,git}.dgit.d.o. ...

    Are those two different hosts with their own replicas of the git repos?

    Yes. And if browse.* and git.* become too busy, so need to be scaled
    up, there will be even more replicas.

    Because then that means we have *three* replicas (push.dgit.d.o, browse.dgit.d.o and salsa.d.o) of those repositories...

    We have at least five. You forgot archive.debian.org and
    snapshot.debian.org.

    (And that's not even counting the maintainer's laptop, temporary
    clones/copies on salsa and ci.d.n and buildds, and all the copies
    upstream have.)

    Ultimately, *.dgit.d.o is in some sense a competitor to
    archive.debian.org, but I don't see us abolishing archive.d.o.
    Instead, tag2upload is getting us further towards on dual running,
    where we accept either source packages or git trees, and publish both.

    hmmm... maybe I'm missing something, but archive.d.o also has binary packages, dgit.d.o doesn't do that, does it? Or are you only refering to
    the source packages part?

    Yes, you're right, only the source packages part.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joerg Jaspert@21:1/5 to Ian Jackson on Thu Jun 13 17:10:01 2024
    On 17259 March 1977, Ian Jackson wrote:

    Thanks. Then possibly it is sufficient for ftpmaster just to disable
    tag2upload's whole key until the keyring update is pushed.
    I'm not sure this is a sufficient answer. We don't want uploads by
    revoked keys to appear on *.dgit.d.o either.

    Joerg, is there some way that this fingerprint block information could
    be made available in a more timely manner? Ideally we would update push.dgit.d.o to use this information, regardless of tag2upload.
    (And the t2u conversion system should use it too.)

    I think maybe we should take this to a different venue, than this
    thread on -vote. How about a bug against ftp.d.o and/or
    dgit-infrastructure ?

    I think this is a minor issue, actually. It does not happen often. For
    the time it will, we can have something like "ftpmaster pushes a list of fingerprints via $mechanism" (ssh forced command is widely used for
    similar things, for example).

    That's really simple to implement.

    --
    bye, Joerg

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon McVittie@21:1/5 to Ian Jackson on Thu Jun 13 17:20:01 2024
    On Thu, 13 Jun 2024 at 15:08:15 +0100, Ian Jackson wrote:
    I think it is possible that there will be a handful of packages where
    things are significantly more awkward, which might not be able to
    adopt tag2upload.

    This would presumably be the same minority of packages where maintainers
    use a debian/-only workflow (even if they normally prefer to keep upstream source in git) and avoid dgit (even if they normally prefer to use it),
    because the upstream source is too bulky to be convenient to track in git?
    Such as the openarena-data family and other large game assets?

    Those packages are already exceptional and already need to be handled specially. They'd only be a problem if dgit and/or tag2upload became
    mandatory, which (as far as I understand it) is not the plan.

    smcv

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Kitterman@21:1/5 to Joerg Jaspert on Thu Jun 13 17:20:01 2024
    On June 13, 2024 3:02:48 PM UTC, Joerg Jaspert <[email protected]> wrote:
    On 17259 March 1977, Ian Jackson wrote:

    Thanks. Then possibly it is sufficient for ftpmaster just to disable
    tag2upload's whole key until the keyring update is pushed.
    I'm not sure this is a sufficient answer. We don't want uploads by
    revoked keys to appear on *.dgit.d.o either.

    Joerg, is there some way that this fingerprint block information could
    be made available in a more timely manner? Ideally we would update
    push.dgit.d.o to use this information, regardless of tag2upload.
    (And the t2u conversion system should use it too.)

    I think maybe we should take this to a different venue, than this
    thread on -vote. How about a bug against ftp.d.o and/or
    dgit-infrastructure ?

    I think this is a minor issue, actually. It does not happen often. For
    the time it will, we can have something like "ftpmaster pushes a list of >fingerprints via $mechanism" (ssh forced command is widely used for
    similar things, for example).

    That's really simple to implement.

    I agree that this isn't a major design issue, but I think it is something that I think needs to be addressed before deployment of tag2upload. The need is certainly rare, but when it's needed, it's needed because it's important.

    It also suggests to me that it's premature to freeze and mandate the current design via GR.

    Scott K

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Scott Kitterman on Thu Jun 13 17:30:01 2024
    Scott Kitterman <[email protected]> writes:

    I agree that this isn't a major design issue, but I think it is
    something that I think needs to be addressed before deployment of
    tag2upload. The need is certainly rare, but when it's needed, it's
    needed because it's important.

    I don't understand why this would be a blocker given that dak can redo the authorization check at the same point that it does authorization checks
    now, should it so desire. This does require a small change to dak to
    retrieve the key fingerprint from the source package in the case where the source package is signed with the tag2upload key, but that doesn't seem
    too difficult.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Simon Richter on Thu Jun 13 18:00:02 2024
    Simon Richter <[email protected]> writes:

    We might get additional insights after a breach, perhaps, if Github
    decide to take a compromised repository offline and our copy is still accessible.

    I think this is way more useful than you are making it sound. Upstream
    may not use GitHub at all and instead use their own personal Git servers.
    The malicious code may be introduced by a Debian contributor directly in Debian. Upstream may have tampered with their Git repository using force
    push or the like in a way that causes the desired trace information to be
    lost. There are numerous cases where Debian having its own archive of the
    Git history when investigating a compromise would be immensely valuable.

    We have several 90% solutions of mapping Debian packaging onto git, but
    all of these are incomplete and annoying to use because we disagree with
    git on what constitutes data, and what constitutes metadata, so the data model does not match reality or requirements, and from a security
    standpoint that concerns me more than improved forensics.

    This is why people are working on incremental improvements. I think such improvements are more likely to get us closer to where we want to be than
    a boil-the-ocean approach that attempts wholesale change to how Debian
    works. It's easy to come up with new designs that in theory would be more coherent and straightforward, and very hard in practice to avoid that
    turning into <https://xkcd.com/927/>.

    One of the important properties of tag2upload is that it meets people
    where they are and tries to support their existing workflows while
    providing a more systematic source package construction algorithm.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Scott Kitterman on Thu Jun 13 18:20:02 2024
    Scott Kitterman writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    On June 13, 2024 3:02:48 PM UTC, Joerg Jaspert <[email protected]> wrote:
    I think this is a minor issue, actually. It does not happen often. For
    the time it will, we can have something like "ftpmaster pushes a list of >fingerprints via $mechanism" (ssh forced command is widely used for
    similar things, for example).

    That's really simple to implement.

    I agree that this isn't a major design issue, but I think it is something that I think needs to be addressed before deployment of tag2upload. The need is certainly rare, but when it's needed, it's needed because it's important.

    I agree. Also, I don't want to be developing a new shutoff mechanism
    during an emergency. Instead, I have filed #1073157.

    I think this should be addressed regardless of t2u, since it affects
    current dgit use too.

    Russ's suggested resolution is reasonble too, but I don't think it's
    sufficient because I want to prevent bad stuff appearing on
    *.dgit.do.o, not just in archive.d.o. Either or both of these
    approaches would work.

    It also suggests to me that it's premature to freeze and mandate the current design via GR.

    This is a minor detail, easily sorted out.

    I don't think passing this GR forbids us from updating the design to
    address points like this. I think it *does* forbid us from updating
    the design in ways that Russ and Noodles disapprove of. But that's
    surely right and proper.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Didier 'OdyX' Raboud@21:1/5 to All on Thu Jun 13 21:20:01 2024
    Le jeudi, 13 juin 2024, 08.23:45 h CEST Thomas Goirand a écrit :
    One thing I really dislike, is having a single gpg key to upoload them
    all. I very much preferred the design that Didier explained during
    Debconf Kosovo, where the .changes signature is uploaded together with
    the tagged commit.

    Thomas is referring to my very rough proof-of-concept with specially-crafted tags I had quickly presented at DebConf22: first lightning talk, video'ed here: https://debconf22.debconf.org/talks/41-lightning-talks/

    I had called this "dtag": the idea was to store an inline representation of the .dsc and .changes you would produce locally in `git notes` that get attached to git tags (to avoid storing very large amounts of signatures in a git tag); the uploader pushes the tag, and a job in Salsa CI (or whatever tool) then takes the tag, reconstructs the .dsc and .changes, and then (as they're validly signed), directly uploads them.

    Source is there:
    https://salsa.debian.org/odyx/dtag

    A "signing job" is there:
    https://salsa.debian.org/debian/libopenaptx/-/jobs/3020729

    I never progressed further than the hacked-around scripts I had done towards that lightning talk, mostly for these reasons:

    * it's fragile: it depends on bit-by-bit reproducibility of source _and_ changes files between what the uploader would do on their machine, and what the git tag notes processor does. As the dgit & tag2upload teams have demonstrated, there are _many ways_ this can (and will) break.
    * while I like the "only upload if the CI passes" feature, I'm not very happy with the fact that as uploader, I already granted the right to upload (as all the material to generate a signed source package is pushed) before the CI ran successfully: an evil bypasser could use my git tag+notes and upload anyway, as signed with my key. I don't think its unique to that implementation though: all signed processes around git tags have the same issue.
    * Debian has fallen behind in my priorities, so I'm uploading less, and polishing this has not been on my todo list.
    * generating the special git notes is bulky, and requires local software, that is not-pretty python3.

    By no means do I claim ownership of the idea or the design, or even on the proof-of-concept code; if that is seen as worthwhile, I'd be honoured to see anyone building on top of this idea, design, or code!

    --
    OdyX

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Gunnar Wolf@21:1/5 to All on Thu Jun 13 22:00:01 2024
    Sean Whitton dijo [Thu, Jun 13, 2024 at 05:42:25AM +0800]:
    Actually, we can set acls on fingerprints and then that key wont be able
    to upload anymore. That is not something recorded in the keyrings or the
    DM list. Obviously that is not something used often (really really
    seldom), it is more for "this key is compromised badly, please turn off anything with it *NOW*" situations, which it's what Helmut meant with the urgent cases.

    Could you say more specifically how seldom, and also how long it usually takes between you flicking the emergency switch, and the keyring team
    pushing an update?

    Quite hard to say.

    We have tried to cover differnt timezones between the (currently)
    three of us in keyring-maint, but it's not that uncommon we are all in
    North America. Sadly, it's not as common as I'd wish that we are all
    at DebConf.

    Usually, when we are notified of a compromised key (or keys that have
    to be urgently removed for urgent reasons), we act on it as soon as
    one of us can take it, and the keyring preparation + update + push
    process takes about one hour, tops. But there can be many reasons the
    three of us (keyring-maints) are unreachable for several hours.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Andreas Tille on Thu Jun 13 23:00:01 2024
    Andreas Tille <[email protected]> writes:

    From a user perspective some intermediate binary build wouldn't be more difficult, thought.

    It would be nice to not do this on the tag2upload server, though, to
    maintain some security separation.

    I think it's possible to avoid running arbitrary code from the package
    during a source package build because tag2upload doesn't need to run the
    clean step since it's starting from a fresh Git checkout (please check me
    on this). If I'm correct, it's much harder to attack the source package
    worker than it is to attack a buildd, which is arbitrary code execution
    from the package by design. You have to find an exploit in the source
    package construction code first.

    Yes, the binary build would be sandboxed, of course, but Linux sandboxing
    isn't perfect. I would feel more comfortable if binary builds were done somewhere without any access to the tag2upload signing key, even via a
    sandbox break.

    I may be over-solving this problem given that the same sandbox break
    attack could probably be turned into a persistent compromise of an amd64 buildd, which would be arguably worse than compromising the tag2upload
    server. But still, binary builds are inherently risky and the more
    sandboxing we can put around them, the better. Ideally we would run them
    in disposable VMs that we reset after each build.

    Given all of that, I think it would be more promising to look into a
    deeper integration with Salsa to check if the Salsa CI has succeeded, as discussed earlier in this thread. That would also match common upstream practice in Git-first development where the workflow for generating the
    release artifact depends on all of the tests passing through the normal CI mechanism.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andreas Tille@21:1/5 to All on Thu Jun 13 22:40:01 2024
    Hi Ian,

    Am Thu, Jun 13, 2024 at 12:47:35PM +0100 schrieb Ian Jackson:
    Andreas Tille writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    That means some package build process is done before the source
    package is forwarded to dak and sends some e-mail back?

    Only a source package build.

    Thank you for the clarification.

    I know we have this. My point is that tag2upload users might forget
    to use it before using tag2upload service. I simply want to make
    sure that tag2upload is not another way to upload anything that does
    not build on buildservices.

    I'm afriad that tag2upload is precisely another way to do that.

    That's because that's how uploading works now, and tag2upload is
    another way to make an upload. Uploads must be source-only nowadays
    (in most cases). So there is, by design, nothing in the existing
    setup that ensures that a maintainer built binaries.

    That's correct.

    (I get the
    feeling that you're not happy with this situation, but that's how
    Debian is now, and I think it's a jolly good thing.)

    I wanted to clarify whether this is the case. At least I would see the potential in tag2upload to do some intermediate step. I do not really
    know whether its worth burning lots of CPU cycles for an extra binary
    build since I trust my fellow developers to do what they are expected to
    do. However, there might be situations where people might make mistakes
    or really assume that something builds after a really slight, but
    breaking change.

    You might argue that tag2upload makes this worse because it makes it
    easier to perform uploads. It certainly *does* make it easier to
    perform uploads. That's a big part of the point.

    I perfectly understand this. If I would consider this bad or good I
    would have said so. I'm simply lacking experience who many broken
    source-only uploads are hitting dak and we will see whether this number
    might increase in case tag2upload might become established (which I
    hope).

    I think this can only be a *downside* if you think it is a good
    thing that uploading is difficult.

    From a user perspective some intermediate binary build wouldn't be more difficult, thought. I think we could make things more safe by the
    expense of extra power consumption and for large packages (which could
    be white-listed) extra delay. This is by no means any pro or con
    argument. Just wanted to throw in that idea for comments.

    Kind regards and thanks for all the effort in tag2upload
    Andreas.

    --
    https://fam-tille.de

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Simon McVittie on Fri Jun 14 03:10:01 2024
    Hello,

    On Thu 13 Jun 2024 at 04:13pm +01, Simon McVittie wrote:

    On Thu, 13 Jun 2024 at 15:08:15 +0100, Ian Jackson wrote:
    I think it is possible that there will be a handful of packages where
    things are significantly more awkward, which might not be able to
    adopt tag2upload.

    This would presumably be the same minority of packages where maintainers
    use a debian/-only workflow (even if they normally prefer to keep upstream source in git) and avoid dgit (even if they normally prefer to use it), because the upstream source is too bulky to be convenient to track in git? Such as the openarena-data family and other large game assets?

    Those packages are already exceptional and already need to be handled specially. They'd only be a problem if dgit and/or tag2upload became mandatory, which (as far as I understand it) is not the plan.

    Yup, those packages -- I myself always think of you and some of your
    packages when I think about this particular issue.

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon Richter@21:1/5 to Russ Allbery on Fri Jun 14 05:50:01 2024
    Hi,

    On 6/14/24 00:50, Russ Allbery wrote:

    We have several 90% solutions of mapping Debian packaging onto git, but
    all of these are incomplete and annoying to use because we disagree with
    git on what constitutes data, and what constitutes metadata, so the data
    model does not match reality or requirements, and from a security
    standpoint that concerns me more than improved forensics.

    This is why people are working on incremental improvements. I think such improvements are more likely to get us closer to where we want to be than
    a boil-the-ocean approach that attempts wholesale change to how Debian
    works. It's easy to come up with new designs that in theory would be more coherent and straightforward, and very hard in practice to avoid that
    turning into <https://xkcd.com/927/>.

    The reason we have multiple git workflows is because they are
    incremental designs that do not try to change the way Debian works, or
    the way git works.

    With the current Debian archive we have a well-defined (documented in
    Policy) interface for uploads, and the git workflows are implementation
    details that the archive need not be concerned with. This has allowed us
    to use git in the first place.

    By creating an upload service, we elevate git to "interface" status.
    That would be a good thing if there was a single interface. However, we
    have three (that I know of), none of these were designed to talk to
    anything but itself, and the service uses a heuristic to determine which
    one is used.

    At the very least, we need to make it explicit which repository layout
    is to be used, and version and document that interface, then support it
    for several years in the future even as we make incremental changes,
    because we want to be able to regenerate packages from the git archive.

    Tag2upload is an increment over an increment over something that was not designed as an interface, and while each increment is technically sound,
    the overall design needs to be revisited because it needs to support all
    these incremental changes.

    I think that with existing git it is difficult to represent the history
    of packages well, because we need to record a history of what are
    effectively rebases, and representing them as a merge paints a wrong
    picture for git, because it assumes that everything upstream of a merge
    is already accounted for.

    One _incremental_ change I'd like to see would be archive support for .orig.bundle.* (containing a shallow copy of the upstream commit) and .debian.bundle.* (containing the differences between the upstream commit
    and the package), which would be an absolute game changer for git
    integration, the archive side would probably be fairly simple to
    implement, and it would allow us to ship the "preferred form for
    modification" for a lot of projects more easily.

    Mirrors would still get a size-minimal representation, this format does
    not impose a particular workflow and can be easily generated from and
    validated against the full tree.

    Simon

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andreas Tille@21:1/5 to All on Fri Jun 14 06:50:01 2024
    Hi Russ,

    Am Thu, Jun 13, 2024 at 01:54:16PM -0700 schrieb Russ Allbery:

    It would be nice to not do this on the tag2upload server, though, to
    maintain some security separation.

    ACK.

    Given all of that, I think it would be more promising to look into a
    deeper integration with Salsa to check if the Salsa CI has succeeded, as discussed earlier in this thread. That would also match common upstream practice in Git-first development where the workflow for generating the release artifact depends on all of the tests passing through the normal CI mechanism.

    As I said I did not read this thread in total (neither will I manage to
    do so soon) but I would really welcome Salsa CI integration into
    tag2upload. It sounds perfectly sensible to me in many ways.

    Kind regards
    Andreas.

    --
    https://fam-tille.de

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to All on Fri Jun 14 06:40:01 2024
    On 6/14/24 00:50, Russ Allbery wrote:

    This is why people are working on incremental improvements. I think
    such improvements are more likely to get us closer to where we want to
    be than a boil-the-ocean approach that attempts wholesale change to how
    Debian works. It's easy to come up with new designs that in theory
    would be more coherent and straightforward, and very hard in practice
    to avoid that turning into <https://xkcd.com/927/>.

    The reason we have multiple git workflows is because they are
    incremental designs that do not try to change the way Debian works, or
    the way git works.

    That may be a reason, but I think the primary reason why we have multiple
    Git workflows is because we have a lot of contributors, and many of us
    have strong opinions about how things should work and don't agree with
    each other. For example, in this thread you have named as problems some aspects of our current Git packaging workflows that I quite like and would
    be annoyed to lose.

    Anyway, most of your comments seem to be orthogonal to this proposal and
    are about other things that you want Debian to explore. Debian is a
    volunteer, self-driven project, and I hope no one is stopping from you exploring those ideas whenever you have a chance. I'm certainly open to evaluating a design for a more radical change, particularly if there's a
    clear transition plan. In the meantime, we should not stop incrementally improving the infrastructure we have today.

    At the very least, we need to make it explicit which repository layout
    is to be used, and version and document that interface, then support it
    for several years in the future even as we make incremental changes,
    because we want to be able to regenerate packages from the git archive.

    I believe that dgit-repos already stores a standardized Git representation
    of a source package. This partly addresses your point here, I think.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon Josefsson@21:1/5 to Simon Richter on Fri Jun 14 09:20:01 2024
    Simon Richter <[email protected]> writes:

    One _incremental_ change I'd like to see would be archive support for .orig.bundle.* (containing a shallow copy of the upstream commit) and .debian.bundle.* (containing the differences between the upstream
    commit and the package), which would be an absolute game changer for
    git integration, the archive side would probably be fairly simple to implement, and it would allow us to ship the "preferred form for modification" for a lot of projects more easily.

    Mirrors would still get a size-minimal representation, this format
    does not impose a particular workflow and can be easily generated from
    and validated against the full tree.

    This is an interesting idea!

    I think one fundamental aspect that lead to tag2upload is that some
    upstream's are moving away from tarballs and towards having the git
    repository to be the preferred form of publishing and using a project.

    What you suggest enables Debian to support this new way of publishing
    projects natively, instead of adding tag2upload as a intermediary to
    work around how upstream work with releases.

    There are some problems though:

    1) I don't think a shallow copy will work generally. Instead you want
    to upload the entire upstream git repository as a bundle. There are
    several reasons for this, but two simple examples: 1)
    gitlog-to-changelog or git2cl needs the entire git repository to produce
    its outputs, and some packages ship this output in the Debian binary
    package. 2) scripts like git-version-gen that uses 'git describe' plus
    some additional magic to determine the version number, and it may fail
    to understand which version it is when parts of the git history is
    missing.

    2) git bundles [built from a git clone of a remote repository] are not guaranteed to be reproducible, so with this approach there is no
    canonical bit-by-bit identical data stream that corresponds to what
    upstream intended to be released. This makes it hard to attach any cryptographic signature in a meaningful way.

    I think this idea has potential, and these two concerns should not be showstoppers. It is orthogonal to tag2upload though, and I don't think exploring the *.orig.bundle.* approach should block tag2upload.

    /Simon

    --=-=-Content-Type: application/pgp-signature; name="signature.asc"

    -----BEGIN PGP SIGNATURE-----

    iIoEARYIADIWIQSjzJyHC50xCrrUzy9RcisI/kdFogUCZmvteBQcc2ltb25Aam9z ZWZzc29uLm9yZwAKCRBRcisI/kdFojj2AQDYNUTGgHbuQnVxxbHVZLlRnPxNZB8W zRffB65A+9Dc/wEAtNLatoekEOIms5zmMbyYV8CRATR3yo4RwOvhmfSLDgE=i1p0
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon McVittie@21:1/5 to Gerardo Ballabio on Fri Jun 14 11:50:01 2024
    On Fri, 14 Jun 2024 at 08:52:38 +0200, Gerardo Ballabio wrote:
    As I understand, the proper way to resolve disagreement over technical
    issues is to bring the matter to the Technical Committee. Why are you proposing a GR instead?

    The TC can overrule individual developers (�6.1.4 in the Debian
    constitution), but it can't overrule a position delegated by the DPL,
    and the ftp team is such a position. We have had situations in the past
    where an issue involving the ftp team was brought to the TC, and the
    most we could do abotu it was to "offer advice" (agree among ourselves
    on a non-binding opinion, �6.1.5) and hope that the ftp team might
    reconsider their decisions on the basis of that advice.

    To the best of my understanding, the only mechanism the project has for overruling a DPL delegate is a GR.

    smcv
    (former TC member)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon McVittie@21:1/5 to Simon Josefsson on Fri Jun 14 11:40:01 2024
    On Fri, 14 Jun 2024 at 09:12:56 +0200, Simon Josefsson wrote:
    I don't think a shallow copy will work generally. Instead you want
    to upload the entire upstream git repository as a bundle.

    I believe this has been specifically ruled out by the ftp team in the past.

    With a tarball or a shallow bundle, the maintainer and the ftp team are
    "only" responsible for ensuring and verifying that everything in the
    current state of the tree is Free according to the DFSG (which is already
    a significant task, but we usually manage to achieve it). If the upstream project contains non-Free content, the maintainer can simply delete it
    and repack the tarball (or export a new shallow bundle, in git world)
    and the ftp team will be happy with that.

    With the whole git history as a bundle, and our current policies around Freeness, the maintainer and the ftp team would be responsible for
    ensuring and verifying that every past commit reachable from the bundle
    is *also* Free, which is a much, much larger task - and every time some
    past commit contained non-Free content, the maintainer would have to
    amend that commit to remove it, and then rebase the rest of the history
    from that point onward (including merges!) onto the amended commit.

    I don't think shipping full history in the archive would be feasible
    unless we were willing to (do a GR to) relax our policies on the handling
    of non-Free content in packages' history.

    Having full history would also make it harder to detect and remove non-distributable (e.g. copyright-infringing) content, in the rarer cases
    where that gets into a project.

    smcv

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Thomas Goirand on Fri Jun 14 12:10:01 2024
    Hello zigo,

    On Fri 14 Jun 2024 at 11:39am +02, Thomas Goirand wrote:

    Please read his lightning talk "debconf22-94-lightning-talks.webm". Here's the
    first to talk in the video:

    https://meetings-archive.debian.net/pub/debian-meetings/2022/DebConf22/

    What I found super nice with his design is that:
    * there's no need to modify anything on the Debian infrastructure
    * there's no need for a GR or a change of any Debian current policy.

    The work has already been done to prepare the additional infrastructure
    (note that there is no need to *modify* any existing infrastructure),
    and to prepare this GR.
    We are enthusiastic to complete the remaining work. The mere fact that
    change is required shouldn't hold us back from going for what we think
    is the best solution, if there are people willing to implement it.

    * packages continue to be signed with your own DD key

    Why can't we move to this route, with standardized tooling?

    Well, to put it simply, because it's better to do things using only
    signed git tags than to do something highly Debian-specific.
    It is better if new contributors don't have to learn about source
    packages and dput at all. It is also much more convenient for existing contributors. Take a look at how git-debpush works -- it's really very
    simple and lightweight. I think you'll like it.

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Simon Richter on Fri Jun 14 13:10:01 2024
    Simon Richter writes ("Re: [RFC] General Resolution to deploy tag2upload [and 1 more messages]"):
    The reason we have multiple git workflows is because they are
    incremental designs that do not try to change the way Debian works, or
    the way git works.

    I don't think that's true. I think the fundamental reason is that
    there is no *really good* solution to the problem of maintaining a
    delta branch over a long period.

    There have been a number of attempts, and relevant tools, including
    things like topgit and stgit, as well as gbp pq, and of course my own git-debrebase. This is a hard problem which no-one has a good answer
    to. So in the absence of one good answer, people choose the bad
    answer they prefer.

    By creating an upload service, we elevate git to "interface" status.
    That would be a good thing if there was a single interface. However, we
    have three (that I know of), none of these were designed to talk to
    anything but itself, and the service uses a heuristic to determine which
    one is used.

    By "git interface" I think you mean git branch and tree formats?
    If so, we have written them up, here:
    https://wiki.debian.org/GitPackagingSurvey

    At the very least, we need to make it explicit which repository layout
    is to be used, and version and document that interface, then support it
    for several years in the future even as we make incremental changes,
    because we want to be able to regenerate packages from the git archive.

    dgit has tackled this problem head-on. We have given names to these
    git formats, and can convert each of them to a canonical git form.

    We call this form the "dgit view". It has the maintainer history as
    ancestor, and is treesame to the results of `dpkg-source -x`
    (excpet that it doesn't have a `.pc` directory). It's what you get
    from `dgit clone`.

    So, yes, this is the hard part. But it is solved.
    tag2upload will reuse that functionality.

    (So, where that table has "not supported" for "dgit push quilt mode", tag2upload will not support it either.)

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Russ Allbery on Fri Jun 14 13:20:01 2024
    Russ Allbery writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    I think it's possible to avoid running arbitrary code from the package
    during a source package build because tag2upload doesn't need to run the clean step since it's starting from a fresh Git checkout (please check me
    on this).

    Yes, that is correct. (I should check that the current code doesn't unecessarily invoke the clean target, but I think it doesn't.)

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Simon McVittie on Fri Jun 14 13:30:01 2024
    Simon McVittie writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    The TC can overrule individual developers (�6.1.4 in the Debian constitution), but it can't overrule a position delegated by the DPL,
    and the ftp team is such a position. We have had situations in the past
    where an issue involving the ftp team was brought to the TC, and the
    most we could do abotu it was to "offer advice" (agree among ourselves
    on a non-binding opinion, �6.1.5) and hope that the ftp team might
    reconsider their decisions on the basis of that advice.

    This has been done before, in https://www.debian.org/vote/2007/vote_002.

    To the best of my understanding, the only mechanism the project has for overruling a DPL delegate is a GR.

    I'd like to point out that we have been very slow to reach for the GR
    hammer. This has been blocked since 2019. We've spent much of the
    intervening time quietly asking people for help behind the scenes,
    including speaking to several DPLs and other prominent members of the
    project, but sadly that has not been effective.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Sean Whitton on Fri Jun 14 15:10:01 2024
    Hi,

    On Thu, 2024-06-13 at 05:58 +0800, Sean Whitton wrote:
      tag2upload already supports most existing workflows (including the one
      you yourself prefer, where only debian/ is committed to git).

    How does this work? Does the builder run the `get-orig-source` target
    in debian/rules?

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to All on Fri Jun 14 16:00:01 2024
    Ansgar 🙀 writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    On Thu, 2024-06-13 at 05:58 +0800, Sean Whitton wrote:
      tag2upload already supports most existing workflows (including the one   you yourself prefer, where only debian/ is committed to git).

    How does this work? Does the builder run the `get-orig-source` target
    in debian/rules?

    No. The git commitid of the upstream source is named in the tag
    generated by git-debpush. (So that upstream git branch has to be in
    your git repo somewhere - just not in your branch.) The t2u server
    will use that (ultimately, via git-archive).

    If you want to use actual *tarballs* from upstream, then (as per the
    other subthread about pristine-tar): currently that's not implemented.
    But it could be, via pristine-tar. But it's true that tag2upload fits
    best into a fully-git-based workflow, where we base our work on just
    the upstream git and ignore any tarballs they may produce.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon Josefsson@21:1/5 to Ian Jackson on Fri Jun 14 17:10:01 2024
    Ian Jackson <[email protected]> writes:

    Ansgar 🙀 writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    On Thu, 2024-06-13 at 05:58 +0800, Sean Whitton wrote:
      tag2upload already supports most existing workflows (including the one >> >   you yourself prefer, where only debian/ is committed to git).

    How does this work? Does the builder run the `get-orig-source` target
    in debian/rules?

    No. The git commitid of the upstream source is named in the tag
    generated by git-debpush. (So that upstream git branch has to be in
    your git repo somewhere - just not in your branch.) The t2u server
    will use that (ultimately, via git-archive).

    How does t2u find out the URL to the upstream git repository? Is
    https:// enforced, or are http:// or git:// URLs supported? Is the
    upstream git branch recorded anywhere, or just the commit?

    Where is this documented? I feel I should have understood this already,
    but I have tried to read links posted so far...

    /Simon

    --=-=-Content-Type: application/pgp-signature; name="signature.asc"

    -----BEGIN PGP SIGNATURE-----

    iIoEARYIADIWIQSjzJyHC50xCrrUzy9RcisI/kdFogUCZmxcxRQcc2ltb25Aam9z ZWZzc29uLm9yZwAKCRBRcisI/kdFoqTEAP94qQR2eiGBehjTcmUuahExrutpI2S3 DrZjBXQ82HRA3gEAl0K/l3VMlJzwqsIiHytmrVl25LF18ott6huBuyqIfAM=QCVH
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Simon Josefsson on Fri Jun 14 18:10:01 2024
    Simon Josefsson <[email protected]> writes:
    Ian Jackson <[email protected]> writes:

    No. The git commitid of the upstream source is named in the tag
    generated by git-debpush. (So that upstream git branch has to be in
    your git repo somewhere - just not in your branch.) The t2u server
    will use that (ultimately, via git-archive).

    How does t2u find out the URL to the upstream git repository? Is
    https:// enforced, or are http:// or git:// URLs supported? Is the
    upstream git branch recorded anywhere, or just the commit?

    My understanding is that there is no separate upstream Git repository. I believe that's what Ian means by "the upstream Git branch has to be in
    your Git repo somewhere." In other words, you have to push upstream to
    your Salsa packaging repository to use tag2upload, but you don't have to
    merge it with your packaging branch.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sam Hartman@21:1/5 to All on Fri Jun 14 18:40:01 2024
    TL;DR: I think a GR is an appropriate tool for making this decision at
    this time. I disagree with Simon's characterization of the TC's powers
    and think it is valuable for us to think broadly about all the tools we
    have for making decisions, so I am responding here.

    "Simon" == Simon McVittie <[email protected]> writes:

    Simon> The TC can overrule individual developers (§6.1.4 in the
    Simon> Debian constitution), but it can't overrule a position
    Simon> delegated by the DPL, and the ftp team is such a position. We
    Simon> have had situations in the past where an issue involving the
    Simon> ftp team was brought to the TC, and the most we could do
    Simon> abotu it was to "offer advice" (agree among ourselves on a
    Simon> non-binding opinion, §6.1.5) and hope that the ftp team might
    Simon> reconsider their decisions on the basis of that advice.

    In the particular case involved, that might have been true, because it's
    not entirely clear that the matter is technical.

    however, the TC has another power: it can set technical policy under
    6.1.1.
    For example to the extent that the FTP team's concerns are related to
    security, the TC could adopt security standards for the Debian archive
    and tools that manipulate the archive/maintain the archive.

    The ftp team could ignore that too, but the ftp team could also ignore a
    GR, and I think the DPL would be well justified for removing a delegate
    either for ignoring an override in a GR or for failing to follow
    sensible policies adopted by the TC under 6.1.1.
    (the DPL cannot remove a delegate over a specific decision, but I think removing a delegate for being out of alignment with properly executed
    project decision making can be appropriate.)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon Josefsson@21:1/5 to Russ Allbery on Fri Jun 14 18:30:01 2024
    Russ Allbery <[email protected]> writes:

    Simon Josefsson <[email protected]> writes:
    Ian Jackson <[email protected]> writes:

    No. The git commitid of the upstream source is named in the tag
    generated by git-debpush. (So that upstream git branch has to be in
    your git repo somewhere - just not in your branch.) The t2u server
    will use that (ultimately, via git-archive).

    How does t2u find out the URL to the upstream git repository? Is
    https:// enforced, or are http:// or git:// URLs supported? Is the
    upstream git branch recorded anywhere, or just the commit?

    My understanding is that there is no separate upstream Git repository. I believe that's what Ian means by "the upstream Git branch has to be in
    your Git repo somewhere." In other words, you have to push upstream to
    your Salsa packaging repository to use tag2upload, but you don't have to merge it with your packaging branch.

    Oh. That doesn't rime well with some people's git workflow, but that is consistent with the t2u approach serving a subset of all package
    maintainers. This is the most relevant documentation that I can find:

    https://salsa.debian.org/dgit-team/dgit/-/blob/dc9f26a84d34ffc4438252e7caf3bde24090e4ed/tag2upload.5.pod#L108

    /Simon

    -----BEGIN PGP SIGNATURE-----

    iIoEARYIADIWIQSjzJyHC50xCrrUzy9RcisI/kdFogUCZmxuixQcc2ltb25Aam9z ZWZzc29uLm9yZwAKCRBRcisI/kdFotWcAQDGoP5Y3P8IfO57+lvEcETSewsCMauF h/taynYo71dO9wEA2vimvYjmTrg+m6cMzCJEXoFBgJ2ksRMMxHd8o2VaVgs=
    =lspF
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Sam Hartman on Fri Jun 14 19:00:01 2024
    Sam Hartman <[email protected]> writes:

    The ftp team could ignore that too, but the ftp team could also ignore a
    GR, and I think the DPL would be well justified for removing a delegate either for ignoring an override in a GR or for failing to follow
    sensible policies adopted by the TC under 6.1.1.

    One tiny quibble: I think section 4.1.3 of the constitution is very clear
    that no, a project delegate cannot ignore a GR without ignoring the constitution entirely, in which case they could also ignore the DPL
    changing the delegation and we're in different uncharted territory. I
    think this is much more explicit than the implications of 6.1.1.

    (This is just constitutional geekery and I'm sure that it won't come up in
    this case.)

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Kitterman@21:1/5 to Sean Whitton on Fri Jun 14 20:10:03 2024
    On June 14, 2024 10:01:38 AM UTC, Sean Whitton <[email protected]> wrote:
    Hello zigo,

    On Fri 14 Jun 2024 at 11:39am +02, Thomas Goirand wrote:

    Please read his lightning talk "debconf22-94-lightning-talks.webm". Here's the
    first to talk in the video:

    https://meetings-archive.debian.net/pub/debian-meetings/2022/DebConf22/

    What I found super nice with his design is that:
    * there's no need to modify anything on the Debian infrastructure
    * there's no need for a GR or a change of any Debian current policy.

    The work has already been done to prepare the additional infrastructure
    (note that there is no need to *modify* any existing infrastructure),
    and to prepare this GR.
    We are enthusiastic to complete the remaining work. The mere fact that >change is required shouldn't hold us back from going for what we think
    is the best solution, if there are people willing to implement it.

    * packages continue to be signed with your own DD key

    Why can't we move to this route, with standardized tooling?

    Well, to put it simply, because it's better to do things using only
    signed git tags than to do something highly Debian-specific.
    It is better if new contributors don't have to learn about source
    packages and dput at all. It is also much more convenient for existing >contributors. Take a look at how git-debpush works -- it's really very >simple and lightweight. I think you'll like it.


    I'm a bit confused by the claim that no infrastructure changes are needed for this to go forward.

    If I have been following the proposal correctly, source packages will be signed by tag2upload and not the uploader. Doesn't that mean changes are going to be needed so that we know in the archive who uploaded the package?

    Scott K

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Kitterman@21:1/5 to Russ Allbery on Fri Jun 14 19:20:01 2024
    On June 13, 2024 3:29:21 PM UTC, Russ Allbery <[email protected]> wrote:
    Scott Kitterman <[email protected]> writes:

    I agree that this isn't a major design issue, but I think it is
    something that I think needs to be addressed before deployment of
    tag2upload. The need is certainly rare, but when it's needed, it's
    needed because it's important.

    I don't understand why this would be a blocker given that dak can redo the >authorization check at the same point that it does authorization checks
    now, should it so desire. This does require a small change to dak to >retrieve the key fingerprint from the source package in the case where the >source package is signed with the tag2upload key, but that doesn't seem
    too difficult.

    I think that if the proposers want to direct use of a specific design via GR, it ought to be complete. It's unclear to me how the FTP Masters could ask for this after the GR, since the GR takes anything to do with tag2upload out of their hands going
    forward. Post GR, it's not clear to me who gets to decide if changes are needed without another GR.

    Scott K

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Scott Kitterman on Fri Jun 14 20:50:02 2024
    Scott Kitterman <[email protected]> writes:
    On June 13, 2024 3:29:21 PM UTC, Russ Allbery <[email protected]> wrote:

    I don't understand why this would be a blocker given that dak can redo
    the authorization check at the same point that it does authorization
    checks now, should it so desire. This does require a small change to
    dak to retrieve the key fingerprint from the source package in the case
    where the source package is signed with the tag2upload key, but that
    doesn't seem too difficult.

    I think that if the proposers want to direct use of a specific design
    via GR, it ought to be complete.

    Sorry, I don't understand. What isn't complete? I just explained how dak could continue to enforce all the same authorization checks as it does
    today. This is part of the design as proposed. The key fingerprint of
    the original tag signer is present in the Git-Tag-Info header in the *.dsc
    file as uploaded to dak.

    It's unclear to me how the FTP Masters could ask for this after the GR,
    since the GR takes anything to do with tag2upload out of their hands
    going forward.

    I don't believe this is a correct interpretation of how GRs that override
    a delegate decision are applied in Debian.

    For one, absolutely nothing about a GR or any other action in Debian
    constrains what FTP Masters can *ask* for. Surely that's obvious. It
    would only constrain what FTP Masters can *demand*. One would hope that,
    in the presence of new guidance from the project as a whole about the
    technical direction, FTP Masters and the tag2upload developers would work collaboratively together to improve the entire architecture. Nothing in
    the GR prevents that; that's never been how we interpret GRs.

    Second, the specific thing that the GR requires of FTP Master is that tag2upload be allowed to upload source packages signed with its key,
    following the architecture spelled out here. That architecture includes providing dak, and everyone else looking at the *.dsc file, with the fingerprint of the original tag signer. It does not preclude dak from performing the normal authorization checks for uploads to the archive,
    only from rejecting packages because they are uploaded through tag2upload.

    Post GR, it's not clear to me who gets to decide if changes are needed without another GR.

    This was much-discussed after both
    https://www.debian.org/vote/2007/vote_002 and https://www.debian.org/vote/2007/vote_003. Kurt is authoritative on this point, I think, since it's a question of constitutional interpretation,
    but my understanding of the project consensus is that a GR is not forever-binding. We all understand that circumstances change in the
    future and we do not need to strictly follow the exact text of a GR into
    the indefinite future. It's not a law. The exact time frame is not
    defined anywhere, but I would think of it as a sort of "slow decay" where,
    over time, the GR should be seen as a directional statement but the exact architecture should and will change based on new requirements, new issues,
    and more experience.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Kitterman@21:1/5 to All on Fri Jun 14 15:52:44 2024
    On Friday, June 14, 2024 2:45:55 PM EDT Russ Allbery wrote:
    Scott Kitterman <[email protected]> writes:
    On June 13, 2024 3:29:21 PM UTC, Russ Allbery <[email protected]> wrote:
    I don't understand why this would be a blocker given that dak can redo
    the authorization check at the same point that it does authorization
    checks now, should it so desire. This does require a small change to
    dak to retrieve the key fingerprint from the source package in the case
    where the source package is signed with the tag2upload key, but that
    doesn't seem too difficult.

    I think that if the proposers want to direct use of a specific design
    via GR, it ought to be complete.

    Sorry, I don't understand. What isn't complete? I just explained how dak could continue to enforce all the same authorization checks as it does
    today. This is part of the design as proposed. The key fingerprint of
    the original tag signer is present in the Git-Tag-Info header in the *.dsc file as uploaded to dak.

    Can, but doesn't currently. Elsewhere it has been claimed that tag2upload can be implemented with no changes elsewhere and I think that's just not true.

    It's unclear to me how the FTP Masters could ask for this after the GR, since the GR takes anything to do with tag2upload out of their hands
    going forward.

    I don't believe this is a correct interpretation of how GRs that override
    a delegate decision are applied in Debian.

    For one, absolutely nothing about a GR or any other action in Debian constrains what FTP Masters can *ask* for. Surely that's obvious. It
    would only constrain what FTP Masters can *demand*. One would hope that,
    in the presence of new guidance from the project as a whole about the technical direction, FTP Masters and the tag2upload developers would work collaboratively together to improve the entire architecture. Nothing in
    the GR prevents that; that's never been how we interpret GRs.

    Second, the specific thing that the GR requires of FTP Master is that tag2upload be allowed to upload source packages signed with its key, following the architecture spelled out here. That architecture includes providing dak, and everyone else looking at the *.dsc file, with the fingerprint of the original tag signer. It does not preclude dak from performing the normal authorization checks for uploads to the archive,
    only from rejecting packages because they are uploaded through tag2upload.

    Which means that in the future, the tag2upload developers can make whatever changes they want and the FTP team is required to accept them?

    Post GR, it's not clear to me who gets to decide if changes are needed without another GR.

    This was much-discussed after both
    https://www.debian.org/vote/2007/vote_002 and https://www.debian.org/vote/2007/vote_003. Kurt is authoritative on this point, I think, since it's a question of constitutional interpretation,
    but my understanding of the project consensus is that a GR is not forever-binding. We all understand that circumstances change in the
    future and we do not need to strictly follow the exact text of a GR into
    the indefinite future. It's not a law. The exact time frame is not
    defined anywhere, but I would think of it as a sort of "slow decay" where, over time, the GR should be seen as a directional statement but the exact architecture should and will change based on new requirements, new issues, and more experience.

    Thanks. That's slightly before my time, so I didn't know about it. I think
    it makes sense.

    I'm still concerned about how this is going to work in practice. the tag2upload developers seem to be very confident that they have a good design that is ready to be deployed and once the FTP Masters are overridden on this, until such time as this natural decay runs, there's no incentive for them to cooperate.

    Is anyone volunteering to do the DAK changes to use Git-Tag-Info header to get the signature if the source package is signed by a tag2upload key?

    It doesn't feel like this is complete enough to tie the FTP Team's hands over it. I have some questions about the security review, which I will ask in that thread, so I won't go into those here.

    Scott K
    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEE53Kb/76FQA/u7iOxeNfe+5rVmvEFAmZsn4wACgkQeNfe+5rV mvGpCQ//eVl9IPw38AbhieDeZCYaHwh3zT1lhBvxKeT8+vByB5m9XaycN/EU7ArD ubZl2H0sGhccAgahPP/aHV7vsd4lAkRdIsIE190uxKk47DZ15l96pWRZNsGl0wYk Jmw6poXu0YkhW58yCGSo7ktxVPSA6qmug3WEMHE5+caZUzY07Ndb42Qrp0CSilMl 037YEibuigCO75tGgv7lFys9NpAZzpX6LVPKEs/NuhCMWZZCwjV7HmgRKwIo6194 FXRCrxp2W5Z47/s8CXi0baQIArS2Kb0VkUC0sa+vCl1vLUKCWrz5VyVazkzM7Utz j+ZdUWrZtQ92OYuR3mWopLXAJbOpXUtEGOd/A2Vx3fWuFkcRLe4NcHvHsEeU+w4Y usN3c6pf3zC3kM+geLJeGF3V5BSIo4nLbUku1UR+lB+jcY4rh9sioowiQvzdJZO/ ZrfWeII4rVbHxz+yBgMLWLKzIt+80mSt7Up8PJcSh1dibc805LPtUQsFnfWnJVra ly0KsWTNaYWVGoLZ9xoOEh98eO/BbSTqup3nNK3u2uLab5K3xBG+z0xH1NQvl/HZ 9SOZ8sE0E6c33wpXEMu41uUBQToTLpqPmFLRMveixn6WVpF2BBtacYnqo+4kCyrd pB1z69UyRIFR8f0boKQxkVN9iJbzXeLNwr0swTVmLky4X7lRdyA=
    =CPV0
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Russ Allbery on Fri Jun 14 22:40:01 2024
    Hi,

    On Fri, 2024-06-14 at 11:45 -0700, Russ Allbery wrote:
    Scott Kitterman <[email protected]> writes:
    On June 13, 2024 3:29:21 PM UTC, Russ Allbery <[email protected]> wrote:

    I don't understand why this would be a blocker given that dak can redo the authorization check at the same point that it does authorization checks now, should it so desire.  This does require a small change to dak to retrieve the key fingerprint from the source package in the case where the source package is signed with the tag2upload key, but that doesn't seem too difficult.

    I think that if the proposers want to direct use of a specific design
    via GR, it ought to be complete.

    Sorry, I don't understand.  What isn't complete?  I just explained how dak could continue to enforce all the same authorization checks as it does today.  This is part of the design as proposed.  The key fingerprint of
    the original tag signer is present in the Git-Tag-Info header in the *.dsc file as uploaded to dak.

    This would require the check to be implemented correctly in tag2upload. Otherwise whatever check dak performs is fairly useless.

    The design says "blindly trust whatever tag2upload might believe" which
    I don't think is nice given what it believes. Sadly tag2upload upsteam
    is uncompromising to suggestions to change this, hence this GR
    proposal.

    (And given upstream's hard policy to not merge changes not signing off
    extra legal stuff, I sadly cannot give a more detailed bug report as
    any fix created as a derived work from that would be unmergable unless
    there was a Debian fork of the project with a different policy.)

    We would also have a new critical system written and maintained by 1.2
    people in a fairly old-style Perl dialect that have previously not kept
    up with promises to maintain software stacks (e.g., systemd-shim which
    then had to be replaced by other people with something else).

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Scott Kitterman on Fri Jun 14 23:10:01 2024
    Scott Kitterman <[email protected]> writes:
    On Friday, June 14, 2024 2:45:55 PM EDT Russ Allbery wrote:

    Sorry, I don't understand. What isn't complete? I just explained how
    dak could continue to enforce all the same authorization checks as it
    does today. This is part of the design as proposed. The key
    fingerprint of the original tag signer is present in the Git-Tag-Info
    header in the *.dsc file as uploaded to dak.

    Can, but doesn't currently. Elsewhere it has been claimed that
    tag2upload can be implemented with no changes elsewhere and I think
    that's just not true.

    tag2upload performs the same permission checks that dak does, modulo the emergency edge case that Joerg mentioned as an aside, that I'm not sure
    many people previously knew existed, and that Ian is currently chasing
    down in a separate bug so that parity of checks can be restored. That's
    the sense in which it can be implemented with no changes elsewhere.

    If I were maintaining dak, I personally would extract the tag fingerprint
    and redo the permission check for tag2upload uploads because I personally prefer an authorization model where checks all happen in one place, even
    if some of them are redundant. But this isn't a technical requirement,
    only a robustness property.

    In general, there are always going to be new cases that have to be taken
    into account. No design can ever anticipate everything. For example, I
    don't know how many people knew about the emergency ACL mechanism that
    Joerg mentioned before this thread; I certainly didn't, and I don't
    believe any of the tag2upload developers did. I'm sure something else
    like that will come up after the GR, and we'll handle it like reasonable
    adults who are collaborating together on a project.

    However, in this case, this concern was anticipated and is already covered
    in the tag2upload design as proposed.

    Which means that in the future, the tag2upload developers can make
    whatever changes they want and the FTP team is required to accept them?

    One part of the answer to that question is no, the GR specifies a design,
    and the FTP team can assume that tag2upload follows that design.

    But another part of the answer is that you seem to be anticipating a level
    of animosity and bad faith that I find rather disturbing. If, in the
    future, the FTP team starts rejecting every package I upload because they
    don't like me personally, am I required to accept that because they are
    project delegates who have the delegated power to decide what packages may
    be uploaded? No, of course not; we have all sorts of informal and formal mechanisms to handle disputes. But also, no one on the FTP team would
    ever do such a thing.

    The tag2upload developers have been working on this system for many years
    now. Deployment has been blocked by an FTP team decision. At this point,
    the tag2upload developers are quite understandably not willing to do more
    work unless their work can actually be used by the project. The design
    has gone through multiple iterative improvements, and while it can always
    be better, at some point we need to make a decision about whether we're
    going to ask them to abandon it or let them deploy it. The decision of
    the FTP team appears to be that they should abandon it. The tag2upload developers are proposing to appeal that decision to the project as a
    whole.

    Deciding to deploy the service does not mean freezing the whole thing
    as-is forever. It's inevitable that new issues will arise once the
    service is running, and those will need to be addressed. It does mean extending trust to the tag2upload developers to manage their portion of
    the service, similar to how we trust the FTP team to manage dak. That
    trust includes expecting them to respond reasonably to concerns and
    problems as they arise.

    There is no need for this to be personal or hostile. I'm also a project delegate in another area, and I consider it part of the role of a project delegate to accept guidance from the project. I will make mistakes. I
    will also make decisions that I don't think are mistakes but that don't
    match what the project wants. The project gets to decide via GR if I'm
    wrong. That's part of the bargain I accepted when I joined the project.
    If they so decide, it's my responsibility to go along with that decision
    in good faith and with good will, or to decide that I no longer want to do
    the delegated work.

    The point of the GR is to provide clear guidance from the project: either deploy this thing so that we can see how it works and further improve it,
    or abandon the idea. We need to get some closure on this; talking about
    it forever while blocking forward progress creates animosity and
    frustration. Once the project provides that closure, I would expect
    everyone involved to reorient around the guidance that the project has
    provided and work collaboratively together on Debian, just like we all try
    to do in every other area.

    I'm still concerned about how this is going to work in practice. the tag2upload developers seem to be very confident that they have a good
    design that is ready to be deployed and once the FTP Masters are
    overridden on this, until such time as this natural decay runs, there's
    no incentive for them to cooperate.

    There is the same incentive as there is for anyone working on Debian to cooperate with other people working on Debian: we're all on the same side, trying to do something hard together, and part of that is remaining open
    to good ideas and good-faith criticism from our collaborators.

    Working on Debian should not be an exercise in hostile brinkmanship and rules-lawyering. The point of the GR is to resolve a fundamental point of disagreement following our documented constitutional process for doing so.
    That does not require turning off our brains or abandoning normal
    principles of collaborative development.

    Is anyone volunteering to do the DAK changes to use Git-Tag-Info header
    to get the signature if the source package is signed by a tag2upload
    key?

    If this is actually the blocker for you in voting for this proposal, point
    me at the current dak source repository and I will look at implementing
    this. I have not worked on dak before and will have to make some
    assumptions (most notably about how dak will be configured with the
    tag2upload key fingerprints), so you may need to tweak whatever I come up
    with.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to [email protected] on Fri Jun 14 23:30:01 2024
    Ansgar 🙀 <[email protected]> writes:
    On Fri, 2024-06-14 at 11:45 -0700, Russ Allbery wrote:

    Sorry, I don't understand.  What isn't complete?  I just explained how
    dak could continue to enforce all the same authorization checks as it
    does today.  This is part of the design as proposed.  The key
    fingerprint of the original tag signer is present in the Git-Tag-Info
    header in the *.dsc file as uploaded to dak.

    This would require the check to be implemented correctly in tag2upload. Otherwise whatever check dak performs is fairly useless.

    It requires that the signature on the Git tag be correctly checked and
    that fingerprint be put into the *.dsc file, yes.

    It doesn't require that dak then also trust the authorization checks.

    We would also have a new critical system written and maintained by 1.2
    people in a fairly old-style Perl dialect that have previously not kept
    up with promises to maintain software stacks (e.g., systemd-shim which
    then had to be replaced by other people with something else).

    Yes, the tag2upload developers implemented the service the way that they implemented it, and the proposed GR would say that they can deploy that implementation. Asking them to redo that work in a different programming language or with a substantially different architecture before it can be deployed is not, at this point, a reasonable request, even apart from the general principle that Debian is a volunteer project and no one is
    required to do work.

    I think that some of the posts on this thread are exactly backwards in
    their understanding of human motivation. Blocking someone's work from
    being used until it's done the way that you would have done it yourself is
    not motivating, it's horribly demotivating. Seeing your work deployed
    live and actively used by Debian does not eliminate the motivation to make
    any further changes; rather, it increases the willingness to do further
    work drastically.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Russ Allbery on Fri Jun 14 23:40:02 2024
    Hi,

    On Fri, 2024-06-14 at 14:25 -0700, Russ Allbery wrote:
    I think that some of the posts on this thread are exactly backwards in
    their understanding of human motivation.  Blocking someone's work from
    being used until it's done the way that you would have done it yourself is not motivating, it's horribly demotivating.  Seeing your work deployed
    live and actively used by Debian does not eliminate the motivation to make any further changes; rather, it increases the willingness to do further
    work drastically.

    Okay, so we have to accept a path into the archive that is known to
    accept malicious uploads that would have been rejected by dak so maybe
    that path will be changed later? I don't see that happening given all suggestions to change this have been rejected, even when fairly simple
    to implement.

    I find that demotivating.

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to [email protected] on Fri Jun 14 23:50:01 2024
    Ansgar 🙀 <[email protected]> writes:

    Okay, so we have to accept a path into the archive that is known to
    accept malicious uploads that would have been rejected by dak so maybe
    that path will be changed later? I don't see that happening given all suggestions to change this have been rejected, even when fairly simple
    to implement.

    This is not known. You have asserted this, and then come up with
    increasingly implausible excuses for why you cannot clearly explain wtf
    you are talking about.

    It's entirely possible that there are security bugs in the current
    tag2upload implementation, just like it's entirely possible that there are security bugs in dak and in any other piece of software. The way we deal
    with those, now and in the future, is that someone explains what the
    security bug is and then we see if we can fix it.

    Given the number of factual errors in your previous posts to this thread
    and your refusal to provide any detail about the security vulnerabilities
    that you believe exist, I simply do not trust that your assertions are
    true without something concrete that I can understand. If you want me to
    take your assertions seriously, you're going to have to show your work.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joerg Jaspert@21:1/5 to Russ Allbery on Sat Jun 15 00:00:01 2024
    On 17260 March 1977, Russ Allbery wrote:

    My understanding is that there is no separate upstream Git repository.
    I
    believe that's what Ian means by "the upstream Git branch has to be in
    your Git repo somewhere." In other words, you have to push upstream
    to
    your Salsa packaging repository to use tag2upload, but you don't have
    to
    merge it with your packaging branch.

    Curiosity: Do we have any numbers how many packages on Salsa are
    maintained with the full upstream git mirrored to salsa vs how many only
    have debian/ there, and get the upstream source using other ways during
    build? Or in other words: How much more source size will this put onto
    Salsa, when everyone goes to have full source in their git?

    Just curious, and not sure its easy to get those numbers.

    --
    bye, Joerg

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Kitterman@21:1/5 to All on Fri Jun 14 17:49:56 2024
    On Friday, June 14, 2024 5:25:33 PM EDT Russ Allbery wrote:
    Ansgar 🙀 <[email protected]> writes:
    On Fri, 2024-06-14 at 11:45 -0700, Russ Allbery wrote:
    Sorry, I don't understand. What isn't complete? I just explained how
    dak could continue to enforce all the same authorization checks as it
    does today. This is part of the design as proposed. The key
    fingerprint of the original tag signer is present in the Git-Tag-Info
    header in the *.dsc file as uploaded to dak.

    This would require the check to be implemented correctly in tag2upload. Otherwise whatever check dak performs is fairly useless.

    It requires that the signature on the Git tag be correctly checked and
    that fingerprint be put into the *.dsc file, yes.

    It doesn't require that dak then also trust the authorization checks.

    Yes. It does. Since DAK has no way to check the signature of the tag against the keyring, it has to trust the source package signature done by tag2upload. The only two choices are blindly trust tag2upload is correct or don't accept uploads from tag2upload.

    We would also have a new critical system written and maintained by 1.2 people in a fairly old-style Perl dialect that have previously not kept
    up with promises to maintain software stacks (e.g., systemd-shim which
    then had to be replaced by other people with something else).

    Yes, the tag2upload developers implemented the service the way that they implemented it, and the proposed GR would say that they can deploy that implementation. Asking them to redo that work in a different programming language or with a substantially different architecture before it can be deployed is not, at this point, a reasonable request, even apart from the general principle that Debian is a volunteer project and no one is
    required to do work.

    I think that some of the posts on this thread are exactly backwards in
    their understanding of human motivation. Blocking someone's work from
    being used until it's done the way that you would have done it yourself is not motivating, it's horribly demotivating. Seeing your work deployed
    live and actively used by Debian does not eliminate the motivation to make any further changes; rather, it increases the willingness to do further
    work drastically.

    My impression (and I may be wrong, because it was awhile ago and since I'm not an FTP Master I wasn't super focused on it) is that the fundamental issue is tag2upload inherently requiring DAK to blindly accept anything tag2upload signs and the FTP delegates not being comfortable with that. I think that was clearly communicated and they didn't like that answer and here we are.

    That was the issue last time this was discussed (IIRC) and it doesn't appear that anything has changed. I don't see how it can with the current architecture.

    I suspect a vote of no confidence by the project in the FTP Masters would not be super motivating either.

    Scott K
    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEE53Kb/76FQA/u7iOxeNfe+5rVmvEFAmZsuwQACgkQeNfe+5rV mvFz7BAAtafwXMJ8ZK0BPqcMI+zYuB+dYSgTzhLGQGGnFYLYnhCHfw7Fxo+OzUPQ 3bs60audkvuy4FyTQFUDYQFfaKEhgLmqGgY116mOHRqIDH+nj6leDoDnamyiBQKz lOF0xhSf/cXQD0o+w3mMrar610QT+3RXxboBhdqf/zSQSNMSt9G9WZmkm00qb7ny KVYOtSfLdnV5BYpSP4glbQ9x+4NP62pc/V0sWL5ImcJD7GqWYWrGUa7YyzCYxrtN edd/P6quAF4Vr8CFVrn7vHhBbDipB0Nxp8iT+u3AGn/LKQiIFUiRLySh5Oa4xmMi xIQ+ufYyL7JA62R+g9I8/8RyC3EI6cqRWNvoJcuVbJCGkAzEUm2E/dNdog2G3mCn qrr/nCKOJP4HZMIwOW506NyBCVTcEHDO/ubCPUxQxmv0X3q1IRj6E7gTdxSjZvnH VuBBWd3qYaZMXOZa16c2ffR76hLbmnEZHIyQ5sSF4wtOF6T/7xM7y0/+LTQZ1Pc2 H8ny6N282nxsy3FvUddJq56U7WFIycWUkzQNNXPNOvDATMB4Kja3jIdlITecqEO7 qBcLj4FHrfEyGLPsptuFJXqMwWdsIhP1xkiHO/bUDwA/aLCnjgOFPUzsvHifipVQ F3jRugQDF5ryEuf2/jDFLRxD56HE8hk0CAtc4yRN6CIuCw6U4Ns=
    =j94W
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Scott Kitterman on Sat Jun 15 00:40:01 2024
    Scott Kitterman <[email protected]> writes:
    On Friday, June 14, 2024 5:25:33 PM EDT Russ Allbery wrote:

    It requires that the signature on the Git tag be correctly checked and
    that fingerprint be put into the *.dsc file, yes.

    It doesn't require that dak then also trust the authorization checks.

    Yes. It does. Since DAK has no way to check the signature of the tag against the keyring, it has to trust the source package signature done
    by tag2upload. The only two choices are blindly trust tag2upload is
    correct or don't accept uploads from tag2upload.

    That's exactly what I just said. It has to trust that tag2upload verified
    the signature on the Git tag correctly. It does not have to trust that tag2upload performed the authorization check correctly; it has the
    fingerprint and can redo that itself.

    It is entirely correct that deployment of tag2upload means that there are
    two separate systems performing the OpenPGP signature verification for
    upload, and dak has to trust tag2upload's performance of that
    verification. This is inherent in the design: dak and tag2upload are
    verifying signatures over different types of objects, and the verification
    of the tag signature is not useful without also performing the
    transformation to a source package. That is exactly what the whole
    tag2upload server is there to do.

    dak should not be doing the source package transformation, because that is
    a much more complicated process and therefore a larger security attack
    surface. That's why it's done in a sandbox with a bunch of privilege separation. That does indeed mean that dak has to trust the tag2upload verification of the original Git tag and its verification of the semantics
    of that Git tag, because that's part and parcel with the rest of the work
    that tag2upload is doing. The tag2upload developers believe that the
    schemes proposed for trying to make the original signature portable to the generated *.dsc file are too awkward and complex to be supportable, and personally I agree.

    But this is entirely separate from the *authorization* check. After
    tag2upload uploads the *.dsc and *.changes file to dak, dak is in
    possession of the key fingerprint of the original signer, the source
    package name, the suite, and so forth. It can redo the *authorization*
    check itself if it so chooses. The only thing it can't do is the *authentication* check.

    My impression (and I may be wrong, because it was awhile ago and since
    I'm not an FTP Master I wasn't super focused on it) is that the
    fundamental issue is tag2upload inherently requiring DAK to blindly
    accept anything tag2upload signs and the FTP delegates not being
    comfortable with that.

    Yes, I believe that's the core disagreement. I don't believe there is any
    way around that without breaking one or more design goals of tag2upload.

    It's not clear to me why it is considered a blocker for signature
    verification in the tag2upload case to be done by a different piece of
    software running on limited-access Debian project infrastructure instead
    of in dak, a piece of software running on limited-access Debian project infrastructure. But that's fine; it doesn't need to be clear to me. I
    believe it is in the remit of the FTP team delegation to make that
    decision, but there is also a constitutional process for appealing that decision to the project as a whole. The tag2upload developers have made
    their case, the FTP team can make their case for why they don't want to
    allow this, and the project can decide. That's how our system works.

    That was the issue last time this was discussed (IIRC) and it doesn't
    appear that anything has changed. I don't see how it can with the
    current architecture.

    I agree.

    I suspect a vote of no confidence by the project in the FTP Masters
    would not be super motivating either.

    I think interpreting this GR as a vote of no confidence by the project in
    the FTP Masters would be an extreme overreaction. The FTP Masters were overruled in https://www.debian.org/vote/2007/vote_002 and life went on.
    All of us are at odds with the general consensus of the project at one
    point or another. That's just part of working collaboratively with people
    who are not clones of us. Feedback from the project as a whole can be extremely helpful and constructive. There's no reason to take it
    personally. I have been overruled in my design decisions many times in my life, including by people who were and remain close friends.

    Just becuase I think the FTP team made the wrong decision in this
    particular case does not mean I have no confidence in their regular work.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Kitterman@21:1/5 to All on Fri Jun 14 19:43:38 2024
    On Friday, June 14, 2024 6:37:40 PM EDT Russ Allbery wrote:
    Scott Kitterman <[email protected]> writes:
    On Friday, June 14, 2024 5:25:33 PM EDT Russ Allbery wrote:
    It requires that the signature on the Git tag be correctly checked and
    that fingerprint be put into the *.dsc file, yes.

    It doesn't require that dak then also trust the authorization checks.

    Yes. It does. Since DAK has no way to check the signature of the tag against the keyring, it has to trust the source package signature done
    by tag2upload. The only two choices are blindly trust tag2upload is correct or don't accept uploads from tag2upload.

    That's exactly what I just said. It has to trust that tag2upload verified the signature on the Git tag correctly. It does not have to trust that tag2upload performed the authorization check correctly; it has the fingerprint and can redo that itself.

    It is entirely correct that deployment of tag2upload means that there are
    two separate systems performing the OpenPGP signature verification for upload, and dak has to trust tag2upload's performance of that
    verification. This is inherent in the design: dak and tag2upload are verifying signatures over different types of objects, and the verification
    of the tag signature is not useful without also performing the
    transformation to a source package. That is exactly what the whole tag2upload server is there to do.

    dak should not be doing the source package transformation, because that is
    a much more complicated process and therefore a larger security attack surface. That's why it's done in a sandbox with a bunch of privilege separation. That does indeed mean that dak has to trust the tag2upload verification of the original Git tag and its verification of the semantics
    of that Git tag, because that's part and parcel with the rest of the work that tag2upload is doing. The tag2upload developers believe that the
    schemes proposed for trying to make the original signature portable to the generated *.dsc file are too awkward and complex to be supportable, and personally I agree.

    But this is entirely separate from the *authorization* check. After tag2upload uploads the *.dsc and *.changes file to dak, dak is in
    possession of the key fingerprint of the original signer, the source
    package name, the suite, and so forth. It can redo the *authorization*
    check itself if it so chooses. The only thing it can't do is the *authentication* check.

    Maybe. Maybe this breaks the thing into two parts in a way it wasn't before
    If you verify the signature on the source package and the key is in the keyring, you know that the package was uploaded by someone authorized to do so and that the code you have is what they signed. With tag2upload you have neither. You have tag2upload's claim of who signed the tag and the source package constructed by tag2upload. The connection to what the uploader intended to upload is completely indirect.

    My impression (and I may be wrong, because it was awhile ago and since
    I'm not an FTP Master I wasn't super focused on it) is that the
    fundamental issue is tag2upload inherently requiring DAK to blindly
    accept anything tag2upload signs and the FTP delegates not being comfortable with that.

    Yes, I believe that's the core disagreement. I don't believe there is any way around that without breaking one or more design goals of tag2upload.

    I don't think there's any real mystery about this, but the claim in the draft GR was that there was an unwillingness to communicate. While there is a legitimate core to the draft GR, it feels to me like there's a lot of puffery around it that makes the whole endeavor seem questionable.

    It's not clear to me why it is considered a blocker for signature verification in the tag2upload case to be done by a different piece of software running on limited-access Debian project infrastructure instead
    of in dak, a piece of software running on limited-access Debian project infrastructure. But that's fine; it doesn't need to be clear to me. I believe it is in the remit of the FTP team delegation to make that
    decision, but there is also a constitutional process for appealing that decision to the project as a whole. The tag2upload developers have made their case, the FTP team can make their case for why they don't want to
    allow this, and the project can decide. That's how our system works.

    That was the issue last time this was discussed (IIRC) and it doesn't appear that anything has changed. I don't see how it can with the
    current architecture.

    I agree.

    I suspect a vote of no confidence by the project in the FTP Masters
    would not be super motivating either.

    I think interpreting this GR as a vote of no confidence by the project in
    the FTP Masters would be an extreme overreaction. The FTP Masters were overruled in https://www.debian.org/vote/2007/vote_002 and life went on.
    All of us are at odds with the general consensus of the project at one
    point or another. That's just part of working collaboratively with people who are not clones of us. Feedback from the project as a whole can be extremely helpful and constructive. There's no reason to take it
    personally. I have been overruled in my design decisions many times in my life, including by people who were and remain close friends.

    Just becuase I think the FTP team made the wrong decision in this
    particular case does not mean I have no confidence in their regular work.

    This is rather closer to the core to the FTP Master's delegated responsibilities in my judgement, so I'm not sure how comparable it is. I don't know, this is just speculation on my part. It may be fine. Some or all of them may be unwilling to continue to be responsible for managing the security of the archive once the security of the system has been (in what I believe to be their view) compromised.

    Scott K
    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEE53Kb/76FQA/u7iOxeNfe+5rVmvEFAmZs1aoACgkQeNfe+5rV mvGMaxAAvfWKwTls5SD3W45wtS2cKyx6pTHb4PmOWxNjhkfStu/0UuwOstfZw7Wi 3G5FRzuzoglsVn8M14cG/n0my8RQtpYj3U4jsyECwtoJkI1oWryZeSalB3CLXKBt 81OspPX/ngGYuulFI3aHbbJJECt+ryHTBjzTRUkc6YBfKKt2C1ER63xXnHGk/c6s TdHP3IXYApXCmigfnvw70aU3JTGL0innNwYlWTD+gG3aaTmc6UAA+EzzojhZlGFp /tHSdnZb4SBUm75X7V8vd3RHBouEoyG+iTnOtawVlPQ9g8uTHcqhy9lvRUUh9PyB 6ABdvkEurTw7OGsgjwbhE3Of1pafvKLJz2KKWAGV6NyUffEBOR70+9JafnF0h5Pq IYkLDZqp3tA+TYJUpU6bmi/nMlkdA0+wi17oZkEsZ0U0PZhOav9DLlkcNRT84k7t ++PXcjSE8KHeZZC4hGPZa7xBmW5PicE95N0+3DRX73MxtwfcyS9foYwgSVbosJs+ E8RDQ6fPDZfBS5VNxhIPAUKT+ji+MK8Ao3LXoXksZ4cfotHMNXBdGclKbQmjbsCm BcFx868Lcw4QpfkIAfycRmizEaBuK4G3ANM2Aj8yt3DKkDHlVaXVY9fwN72APnIw 1EtpyMS0xK7iaxIQ/VlCWOBGn2izD2hOUcamLDndBsuG4eTuyD0=
    =540P
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Thomas Goirand on Sat Jun 15 02:20:01 2024
    Hello,

    On Fri 14 Jun 2024 at 02:13pm +02, Thomas Goirand wrote:

    On 6/14/24 12:01, Sean Whitton wrote:
    Well, to put it simply, because it's better to do things using only
    signed git tags than to do something highly Debian-specific.

    In what ways aren't we discussing debian-specific things anyways? I don't understand this part. We we just type "push2upload" and it's doing some magic behind, what's the issue? Moving the magic inside the CI is even more hiding things than doing them in the local computer.

    My point is that it's not doing any magic. It's less than 500 lines of shell.

    It is better if new contributors don't have to learn about source
    packages and dput at all. It is also much more convenient for existing
    contributors. Take a look at how git-debpush works -- it's really very
    simple and lightweight. I think you'll like it.

    Here as well, I don't understand. If we have the necessary tools to do the way
    Didier did, why would a new contributor need to learn about dput? The CI would
    upload for them...

    If they are signing a .changes file with their own key then they are
    doing something Debian-specific.

    As for "learn about source packages", I'm not sure what their would be
    to learn, except having to configure a correct build environment. That
    indeed is an impressive amount of things to learn, but:

    1/ one has to learn how to build packages to be able to contribute

    Binary packages, yes.

    Source packages are truly a different beast. Binary packages are just
    like build artifacts for any project.

    --
    Sean Whitton

    --=-=-Content-Type: application/pgp-signature; name="signature.asc"

    -----BEGIN PGP SIGNATURE-----

    iQJNBAEBCgA3FiEEm5FwB64DDjbk/CSLaVt65L8GYkAFAmZs3QMZHHNwd2hpdHRv bkBzcHdoaXR0b24ubmFtZQAKCRBpW3rkvwZiQLlID/9m55HqZqoHzjEmeiNGdLGt I9tBksEyyryJZcqyQvcxcwScscys4G/sVa3UWXCXJqqd2oon6SVAv4X0MaLz6Z2u wpzI4chq+bec9uz8bh6JuqJc3BZAmzc55P8zih1TDrmfC1VRVk+mPd9RJ6lGMxkr KM2F0F20DGAzAmygX3Lg5o59DiwYwpmUGXApLhz05lWHOrtxnwB8BtxazEObJ8xp Vqz6iS/BaRJj6ziDt66hh4N87WRpRH+YJujEm0rTUfSGs/5IqBNpXD6UphoApgD1 jS8O98KqBoEKO7ZPjWbjVCWCsy+v4lSquvzGDBlWh1P8pYpdFxmF+wxglQLMEj8E xj6/S8eWXRxFgtewnj3MXo61+QU2aQdj9IwY0+b+oq+XfdfolQVjsXugC+VEcuGS 6sKqt5Z5CHWr8fyDpVoYzub5Z/1lsFKWBbcD6anODFTl9AVXno4lu9fWSgPPllyd 11imiDF0ZbIBc3lfGB9Ok6dyJC/czKSdHe17RilZjUCK0wM7U8ziZopLJwENWqsI 2bShua82GEy03/N+OuKeRxOmXVi582moAmRAIZTuNbiPQvYn3e6Pl9RXc26TTSmI UBphTsTTWk3T/k8IDQMM9Y0LrAT0MKaU1YgZ2cvKmegZei3Ul4lju+AMRoEymC8k 4FaMLbZlahBSdpNBRV/RaQ==KhRI
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Us
  • From Russ Allbery@21:1/5 to Scott Kitterman on Sat Jun 15 03:30:01 2024
    Scott Kitterman <[email protected]> writes:

    Maybe. Maybe this breaks the thing into two parts in a way it wasn't
    before If you verify the signature on the source package and the key is
    in the keyring, you know that the package was uploaded by someone
    authorized to do so and that the code you have is what they signed.
    With tag2upload you have neither. You have tag2upload's claim of who
    signed the tag and the source package constructed by tag2upload. The connection to what the uploader intended to upload is completely
    indirect.

    I guess I consider separating authentication from authorization to be a
    pretty routine thing to do, since I've worked on lots of systems that do
    that. But yes, it is a change from dak's perspective in that it is no
    longer the sole agent involved in authentication checks and it has to
    trust that tag2upload did its part correctly.

    I don't think there's any real mystery about this, but the claim in the
    draft GR was that there was an unwillingness to communicate.

    I cannot speak for the authors of the draft GR, but the claim that I would
    make is that there seems to be a lot of reluctance on the part of the FTP
    team to communicate *why* they think that trusting tag2upload is a
    problem. My conversation with Ansgar felt typical to me: vague assertions
    of security problems without an explanation of what those assertions are
    based on.

    Again, this is their perogative under the Debian constitution, although it
    has reached a point that I personally find a bit rude. But the project
    can decide how much weight to put on those assertions.

    With any luck, there's an explanation already waiting in my inbox while
    I'm writing this and I'll be happily wrong. :)

    I guess my assumption is that the security objections are based on a gut feeling or vibes, which makes them hard to explain. That's a real thing,
    and I am familiar with the feeling, but I also don't expect it to be that persuasive to other people. When it comes down to rejecting substantial amounts of work that other people have put into solving a problem they
    care deeply about, I feel like it's my responsibility to really dig in and figure out what my vibes are based on or to let go of my objection.
    That's my personal take; obviously other people can have their own
    opinions on that score.

    If the objection is that there should be one and only one piece of
    software that verifies package upload signatures, meh, sure, all other
    things being equal it's better to only have to trust one system than two,
    but the whole point is that all other things aren't equal. Additional complexity is always a drawback, but it's also often the cost of adding
    new features. If that's the sole objection, it seems pretty weak to me.

    If the objection is that the implementation of the tag2upload security
    checks is not secure, then that is a very real problem that would need to
    be fixed and someone should spit out the details so that we can have a
    real discussion. But I have a hard time imagining that this is a blocking architectural objection. It's clearly possible to securely verify a Git
    tag signature, modulo concerns about SHA-1 hashes that have been discussed exhaustively elsewhere. If tag2upload is doing it wrong, then tag2upload
    can be fixed.

    But this is all speculation on my part. I don't actually know what the objection is because no one has explained it, at least that I have seen
    and understood. Maybe I just missed it.

    Some or all of them may be unwilling to continue to be responsible for managing the security of the archive once the security of the system has
    been (in what I believe to be their view) compromised.

    You narrowly dodged me going off on a long rant about one of my pet peeves about the computer security profession, but I had a nice dinner with my
    family and decided to spare everyone. :)

    I guess the main thing that I will say to this is that I certainly hope
    people are not feeling this way because I think that would be an unhealthy
    way to approach a dispute. I guess this gets into personal philosophy,
    but I think it's important to not hold one's positions so tightly that
    they become brittle. I find that when I do that, *I* become brittle, and
    it's a deeply unpleasant experience.

    It's not very helpful to think of systems as secure or insecure. Security
    is always and forever a tradeoff. This is particularly true of the sort
    of discussion where we're having, where no one is identifying a concrete
    attack that could be performed against tag2upload today. Instead, we're discussing design principles that may or may not make tag2upload
    vulnerable to problems in the future. Those discussions are very
    important -- my security review was full of them -- but they're also
    inherently speculation and opinion, and it's always possible that one's
    design intuition is wrong.

    One of the reasons why I wanted to write a proper security review and post
    it publicly is because I want people to check my work. If someone finds a serious problem that I didn't think of, I would hope that I would change
    my opinion accordingly. I know that's psychologically difficult to do
    once I've publicly committed to a position, but that's all the more reason
    to constantly restate to myself the importance of holding opinions loosely
    and being open to new information. This should be a collaborative
    process. The goal is to enable people to do the work they want to do in a reasonably secure fashion, not to stand in front of people and declaim
    "you are secure" or "you are not secure."

    I have not done a review of the implementation. I'm not a great code
    reviewer becuase I have a lot of difficulty separating my aesthetic
    preferences from my analysis. I'm better at architecture. If someone is willing to do a detailed security review of the code, that, as far as I'm concerned, would be great. That's how we get better. If that turns up problems, clearly those problems should be fixed.

    I am absolutely confident that if someone discovers an exploitable vulnerability in tag2upload, the tag2upload developers would be the very
    first people to turn the service off until they can figure out how to fix
    the vulnerability. Everyone involved in this discussion cares deeply
    about not compromising the security of the archive.

    At the end of the day, it's just code. Most code problems are fixable.
    We're pretty good at what we do. I have great confidence in Debian's
    ability to make tag2upload work in a secure manner if we decide that's something we want to do.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Kitterman@21:1/5 to All on Sat Jun 15 00:38:34 2024
    On Friday, June 14, 2024 9:23:03 PM EDT Russ Allbery wrote:
    Scott Kitterman <[email protected]> writes:
    Maybe. Maybe this breaks the thing into two parts in a way it wasn't before If you verify the signature on the source package and the key is
    in the keyring, you know that the package was uploaded by someone authorized to do so and that the code you have is what they signed.
    With tag2upload you have neither. You have tag2upload's claim of who signed the tag and the source package constructed by tag2upload. The connection to what the uploader intended to upload is completely
    indirect.

    I guess I consider separating authentication from authorization to be a pretty routine thing to do, since I've worked on lots of systems that do that. But yes, it is a change from dak's perspective in that it is no
    longer the sole agent involved in authentication checks and it has to
    trust that tag2upload did its part correctly.

    I don't think there's any real mystery about this, but the claim in the draft GR was that there was an unwillingness to communicate.

    I cannot speak for the authors of the draft GR, but the claim that I would make is that there seems to be a lot of reluctance on the part of the FTP team to communicate *why* they think that trusting tag2upload is a
    problem. My conversation with Ansgar felt typical to me: vague assertions
    of security problems without an explanation of what those assertions are based on.

    Again, this is their perogative under the Debian constitution, although it has reached a point that I personally find a bit rude. But the project
    can decide how much weight to put on those assertions.

    With any luck, there's an explanation already waiting in my inbox while
    I'm writing this and I'll be happily wrong. :)

    I guess my assumption is that the security objections are based on a gut feeling or vibes, which makes them hard to explain. That's a real thing,
    and I am familiar with the feeling, but I also don't expect it to be that persuasive to other people. When it comes down to rejecting substantial amounts of work that other people have put into solving a problem they
    care deeply about, I feel like it's my responsibility to really dig in and figure out what my vibes are based on or to let go of my objection.
    That's my personal take; obviously other people can have their own
    opinions on that score.

    If the objection is that there should be one and only one piece of
    software that verifies package upload signatures, meh, sure, all other
    things being equal it's better to only have to trust one system than two,
    but the whole point is that all other things aren't equal. Additional complexity is always a drawback, but it's also often the cost of adding
    new features. If that's the sole objection, it seems pretty weak to me.

    If the objection is that the implementation of the tag2upload security
    checks is not secure, then that is a very real problem that would need to
    be fixed and someone should spit out the details so that we can have a
    real discussion. But I have a hard time imagining that this is a blocking architectural objection. It's clearly possible to securely verify a Git
    tag signature, modulo concerns about SHA-1 hashes that have been discussed exhaustively elsewhere. If tag2upload is doing it wrong, then tag2upload
    can be fixed.

    But this is all speculation on my part. I don't actually know what the objection is because no one has explained it, at least that I have seen
    and understood. Maybe I just missed it.

    Some or all of them may be unwilling to continue to be responsible for managing the security of the archive once the security of the system has been (in what I believe to be their view) compromised.

    You narrowly dodged me going off on a long rant about one of my pet peeves about the computer security profession, but I had a nice dinner with my family and decided to spare everyone. :)

    I guess the main thing that I will say to this is that I certainly hope people are not feeling this way because I think that would be an unhealthy way to approach a dispute. I guess this gets into personal philosophy,
    but I think it's important to not hold one's positions so tightly that
    they become brittle. I find that when I do that, *I* become brittle, and it's a deeply unpleasant experience.

    It's not very helpful to think of systems as secure or insecure. Security
    is always and forever a tradeoff. This is particularly true of the sort
    of discussion where we're having, where no one is identifying a concrete attack that could be performed against tag2upload today. Instead, we're discussing design principles that may or may not make tag2upload
    vulnerable to problems in the future. Those discussions are very
    important -- my security review was full of them -- but they're also inherently speculation and opinion, and it's always possible that one's design intuition is wrong.

    One of the reasons why I wanted to write a proper security review and post
    it publicly is because I want people to check my work. If someone finds a serious problem that I didn't think of, I would hope that I would change
    my opinion accordingly. I know that's psychologically difficult to do
    once I've publicly committed to a position, but that's all the more reason
    to constantly restate to myself the importance of holding opinions loosely and being open to new information. This should be a collaborative
    process. The goal is to enable people to do the work they want to do in a reasonably secure fashion, not to stand in front of people and declaim
    "you are secure" or "you are not secure."

    I have not done a review of the implementation. I'm not a great code reviewer becuase I have a lot of difficulty separating my aesthetic preferences from my analysis. I'm better at architecture. If someone is willing to do a detailed security review of the code, that, as far as I'm concerned, would be great. That's how we get better. If that turns up problems, clearly those problems should be fixed.

    I am absolutely confident that if someone discovers an exploitable vulnerability in tag2upload, the tag2upload developers would be the very first people to turn the service off until they can figure out how to fix
    the vulnerability. Everyone involved in this discussion cares deeply
    about not compromising the security of the archive.

    At the end of the day, it's just code. Most code problems are fixable.
    We're pretty good at what we do. I have great confidence in Debian's
    ability to make tag2upload work in a secure manner if we decide that's something we want to do.

    I appreciate that you took the time to do that. I do have some questions that I've been meaning to write down about that, but I keep letting myself get pulled back into this thread.

    I agree with basically all of that, but let me suggest a different way to look at this. I suspect it may be more of an organizational dynamics problem than
    a technical problem (to be clear, this is speculation on my part). Within a complex organization (Debian certainly qualifies), maintaining an appropriate alignment between responsibility and authority is both critical and difficult.

    I don't seem to have a recent FTP delegation message on my computer, but the most recent one I could find includes:

    FTP Masters, commonly referred to as "ftpmaster", oversee and maintain
    the well-being of Debian's official package repositories.

    This GR removes part of that authority and moves part of the functionality of DAK (which is also explicitly mentioned in the delegation email) outside of
    DAK for at least some uploads. Reduction of authority to execute the assigned responsibilities can be a very uncomfortable position to be in. Personally, I have quit roles where authority and responsibility became sufficiently imbalanced. Even if tag2upload has absolutely no negative impact on the overall security of the archive, it makes it more complex for the FTP Masters to execute their delegated responsibilities.

    I suspect this can be solved, but the solution isn't technical.

    Scott K
    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEE53Kb/76FQA/u7iOxeNfe+5rVmvEFAmZtGsoACgkQeNfe+5rV mvGV6w/+MRDsg4wpPDo0kvKZ/Q+cO4HraKoO9w73eyaoqWz1iwY1SwjCylhfQA4o 3cbDpBOdhc0MnahPblUAB5r9lLGmenlR9t8aP5kaeNwJp0fIdt2J+D87H7pBYv62 JtJTIU/jIM3OGjT3gIVwa/6NPoYl5zPYdaYlmF8DMYJ9vJ4q98N4cih78Ff8NxjD XnT/bogCikQ30nwVjn3VNPubqJNIy3fnmg+QgfW/JQYhLekKTecRAC5NpdPeOiCk iRl24pDghUHl1LB+jB0thy2CuZRUTuS6gKWuna35rF4IGTOi/Iqtb9yPQNI+Nq/k ErIOPJ2IKSPVxBC2JTqmpiey2vJ1GZ15wGm8/gjThIV+6cf66AsHuvwOYyi3lM2Q egslUGxKCh0rGdNcT2Zb3pTLcfeZaNrPlf9YlExiSxwVjGjHsfV4SuuCwW/xzn/F Idm97RtfCdqVLfwnm+X0KFtlkwwoQ/ibw0u+NhtMXpGw2mlDm3IlDnLEqqrm8Bag YRU9+NsortR3f1+QXqIzva/5GHHytIzp5hMuiXtzjux8bC7CI+RYOTEfzCl8kCzo 4R8e83pSTLOdkDs7ATkq2MV+Z3UwN+7HKtTIO7B1G/hJgmzAvTkbQT1jA9uPVSPJ enR4kpkMkh4yY8HXY8VGdANW/JfRhUWsZEQnXVul0rjMjnfQfqI=
    =Y6vS
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Russ Allbery on Sat Jun 15 08:50:01 2024
    Hi,

    On Fri, 2024-06-14 at 14:46 -0700, Russ Allbery wrote:
    Ansgar 🙀 <[email protected]> writes:

    Okay, so we have to accept a path into the archive that is known to
    accept malicious uploads that would have been rejected by dak so maybe
    that path will be changed later? I don't see that happening given all suggestions to change this have been rejected, even when fairly simple
    to implement.

    This is not known.  You have asserted this, and then come up with increasingly implausible excuses for why you cannot clearly explain wtf
    you are talking about.

    It's entirely possible that there are security bugs in the current
    tag2upload implementation, just like it's entirely possible that there are security bugs in dak and in any other piece of software.  The way we deal with those, now and in the future, is that someone explains what the
    security bug is and then we see if we can fix it.

    *shrug* For tag2upload even trivial patches fixing bugs like references
    to undefined functions won't be applied.

    I doubt any more involved patches to fix security issues would be
    applied. So I decided to not waste my time on that (but I checked
    briefly and it at a quick glance it looks like issues from ~5 years ago
    are still not resolved) and not stand in the way to create another
    stalemate in case someone wants to fix them.

    So why bother when all that comes in the end is "generating a manifest
    is hard even though others do it with one line of shell"? (Yes, it
    might be a bit more if one doesn't want to include .git in the manifest
    or possibly have two in case .debian.tar.* overwrites something in .orig.tar.*.) Or suddenly the tags must be possibly to create manually
    and so no manifest or other changes are possible even though before it
    was a script (git-debpush). I'm sure people will find new requirements
    if they are too conservative to consider any changes.

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Soren Stoutner@21:1/5 to All on Sat Jun 15 00:25:35 2024
    This is a multi-part message in MIME format.

    --nextPart2067577.peQtGTLQNs
    Content-Transfer-Encoding: quoted-printable
    Content-Type: text/plain; charset="UTF-8"

    As someone who has read every email in this chain, I have a couple of recommendations.

    1. Clarify that the GR does not prevent future flexibility in changing the tag2upload service
    and does not give Sean Whitton, Ian Jackson, Jonathan McDowell, or Russ Allbery perpetual
    power to direct how it is implemented. This was already discussed as the intent, but I think
    it should be clearer in the GR itself who has authority to implement and manage
    tag2upload going forward.

    My recommendation is that either, 1) the tag2upload service should come under the
    implementation and management umbrella of the ftpmasters delegation, or, 2) the DPL
    should create a new delegation to implement and manage the tag2upload service. The
    DPL might consider appointing one or more of the four people listed above as either
    ftpmasters or to the new delegation (assuming they are interested and willing).

    For example, below is possible text for how this could be written into the GR.

    BEGIN FORMAL RESOLUTION TEXT - POSSIBLE TEXT

    tag2upload allows DDs and DMs to upload simply by using the
    git-debpush(1) script to push a signed git tag. Work has been done to implement
    tag2upload, but the ftpmasters have been reticent to integrate the service with dak.

    1. Under Constitution §4.1(3), we overrule the ftpmaster delegation’s decision: The Debian
    archive should be configured to accept and trust uploads from the tag2upload service.

    2. The implementation and maintenance of the tag2upload service may fall under the
    ftpmasters delegation or a new delegation at the DPL’s discretion.

    3. Nothing in this resolution should be taken as requiring maintainers to use tag2upload or
    any particular git or salsa workflow.

    END FORMAL RESOLUTION TEXT - POSSIBLE TEXT

    2. Once people have had time to suggest any other possible versions of the GR and Sean
    Whitton has settled on a final text, I would recommend we proceed to the formal GR
    process. At this point, I don’t think there is much technical or other discussion that is going
    to happen on debian-vote that hasn’t already been covered.

    --
    Soren Stoutner
    [email protected]

    --nextPart2067577.peQtGTLQNs
    Content-Transfer-Encoding: quoted-printable
    Content-Type: text/html; charset="UTF-8"

    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    </head>
    <body><p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">As someone who has read every email in this chain, I have a couple of recommendations.</p>
    <br /><p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">1.&nbsp; Clarify that the GR does not prevent future flexibility in changing the tag2upload service and does not give Sean Whitton, Ian Jackson, Jonathan McDowell, or Russ
    Allbery perpetual power to direct how it is implemented.&nbsp; This was already discussed as the intent, but I think it should be clearer in the GR itself who has authority to implement and manage tag2upload going forward.</p>
    <br /><p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">My recommendation is that either, 1) the tag2upl
  • From Philip Hands@21:1/5 to Sean Whitton on Sat Jun 15 11:10:01 2024
    Sean Whitton <[email protected]> writes:
    ...
    The ftpmaster team have refused to trust uploads coming from the
    tag2upload service. This GR is to override that decision.

    Full disclosure:

    I'm a happy dgit user. The support I've had from Ian for dgit (when I
    messed things up, generally) has been outstandingly good, and has
    generally resulted in a change to dgit that prevents me (and others)
    from messing up in a similar manner. It strikes me that tag2upload is
    another stride in the same direction, so I'd like to have the chance
    to use it, because I suspect that it will also make contributing to
    Debian easier, less error-prone, and just more pleasant.

    [Note: in the following, I am NOT trying to suggest a technical fix, so
    please don't start nitpicking the details -- it's just a thought
    experiment that I hope might shed some light on the situation]

    If it were easy to deploy an instance of tag2upload in my house,
    populated with a sub-key of my GPG key, I would probably set that up
    (and then start worrying about the security of the sub-key ;-) ).

    If I did that, I believe the FTP masters would still accept my uploads.

    Should they? or is it perhaps the case that they are objecting to the
    idea that tag2upload is capable of reliably generating a source package
    from a git tag. (I personally trust Ian when he says that it is capable)

    If Ian were to offer a hosting service for such personal tag2upload
    instances, in a way that he assured me could not be used to sign
    packages unless I had signed a matching git-tag, I would be willing to
    trust his assurances, and may well take him up on the offer.

    It seems to me that such a centralised service is more likely to do
    things like keep the keys in an HSM, and have effective separation of
    the components, than something set up by a random developer at home, so
    one could argue that it's going to be more secure than the self-hosted
    version.

    Would the FTP masters still be OK with that? If not, what's changed?

    If that's OK, but tag2upload as proposed is not, are we really drawing a
    line based on what name is on the signing key?

    Would it make any difference to the FTP masters if there was some way
    for me to assert that I trust the tag2upload service/key to build/sign
    source packages for me?

    For instance, if one had to sign something with a GPG key that matches
    the one that later signs a gpg tag, before tag2upload would be willing
    to process one's signed tags, would that make the FTP masters happier?

    Personally, I'm not convinced that would really add anything, since if
    one has sufficient control of the key to push a signed tag, then one's
    also going to be able to sign a statement that you want tag2upload to
    act on that tag, but I thought that describing the options might help
    narrow down what the perceived problem is.

    Of course, without something describing exactly what the problem is from
    the FTP master's point of view, it's very hard to judge the merits of
    their position.

    Cheers, Phil.
    --
    Philip Hands -- https://hands.com/~phil

    --=-=-Content-Type: application/pgp-signature; name="signature.asc"

    -----BEGIN PGP SIGNATURE-----

    iQIzBAEBCgAdFiEE3/FBWs4yJ/zyBwfW0EujoAEl1cAFAmZtWNUACgkQ0EujoAEl 1cCBVhAAoUJ0sFzr/JJsogt9h/FyVU3OHppKM5UKSUafRWNLfu+hdjleatohbuHv /HjYP9462OubdKxRHffZ2gdiWKcJSvMx8CUXroffK13NwxCgG3NdkHWKnUSLkE8+ 2yg9FG4QEjcqv7a9c7tor+KEFYfy3h0u6kxJfWLyullLpTlwNZWeZZGEosbsJrLf TJW5XBXKy3McXuCgf29In747MEGOOz3Rgy4Q3Csq7HLaBrQDYTFptCmtoN0R/n0M Cokgn+h7S6sfBUGF2GWEVVvbLaDjflqeBYJmzCPo+/sauOVY/LkEeVQjRbuC3UgJ HiUFhGKIoMKup9o0QGHtA41FLpuWviQEg6nwe83EV2EuyaxTSz58FG3mZ9jDAyrw QxvJVm/sQ3Y9Jv9tI+guIeQlODToecvt6nG8ODG6dbMXArz289Zhc8Fjxnglrp4K NJ9l3Yc3G/JXCPyZUeUFIcvqS60E3kVAdR0E7Xe4pGDIrggg/FJBNW8+lkO6s1m0 +5CcajkOM7IDw/zmdvNFH3AixiCfNVsRQY3KS+kHTBxMqkMatAlIvRIyWc3estSF FqiOJzzsVFWfbtXL72k2Wxs7gZ0m2SrBkyK6E87eqKcyMczWOpL2RDC3E2F4zjoh DJ6+TL8zxqMJ4HSLobu9GkF/IKJV7KLdctTcokBw/INc2ACbsvI=oT8z
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gatewa
  • From Jonathan Carter@21:1/5 to Sean Whitton on Sat Jun 15 11:20:02 2024
    Hi Sean

    On 2024/06/15 02:14, Sean Whitton wrote:
    My point is that it's not doing any magic. It's less than 500 lines of shell.

    Where do I find this? I searched for tag2upload on salsa and did an
    'apt-cache search tag2upload', but couldn't find anything.

    thanks,

    -Jonathan

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Daniel =?utf-8?Q?Gr=C3=B6ber?=@21:1/5 to All on Sat Jun 15 12:20:01 2024
    Hi Ansgar,

    On Fri, Jun 14, 2024 at 10:39:11PM +0200, Ansgar 🙀 wrote:
    (And given upstream's hard policy to not merge changes not signing off
    extra legal stuff, I sadly cannot give a more detailed bug report as
    any fix created as a derived work from that would be unmergable unless
    there was a Debian fork of the project with a different policy.)

    Could you please expand on this and/or provide references? I have no idea
    what you're even talking about here.

    On Sat, Jun 15, 2024 at 08:44:02AM +0200, Ansgar 🙀 wrote:
    *shrug* For tag2upload even trivial patches fixing bugs like references
    to undefined functions won't be applied.

    Can you link to this discussion?

    I doubt any more involved patches to fix security issues would be
    applied. So I decided to not waste my time on that (but I checked
    briefly and it at a quick glance it looks like issues from ~5 years ago
    are still not resolved) and not stand in the way to create another
    stalemate in case someone wants to fix them.

    Glances can be deceiving. From what I've seen from dgit bugs Ian just likes
    to keep bugs open for discussion. I see no problem if thats what you're
    seeing.

    What bugs are you looking at? Please be more concrete.

    Thanks,
    --Daniel

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Bart Martens@21:1/5 to Sean Whitton on Sat Jun 15 15:10:01 2024
    Hi Sean,

    On Wed, Jun 12, 2024 at 06:25:02AM +0800, Sean Whitton wrote:
    BEGIN FORMAL RESOLUTION TEXT

    tag2upload allows DDs and DMs to upload simply by using the
    git-debpush(1) script to push a signed git tag.

    Question. Does the tag signer need to trust the remote vcs and its admins at the moment of tag signing? With a .changes file the signer has full local control: local source code inspection, local checksums generation, and local signing. I wonder how tag2upload would offer this level of control without lowering the value of the signatures.

    Cheers,

    Bart

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joerg Jaspert@21:1/5 to Sean Whitton on Sat Jun 15 18:10:01 2024
    On 17258 March 1977, Sean Whitton wrote:

    So, why am I proposing a GR?

    This one took me by surprise, honestly.

    Looking into my notmuch, the last time tag2upload came up in my
    ftpmaster inbox was in 2019. Between then and now there doesn't appear
    to
    be any serious contact with us about it. There had been mentionings on
    some mailing list somewhere, but nothing coming to us, that I can find.

    Even then, back in 2019, one of the major points that ftpteam members
    raised had been "the archive has to be the final point to check if an
    upload is accepted" and that we do retain *all* user signatures of
    source packages, and that such a service must provide the same level of possible verification. Some other requirements on the signature too
    (collision resistant, need to be verifyable with only stuff included in
    the source package). Also something about not using Perl, but meh, lets
    ignore that one here.

    So, 5 years of (hopefully) development, but the major point (this should
    *not* bypass/circumvent archive upload checks and restrictions) did not
    get addressed. More like, entirely ignored.

    Or, in your own words: fatally undermining the archive/daks design and
    user experience.

    The ftpmaster team have refused to trust uploads coming from the
    tag2upload service. This GR is to override that decision.

    Really. Tell you what: FTPMaster is in favor of tag2upload and would
    like to see it running. Just not in exactly the way it is currently
    designed.

    While we want people in Debian in critical paths for archive security
    to
    be relatively conservative, that conservatism can be taken too far,
    and
    we think that is what has happened in this case.

    While we want people developing new tools for Debian to be relatively
    open and experimenting with new ways, those new ways can be taken too
    far and ignore input and experience from those running existing
    services, and we think that is what happened in this case.

    Now we each had some of those words, can we leave that out, and actually
    see of getting this included usefully?

    In fact, tag2upload significantly *improves* the traceability of our source-only uploads.

    It significantly breaks existing checks and procedures.

    Now, I do like a future of "git $something" and out pops a Debian
    upload. Others do too.

    We had a bit of a chat in our ftp channel (as you may know, if reading
    irc), so let me summarize something we see as a way forward:

    FTPMaster *is* in support of t2u, if it ends up in a way that allows
    dak doing the final verification/authorization of the upload, NOT
    needing to trust some other instance.

    As generating changes and dsc on the maintainer side is out (we want a
    git $something workflow now), that verification ought to be over the
    content. So whatever tool the maintainer ends up calling ought to
    generate a signature over the content of the package and put that into
    git (a tag, or whatever t2u uses).

    From that, t2u can do its magic, build a source package, sign that with
    its key - and in the source include the full maintainer sig. Field in
    .changes or extra file, doesn't matter, as long as it's included in the
    upload.
    That then allows dak to do what it does now and trust the thing
    originates from the maintainer. And can still do all its check on the
    sig (over the content).

    This will allow what t2u wants to achieve: A simple, git based, upload
    workflow for the developers. It will also allow what FTPMaster wants, verification of things included in our archive back to the actual
    original maintainer *without* trusting a third party.

    The above is *intentionally* not hashing out the details, just a way to
    go and get t2u working in Debian, without needing a GR, with support
    from ftp team. Exact details (how to do signatures, which format, blah)
    are for actual implementation.

    --
    bye, Joerg

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Bart Martens on Sat Jun 15 19:00:02 2024
    Bart Martens <[email protected]> writes:
    On Wed, Jun 12, 2024 at 06:25:02AM +0800, Sean Whitton wrote:

    BEGIN FORMAL RESOLUTION TEXT

    tag2upload allows DDs and DMs to upload simply by using the
    git-debpush(1) script to push a signed git tag.

    Question. Does the tag signer need to trust the remote vcs and its
    admins at the moment of tag signing? With a .changes file the signer has
    full local control: local source code inspection, local checksums
    generation, and local signing. I wonder how tag2upload would offer this
    level of control without lowering the value of the signatures.

    The Git tag signature is over your local Git repository. It's like most
    other Git objects: it's operating on your local copy of the repository.
    If the remote side changes, your tag will not reference the new Git tree
    on the remote side. It will still reference the exact Git tree that you signed. (Modulo successful SHA-1 collision attacks, of course.)

    Now, that doesn't mean that the reviewer necessary uses that property correctly. If you git clone the repository, review it, and then sign your local copy based on that review, you have reasonable assurance that the
    tag is on exactly the thing that you reviewed. If you review the
    repository on Salsa via the web interface, and *then* git clone it and
    sign it, you have created a window where you could have lost a race and be signing something different than you had thought. Or if Salsa was
    compromised, it could have been lying to you about the contents of the Git tree, etc.

    However, I don't think this is a new issue with tag2upload. Exactly the
    same caveat applies to the existing upload mechanism: if you review the
    code on Salsa and then git clone it and build a source package for
    uploading without checking the contents of the git clone separately, there
    is exactly the same window of vulnerability.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Joerg Jaspert on Sat Jun 15 21:00:01 2024
    Thank you for writing this up. This is extremely helpful to make clear
    what the actual point of contention is.

    Joerg Jaspert <[email protected]> writes:

    FTPMaster *is* in support of t2u, if it ends up in a way that allows dak doing the final verification/authorization of the upload, NOT needing to trust some other instance.

    Why is this your red line? Is it only that you don't want to add another system to the trusted set, or is there something more specific that you're concerned about?

    As generating changes and dsc on the maintainer side is out (we want a
    git $something workflow now), that verification ought to be over the
    content. So whatever tool the maintainer ends up calling ought to
    generate a signature over the content of the package and put that into
    git (a tag, or whatever t2u uses).

    I want to talk about designs from the perspective of threat models and constraints, so I'm going to try to reverse engineer those from your
    proposed solution so that we can have a more structured discussion of the security properties. Please check this and make sure that I've correctly captured your thought process here:

    The threat that you are trying to protect against is a compromise of the tag2upload server. I think you're trying to find a design that meets the following constraints:

    1. You want there to be some external check on the tag2upload server to
    ensure that it correctly constructed a source package from the
    uploader-signed artifact.

    2. You (correctly, in my opinion) do not want dak to perform the
    construction of the source package from a Git tag, so you are looking
    for some other agent in the system to serve as the check on the
    tag2upload server.

    Is that correct?

    If that's right, it sounds like your solution is to push that verification
    work to the uploader. I know you're trying to avoid specifics, but let me
    make this slightly more specific so that I have something concrete to talk about. If I understand correctly, a design that you would approve would
    look something like this:

    1. The uploader performs the work to transform a Git tree into an unpacked
    source package and calculates a Merkle tree hash of that unpacked
    source package or something equivalent.

    2. The uploader creates a signed Git tag over the corresponding Git tree
    in the same way as in the tag2upload design but additionally includes
    the Merkle tree hash in the signed data.

    3. tag2upload functions in the same way as designed, starting from the Git
    tag, constructing the source package, and passing it to dak. It
    additionally conveys the signed Git tag object to dak in some form,
    such as a separate file.

    4. dak verifies the Git tag signature, performs normal authorization
    checks against it, unpacks the source package, calculates the same
    Merkle tree hash, and ensures that the hash matches the one in the Git
    tag.

    Am I correct that this is the type of design that you are asking for and
    that you would approve this design, modulo the normal sort of details that would need to be hashed out?

    If this is the case, then I think it's incorrect to say that the
    tag2upload maintainers have ignored this feedback. I can't speak for
    them, obviously, but I believe I've seen them answer essentially this
    feedback multiple times. My understanding is that the problem with this
    design from their perspective is that it requires a fat client on the uploader's system, and whole point of tag2upload is to stop requiring a
    fat client on the uploader's system. In particular, it requires all the
    code to reconstruct the source package from a Git tree be installed
    locally, which is basically a full dgit implementation.

    This is a real trade off about which we can disagree! This is a useful
    thing for us to argue about and vote about. I agree that the design that
    you propose is somewhat more secure in that it adds a check on the
    security of the tag2upload server that would catch some classes of
    compromise, although I believe I have a substantial caveat to your
    analysis that I'll talk about more below. But it's a trade off, like most things in security: the cost is that it's still not possible to upload a
    Debian package via a signed Git tag with some metadata that one can
    manually construct if one wishes. A Debian uploader still has to have a Debian-specific program installed locally that does a bunch of complex transformations of a Git tree before they can trigger an upload.

    If the disagreement is over whether that user interface property is worth
    the security trade off, then that's a concrete thing that we can argue
    about, but I want to make sure that this fully captures your objection.

    That then allows dak to do what it does now and trust the thing
    originates from the maintainer.

    I think this is probably my strongest point of disagreement with your
    analysis. I think you're putting more weight on this idea of maintainer
    intent than it can actually support, and I think your analysis of
    maintainer intent is somewhat incorrect.

    It sounds like you are assuming that the maintainer has vetted the thing
    that they sign. I am extremely dubious that this is the case. I believe
    that the typical maintainer workflow today is that the maintainer works on
    the package in a working directory (usually but not always in Git) until
    they are happy with the results. Then they run a build tool that
    generates a source package, and they blindly sign and upload that source package. They do not verify that the resulting source package matches
    their intent in their working tree apart from building binary packages
    based on it and running them.

    In other words, the intent that the maintainer who uses Git is trying to express is "upload something corresponding to this Git tree and this
    upstream orig tarball to the archive." By asking for the signature to be
    over the source package instead of over the Git tree, we are already
    diluting maintainer intent. The thing the maintainer signs is not the
    source code of the package; that's the Git tree. It's a build product of
    the source code.

    In that sense, the signature verification that the tag2upload server does
    is *closer* to actual maintainer intent than a signature verification on
    the *.dsc file. We're diluting maintainer intent by moving to the source package.

    That's one of my objections. My other objection is that I think that the uploader's system is already the weakest link in our current security
    model. Relying on it for additional security properties is something that we're currently doing, and having the uploader's system redundantly check
    the tag2upload server does have some security benefit, but I think that security benefit is substantially less than the benefit of, say, a
    reproducible source package build server in a separate security domain but
    with a similar secured architecture rather than whatever state the
    uploader's system is in.

    In other words, if the goal is to create a redudant check on the
    tag2upload server, doing that via something the uploader signs is not
    clearly better (and I think arguably worse) than having two tag2upload
    servers in separate security domains that perform the same operations. In
    both cases you're still trusting the same code to perform the source
    package transformation, but the tag2upload server has a better security
    model than the uploader's local system.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Marco d'Itri@21:1/5 to [email protected] on Sat Jun 15 22:40:02 2024
    [email protected] wrote:

    My understanding is that the problem with this
    design from their perspective is that it requires a fat client on the >uploader's system, and whole point of tag2upload is to stop requiring a
    fat client on the uploader's system. In particular, it requires all the
    code to reconstruct the source package from a Git tree be installed
    locally, which is basically a full dgit implementation.
    Does it? What if both the tag2upload client and server implemented
    instead some very simple serialization and canonicalization algorithm
    over the source package?
    I am thinking about hashing something like a sorted list of
    (file name, file hash) tuples.

    (Still, I would be happy to use the current implementation of
    tag2upload.)

    --
    ciao,
    Marco

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Marco d'Itri on Sat Jun 15 23:00:01 2024
    Marco d'Itri <[email protected]> writes:
    [email protected] wrote:

    My understanding is that the problem with this design from their
    perspective is that it requires a fat client on the uploader's system,
    and whole point of tag2upload is to stop requiring a fat client on the
    uploader's system. In particular, it requires all the code to
    reconstruct the source package from a Git tree be installed locally,
    which is basically a full dgit implementation.

    Does it? What if both the tag2upload client and server implemented
    instead some very simple serialization and canonicalization algorithm
    over the source package?

    The serialization isn't the problem, constructing the source package is.
    Once you have a source package, there are lots of things you can do, but
    the problem is precisely that going from a Git tree to a source package is non-trivial and involves a whole bunch of Debian-specific code.

    If you force one specific Git representation of source packages, the
    problem is much simpler (particularly if you choose a Git representation
    that is very easy to assemble), but one of the design goals of the whole
    dgit ecosystem, including tag2upload, is to try to meet people where they
    are and support as many of the Git workflows in use in Debian as possible.

    I am thinking about hashing something like a sorted list of (file name,
    file hash) tuples.

    I was trying to figure out while I was walking today whether that would be
    all you need, and I'm not sure it is. I couldn't convince myself that you could ignore file permissions, symlinks, hard links, and so forth.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Marco d'Itri@21:1/5 to Russ Allbery on Sat Jun 15 23:40:01 2024
    On Jun 15, Russ Allbery <[email protected]> wrote:

    The serialization isn't the problem, constructing the source package is.
    Once you have a source package, there are lots of things you can do, but
    the problem is precisely that going from a Git tree to a source package is non-trivial and involves a whole bunch of Debian-specific code.
    Yes, I understand this. But I think that the goal can be much simpler:
    just allowing dak to verify that the content (i.e. the files) of the
    source package it received is the same that the uploader's PGP key has
    signed on their own system.
    Then the actual source package can be reconstructed by dgit for the
    archive as planned.

    I am thinking about hashing something like a sorted list of (file name, file hash) tuples.
    I was trying to figure out while I was walking today whether that would be all you need, and I'm not sure it is. I couldn't convince myself that you could ignore file permissions, symlinks, hard links, and so forth.
    Maybe, but it should not be hard to add this kind of metadata.

    --
    ciao,
    Marco

    -----BEGIN PGP SIGNATURE-----

    iHUEABYIAB0WIQQnKUXNg20437dCfobLPsM64d7XgQUCZm4DOgAKCRDLPsM64d7X gY8dAPoD/ClFxp4N//J78uqUscglu/4VLDTPGH3IR755o4KtuQD/aQ6qD6qeXP7Z f9rr7lAEDiXPOvLOBwHrWeKDxA1H6gg=
    =95BJ
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Sven Mueller on Sun Jun 16 06:30:02 2024
    Hello,

    On Sat 15 Jun 2024 at 07:12pm +02, Sven Mueller wrote:

    I'm currently a bystander. And while I reply to Joerg's mail, I'm not directly referencing
    any of the points in his mail, so no quotes.

    I'd like to point out though, that signing the content of the package is not possible if the
    developer should only need to do `git $something`.

    They would also need to generate the source package, as I don't see a guarantee that
    regenerating the source package from the same git tag (by t2u) would necessarily result
    in a bitwise identical source package.

    What would be possible would be (if dak has sufficient network access) to check the
    signed git tag that t2u used and re-check the signature on that. The problem remains
    that this only verified that the tag was set, not that t2u actually used the code that tag
    points to. That would again require trust in t2u or reproducible source package builds
    (and for dak to rebuild from the git repo).

    In essence: I don't see how to fulfill the mentioned requirements by ftpmasters while
    keeping the workflow of developers minimal. The only way I see to fulfill them is to have
    the workflow that t2u is supposed to simplify and host actually run on the developer-controlled machines instead of a centralized service. Which defeats the
    purpose IMHO.

    Yes, this is a good summary of the perspective of the t2u developers,
    thank you.

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Joerg Jaspert on Sun Jun 16 06:30:02 2024
    Hello,

    On Sat 15 Jun 2024 at 06:03pm +02, Joerg Jaspert wrote:

    On 17258 March 1977, Sean Whitton wrote:

    So, why am I proposing a GR?

    This one took me by surprise, honestly.

    Looking into my notmuch, the last time tag2upload came up in my
    ftpmaster inbox was in 2019. Between then and now there doesn't appear to
    be any serious contact with us about it. There had been mentionings on
    some mailing list somewhere, but nothing coming to us, that I can
    find.

    In recent years, you have stepped in with your expertise in a number of emergencies, and I am most grateful for that.

    But with respect, you have not otherwise been active in the ftpmaster
    team, and you didn't significantly participate in the original
    tag2upload discussions. So I think you may be missing things.

    We have been seeking help behind the scenes over the past four years.
    No progress was made, so we decided to draft a GR.

    Even then, back in 2019, one of the major points that ftpteam members
    raised had been "the archive has to be the final point to check if an
    upload is accepted" and that we do retain *all* user signatures of
    source packages, and that such a service must provide the same level
    of possible verification. Some other requirements on the signature too (collision resistant, need to be verifyable with only stuff included
    in the source package). Also something about not using Perl, but meh,
    lets ignore that one here.

    So, 5 years of (hopefully) development, but the major point (this should *not* bypass/circumvent archive upload checks and restrictions) did not
    get addressed. More like, entirely ignored.

    Like Russ, I'm grateful for how you've set out some things more clearly
    in this message. I'm looking forward to reading your reply to him.

    I would ask you not to characterise the disagreement we are having as
    merely over a technical detail.
    It's the essence of tag2upload that the tag metadata is minimal, and
    easily generated by a short shell script, like git-debpush.

    We did not ignore your position: we argued against it. No-one from
    ftpmaster has responded to our arguments for wanting the metadata to be minimal. So as I say, I'm looking forward to your reply to Russ.

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Scott Kitterman on Sun Jun 16 06:40:01 2024
    Hello,

    On Fri 14 Jun 2024 at 06:06pm GMT, Scott Kitterman wrote:


    I'm a bit confused by the claim that no infrastructure changes are needed for this to go forward.

    If I have been following the proposal correctly, source packages will be signed by tag2upload and not the uploader. Doesn't that mean changes are going to be needed so that we know in the archive who uploaded the package?


    Ah, do you mean how tracker.d.o shows (signed by: [email protected]) for a
    sponsored upload?

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Jonathan Carter on Sun Jun 16 06:50:01 2024
    Hello,

    On Sat 15 Jun 2024 at 11:12am +02, Jonathan Carter wrote:

    Hi Sean

    On 2024/06/15 02:14, Sean Whitton wrote:
    My point is that it's not doing any magic. It's less than 500 lines of shell.

    Where do I find this? I searched for tag2upload on salsa and did an 'apt-cache
    search tag2upload', but couldn't find anything.

    You can 'apt-get install git-debpush' and then look in
    /usr/bin/git-debpush, or it's here:

    https://salsa.debian.org/dgit-team/dgit/-/blob/master/git-debpush?ref_type=heads

    sloccount says 341 lines :)

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Kitterman@21:1/5 to Sean Whitton on Sun Jun 16 06:50:01 2024
    On June 16, 2024 4:38:03 AM UTC, Sean Whitton <[email protected]> wrote: >Hello,

    On Fri 14 Jun 2024 at 06:06pm GMT, Scott Kitterman wrote:


    I'm a bit confused by the claim that no infrastructure changes are needed for
    this to go forward.

    If I have been following the proposal correctly, source packages will be
    signed by tag2upload and not the uploader. Doesn't that mean changes are
    going to be needed so that we know in the archive who uploaded the package? >>

    Ah, do you mean how tracker.d.o shows (signed by: [email protected]) for a >sponsored upload?

    That's one place it shows up.

    Today I can download any source package in the archive and verify who uploaded the package and is responsible for its contents. It doesn't matter if I download it from the main archive or a mirror. Personally, I think that's an important characteristic
    of our package archive, which is lost by tag2upload.

    Scott K

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Gunnar Wolf@21:1/5 to All on Sun Jun 16 08:30:01 2024
    Russ Allbery dijo [Fri, Jun 14, 2024 at 02:06:35PM -0700]:
    (...)
    The tag2upload developers have been working on this system for many years now. Deployment has been blocked by an FTP team decision. At this point, the tag2upload developers are quite understandably not willing to do more work unless their work can actually be used by the project. The design
    has gone through multiple iterative improvements, and while it can always
    be better, at some point we need to make a decision about whether we're
    going to ask them to abandon it or let them deploy it. The decision of
    the FTP team appears to be that they should abandon it. The tag2upload developers are proposing to appeal that decision to the project as a
    whole.

    Deciding to deploy the service does not mean freezing the whole thing
    as-is forever. It's inevitable that new issues will arise once the
    service is running, and those will need to be addressed. It does mean extending trust to the tag2upload developers to manage their portion of
    the service, similar to how we trust the FTP team to manage dak. That
    trust includes expecting them to respond reasonably to concerns and
    problems as they arise.

    There is no need for this to be personal or hostile. I'm also a project delegate in another area, and I consider it part of the role of a project delegate to accept guidance from the project. I will make mistakes. I
    will also make decisions that I don't think are mistakes but that don't
    match what the project wants. The project gets to decide via GR if I'm wrong. That's part of the bargain I accepted when I joined the project.
    If they so decide, it's my responsibility to go along with that decision
    in good faith and with good will, or to decide that I no longer want to do the delegated work.

    The point of the GR is to provide clear guidance from the project: either deploy this thing so that we can see how it works and further improve it,
    or abandon the idea. We need to get some closure on this; talking about
    it forever while blocking forward progress creates animosity and
    frustration. Once the project provides that closure, I would expect
    everyone involved to reorient around the guidance that the project has provided and work collaboratively together on Debian, just like we all try
    to do in every other area.

    You bring an important issue to my mind. In case the ftp-masters are
    forced to accept tag2upload as a valid authorized package generation
    mechanism, this should not tie their hands forever: It should be
    explicit that the project wants to _try_ this mechanism, and possibly
    set a timeframe for this decision to be held or repelled. Or maybe
    even more lightweight -- "barring any further controversies, in
    $(now+1yr) this GR becomes null, and the decision of whether to allow tag2upload-generated packages goes back to the ftp-masters".

    This is, if in 1yr (or whatever) it becomes clear that the tag2upload maintainers are not cooperative tracking and fixing any bugs or issues
    pointed to them, or if weaknesses in the system become clear,
    ftp-masters should not require to come back to another GR to
    decomission a faulty system, and should have the authority to do this themselves.

    Of course, that's not the conclusion I expect. I expect tag2upload to
    become a good alternative for many developers, and I expect its
    maintainers to be responsive and responsible. But I think it's
    important to restore ftp-masters' full authority over their
    delegation.

    (I know it's almost impossible to decomission systems used by some
    developers ;-) not that it hasn't ever happened, as Alioth itself
    shows, but it's not ever a lightly taken decision)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Scott Kitterman on Sun Jun 16 09:00:01 2024
    Scott Kitterman <[email protected]> writes:

    Today I can download any source package in the archive and verify who uploaded the package and is responsible for its contents. It doesn't
    matter if I download it from the main archive or a mirror. Personally,
    I think that's an important characteristic of our package archive, which
    is lost by tag2upload.

    The same *information* is there, provided that the tag2upload metadata is trustworthy, but it is not trivial to verify that tag2upload did its part
    of the job properly. You can trace the package back to tag2upload and you
    can see who tag2upload asserted uploaded the package, and you can then
    retrieve that signed Git tag and verify it, but in order to establish the
    last missing link, you would have to redo the work that tag2upload did to assemble the source package to check that it was done properly.

    I think this is less of a regression than it looks like, though. The very important piece that I think a lot of people have been missing when
    looking at the overall system is that they assume that the maintainer who signed the source package in the archive verified that the contents of the source package was correct. I am fairly certain that this is not true in nearly every case. The maintainer verified that the source *tree* that
    they were operating on was correct, and then ran some source package build process locally on their system and blindly signed the results. If their
    local system were compromised in a way that injected malicious code into
    the constructed source package, I highly doubt nearly any maintainer would detect that as part of their normal upload workflow.

    In other words, my contention is that we have never been able to properly verify that the source package construction was done properly. Right now,
    we are completely trusting everything that happens on the maintainer's
    system, based on the maintainer's signature. This is the weakest point of
    our security model. Some amount of that is unavoidable, since we have no
    other way to handle the actual signing part. But we can get more
    assurance that the source package construction was done properly than
    that; we don't have to trust that the uploader's local system did it
    properly (at least in the not-universal case of packages well-served by
    the tag2upload protocol).

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Timo =?utf-8?Q?R=C3=B6hling?=@21:1/5 to All on Sun Jun 16 15:10:09 2024
    Hi Russ,

    * Russ Allbery <[email protected]> [2024-06-15 23:57]:
    Scott Kitterman <[email protected]> writes:
    Today I can download any source package in the archive and verify
    who uploaded the package and is responsible for its contents. It
    doesn't matter if I download it from the main archive or a
    mirror. Personally, I think that's an important characteristic
    of our package archive, which is lost by tag2upload.
    The same *information* is there, provided that the tag2upload
    metadata is trustworthy, but it is not trivial to verify that
    tag2upload did its part of the job properly. You can trace the
    package back to tag2upload and you can see who tag2upload asserted
    uploaded the package, and you can then retrieve that signed Git tag
    and verify it, but in order to establish the last missing link, you
    would have to redo the work that tag2upload did to assemble the
    source package to check that it was done properly.
    Would it be possible for tag2upload generate some sort of log or
    diff of its operation? Then, a verifier does not have to reimplement
    the whole dgit logic with all its edge cases, it merely has to apply
    the same tree transformation(s) as t2u and verify that this will
    indeed produce the source package from the signed Git tag.


    Cheers
    Timo

    --
    ⢀⣴⠾⠻⢶⣦⠀ ╭────────────────────────────────────────────────────╮
    ⣾⠁⢠⠒⠀⣿⡁ │ Timo Röhling │
    ⢿⡄⠘⠷⠚⠋⠀ │ 9B03 EBB9 8300 DF97 C2B1 23BF CC8C 6BDD 1403 F4CA │
    ⠈⠳⣄⠀⠀⠀⠀ ╰────────────────────────────────────────────────────╯

    -----BEGIN PGP SIGNATURE-----

    iQIzBAEBCgAdFiEEmwPruYMA35fCsSO/zIxr3RQD9MoFAmZu41gACgkQzIxr3RQD 9MqcTA//Q83WWebGuH38oO3uRT3X3HjNrSH9z5Ycs95TLUROn7OK0+6m4Y6LSAQv 7v+dfK32Fwn6nx8pnhUNdckEb6PPlVbyk5zD0nAu/6pGDgkCFpRKhShyetwqF261 8zTj9Fx3lbJMXRqrpYJpgBFwpl09uroHKeENKxunjsfX7Vhss3xger8ZH59Jy/NP dCVTKjc4rjw4WXBSsbbwjCigMSHQ/FsZM513WeQJOnDsoryi3XSJxoyBCsvXQEaT XAeq5CofSJLv0VpGb2uJzz6j/K4n5uyaZrYYmSLEk/DAnc2QlgvFIiZTsJgL6sjG 3pWonZOqZz7xuTFIu//Jx/zPHSjh9nGhMg4VY+YKNXb
  • From Matthias Urlichs@21:1/5 to All on Sun Jun 16 16:30:01 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------iBKhbXOZEupXpT0uphXjC4rx
    Content-Type: multipart/alternative;
    boundary="------------32WImGoB5zIjxPoJj00FxvAA"

    --------------32WImGoB5zIjxPoJj00FxvAA
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMTMuMDYuMjQgMTA6MjYsIFNlYW4gV2hpdHRvbiB3cm90ZToNCj4gWWVzLiAgQSBwcm9w b3NhbCB0aGF0IGhhcyBub3QgeWV0IGVuZ2FnZWQgd2l0aCB0aGUgY29tcGxleGl0aWVzIG9m DQo+IDMuMCAocXVpbHQpIGlzIG5vdCBvbmUgaW4gd2hpY2ggd2UgY2FuIHlldCBoYXZlIGFu eSBjb25maWRlbmNlLg0KDQpUaGUgcHJvcG9zYWwgc2ltcGx5IGludGVuZHMgdG8gZG8gd2hh dGV2ZXIgdGhlIHVwbG9hZGVyIHdvdWxkIGRvIHRvIA0KYnVpbGQgdGhlIHNvdXJjZSBwYWNr YWdlIGZyb20gYSB0YWdnZWQgZ2l0IHdvcmt0cmVlLCBleGNlcHQgaW4gYSANCmNvbnRyb2xs ZWQgYW5kIHNhbmRib3hlZCBlbnZpcm9ubWVudC4NCg0KSSBmYWlsIHRvIHVuZGVyc3RhbmQg d2h5IHdlIHNob3VsZCBoYXZlIGFueSBsZXNzIGNvbmZpZGVuY2UgaW4gdGhhdCB0aGFuIA0K aW4gd2hhdGV2ZXIgdGhlIHVwbG9hZGVyIGRvZXMgbWFudWFsbHkgdG8gYWNoaWV2ZSB0aGUg c2FtZSByZXN1bHQgKHdlIA0KaG9wZSEhKS4NCg0KLS0gDQotLSByZWdhcmRzDQotLSANCi0t IE1hdHRoaWFzIFVybGljaHMNCg0K
    --------------32WImGoB5zIjxPoJj00FxvAA
    Content-Type: text/html; charset=UTF-8
    Content-Transfer-Encoding: quoted-printable

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
    <div class="moz-cite-prefix">On 13.06.24 10:26, Sean Whitton wrote:<br>
    </div>
    <blockquote type="cite"
    cite="mid:[email protected]">
    <pre>Yes. A proposal that has not yet engaged with the complexities of 3.0 (quilt) is not one in which we can yet have any confidence.</pre>
    </blockquote>
    <p>The proposal simply intends to do whatever the uploader would do
    to build the source package from a tagged git worktree, except in
    a controlled and sandboxed environment.</p>
    <p>I fail to understand why we should have any less confidence in
    that than in whatever the uploader does manually to achieve the
    same result (we hope!!).<br>
    </p>
    <pre class="moz-signature" cols="72">--
    -- regards
    --
    -- Matthias Urlichs</pre>
    </body>
    </html>

    --------------32WImGoB5zIjxPoJj00FxvAA--

    --------------iBKhbXOZEupXpT0uphXjC4rx--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZu6S4FAwAAAAAACgkQcs+OXiW0wpMm 8Q/9EWociLmYTyVZCyvE2eWSVehAzPgvhE3hEl3aJVOiNfCS/dKL9FbJ3QikGCdUzZ87x3Wjayop T4vDAseM7A0iNll/1QdaUWVKoloEb0yyDDiUqVzQ5FDTm2qXzNJGKl8TmAyXdgL/lb7stqyqq5oC X9qhgI8JMl7zkqW/gBvr6mHmMLiURpC7bLIQo6KL3ciwfwdJcUMZTja92QfwBKhQRt7lhQK9aV8R MeYh0k8bfQ66gvRU+8fEiRt9igJ5prRshb3qdh28kzKPM8gRsaJinRx9+sWM5Pz6sg716XNzHyWG fRWZkUgHvD1AOWUvJoeOGNPg8oRYGkJXfBXQLXMrpVyeR5Ep1QPLcsWyr/B2aXsFPmgHKG9hQpsn kwcGM7M9qUc0gEfRMH5JSVDqxseL7oO2s1uocu6SYijrYRI8wvP5P5wFCz7nurNIcBD1Gp1uWuXn 0WBXrC/KKnRFkJGlKSRYOOx55v2tDxd/7NEQo4M2nWhFu1hGY3Z3el5DsiWFILqv0AbOuiSE5BCT 2WzCaQV8m2H86ywgPv40XpXO/He7nIlM95qP86LUnw5fu/R33VyVJBTvDevGVr+2ZULUWRcWTSwZ No/bcsPrMZCeug/308+utSr4LZyu1Zn6KJDwiXx5p3SlcCncoCclopnUiiaJfzO1StP7FSvygTx1 bLU=
    =IsSa
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
  • From Matthias Urlichs@21:1/5 to All on Sun Jun 16 16:40:02 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------TS44vj10B3e7WZXBfBc0zGw7
    Content-Type: multipart/alternative;
    boundary="------------hiIsKK51meWHtX5LYolFHy6I"

    --------------hiIsKK51meWHtX5LYolFHy6I
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMTMuMDYuMjQgMjE6NTEsIEd1bm5hciBXb2xmIHdyb3RlOg0KPiBCdXQgdGhlcmUgY2Fu IGJlIG1hbnkgcmVhc29ucyB0aGUNCj4gdGhyZWUgb2YgdXMgKGtleXJpbmctbWFpbnRzKSBh cmUgdW5yZWFjaGFibGUgZm9yIHNldmVyYWwgaG91cnMuDQoNCk1heWJlIGEgInNlbmQgeW91 ciBrZXkgcmV2b2NhdGlvbiBjZXJ0aWZpY2F0ZSBoZXJlIGFuZCB0aGlzIHdpbGwgYmUgZG9u ZSANCmF1dG9tYWdpY2FsbHkiIGVtZXJnZW5jeS1yZXZvY2F0aW9uQGQubyBlbWFpbCBhZGRy ZXNzIG1pZ2h0IGJlIGEgZ29vZCANCmlkZWEg4oCmPw0KDQpIb3dldmVyIHRoaXMgaXMgbW9z dGx5IHVucmVsYXRlZCB0byB0aGUgY3VycmVudCBHUiBkaXNjdXNzaW9uIElNSE8uDQoNCi0t IA0KLS0gcmVnYXJkcw0KLS0gDQotLSBNYXR0aGlhcyBVcmxpY2hzDQoNCg== --------------hiIsKK51meWHtX5LYolFHy6I
    Content-Type: text/html; charset=UTF-8
    Content-Transfer-Encoding: quoted-printable

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
    <div class="moz-cite-prefix">On 13.06.24 21:51, Gunnar Wolf wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:[email protected]">
    <pre>But there can be many reasons the
    three of us (keyring-maints) are unreachable for several hours.</pre>
    </blockquote>
    <p>Maybe a "send your key revocation certificate here and this will
    be done automagically" <a class="moz-txt-link-abbreviated" href="mailto:[email protected]">[email protected]</a> email address
    might be a good idea …?</p>
    <p>However this is mostly unrelated to the current GR discussion
    IMHO.<br>
    </p>
    <pre class="moz-signature" cols="72">--
    -- regards
    --
    -- Matthias Urlichs</pre>
    </body>
    </html>

    --------------hiIsKK51meWHtX5LYolFHy6I--

    --------------TS44vj10B3e7WZXBfBc0zGw7--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZu9o4FAwAAAAAACgkQcs+OXiW0wpPV 7w/8DuTcMaSdWty8UFC69uyOSLlwaYTSm2ayjDgYm1S6e6M9xGzxntTXxWEsKca3TWlxx5ErjhCu PmxeJggCi1TI6XJ84OnKhy2SfzvvUW17qc6Fsc3nECiTaV15cPYZSN+2lQ6BebRNPZwCf6kYUXdt q0UVjhLQd+nxz6r0TNnAAlG+DUECXlz0NW665fzsEel82Ac5s+pi8z1uA2Ivr+XETHYdTeMnsof3 xzUHgNgJRjRfr8OKyLuvCv4r6NWx4KIhsH0Fjojp3tFO1qzjOyckgAyJIH7dT9huzR3rAclN11Jf ChWgGZjx+TSZWlGo15NlzjU5O0wLrx27xG10sc2tDRkJMBMGhTJvv3UIXso7RBVR1ziKhMvhz1hU Bdr/80kzqrMARus+at3vvXsS6IASflHgD+k24mN6Dltez183uOkO8I7UYZwlfbM/phfbsWsDVk3j yKj8truo471z7I+maSL0vhxau7LzppxAvNkupUmmubtbMsY6HhIzRY1Dzcah7wWhv7xSalsy11py LpGZKT9S5fxVoiSyapVJnLlCSaR6duhy1/vuZYM8k1VM9AKs1ljJ0F1Uo6jDpmeIm0fZnesX9UWk XFb7UylqJzeFgEU/VgdMuupnlcjSzWlJ4MlWqO6TBiezAlq/dh2KYf+uMr2WK9bcSmOXZ0iEolWU Fd8=
    =aUY9
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
  • From Bart Martens@21:1/5 to Matthias Urlichs on Sun Jun 16 17:40:07 2024
    On Sun, Jun 16, 2024 at 03:31:25PM +0200, Matthias Urlichs wrote:
    On 13.06.24 10:26, Sean Whitton wrote:
    Yes. A proposal that has not yet engaged with the complexities of
    3.0 (quilt) is not one in which we can yet have any confidence.

    The proposal simply intends to do whatever the uploader would do to build
    the source package from a tagged git worktree, except in a controlled and sandboxed environment.

    I fail to understand why we should have any less confidence in that than in whatever the uploader does manually to achieve the same result (we hope!!).

    One could argue that neiter matter. It is the outcome that matters: the source package itself. That's what gets distributed.


    --
    -- regards
    --
    -- Matthias Urlichs





    --

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Kitterman@21:1/5 to All on Sun Jun 16 11:20:26 2024
    On Sunday, June 16, 2024 12:26:48 AM EDT Sean Whitton wrote:
    Hello,

    On Sat 15 Jun 2024 at 06:03pm +02, Joerg Jaspert wrote:
    On 17258 March 1977, Sean Whitton wrote:
    So, why am I proposing a GR?

    This one took me by surprise, honestly.

    Looking into my notmuch, the last time tag2upload came up in my
    ftpmaster inbox was in 2019. Between then and now there doesn't appear to be any serious contact with us about it. There had been mentionings on
    some mailing list somewhere, but nothing coming to us, that I can
    find.

    In recent years, you have stepped in with your expertise in a number of emergencies, and I am most grateful for that.

    But with respect, you have not otherwise been active in the ftpmaster
    team, and you didn't significantly participate in the original
    tag2upload discussions. So I think you may be missing things.

    We have been seeking help behind the scenes over the past four years.
    No progress was made, so we decided to draft a GR.

    Even then, back in 2019, one of the major points that ftpteam members raised had been "the archive has to be the final point to check if an upload is accepted" and that we do retain *all* user signatures of
    source packages, and that such a service must provide the same level
    of possible verification. Some other requirements on the signature too (collision resistant, need to be verifyable with only stuff included
    in the source package). Also something about not using Perl, but meh,
    lets ignore that one here.

    So, 5 years of (hopefully) development, but the major point (this should *not* bypass/circumvent archive upload checks and restrictions) did not
    get addressed. More like, entirely ignored.

    Like Russ, I'm grateful for how you've set out some things more clearly
    in this message. I'm looking forward to reading your reply to him.

    I would ask you not to characterise the disagreement we are having as
    merely over a technical detail.
    It's the essence of tag2upload that the tag metadata is minimal, and
    easily generated by a short shell script, like git-debpush.

    We did not ignore your position: we argued against it. No-one from
    ftpmaster has responded to our arguments for wanting the metadata to be minimal. So as I say, I'm looking forward to your reply to Russ.

    I don't think this is fair. Joerg is paraphrasing an email he sent the last time (that I can find) this was discussed[1]:

    I currently do not have too deep a thought on how good their
    implementation is. Just one thing I've seen picked at multiple times,
    and in different places: The current implementation appears to move away
    the final integrity check linking an upload to a person away from the
    archive software to some other.

    Thats a no-go.

    Note: I do not say it must be "a dsc" "a git commit" or "a something"
    that is used for this check. That is an implementation detail. But the
    final check/link of an upload with a maintainer(s key) has to be "in"
    the archive. Systems before it can *additionally* do any number of them,
    but the final one is in dak.

    My local mail archive is incomplete, but I only find one reply from the tag2upload developers that proposes some possible mechanisms to address this concern [2]. I don't find any arguments against it or claims that the metadata has to be minimal. As far as I can tell, none of the design changes Ian suggested might mitigate this concern are included in the current design.
    While I'm not an FTP Master, I have been active on the team as an FTP
    Assistant during most of this time.

    Before the posting of the draft GR, I simply have no evidence of any communication regarding tag2upload with the FTP Team since 2019. Since 2019,
    I have one mention of tag2upload in an email that by either of you in a
    message Ian sent to debian-project in 2023.

    I know we are supposed to assume good faith, but this whole thing certainly felt like an ambush to me when you proposed it.

    Scott K

    [1] https://lists.debian.org/msgid-search/[email protected]
    [2] https://lists.debian.org/msgid-search/ [email protected]
    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEE53Kb/76FQA/u7iOxeNfe+5rVmvEFAmZvAroACgkQeNfe+5rV mvFcgw/+N8IDEYzOGphYrSn+IvxiWqe5eLWqrk9szsIDfZ5vzm0qWvRG3auxs4gd MXNrAwk5wB1pxeQ8q356ry/hHIFdZ99m8idx+qQt9J+Ok5W5WIqQcmbuFHGNtL6s E8LbjoHJBJ4pix1+gaH7jOmf7n9TY7L78CcIV017zD5lzhce9ch619RF9tHcc43e JwqUveyi78S3LPny3JQKBZ/qHXgZo4SqkJIju0pQcbpV0yiy1mSo4CIz0JrJmCJ1 CjzPaeNQpx4YTLygjhOpUoqW/0CS1CyqEmsa0b1rmjzEfw5v3RbVDFOchBR7HSxu XQ57oAP67m3B2uVgryq0sHfCMUprr1X8JV06nERHdOz+h/tQcHJo/k2+XdcqZs9s 9KyH2nfZaUoZoHaPeftPmZeNipW/7RE9/+4VvrhtBka1s0piVsF7tbFeK11dfKbF ek5CPnWYcEnk4gjqst6kgu28BonfBt4LqtPSKCDxkZJuZtLs9RUC0cdN1ud0/pZp hLsCi29VgC/ZC5s4qlRKlX47ztYp53NOWDT4Xr5XXCBDCmwV89aQCQ9JKkksmEtJ RSJIpXOWor5zNLoHCAtO53QN1jNYdfe9vcBBysublansBC95oX0CpiPk+pPr/qsb OLpZXRu6vKNiMw1iisld1A0j9rxW4h4ZwJFJTwfJhgcoPQ53fWM=
    =GSyt
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Matthias Urlichs on Sun Jun 16 18:10:01 2024
    Matthias Urlichs <[email protected]> writes:
    On 15.06.24 00:37, Russ Allbery wrote:

    dak should not be doing the source package transformation, because that
    is a much more complicated process and therefore a larger security
    attack surface. That's why it's done in a sandbox with a bunch of
    privilege separation.

    … which incidentally is far more secure than what Joe Random DD does
    when he generates a source package.

    The difference of course is that if somebody manages to compromise
    tag2upload then they could insert backdoors into any and all Debian
    packages, not just Joe's. On the other hand we can mitigate this by
    careful auditing and monitoring. There is no auditing and monitoring on
    Joe's development system, and the XZ backdoor has shown that you don't
    even need to compromise Joe; a hit on the tarball that Joe uses is sufficient.

    Yes. Exactly. That is precisely the security trade off that I see.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to [email protected] on Sun Jun 16 18:10:02 2024
    Timo Röhling <[email protected]> writes:

    Would it be possible for tag2upload generate some sort of log or diff of
    its operation? Then, a verifier does not have to reimplement the whole
    dgit logic with all its edge cases, it merely has to apply the same tree transformation(s) as t2u and verify that this will indeed produce the
    source package from the signed Git tag.

    I believe that's what tag2upload pushes to the dgit-repos server, although
    I'm not sure that exactly matches what you're asking for.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Timo =?utf-8?Q?R=C3=B6hling?=@21:1/5 to All on Sun Jun 16 18:50:01 2024
    * Russ Allbery <[email protected]> [2024-06-16 09:02]:
    I believe that's what tag2upload pushes to the dgit-repos server,
    although I'm not sure that exactly matches what you're asking for.
    I was pondering over a way to securely link the Git tag with the
    upload. I think it needs to be a representable as a file that can be
    signed and uploaded together with the source package; this enables
    dak (or anyone else for that matter) to verify that the Git tag
    corresponds to the upload and simultaneously serves as an audit
    trail for whatever t2u deemed necessary to do.

    A Git patch might fit the bill, it depends whether you consider it
    sufficient to compare the (extracted) source trees or if you want to
    be able to reconstruct a bit-identical copy of the source package
    tarballs.


    --
    ⢀⣴⠾⠻⢶⣦⠀ ╭────────────────────────────────────────────────────╮
    ⣾⠁⢠⠒⠀⣿⡁ │ Timo Röhling │
    ⢿⡄⠘⠷⠚⠋⠀ │ 9B03 EBB9 8300 DF97 C2B1 23BF CC8C 6BDD 1403 F4CA │
    ⠈⠳⣄⠀⠀⠀⠀ ╰────────────────────────────────────────────────────╯

    -----BEGIN PGP SIGNATURE-----

    iQIzBAEBCgAdFiEEmwPruYMA35fCsSO/zIxr3RQD9MoFAmZvFfkACgkQzIxr3RQD 9Mr+pQ/+JqR+oVyTeIBtEGF0q2rz1ZS8aE/yfd6wRcVp3eNnX7qsQpKT9holBisg V0YyYrydO7ZhdLB8XlGGaCXr/Y8Ysb0Rdr2uly28xm5g1Kndks8nev4f95IdVnq5 dlywFPR0oSKLKOMt1O9urhS5cNN0UonegGM38K5djBaIoV+V327v7Ys1ZarXYYoZ /wsffDdU2ohCXjPtkz2mxu5NxJFnOX20nnMUs28Xv4CRYiI1e9USjjjLL0yYHrMs ZHROu8ObZ6CAN1XI029LqpdrrL+iTZfubTiC+JKkQXaL/AI/SzWkWsJfFaq4NoDP +napPmlg+3M50vzhqU6efROYc25ODsKQciZMU8mzi5U
  • From Matthias Urlichs@21:1/5 to All on Sun Jun 16 20:30:01 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------GKjVmY0m7Wa515vMAq1b68o4
    Content-Type: multipart/alternative;
    boundary="------------SJYosmmLpTCT73aqLqmPUot5"

    --------------SJYosmmLpTCT73aqLqmPUot5
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMTMuMDYuMjQgMTM6MDAsIElhbiBKYWNrc29uIHdyb3RlOg0KPiBpdCdzIHBhcnQgb2Yg dGhlICJwcmVmZXJyZWQNCj4gZm9ybSBmb3IgbW9kaWZpY2F0aW9uIiBhcyB0aGUgR1BMIGhh cyBpdC4NCg0KV2VsbCwgdGhhdCdzIGEgd2hvbGUgJ25vdGhlciBrZXR0bGUgb2YgZmlzaC4N Cg0KT24gb25lIGhhbmQgSSBhZ3JlZSB3aXRoIHlvdS4gUHJldHR5IG11Y2ggYW55dGhpbmcg eW91IGRvIHRvIGEgDQpub250cml2aWFsIHNvdXJjZSBhcmNoaXZlIHJlcXVpcmVzIGFjY2Vz cyB0byBpdHMgaGlzdG9yeS4NCg0KT24gdGhlIG90aGVyIGhhbmQsIHNvdXJjZSBjb2RlIGlz IGEgaGVhcCBvZiBmaWxlcywgb3JnYW5pemVkIGludG8gDQpkaXJlY3Rvcmllcy4gVGhlIHBy ZWZlcnJlZCBmb3JtIG9mIG1vZGlmaWNhdGlvbiwgc3RyaWN0bHkgc3BlYWtpbmcsIGlzIA0K Y2hhbmdpbmcgb25lIG9yIG1vcmUgb2YgdGhlc2UgZmlsZXMgd2l0aCBhIHRleHQgZWRpdG9y LiBUaGUgcHJvY2VzcyBvZiANCnJlY29yZGluZywgb3JnYW5pemluZyBhbmQgZGVwbG95aW5n ICgiY29udmV5aW5nIiBpbiBHUEwgbGFuZ3VhZ2UpIHRoZSANCmRpZmZlcmVuY2UgYmV0d2Vl biBvbGQgYW5kIG5ldyB2ZXJzaW9ucyBvZiB0aGVzZSBmaWxlcyBpcyBub3QgbG9uZ2VyIA0K cGFydCBvZiBtb2RpZmljYXRpb24gcGVyIHNlIGFuZCB0aHVzIGlzbid0IGNvdmVyZWQgYnkg dGhlIGxpY2Vuc2Ug4oCTIGl0IA0Kb25seSB0YWxrcyBhYm91dCB0aGUgZmlsZXMgdXNlZCB0 byBidWlsZCB0aGUgY3VycmVudCB2ZXJzaW9uLCBub3QgaG93IA0KeW91IGdvdCB0aGVyZS4N Cg0KLS0gDQotLSByZWdhcmRzDQotLSANCi0tIE1hdHRoaWFzIFVybGljaHMNCg0K --------------SJYosmmLpTCT73aqLqmPUot5
    Content-Type: text/html; charset=UTF-8
    Content-Transfer-Encoding: quoted-printable

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
    <div class="moz-cite-prefix">On 13.06.24 13:00, Ian Jackson wrote:<br>
    </div>
    <blockquote type="cite"
    cite="mid:[email protected]">
    <pre>it's part of the "preferred
    form for modification" as the GPL has it.</pre>
    </blockquote>
    <p>Well, that's a whole 'nother kettle of fish.</p>
    <p>On one hand I agree with you. Pretty much anything you do to a
    nontrivial source archive requires access to its history.<br>
    </p>
    <p>On the other hand, source code is a heap of files, organized into
    directories. The preferred form of modification, strictly
    speaking, is changing one or more of these files with a text
    editor. The process of recording, organizing and deploying
    ("conveying" in GPL language) the difference between old and new
    versions of these files is not longer part of modification per se
    and thus isn't covered by the license – it only talks about the
    files used to build the current version, not how you got there.</p>
    <pre class="moz-signature" cols="72">--
    -- regards
    --
    -- Matthias Urlichs</pre>
    </body>
    </html>

    --------------SJYosmmLpTCT73aqLqmPUot5--

    --------------GKjVmY0m7Wa515vMAq1b68o4--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZvK08FAwAAAAAACgkQcs+OXiW0wpP2 nBAAjApLQAgdMhiHtp5f0UIMEFD65uRFI9lr6DEAFHOD02+iQnLACpp2VcRZ23clLN3yte81rKVs /yqt5kkDL5ozNACp+3xKpynVeODtUZZtG+Y7nW0HTNdAH36nHsOIu0P+jDpXdp1InMKRUOCv/4lm 2FfUStO+XkdxSFMNAmSX5zqCZbtgeXVlOdH624U3xcY+VJzcJ+VU7GJz04M60vLSv8+8zgPryh8i /SrrCis1psoAMoxYE4bXQ2wTrko72IzkvtdFSNs01nxlEn8evcLp2CpIEwMh+B5yTokTzjssDM0E 1XbbWir9X30S8mMVCmi+aOmlZut273n5Wa7Uj32uiCu5N3oQSSOJ5XE7d3Dnij/kV3S5L4NNHdBl K+bydrFEOiTUfQjGhqo8LW71/HYnKLmUfl7HSBtWhfMPRr4AsCMmxEOPn9XjoqOkAaM8jGcqr2tr q2nkFKW6t1vdGzafkycZ+xSd9AUQ76r607EcH9TA81Mf9+qarcgi35lQyux3rYVhGeMyg5Hxd+Tm z3//BBNWQTTEqQFbpVGuvk+Jhy0xW7OC017pqOKavkUhC1r3bpUoWlJee3lR4UWWlISGPAF/OQEl mgQB17UaqV8iaAmkP3RovF0sMYqe8kHyLWitLoJtQUwL1qBf3QsCYqLHnrqyR1TJkSXfwTq+Y1/A bSc=
    =4D5q
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
  • From Gunnar Wolf@21:1/5 to All on Sun Jun 16 20:50:01 2024
    Matthias Urlichs dijo [Sun, Jun 16, 2024 at 04:28:29PM +0200]:
    On 13.06.24 21:51, Gunnar Wolf wrote:
    But there can be many reasons the
    three of us (keyring-maints) are unreachable for several hours.

    Maybe a "send your key revocation certificate here and this will be done automagically" [email protected] email address might be a good idea …?

    However this is mostly unrelated to the current GR discussion IMHO.

    IIRC, when we had to deal with urgent key removals it was usually not
    an action following a revocation, but either people losing their keys
    without being protected against it (so no revocation certificate is
    available) or people being limited/expelled from the project (so the
    key remains active and valid, but its relation to the project changes
    status).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Sun Jun 16 21:00:01 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------02wYJoBuYa9yWjzM0ypnOVL2
    Content-Type: multipart/alternative;
    boundary="------------ZcD32qXVXKTBnM5vHzAlGILy"

    --------------ZcD32qXVXKTBnM5vHzAlGILy
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMTQuMDYuMjQgMTE6MzgsIFNpbW9uIE1jVml0dGllIHdyb3RlOg0KPiBXaXRoIHRoZSB3 aG9sZSBnaXQgaGlzdG9yeSBhcyBhIGJ1bmRsZSwgYW5kIG91ciBjdXJyZW50IHBvbGljaWVz IGFyb3VuZA0KPiBGcmVlbmVzcywgdGhlIG1haW50YWluZXIgYW5kIHRoZSBmdHAgdGVhbSB3 b3VsZCBiZSByZXNwb25zaWJsZSBmb3INCj4gZW5zdXJpbmcgYW5kIHZlcmlmeWluZyB0aGF0 IGV2ZXJ5IHBhc3QgY29tbWl0IHJlYWNoYWJsZSBmcm9tIHRoZSBidW5kbGUNCj4gaXMqYWxz byogIEZyZWUsIHdoaWNoIGlzIGEgbXVjaCwgbXVjaCBsYXJnZXIgdGFzayAtDQoNCldvdWxk IHRoZXkgcmVhbGx5PyBNYXliZSB3ZSBuZWVkIHRvIGRpc2N1c3MgdGhhdC4NCg0KRG8gd2Ug ZGVsZXRlIGFsbCBvdXIgb2xkIHNuYXBzaG90cyBmcm9tIHNuYXBzaG90LmQubyBpZi93aGVu IGluZnJpbmdpbmcgDQpvciBub24tRnJlZSBjb250ZW50IGlzIGRldGVjdGVkIGluIGEgcGFj a2FnZT8NCkFGQUlLOiBubyB3ZSBkb24ndC4NCg0KU28gd2h5IHNob3VsZCBjb250ZW50IHRo YXQgaXMgaW4gdGhlIGJ1bmRsZSAoPSB1cHN0cmVhbSBicmFuY2ggb2YgdGhlIA0Kc291cmNl IGFyY2hpdmUpIGJ1dCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGJyYW5jaCB0aGF0J3Mg dXNlZCB0byANCmJ1aWxkIG91ciBwYWNrYWdlcyBiZSBoYW5kbGVkIGFueSBkaWZmZXJlbnRs eT8gQm90aCBjb250aW51ZSB0byBiZSANCmFjY2Vzc2libGUgZnJvbSBvdXIgYXJjaGl2ZXMs IGFsYmVpdCBpbiBhIGZvcm0gdGhhdCdzIG5vdCBpbW1lZGlhdGVseSANCmFjY2Vzc2libGUg 4oCTIGV2ZW4gbW9yZSBzbyBpZiB3ZSBkb24ndCB1c2UgYSBuYW1lZCBicmFuY2ggZm9yIHRo ZSANClVwc3RyZWFtIGdpdCBhcmNoaXZlICh3ZSBkb24ndCBuZWVkIHN1Y2ggYSBuYW1lZCBi cmFuY2ggaW4gYW55IGNhc2UpLg0KDQo+ICAgYW5kIGV2ZXJ5IHRpbWUgc29tZQ0KPiBwYXN0 IGNvbW1pdCBjb250YWluZWQgbm9uLUZyZWUgY29udGVudCwgdGhlIG1haW50YWluZXIgd291 bGQgaGF2ZSB0bw0KPiBhbWVuZCB0aGF0IGNvbW1pdCB0byByZW1vdmUgaXQsIGFuZCB0aGVu IHJlYmFzZSB0aGUgcmVzdCBvZiB0aGUgaGlzdG9yeQ0KPiBmcm9tIHRoYXQgcG9pbnQgb253 YXJkIChpbmNsdWRpbmcgbWVyZ2VzISkgb250byB0aGUgYW1lbmRlZCBjb21taXQuDQoNCkFz c3VtaW5nIHRoYXQgd2UgbmVlZCB0byBkbyB0aGlzIGluIHRoZSBmaXJzdCBwbGFjZSAoc2Vl IGFib3ZlKTogVGhhdCdzIA0Kbm90IGEgcHJvYmxlbS4gVGhlIGdpdCB0b29scyB0aGF0IGRv IHRoZSBjbGVhbi11cCBhcmUgZGV0ZXJtaW5pc3RpYy4gDQpUaHVzIHdoZW4gYSBuZXcgcGFz dCBjb21taXQgaXMgZGlzY292ZXJlZCB5b3UgYXBwbHkgdGhlIGNsZWFudXAgc3RlcCB0byAN CmJvdGggeW91ciBjbG9uZSBvZiBVcHN0cmVhbSBhbmQgeW91ciBjdXJyZW50IERlYmlhbiBz b3VyY2UgcmVwb3NpdG9yeSwgDQpmb3JjZS1wdXNoIHRoZSBsYXR0ZXIsIGFuZCB5b3UncmUg YmFjayBpbiBzeW5jLiBObyByZWJhc2luZyBpcyByZXF1aXJlZC4NCg0KWWVzIHRoYXQgcmVx dWlyZXMgcnVubmluZyB0aGUgY2xlYW51cCBjb2RlIG9uIGV2ZXJ5IGNvcHksIGlmL3doZW4g c3VjaCANCnBhc3QgY29udGVudCBpcyBkaXNjb3ZlcmVkLiBGb3J0dW5hdGVseSB0aGF0IHNo b3VsZCBub3QgaGFwcGVuIHRvbyANCm9mdGVuLiBJIHdvdWxkbid0IGNvbnNpZGVyIHRoaXMg dG8gYmUgYSBzaG93LXN0b3BwZXIsIGVpdGhlciBsZWdhbGx5IG9yIA0KdGVjaG5pY2FsbHku DQoNCi0tIA0KLS0gcmVnYXJkcw0KLS0gDQotLSBNYXR0aGlhcyBVcmxpY2hzDQoNCg== --------------ZcD32qXVXKTBnM5vHzAlGILy
    Content-Type: text/html; charset=UTF-8
    Content-Transfer-Encoding: quoted-printable

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
    <div class="moz-cite-prefix">On 14.06.24 11:38, Simon McVittie
    wrote:<br>
    </div>
    <blockquote type="cite"
    cite="mid:[email protected]">
    <pre>With the whole git history as a bundle, and our current policies around
    Freeness, the maintainer and the ftp team would be responsible for
    ensuring and verifying that every past commit reachable from the bundle
    is <b class="moz-txt-star"><span class="moz-txt-tag">*</span>also<span
    class="moz-txt-tag">*</span></b> Free, which is a much, much larger task -</pre>
    </blockquote>
    <p>Would they really? Maybe we need to discuss that.</p>
    <p>Do we delete all our old snapshots from snapshot.d.o if/when
    infringing or non-Free content is detected in a package?<br>
    AFAIK: no we don't.</p>
    <p>So why should content that is in the bundle (= upstream branch of
    the source archive) but has been removed from the branch that's
    used to build our packages be handled any differently? Both
    continue to be accessible from our archives, albeit in a form
    that's not immediately accessible – even more so if we don't use a
    named branch for the Upstream git archive (we don't need such a
    named branch in any case).<br>
    </p>
    <blockquote type="cite"
    cite="mid:[email protected]">
    <pre> and every time some
    past commit contained non-Free content, the maintainer would have to
    amend that commit to remove it, and then rebase the rest of the history
    from that point onward (including merges!) onto the amended commit.</pre>
    </blockquote>
    <p>Assuming that we need to do this in the first place (see above):
    That's not a problem. The git tools that do the clean-up are
    deterministic. Thus when a new past commit is discovered you apply
    the cleanup step to both your clone of Upstream and your current
    Debian source repository, force-push the latter, and you're back
    in sync. No rebasing is required.</p>
    <p>Yes that requires running the cleanup code on every copy, if/when
    such past content is discovered. Fortunately that should not
    happen too often. I wouldn't consider this to be a show-stopper,
    either legally or technically.<br>
    </p>
    <pre class="moz-signature" cols="72">--
    -- regards
    --
    -- Matthias Urlichs</pre>
    </body>
    </html>

    --------------ZcD32qXVXKTBnM5vHzAlGILy--

    --------------02wYJoBuYa9yWjzM0ypnOVL2--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZvMYQFAwAAAAAACgkQcs+OXiW0wpM9 ow//VGk9tknKRlO7ELPAjb7BdqU9nviEKU6Rc7eENBufw/AHTG8l9i0qBHvSsQ+OpYcZjBJyGgC5 tJASbQ5wGBWJ+7akbuJS1RP+JMeUDJJDfEsmQqmR2H8OAxmRabrN9n24Twm+BNEzPm91MmTdmB+2 cZxYbVOQtQ0CgmEQUJkjvl7sRXVUimLVmPz8JvN4KeRsnT9rNdSbNet1GpPUPtIaOjQaCndIYD1q 7y4/Gm0xh+vvMX+iuzxgeCkZ1yJHQCYE8uZCQttRmij9un7faAD0Mi8LAA9wcrcmFmnP2Gs7IlbJ sIiV8FDetl2UvA8gsLNrpgs9rOLOs4Tq6P130b3d/KOnjW939JhymIhuEVAwQmKjP3OIZ8pHtiUr 5BbiuegBhsJNo3HDfA+vVelXMOu/pC1VTI3sEr0Sy9mVN14mI1U4TPjMGJoQBPWe1d8QihkmY7aD XDq7R5Zt+NkmkuBFXSXvwp0xjDYZmjigI2BSiNLUORpkK6Htv2qOX6qVW+0jPVeoFjm6T9cmJP3X jlyC4Xql3s7YbB8YB+F/7K7pDhArp4DASsh0RQj0uAB4nH+aL7QAMROKz/5rLN9UBvAjAE17GPG7 EPhT/RUuIl6DMdIvOktPVcveHx9FTxt9x6sKzUC6mcykXJCGG7zRFMqDzzAnVWRSbHO9njL/aDRy FKg=
    =YfZM
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
  • From Adam D. Barratt@21:1/5 to Matthias Urlichs on Sun Jun 16 22:00:03 2024
    On Sun, 2024-06-16 at 20:40 +0200, Matthias Urlichs wrote:
    Do we delete all our old snapshots from snapshot.d.o if/when
    infringing or non-Free content is detected in a package?
     AFAIK: no we don't.

    Access to packages on snapshot.d.o has been blocked several times in
    the past due to issues with distributabiity - see #763613 for example.

    Regards,

    Adam

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joerg Jaspert@21:1/5 to Sean Whitton on Sun Jun 16 22:40:03 2024
    On 17262 March 1977, Sean Whitton wrote:

    Looking into my notmuch, the last time tag2upload came up in my
    ftpmaster inbox was in 2019. Between then and now there doesn't
    appear to
    be any serious contact with us about it. There had been mentionings
    on
    some mailing list somewhere, but nothing coming to us, that I can
    find.
    But with respect, you have not otherwise been active in the ftpmaster
    team, and you didn't significantly participate in the original
    tag2upload discussions. So I think you may be missing things.

    I sure haven't been as active as others, yes. But I still receive all
    mails going to ftpmaster and do look at those. I'm also in the relevant
    IRC channels and follow them.

    I may have missed things, but for sure there hasn't been any in mail
    since 2019 going to ftpmaster.

    We have been seeking help behind the scenes over the past four years.
    No progress was made, so we decided to draft a GR.

    Which behind the scenes? To who did you talk? I'm only missing one
    answer currently, but (leaving out Ansgar, we know his view) none of the
    other FTPMasters had any contact around t2u since 2019. So to who did
    you talk, where did you try to get us moving on it, where did things
    fail to get through between 2019 and now?

    So, 5 years of (hopefully) development, but the major point (this
    should
    *not* bypass/circumvent archive upload checks and restrictions) did
    not
    get addressed. More like, entirely ignored.

    Like Russ, I'm grateful for how you've set out some things more
    clearly
    in this message. I'm looking forward to reading your reply to him.

    Next up.

    I would ask you not to characterise the disagreement we are having as
    merely over a technical detail.

    You see this as personal? I don't, but if it is not technical, what
    else?

    It's the essence of tag2upload that the tag metadata is minimal, and
    easily generated by a short shell script, like git-debpush.

    From what I think right now, what we want would fit this.

    --
    bye, Joerg

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Philip Hands@21:1/5 to Russ Allbery on Sun Jun 16 23:30:01 2024
    Russ Allbery <[email protected]> writes:

    Marco d'Itri <[email protected]> writes:
    [email protected] wrote:

    My understanding is that the problem with this design from their
    perspective is that it requires a fat client on the uploader's system,
    and whole point of tag2upload is to stop requiring a fat client on the
    uploader's system. In particular, it requires all the code to
    reconstruct the source package from a Git tree be installed locally,
    which is basically a full dgit implementation.

    Does it? What if both the tag2upload client and server implemented
    instead some very simple serialization and canonicalization algorithm
    over the source package?

    The serialization isn't the problem, constructing the source package is.
    Once you have a source package, there are lots of things you can do, but
    the problem is precisely that going from a Git tree to a source package is non-trivial and involves a whole bunch of Debian-specific code.

    We seem to be very focused on how one might reproduce the source
    package, to make sure that it can be bit-for-bit generated from the
    signed tag, which is clearly a hard thing to do.

    Do we actually need to do that at all?

    Would it not be sufficient to check that the resulting source package is
    a reasonable representation of the content pointed at by the signed tag.

    Given that we already have the source package at the point when we need
    to do this check, that really ought to be a lot easier than building the
    source package in the first place.

    If we had a tool that did that check, such that you could feed it a
    source package and a tag, and it would tell you if the source package
    was correctly generated from the tag, would that be enough to satisfy
    the FTP masters?

    If so, is there anything that makes it difficult to create such a tool?

    (my naive perception is that it's a lot easier to untar a tarball, and
    check that the contents match a git checkout than it is to make sure
    that git-archive is reproducible, and that this situation seems somehow analogous to that)

    Cheers, Phil.
    --
    Philip Hands -- https://hands.com/~phil

    --=-=-Content-Type: application/pgp-signature; name="signature.asc"

    -----BEGIN PGP SIGNATURE-----

    iQIzBAEBCgAdFiEE3/FBWs4yJ/zyBwfW0EujoAEl1cAFAmZvV8MACgkQ0EujoAEl 1cAFRg//WtqYQ6na/v/6yOTQTqPcnNzkij1Lhe29QDi+eFbt+CW3z/AYlU1MVmgn nmBwKwlZ0m5zEI/ft1PZ87FQRmZDJ8p8243iTncrSCzYhCOng71qy2z3YlHqNaHM AX2it4sL1CfmBce7//Ka/B3+GjsaymGws4+x2Y8j3z6hBDDH0DWo3T3HUxz5efUL KMaHAfS0rdzmddPToHOLSYysbht2KYVTjugZUhNRb7uotbU9Pu9tENVtPhlj3Fqq E4nZ3x12L59M4gr5TLX55XpQlDpIsPAI8ZdbNARjNi6kX7o48HHCNqWKo1IDniZW 9rMbGYLT8BG9BMDPV01dEIGPxoVLhCwSwcyFULKBbl0iC0JAyg92jzT32EMhIeBB 7pCNs7Dob8uZAapEcSsoOAerEbK9n3Ijxt5PeAkaFbhZnpmQ/WpQ6YCAC8rZrPk7 nsfcW10ezT6/R4B5RHDIcOfPB6r5gzi4nFlCpPxoXfQNL12yqrOgFwhG9mSG/DuO gexdRflGYIx3rawGsEYA420SzjTMZ/8N+W4IsGJmx6t5exwB8Nn/zTtO1e1so9KM X4xJZPEOD6b9NiumdJthM4K813GPp4UtSEdsHJeUUIvi/bePAcZJ5TpulstpQbxB QIIB4wkEj5l4lClFGI3jBhwEezMHRENa3A2FEPiKLNAqq6Wr4WA=2KcF
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gatewa
  • From Joerg Jaspert@21:1/5 to Russ Allbery on Mon Jun 17 00:10:01 2024
    On 17261 March 1977, Russ Allbery wrote:

    FTPMaster *is* in support of t2u, if it ends up in a way that allows
    dak
    doing the final verification/authorization of the upload, NOT needing
    to
    trust some other instance.

    Why is this your red line? Is it only that you don't want to add
    another
    system to the trusted set, or is there something more specific that
    you're
    concerned about?

    There ought to be one point that is doing this step, not many, yes.
    Includes that it is the delegated work and task description of FTPMaster
    to do this, though that can be addressed by either us ending up running
    it, or adjusting delegations. Not sure the latter ends up with happy
    people, but is one existing way.

    But even if we run it, we still think its a loss, with the current
    design proposal.

    Also, currently we have the nicety that we store all signatures directly besides the source package, available for everyone to go and check.
    Linking back to the actual Uploader, not to a random service key. You
    can take that, run a gpgv on it and via the checksums of the files then
    see that, sure, this is the code that the maintainer took and uploaded.
    You do *not* need to trust any other random key on that. Not that of tag2upload. *AND* not that of FTPMaster.

    As generating changes and dsc on the maintainer side is out (we want
    a
    git $something workflow now), that verification ought to be over the
    content. So whatever tool the maintainer ends up calling ought to
    generate a signature over the content of the package and put that
    into
    git (a tag, or whatever t2u uses).
    I want to talk about designs from the perspective of threat models and constraints, so I'm going to try to reverse engineer those from your
    proposed solution so that we can have a more structured discussion of
    the
    security properties. Please check this and make sure that I've
    correctly
    captured your thought process here:

    The threat that you are trying to protect against is a compromise of
    the
    tag2upload server. I think you're trying to find a design that meets
    the
    following constraints:

    1. You want there to be some external check on the tag2upload server
    to
    ensure that it correctly constructed a source package from the
    uploader-signed artifact.

    2. You (correctly, in my opinion) do not want dak to perform the
    construction of the source package from a Git tag, so you are
    looking
    for some other agent in the system to serve as the check on the
    tag2upload server.

    Is that correct?

    We want dak (and anyone else) to be able to say "Yes, DD/DM $x has
    signed off this content". That only works, if dak (and later, the
    public, if they want to check too) have the signature for this in a way
    they can verify it. And not just a line somewhere "Sure, $service
    checked this for you, trust us, please".

    Yes, 2. is definitely correct. This ought to be a separate thing to run
    on an own host.

    If that's right, it sounds like your solution is to push that
    verification
    work to the uploader. I know you're trying to avoid specifics, but
    let me
    make this slightly more specific so that I have something concrete to
    talk
    about. If I understand correctly, a design that you would approve
    would
    look something like this:

    Unsure those are the right words. We want to have the uploader create a signature over the content they want to have appear in the archive. In a
    way, that this signature can be taken and placed beside the source, and
    then independently verified. *Currently* this is done using .dsc files.

    1. The uploader performs the work to transform a Git tree into an
    unpacked
    source package and calculates a Merkle tree hash of that unpacked
    source package or something equivalent.

    2. The uploader creates a signed Git tag over the corresponding Git
    tree
    in the same way as in the tag2upload design but additionally
    includes
    the Merkle tree hash in the signed data.

    3. tag2upload functions in the same way as designed, starting from the
    Git
    tag, constructing the source package, and passing it to dak. It
    additionally conveys the signed Git tag object to dak in some form,
    such as a separate file.

    4. dak verifies the Git tag signature, performs normal authorization
    checks against it, unpacks the source package, calculates the same
    Merkle tree hash, and ensures that the hash matches the one in the
    Git
    tag.

    Am I correct that this is the type of design that you are asking for
    and
    that you would approve this design, modulo the normal sort of details
    that
    would need to be hashed out?

    It very much sounds like going the right way, yes.

    I basically assume that the uploader *does* need to have their source
    locally, no matter what. (Their git cloned). Or they wouldn't be able to
    work on it and package it. I also do assume that the uploader will build things, to see if the stuff they are going to "push to the archive" (and
    our users) actually does what they intended it to do - and to test it.

    So the whole machinery to create a buildable source out of whichever-of-the-git-layouts they chose for their package needs to be
    around anyways, and needs to run locally.

    And from that follows, for me, that the machine of the uploader ought to
    be able to do enough work to end up with something that can be used to
    create a signature over, which later can be used to independently verify
    that the uploaded contents match what the uploader signed.

    *Currently* this would be the .dsc file being signed including the
    checksums for the source files. In the future this can be anything, as
    long as it doesn't rely on a third-party to do magic for you to be able
    to verify it. git ls-files on two branches signed. git archive $commit|checksumtool signed. Whatever.

    If this is the case, then I think it's incorrect to say that the
    tag2upload maintainers have ignored this feedback. I can't speak for
    them, obviously, but I believe I've seen them answer essentially this feedback multiple times. My understanding is that the problem with
    this
    design from their perspective is that it requires a fat client on the uploader's system, and whole point of tag2upload is to stop requiring
    a
    fat client on the uploader's system. In particular, it requires all
    the
    code to reconstruct the source package from a Git tree be installed
    locally, which is basically a full dgit implementation.

    From rereading the 2019 thread a bit, the argument *seems* to be that
    this requires Debian specific tools and something locally doing work,
    yes. The Debian specific knowledge here is wanted to go away.

    This is a real trade off about which we can disagree! This is a
    useful
    thing for us to argue about and vote about. I agree that the design
    that
    you propose is somewhat more secure in that it adds a check on the
    security of the tag2upload server that would catch some classes of compromise, although I believe I have a substantial caveat to your
    analysis that I'll talk about more below. But it's a trade off, like
    most
    things in security: the cost is that it's still not possible to upload
    a
    Debian package via a signed Git tag with some metadata that one can
    manually construct if one wishes. A Debian uploader still has to have
    a
    Debian-specific program installed locally that does a bunch of complex transformations of a Git tree before they can trigger an upload.

    Ah well, working on things for Debian requiring something Debian
    specific does not sound bad. If i work on $domain stuff, I do have to
    have $domain specific tools and knowledge. Be that Debian, Fedora, Rust,
    Perl or whatever else.

    I do think it is possible, even with what we want, to upload using a
    signed git tag. The metadata is a bit more than what is currently
    proposed, creating it might need more than a plain stupid bash, but that doesn't appear bad to us.

    Also, the level of complexity comes from us having a trillion of
    different ways. If we want to make it easy, we could say "There is one
    upstream branch, plain upstream source is in there. One debian branch,
    debian/ goes into that. You may append -$debianrelease to the branch
    name to support our different releases. Done". And the local client for
    t2u suddenly is way simpler. Entirely optional to switch to, if you want
    to use git pushes for uploading, use it. If not, use whatever other way
    you want and are used to and continue life as you know it.

    If the disagreement is over whether that user interface property is
    worth
    the security trade off, then that's a concrete thing that we can argue
    about, but I want to make sure that this fully captures your
    objection.

    That then allows dak to do what it does now and trust the thing
    originates from the maintainer.

    I think this is probably my strongest point of disagreement with your analysis. I think you're putting more weight on this idea of
    maintainer
    intent than it can actually support, and I think your analysis of
    maintainer intent is somewhat incorrect.

    It sounds like you are assuming that the maintainer has vetted the
    thing
    that they sign. I am extremely dubious that this is the case. I
    believe
    that the typical maintainer workflow today is that the maintainer
    works on
    the package in a working directory (usually but not always in Git)
    until
    they are happy with the results. Then they run a build tool that
    generates a source package, and they blindly sign and upload that
    source
    package. They do not verify that the resulting source package matches
    their intent in their working tree apart from building binary packages
    based on it and running them.

    In other words, the intent that the maintainer who uses Git is trying
    to
    express is "upload something corresponding to this Git tree and this
    upstream orig tarball to the archive." By asking for the signature to
    be
    over the source package instead of over the Git tree, we are already
    diluting maintainer intent. The thing the maintainer signs is not the
    source code of the package; that's the Git tree. It's a build product
    of
    the source code.

    In that sense, the signature verification that the tag2upload server
    does
    is *closer* to actual maintainer intent than a signature verification
    on
    the *.dsc file. We're diluting maintainer intent by moving to the
    source
    package.

    I'm not sure how much I trust anyone actually checking everything to the
    end, yes. (Including myself).

    Still, we should find a way to keep the existing property of verifying
    what the uploader signed to upload *without* requiring a third-party
    $something to be available.

    That's one of my objections. My other objection is that I think that
    the
    uploader's system is already the weakest link in our current security
    model. Relying on it for additional security properties is something
    that
    we're currently doing, and having the uploader's system redundantly
    check
    the tag2upload server does have some security benefit, but I think
    that
    security benefit is substantially less than the benefit of, say, a reproducible source package build server in a separate security domain
    but
    with a similar secured architecture rather than whatever state the
    uploader's system is in.

    Well, if the maintainers system is broken in, it makes no difference if
    a git tag or a dsc or whatever else is signed. It all can end up
    modified by the attacker. I do not think that tag2upload or any other
    tool will provide more security, if a maintainer gets their system
    hacked.

    In other words, if the goal is to create a redudant check on the
    tag2upload server, doing that via something the uploader signs is not
    clearly better (and I think arguably worse) than having two tag2upload servers in separate security domains that perform the same operations.
    In
    both cases you're still trusting the same code to perform the source
    package transformation, but the tag2upload server has a better
    security
    model than the uploader's local system.

    The uploader will sign something either way.

    --
    bye, Joerg

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Marco d'Itri@21:1/5 to [email protected] on Mon Jun 17 01:00:01 2024
    [email protected] wrote:

    We want dak (and anyone else) to be able to say "Yes, DD/DM $x has
    signed off this content". That only works, if dak (and later, the
    public, if they want to check too) have the signature for this in a way
    they can verify it. And not just a line somewhere "Sure, $service
    checked this for you, trust us, please".
    Yes, you have been very clear from the start that this is what you want.
    But I do not think that I have seen an actual explanation of /why/ you
    want that.

    --
    ciao,
    Marco

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Louis-Philippe_V=C3=A9ron@21:1/5 to All on Mon Jun 17 06:30:01 2024
    T24gMjAyNC0wNi0xNSA1IGggMDMgYS5tLiwgUGhpbGlwIEhhbmRzIHdyb3RlOg0KPiBTZWFu IFdoaXR0b24gPHNwd2hpdHRvbkBzcHdoaXR0b24ubmFtZT4gd3JpdGVzOg0KPiAuLi4NCj4+ IFRoZSBmdHBtYXN0ZXIgdGVhbSBoYXZlIHJlZnVzZWQgdG8gdHJ1c3QgdXBsb2FkcyBjb21p bmcgZnJvbSB0aGUNCj4+IHRhZzJ1cGxvYWQgc2VydmljZS4gIFRoaXMgR1IgaXMgdG8gb3Zl cnJpZGUgdGhhdCBkZWNpc2lvbi4NCj4gDQo+IEZ1bGwgZGlzY2xvc3VyZToNCj4gDQo+ICAg IEknbSBhIGhhcHB5IGRnaXQgdXNlci4gVGhlIHN1cHBvcnQgSSd2ZSBoYWQgZnJvbSBJYW4g Zm9yIGRnaXQgKHdoZW4gSQ0KPiAgICBtZXNzZWQgdGhpbmdzIHVwLCBnZW5lcmFsbHkpIGhh cyBiZWVuIG91dHN0YW5kaW5nbHkgZ29vZCwgYW5kIGhhcw0KPiAgICBnZW5lcmFsbHkgcmVz dWx0ZWQgaW4gYSBjaGFuZ2UgdG8gZGdpdCB0aGF0IHByZXZlbnRzIG1lIChhbmQgb3RoZXJz KQ0KPiAgICBmcm9tIG1lc3NpbmcgdXAgaW4gYSBzaW1pbGFyIG1hbm5lci4gSXQgc3RyaWtl cyBtZSB0aGF0IHRhZzJ1cGxvYWQgaXMNCj4gICAgYW5vdGhlciBzdHJpZGUgaW4gdGhlIHNh bWUgZGlyZWN0aW9uLCBzbyBJJ2QgbGlrZSB0byBoYXZlIHRoZSBjaGFuY2UNCj4gICAgdG8g dXNlIGl0LCBiZWNhdXNlIEkgc3VzcGVjdCB0aGF0IGl0IHdpbGwgYWxzbyBtYWtlIGNvbnRy aWJ1dGluZyB0bw0KPiAgICBEZWJpYW4gZWFzaWVyLCBsZXNzIGVycm9yLXByb25lLCBhbmQg anVzdCBtb3JlIHBsZWFzYW50Lg0KPiANCj4gW05vdGU6IGluIHRoZSBmb2xsb3dpbmcsIEkg YW0gTk9UIHRyeWluZyB0byBzdWdnZXN0IGEgdGVjaG5pY2FsIGZpeCwgc28NCj4gICBwbGVh c2UgZG9uJ3Qgc3RhcnQgbml0cGlja2luZyB0aGUgZGV0YWlscyAtLSBpdCdzIGp1c3QgYSB0 aG91Z2h0DQo+ICAgZXhwZXJpbWVudCB0aGF0IEkgaG9wZSBtaWdodCBzaGVkIHNvbWUgbGln aHQgb24gdGhlIHNpdHVhdGlvbl0NCj4gDQo+IElmIGl0IHdlcmUgZWFzeSB0byBkZXBsb3kg YW4gaW5zdGFuY2Ugb2YgdGFnMnVwbG9hZCBpbiBteSBob3VzZSwNCj4gcG9wdWxhdGVkIHdp dGggYSBzdWIta2V5IG9mIG15IEdQRyBrZXksIEkgd291bGQgcHJvYmFibHkgc2V0IHRoYXQg dXANCj4gKGFuZCB0aGVuIHN0YXJ0IHdvcnJ5aW5nIGFib3V0IHRoZSBzZWN1cml0eSBvZiB0 aGUgc3ViLWtleSA7LSkgKS4NCj4gDQo+IElmIEkgZGlkIHRoYXQsIEkgYmVsaWV2ZSB0aGUg RlRQIG1hc3RlcnMgd291bGQgc3RpbGwgYWNjZXB0IG15IHVwbG9hZHMuDQo+IA0KPiBTaG91 bGQgdGhleT8gIG9yIGlzIGl0IHBlcmhhcHMgdGhlIGNhc2UgdGhhdCB0aGV5IGFyZSBvYmpl Y3RpbmcgdG8gdGhlDQo+IGlkZWEgdGhhdCB0YWcydXBsb2FkIGlzIGNhcGFibGUgb2YgcmVs aWFibHkgZ2VuZXJhdGluZyBhIHNvdXJjZSBwYWNrYWdlDQo+IGZyb20gYSBnaXQgdGFnLiAo SSBwZXJzb25hbGx5IHRydXN0IElhbiB3aGVuIGhlIHNheXMgdGhhdCBpdCBpcyBjYXBhYmxl KQ0KPiANCj4gSWYgSWFuIHdlcmUgdG8gb2ZmZXIgYSBob3N0aW5nIHNlcnZpY2UgZm9yIHN1 Y2ggcGVyc29uYWwgdGFnMnVwbG9hZA0KPiBpbnN0YW5jZXMsIGluIGEgd2F5IHRoYXQgaGUg YXNzdXJlZCBtZSBjb3VsZCBub3QgYmUgdXNlZCB0byBzaWduDQo+IHBhY2thZ2VzIHVubGVz cyBJIGhhZCBzaWduZWQgYSBtYXRjaGluZyBnaXQtdGFnLCBJIHdvdWxkIGJlIHdpbGxpbmcg dG8NCj4gdHJ1c3QgaGlzIGFzc3VyYW5jZXMsIGFuZCBtYXkgd2VsbCB0YWtlIGhpbSB1cCBv biB0aGUgb2ZmZXIuDQo+IA0KPiBJdCBzZWVtcyB0byBtZSB0aGF0IHN1Y2ggYSBjZW50cmFs aXNlZCBzZXJ2aWNlIGlzIG1vcmUgbGlrZWx5IHRvIGRvDQo+IHRoaW5ncyBsaWtlIGtlZXAg dGhlIGtleXMgaW4gYW4gSFNNLCBhbmQgaGF2ZSBlZmZlY3RpdmUgc2VwYXJhdGlvbiBvZg0K PiB0aGUgY29tcG9uZW50cywgdGhhbiBzb21ldGhpbmcgc2V0IHVwIGJ5IGEgcmFuZG9tIGRl dmVsb3BlciBhdCBob21lLCBzbw0KPiBvbmUgY291bGQgYXJndWUgdGhhdCBpdCdzIGdvaW5n IHRvIGJlIG1vcmUgc2VjdXJlIHRoYW4gdGhlIHNlbGYtaG9zdGVkDQo+IHZlcnNpb24uDQo+ IA0KPiBXb3VsZCB0aGUgRlRQIG1hc3RlcnMgc3RpbGwgYmUgT0sgd2l0aCB0aGF0PyAgSWYg bm90LCB3aGF0J3MgY2hhbmdlZD8NCj4gDQo+IElmIHRoYXQncyBPSywgYnV0IHRhZzJ1cGxv YWQgYXMgcHJvcG9zZWQgaXMgbm90LCBhcmUgd2UgcmVhbGx5IGRyYXdpbmcgYQ0KPiBsaW5l IGJhc2VkIG9uIHdoYXQgbmFtZSBpcyBvbiB0aGUgc2lnbmluZyBrZXk/DQo+IA0KPiBXb3Vs ZCBpdCBtYWtlIGFueSBkaWZmZXJlbmNlIHRvIHRoZSBGVFAgbWFzdGVycyBpZiB0aGVyZSB3 YXMgc29tZSB3YXkNCj4gZm9yIG1lIHRvIGFzc2VydCB0aGF0IEkgdHJ1c3QgdGhlIHRhZzJ1 cGxvYWQgc2VydmljZS9rZXkgdG8gYnVpbGQvc2lnbg0KPiBzb3VyY2UgcGFja2FnZXMgZm9y IG1lPw0KPiANCj4gRm9yIGluc3RhbmNlLCBpZiBvbmUgaGFkIHRvIHNpZ24gc29tZXRoaW5n IHdpdGggYSBHUEcga2V5IHRoYXQgbWF0Y2hlcw0KPiB0aGUgb25lIHRoYXQgbGF0ZXIgc2ln bnMgYSBncGcgdGFnLCBiZWZvcmUgdGFnMnVwbG9hZCB3b3VsZCBiZSB3aWxsaW5nDQo+IHRv IHByb2Nlc3Mgb25lJ3Mgc2lnbmVkIHRhZ3MsIHdvdWxkIHRoYXQgbWFrZSB0aGUgRlRQIG1h c3RlcnMgaGFwcGllcj8NCj4gDQo+IFBlcnNvbmFsbHksIEknbSBub3QgY29udmluY2VkIHRo YXQgd291bGQgcmVhbGx5IGFkZCBhbnl0aGluZywgc2luY2UgaWYNCj4gb25lIGhhcyBzdWZm aWNpZW50IGNvbnRyb2wgb2YgdGhlIGtleSB0byBwdXNoIGEgc2lnbmVkIHRhZywgdGhlbiBv bmUncw0KPiBhbHNvIGdvaW5nIHRvIGJlIGFibGUgdG8gc2lnbiBhIHN0YXRlbWVudCB0aGF0 IHlvdSB3YW50IHRhZzJ1cGxvYWQgdG8NCj4gYWN0IG9uIHRoYXQgdGFnLCBidXQgSSB0aG91 Z2h0IHRoYXQgZGVzY3JpYmluZyB0aGUgb3B0aW9ucyBtaWdodCBoZWxwDQo+IG5hcnJvdyBk b3duIHdoYXQgdGhlIHBlcmNlaXZlZCBwcm9ibGVtIGlzLg0KPiANCj4gT2YgY291cnNlLCB3 aXRob3V0IHNvbWV0aGluZyBkZXNjcmliaW5nIGV4YWN0bHkgd2hhdCB0aGUgcHJvYmxlbSBp cyBmcm9tDQo+IHRoZSBGVFAgbWFzdGVyJ3MgcG9pbnQgb2YgdmlldywgaXQncyB2ZXJ5IGhh cmQgdG8ganVkZ2UgdGhlIG1lcml0cyBvZg0KPiB0aGVpciBwb3NpdGlvbi4NCj4gDQo+IENo ZWVycywgUGhpbC4NCg0KVGhhbmtzIGZvciB0aGlzIHRob3VnaHQgZXhwZXJpbWVudC4gQWx0 aG91Z2ggSSB3YXMgYWxyZWFkeSBpbiBmYXZvciBvZiANCnRoZSBwcm9wb3NhbCwgaXQgaGVs cGVkIG1lIGdldCBhIGJldHRlciBncmFzcCBvZiB3aGF0IGlzIGF0IHN0YWtlIGluIA0KdGhp cyBHUi4NCg0KQXMgbWFueSBvdGhlcnMgaGF2ZSBhc2tlZCBhbHJlYWR5LCBpZiB0aGVyZSBp cyByZWFsbHkgYW4gb3Bwb3NpdGlvbiBmcm9tIA0KdGhlIEZUUCBtYXN0ZXJzIHRvIHRoZSB0 MnUgcHJvcG9zYWwgYXMgc3RhdGVkIGluIHRoZSBkcmFmdCBHUiwgSSB1cmdlIA0KdGhlbSB0 byBtYWtlIGl0IGhlYXJkLCBlc3BlY2lhbGx5IHdpdGggcmVnYXJkcyB0byBQaGlsJ3MgZW1h aWwuDQoNCkNoZWVycywNCg0KLS0gDQogICDiooDio7TioL7ioLviorbio6bioIANCiAgIOKj vuKggeKioOKgkuKggOKjv+KhgSAgTG91aXMtUGhpbGlwcGUgVsOpcm9ubmVhdQ0KICAg4qK/ 4qGE4qCY4qC34qCa4qCLICAgcG9sbG9AZGViaWFuLm9yZyAvIHZlcm9ubmVhdS5vcmcNCiAg IOKgiOKgs+KjhA0KDQo=

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Louis-Philippe_V=C3=A9ron@21:1/5 to All on Mon Jun 17 07:00:01 2024
    T24gMjAyNC0wNi0xNyAxMiBoIDQ3IGEubS4sIFNjb3R0IEtpdHRlcm1hbiB3cm90ZToNCj4g T24gTW9uZGF5LCBKdW5lIDE3LCAyMDI0IDEyOjI1OjI4IEFNIEVEVCBMb3Vpcy1QaGlsaXBw ZSBWw6lyb25uZWF1IHdyb3RlOg0KPj4gT24gMjAyNC0wNi0xNSA1IGggMDMgYS5tLiwgUGhp bGlwIEhhbmRzIHdyb3RlOg0KPj4NCj4+PiBTZWFuIFdoaXR0b24gPHNwd2hpdHRvbkBzcHdo aXR0b24ubmFtZT4gd3JpdGVzOg0KPj4+IC4uLg0KPj4+DQo+Pj4+IFRoZSBmdHBtYXN0ZXIg dGVhbSBoYXZlIHJlZnVzZWQgdG8gdHJ1c3QgdXBsb2FkcyBjb21pbmcgZnJvbSB0aGUNCj4+ Pj4gdGFnMnVwbG9hZCBzZXJ2aWNlLiAgVGhpcyBHUiBpcyB0byBvdmVycmlkZSB0aGF0IGRl Y2lzaW9uLg0KPj4+DQo+Pj4NCj4+PiBGdWxsIGRpc2Nsb3N1cmU6DQo+Pj4NCj4+Pg0KPj4+ ICAgICBJJ20gYSBoYXBweSBkZ2l0IHVzZXIuIFRoZSBzdXBwb3J0IEkndmUgaGFkIGZyb20g SWFuIGZvciBkZ2l0ICh3aGVuIEkNCj4+PiAgICAgbWVzc2VkIHRoaW5ncyB1cCwgZ2VuZXJh bGx5KSBoYXMgYmVlbiBvdXRzdGFuZGluZ2x5IGdvb2QsIGFuZCBoYXMNCj4+PiAgICAgZ2Vu ZXJhbGx5IHJlc3VsdGVkIGluIGEgY2hhbmdlIHRvIGRnaXQgdGhhdCBwcmV2ZW50cyBtZSAo YW5kIG90aGVycykNCj4+PiAgICAgZnJvbSBtZXNzaW5nIHVwIGluIGEgc2ltaWxhciBtYW5u ZXIuIEl0IHN0cmlrZXMgbWUgdGhhdCB0YWcydXBsb2FkIGlzDQo+Pj4gICAgIGFub3RoZXIg c3RyaWRlIGluIHRoZSBzYW1lIGRpcmVjdGlvbiwgc28gSSdkIGxpa2UgdG8gaGF2ZSB0aGUg Y2hhbmNlDQo+Pj4gICAgIHRvIHVzZSBpdCwgYmVjYXVzZSBJIHN1c3BlY3QgdGhhdCBpdCB3 aWxsIGFsc28gbWFrZSBjb250cmlidXRpbmcgdG8NCj4+PiAgICAgRGViaWFuIGVhc2llciwg bGVzcyBlcnJvci1wcm9uZSwgYW5kIGp1c3QgbW9yZSBwbGVhc2FudC4NCj4+Pg0KPj4+DQo+ Pj4gW05vdGU6IGluIHRoZSBmb2xsb3dpbmcsIEkgYW0gTk9UIHRyeWluZyB0byBzdWdnZXN0 IGEgdGVjaG5pY2FsIGZpeCwgc28NCj4+Pg0KPj4+ICAgIHBsZWFzZSBkb24ndCBzdGFydCBu aXRwaWNraW5nIHRoZSBkZXRhaWxzIC0tIGl0J3MganVzdCBhIHRob3VnaHQNCj4+PiAgICBl eHBlcmltZW50IHRoYXQgSSBob3BlIG1pZ2h0IHNoZWQgc29tZSBsaWdodCBvbiB0aGUgc2l0 dWF0aW9uXQ0KPj4+DQo+Pj4NCj4+PiBJZiBpdCB3ZXJlIGVhc3kgdG8gZGVwbG95IGFuIGlu c3RhbmNlIG9mIHRhZzJ1cGxvYWQgaW4gbXkgaG91c2UsDQo+Pj4gcG9wdWxhdGVkIHdpdGgg YSBzdWIta2V5IG9mIG15IEdQRyBrZXksIEkgd291bGQgcHJvYmFibHkgc2V0IHRoYXQgdXAN Cj4+PiAoYW5kIHRoZW4gc3RhcnQgd29ycnlpbmcgYWJvdXQgdGhlIHNlY3VyaXR5IG9mIHRo ZSBzdWIta2V5IDstKSApLg0KPj4+DQo+Pj4gSWYgSSBkaWQgdGhhdCwgSSBiZWxpZXZlIHRo ZSBGVFAgbWFzdGVycyB3b3VsZCBzdGlsbCBhY2NlcHQgbXkgdXBsb2Fkcy4NCj4+Pg0KPj4+ IFNob3VsZCB0aGV5PyAgb3IgaXMgaXQgcGVyaGFwcyB0aGUgY2FzZSB0aGF0IHRoZXkgYXJl IG9iamVjdGluZyB0byB0aGUNCj4+PiBpZGVhIHRoYXQgdGFnMnVwbG9hZCBpcyBjYXBhYmxl IG9mIHJlbGlhYmx5IGdlbmVyYXRpbmcgYSBzb3VyY2UgcGFja2FnZQ0KPj4+IGZyb20gYSBn aXQgdGFnLiAoSSBwZXJzb25hbGx5IHRydXN0IElhbiB3aGVuIGhlIHNheXMgdGhhdCBpdCBp cyBjYXBhYmxlKQ0KPj4+DQo+Pj4gSWYgSWFuIHdlcmUgdG8gb2ZmZXIgYSBob3N0aW5nIHNl cnZpY2UgZm9yIHN1Y2ggcGVyc29uYWwgdGFnMnVwbG9hZA0KPj4+IGluc3RhbmNlcywgaW4g YSB3YXkgdGhhdCBoZSBhc3N1cmVkIG1lIGNvdWxkIG5vdCBiZSB1c2VkIHRvIHNpZ24NCj4+ PiBwYWNrYWdlcyB1bmxlc3MgSSBoYWQgc2lnbmVkIGEgbWF0Y2hpbmcgZ2l0LXRhZywgSSB3 b3VsZCBiZSB3aWxsaW5nIHRvDQo+Pj4gdHJ1c3QgaGlzIGFzc3VyYW5jZXMsIGFuZCBtYXkg d2VsbCB0YWtlIGhpbSB1cCBvbiB0aGUgb2ZmZXIuDQo+Pj4NCj4+PiBJdCBzZWVtcyB0byBt ZSB0aGF0IHN1Y2ggYSBjZW50cmFsaXNlZCBzZXJ2aWNlIGlzIG1vcmUgbGlrZWx5IHRvIGRv DQo+Pj4gdGhpbmdzIGxpa2Uga2VlcCB0aGUga2V5cyBpbiBhbiBIU00sIGFuZCBoYXZlIGVm ZmVjdGl2ZSBzZXBhcmF0aW9uIG9mDQo+Pj4gdGhlIGNvbXBvbmVudHMsIHRoYW4gc29tZXRo aW5nIHNldCB1cCBieSBhIHJhbmRvbSBkZXZlbG9wZXIgYXQgaG9tZSwgc28NCj4+PiBvbmUg Y291bGQgYXJndWUgdGhhdCBpdCdzIGdvaW5nIHRvIGJlIG1vcmUgc2VjdXJlIHRoYW4gdGhl IHNlbGYtaG9zdGVkDQo+Pj4gdmVyc2lvbi4NCj4+Pg0KPj4+IFdvdWxkIHRoZSBGVFAgbWFz dGVycyBzdGlsbCBiZSBPSyB3aXRoIHRoYXQ/ICBJZiBub3QsIHdoYXQncyBjaGFuZ2VkPw0K Pj4+DQo+Pj4gSWYgdGhhdCdzIE9LLCBidXQgdGFnMnVwbG9hZCBhcyBwcm9wb3NlZCBpcyBu b3QsIGFyZSB3ZSByZWFsbHkgZHJhd2luZyBhDQo+Pj4gbGluZSBiYXNlZCBvbiB3aGF0IG5h bWUgaXMgb24gdGhlIHNpZ25pbmcga2V5Pw0KPj4+DQo+Pj4gV291bGQgaXQgbWFrZSBhbnkg ZGlmZmVyZW5jZSB0byB0aGUgRlRQIG1hc3RlcnMgaWYgdGhlcmUgd2FzIHNvbWUgd2F5DQo+ Pj4gZm9yIG1lIHRvIGFzc2VydCB0aGF0IEkgdHJ1c3QgdGhlIHRhZzJ1cGxvYWQgc2Vydmlj ZS9rZXkgdG8gYnVpbGQvc2lnbg0KPj4+IHNvdXJjZSBwYWNrYWdlcyBmb3IgbWU/DQo+Pj4N Cj4+PiBGb3IgaW5zdGFuY2UsIGlmIG9uZSBoYWQgdG8gc2lnbiBzb21ldGhpbmcgd2l0aCBh IEdQRyBrZXkgdGhhdCBtYXRjaGVzDQo+Pj4gdGhlIG9uZSB0aGF0IGxhdGVyIHNpZ25zIGEg Z3BnIHRhZywgYmVmb3JlIHRhZzJ1cGxvYWQgd291bGQgYmUgd2lsbGluZw0KPj4+IHRvIHBy b2Nlc3Mgb25lJ3Mgc2lnbmVkIHRhZ3MsIHdvdWxkIHRoYXQgbWFrZSB0aGUgRlRQIG1hc3Rl cnMgaGFwcGllcj8NCj4+Pg0KPj4+IFBlcnNvbmFsbHksIEknbSBub3QgY29udmluY2VkIHRo YXQgd291bGQgcmVhbGx5IGFkZCBhbnl0aGluZywgc2luY2UgaWYNCj4+PiBvbmUgaGFzIHN1 ZmZpY2llbnQgY29udHJvbCBvZiB0aGUga2V5IHRvIHB1c2ggYSBzaWduZWQgdGFnLCB0aGVu IG9uZSdzDQo+Pj4gYWxzbyBnb2luZyB0byBiZSBhYmxlIHRvIHNpZ24gYSBzdGF0ZW1lbnQg dGhhdCB5b3Ugd2FudCB0YWcydXBsb2FkIHRvDQo+Pj4gYWN0IG9uIHRoYXQgdGFnLCBidXQg SSB0aG91Z2h0IHRoYXQgZGVzY3JpYmluZyB0aGUgb3B0aW9ucyBtaWdodCBoZWxwDQo+Pj4g bmFycm93IGRvd24gd2hhdCB0aGUgcGVyY2VpdmVkIHByb2JsZW0gaXMuDQo+Pj4NCj4+PiBP ZiBjb3Vyc2UsIHdpdGhvdXQgc29tZXRoaW5nIGRlc2NyaWJpbmcgZXhhY3RseSB3aGF0IHRo ZSBwcm9ibGVtIGlzIGZyb20NCj4+PiB0aGUgRlRQIG1hc3RlcidzIHBvaW50IG9mIHZpZXcs IGl0J3MgdmVyeSBoYXJkIHRvIGp1ZGdlIHRoZSBtZXJpdHMgb2YNCj4+PiB0aGVpciBwb3Np dGlvbi4NCj4+Pg0KPj4+IENoZWVycywgUGhpbC4NCj4+DQo+Pg0KPj4gVGhhbmtzIGZvciB0 aGlzIHRob3VnaHQgZXhwZXJpbWVudC4gQWx0aG91Z2ggSSB3YXMgYWxyZWFkeSBpbiBmYXZv ciBvZg0KPj4gdGhlIHByb3Bvc2FsLCBpdCBoZWxwZWQgbWUgZ2V0IGEgYmV0dGVyIGdyYXNw IG9mIHdoYXQgaXMgYXQgc3Rha2UgaW4NCj4+IHRoaXMgR1IuDQo+Pg0KPj4gQXMgbWFueSBv dGhlcnMgaGF2ZSBhc2tlZCBhbHJlYWR5LCBpZiB0aGVyZSBpcyByZWFsbHkgYW4gb3Bwb3Np dGlvbiBmcm9tDQo+PiB0aGUgRlRQIG1hc3RlcnMgdG8gdGhlIHQydSBwcm9wb3NhbCBhcyBz dGF0ZWQgaW4gdGhlIGRyYWZ0IEdSLCBJIHVyZ2UNCj4+IHRoZW0gdG8gbWFrZSBpdCBoZWFy ZCwgZXNwZWNpYWxseSB3aXRoIHJlZ2FyZHMgdG8gUGhpbCdzIGVtYWlsLg0KPiANCj4gR2l2 ZW4gcmVjZW50IGVtYWlsIG9uIHRoZSBsaXN0LCBhcmUgeW91IHN0aWxsIGNvbmZ1c2VkIGFi b3V0IHRoaXM/DQoNCkknbSBpbmRlZWQgZnVydGhlciBpbiB0aGUgbWVnYXRocmVhZCBhbmQg SSBkbyB0aGluayB0aGluZ3MgaGF2ZSBiZWVuIA0KYW5zd2VyZWQsIHNvcnJ5IGZvciB0aGUg bm9pc2UgOikNCg0KRm9yIG90aGVyIHNwZWx1bmtlcnMgb3V0IHRoZXJlLCBJJ2Qgc3VnZ2Vz dCBza2lwcGluZyB0byANCjg3ZWQ4eW1idnguZnNmQGdhbm5lZmYuZGUgWzFdLiBBdCBsZWFz dCwgaXQgc2VlbXMgdG8gbWUgdGhhdCdzIHdoZXJlIHRoZSANCmNvcmUgb2YgdGhlIHRocmVh ZCBpcy4NCg0KWzFdOiBodHRwczovL2xpc3RzLmRlYmlhbi5vcmcvZGViaWFuLXZvdGUvMjAy NC8wNi9tc2cwMDIxNS5odG1sDQoNCi0tIA0KICAg4qKA4qO04qC+4qC74qK24qOm4qCADQog ICDio77ioIHioqDioJLioIDio7/ioYEgIExvdWlzLVBoaWxpcHBlIFbDqXJvbm5lYXUNCiAg IOKiv+KhhOKgmOKgt+KgmuKgiyAgIHBvbGxvQGRlYmlhbi5vcmcgLyB2ZXJvbm5lYXUub3Jn DQogICDioIjioLPio4QNCg0K

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Kitterman@21:1/5 to All on Mon Jun 17 00:47:01 2024
    On Monday, June 17, 2024 12:25:28 AM EDT Louis-Philippe V�ronneau wrote:
    On 2024-06-15 5 h 03 a.m., Philip Hands wrote:

    Sean Whitton <[email protected]> writes:
    ...

    The ftpmaster team have refused to trust uploads coming from the
    tag2upload service. This GR is to override that decision.


    Full disclosure:


    I'm a happy dgit user. The support I've had from Ian for dgit (when I
    messed things up, generally) has been outstandingly good, and has
    generally resulted in a change to dgit that prevents me (and others)
    from messing up in a similar manner. It strikes me that tag2upload is
    another stride in the same direction, so I'd like to have the chance
    to use it, because I suspect that it will also make contributing to
    Debian easier, less error-prone, and just more pleasant.


    [Note: in the following, I am NOT trying to suggest a technical fix, so

    please don't start nitpicking the details -- it's just a thought
    experiment that I hope might shed some light on the situation]


    If it were easy to deploy an instance of tag2upload in my house,
    populated with a sub-key of my GPG key, I would probably set that up
    (and then start worrying about the security of the sub-key ;-) ).

    If I did that, I believe the FTP masters would still accept my uploads.

    Should they? or is it perhaps the case that they are objecting to the
    idea that tag2upload is capable of reliably generating a source package from a git tag. (I personally trust Ian when he says that it is capable)

    If Ian were to offer a hosting service for such personal tag2upload instances, in a way that he assured me could not be used to sign
    packages unless I had signed a matching git-tag, I would be willing to trust his assurances, and may well take him up on the offer.

    It seems to me that such a centralised service is more likely to do
    things like keep the keys in an HSM, and have effective separation of
    the components, than something set up by a random developer at home, so
    one could argue that it's going to be more secure than the self-hosted version.

    Would the FTP masters still be OK with that? If not, what's changed?

    If that's OK, but tag2upload as proposed is not, are we really drawing a line based on what name is on the signing key?

    Would it make any difference to the FTP masters if there was some way
    for me to assert that I trust the tag2upload service/key to build/sign source packages for me?

    For instance, if one had to sign something with a GPG key that matches
    the one that later signs a gpg tag, before tag2upload would be willing
    to process one's signed tags, would that make the FTP masters happier?

    Personally, I'm not convinced that would really add anything, since if
    one has sufficient control of the key to push a signed tag, then one's
    also going to be able to sign a statement that you want tag2upload to
    act on that tag, but I thought that describing the options might help narrow down what the perceived problem is.

    Of course, without something describing exactly what the problem is from the FTP master's point of view, it's very hard to judge the merits of
    their position.

    Cheers, Phil.


    Thanks for this thought experiment. Although I was already in favor of
    the proposal, it helped me get a better grasp of what is at stake in
    this GR.

    As many others have asked already, if there is really an opposition from
    the FTP masters to the t2u proposal as stated in the draft GR, I urge
    them to make it heard, especially with regards to Phil's email.

    Given recent email on the list, are you still confused about this?

    Socially, I think this whole thing is awful. The objection was clearly stated 5 years ago and then after 5 years of silence, a GR out of nowhere claiming an unwillingness to engage. So far as I'm aware, no one on the FTP Team has been able to find a record of any discussion between the FTP Team and the tag2upload
    developers on this topic since 2019.

    Is this how we want Debian to work?

    Scott K



    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEE53Kb/76FQA/u7iOxeNfe+5rVmvEFAmZvv8UACgkQeNfe+5rV mvFQ8xAAoKnKcBL4BHHX1HqoMG24hoDqS4zX/Rc3906ip0aiPynIBjiXvGKVBx5H iYjhlQXAYA+xsEae6In3A2YwDsLn/V2Jb25GeMuJfL1cvjFWZCGe7IMGBbs1ohUg 1X8OvoWeo80XcCQpBNIEZU/zPiAiNcx7tcblBangt0Sew3JMx8Wgik8wYGKWj3/v KjxsjFbYVbn9yA6+5gvre2HwA6KdDUh1B5cNHMdCC7wQmX3QTAhi21QRk4d9Pbus LhZUGVyq8AWd67KyDWblGQN037OO5kehi4yevCuif5bkEujrfl/tE6ZGaZhRwpoS rC+P9ITU5g3zgpeZsSCUaLUYLx5XzKRC7csuZy1niU5LyEYE7xJEdAFubhM61p7e ubSRJX9bMH2JRL2bIS2O5CjDachrXIg7EVVEYFCCKe77vQ3w3ysPJcv76YsOmZed cLbpRPQZ0Kpmb0SO8PqpFEbzIzcLNBfT5qtETDfjyaySljCKeLn3u4Z1fNAbxiKF HP7bE6LN1RuTgKKeYMo3xnGbgOHixS8exAMWM2iVEBNj2b3rtnGjIgANOPWJoyvQ +1/AAM/mFMLl0D1ui44THTV+eotPfdfj2OEfwkHmvox12Apx+Yy/jdNBCaiCmjQk +KAFDbZzYzm638Asgzr7zuOdqJ8a0W4gM2w8P+annVYS28J6I9M=
    =8puF
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Bastian Blank on Mon Jun 17 07:30:01 2024
    Bastian Blank <[email protected]> writes:

    But maybe you can answer the question: Given the .dsc file, how can
    you, and more critical the public, verify that you and only you signed
    that upload?

    Why is this, specifically, important?

    I can turn that question around: given the .dsc file, how can I find the
    Git tree that the maintainer vetted and intended to upload to the archive?
    Why should I have any faith in the archive if I cannot verify that?

    I don't think this is a useful way to talk about the security guarantees
    that we can provide. You are massively overindexing on a very specific implementation detail that does not prove what you seem to think it
    proves.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Bastian Blank@21:1/5 to Philip Hands on Mon Jun 17 07:20:01 2024
    Hi

    On Sat, Jun 15, 2024 at 11:03:17AM +0200, Philip Hands wrote:
    If Ian were to offer a hosting service for such personal tag2upload instances, in a way that he assured me could not be used to sign
    packages unless I had signed a matching git-tag, I would be willing to
    trust his assurances, and may well take him up on the offer.

    I don't actually think that the keyring people or DSA would do very
    kindly with that.

    If that's OK, but tag2upload as proposed is not, are we really drawing a
    line based on what name is on the signing key?

    If the service is able to provide a verifiable chain of source. But
    exactly this part is missing.

    But maybe you can answer the question: Given the .dsc file, how can
    you, and more critical the public, verify that you and only you signed
    that upload?

    Would it make any difference to the FTP masters if there was some way
    for me to assert that I trust the tag2upload service/key to build/sign
    source packages for me?

    It is not about you, it is about the public and their trust in the
    integrity of the Debian archive.

    Of course, without something describing exactly what the problem is from
    the FTP master's point of view, it's very hard to judge the merits of
    their position.

    Hu? This was done several times and every time disregarded.

    Bastian

    --
    Kirk to Enterprise -- beam down yeoman Rand and a six-pack.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Kitterman@21:1/5 to Russ Allbery on Mon Jun 17 07:40:01 2024
    On June 17, 2024 5:23:41 AM UTC, Russ Allbery <[email protected]> wrote:
    Bastian Blank <[email protected]> writes:

    But maybe you can answer the question: Given the .dsc file, how can
    you, and more critical the public, verify that you and only you signed
    that upload?

    Why is this, specifically, important?

    I can turn that question around: given the .dsc file, how can I find the
    Git tree that the maintainer vetted and intended to upload to the archive? >Why should I have any faith in the archive if I cannot verify that?

    I don't think this is a useful way to talk about the security guarantees
    that we can provide. You are massively overindexing on a very specific >implementation detail that does not prove what you seem to think it
    proves.

    I think if you want to step away from the implementation details, the more abstract point is that you don't need data from outside the archive (or a mirror of the archive) in order to verify that the source package you downloaded has not been modified
    since then and who uploaded it.

    You may not think that this property of our package archive is particularly important, but not everyone agrees.

    As it happens though you can't tell if what's in the archive matches the uploader intent with tag2upload either. All you can vet is that the tag2upload service claims it does. You may think that's better, but neither of them are entirely free of risk.

    Scott K

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Mon Jun 17 08:30:01 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------5a0XU45Tz1lsXWWfF0jP7cHw
    Content-Type: multipart/alternative;
    boundary="------------8L1CGqPsyb700HCAwKS8k6Xh"

    --------------8L1CGqPsyb700HCAwKS8k6Xh
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMTYuMDYuMjQgMjM6MjMsIFBoaWxpcCBIYW5kcyB3cm90ZToNCj4gV2Ugc2VlbSB0byBi ZSB2ZXJ5IGZvY3VzZWQgb24gaG93IG9uZSBtaWdodCByZXByb2R1Y2UgdGhlIHNvdXJjZQ0K PiBwYWNrYWdlLCB0byBtYWtlIHN1cmUgdGhhdCBpdCBjYW4gYmUgYml0LWZvci1iaXQgZ2Vu ZXJhdGVkIGZyb20gdGhlDQo+IHNpZ25lZCB0YWcsIHdoaWNoIGlzIGNsZWFybHkgYSBoYXJk IHRoaW5nIHRvIGRvLg0KPg0KPiBEbyB3ZSBhY3R1YWxseSBuZWVkIHRvIGRvIHRoYXQgYXQg YWxsPw0KUGFydCBvZiB0aGUgcHJvYmxlbSBzcGFjZSBpcyB0byBwcmV2ZW50IGFub3RoZXIg eHotc3R5bGUgY29tcHJvbWlzZSANCndoZXJlIHRoZSB0YXJiYWxsIGNvbnRhaW5lZCBzdHVm ZiBub3QgaW4gZ2l0LiBTbywgcHJvYmFibHkgeWVzLg0KPiBXb3VsZCBpdCBub3QgYmUgc3Vm ZmljaWVudCB0byBjaGVjayB0aGF0IHRoZSByZXN1bHRpbmcgc291cmNlIHBhY2thZ2UgaXMN Cj4gYSByZWFzb25hYmxlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb250ZW50IHBvaW50ZWQg YXQgYnkgdGhlIHNpZ25lZCB0YWcuDQoNCkRlZmluZSAicmVhc29uYWJsZSIuIEdpdmVuIHRo ZSBteXJpYWQgb2Ygd29ya2Zsb3dzIHRoYXQgZGdpdCBzdXBwb3J0cywgDQp5b3UnZCBoYXZl IHRvIHJlLXJ1biBpdC4NCg0KSnVzdCB0byBtZW50aW9uIG9uZSBkYXRhIHBvaW50LCB0aGVy ZSdzIG5vIHJlYXNvbmFibGUgd2F5IHRvIA0KYXV0b21hdGljYWxseSBkaXN0aW5ndWlzaCAi dGhleSByZS1yYW4gYXV0b2NvbmYiIGZyb20gInRoZXkgaW5zZXJ0ZWQgYSANCmJhY2tkb29y IGludG8gc3JjL01ha2VmaWxlLmluIi4gVGhlcmUgYXJlIHBsZW50eSBvdGhlcnMuDQoNCi0t IA0KLS0gbWl0IGZyZXVuZGxpY2hlbiBHcsO8w59lbg0KLS0gDQotLSBNYXR0aGlhcyBVcmxp Y2hzDQoNCg==
    --------------8L1CGqPsyb700HCAwKS8k6Xh
    Content-Type: text/html; charset=UTF-8
    Content-Transfer-Encoding: quoted-printable

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
    <div class="moz-cite-prefix">On 16.06.24 23:23, Philip Hands wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:[email protected]">
    <pre>We seem to be very focused on how one might reproduce the source package, to make sure that it can be bit-for-bit generated from the
    signed tag, which is clearly a hard thing to do.

    Do we actually need to do that at all?
    </pre>
    </blockquote>
    Part of the problem space is to prevent another xz-style compromise
    where the tarball contained stuff not in git. So, probably yes.<br>
    <blockquote type="cite" cite="mid:[email protected]">
    <pre>
    Would it not be sufficient to check that the resulting source package is
    a reasonable representation of the content pointed at by the signed tag.</pre>
    </blockquote>
    <p>Define "reasonable". Given the myriad of workflows that dgit
    supports, you'd have to re-run it.</p>
    <p>Just to mention one data point, there's no reasonable way to
    automatically distinguish "they re-ran autoconf" from "they
    inserted a backdoor into src/Makefile.in". There are plenty
    others.<br>
    </p>
    <pre class="moz-signature" cols="72">--
    -- mit freundlichen Grüßen
    --
    -- Matthias Urlichs</pre>
    </body>
    </html>

    --------------8L1CGqPsyb700HCAwKS8k6Xh--

    --------------5a0XU45Tz1lsXWWfF0jP7cHw--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZv0y0FAwAAAAAACgkQcs+OXiW0wpMO qhAAhKtW1GyLZ3egNj8aqD/tQJFL+zTAZGfP/JKnIxa02sY282vytoaPkw6mTZ/xsl2HohamOxCR Jy9C8A+46W0065LEr1YsUnD1BhyipUBp0+Q+MjTNi58Rg+UhLrPrHE5e1ZjnaTqRuG/eVtQFaJOn DYbOlL7mtmoSRxOnLPUf35b2oBfdvCISDM6XtyOfl5RJD1t+E2qQGJEF+65V3d2PulME/ZfCHvf+ hxeGdRa/1V85rdAbWegqLpHuMTr4xLxlmy1nTC5Ps7x6uRTGKTQ23ESyUNyFfVXNGA4ABri+Dujf Vnk7ym2kfX3gdItc6eHqJd2bvatP/1Eq3DMfiVt3ptrGmtKIOUP/5/d5Bk5eLS/Rr0hoFROBNVJH yIQvaLY1wpB30daSMcwaYg26eIzVwrmxE5IQnw9bHkj0K4e2gYPZufaKCd/P47Jfry1QrFne3GZz ZgM+RJ74rcIKubvXTOH8rb+3B3BCpqtGPr9ZRlUfAc1n3GYmSem2CIkdq4Qbp0aAl9yriE/Wyz8r JfRiG6JfZlg6QqOj2uAV7hgaa4+iSdTZIevlJXdnLgqHQI7y7dmWQZFiLniLlNYmOOq5crgZsNqe RahA7iKNgb9M95jhc6YAVj1sUoP196E+Xbps2QfFcoEVxtP5tuR5lsSopk/3teP5rkwfnCFQP9i3 6Q4=
    =I1fa
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
  • From Matthias Urlichs@21:1/5 to All on Mon Jun 17 08:30:02 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------wNVqehVVsNkGUdhI5jICvIJE
    Content-Type: multipart/alternative;
    boundary="------------2G0do3K9Kdmj5b5Cwe0y30se"

    --------------2G0do3K9Kdmj5b5Cwe0y30se
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMTUuMDYuMjQgMTE6MDMsIFBoaWxpcCBIYW5kcyB3cm90ZToNCj4gSWYgaXQgd2VyZSBl YXN5IHRvIGRlcGxveSBhbiBpbnN0YW5jZSBvZiB0YWcydXBsb2FkIGluIG15IGhvdXNlLA0K PiBwb3B1bGF0ZWQgd2l0aCBhIHN1Yi1rZXkgb2YgbXkgR1BHIGtleSwgSSB3b3VsZCBwcm9i YWJseSBzZXQgdGhhdCB1cA0KPiAoYW5kIHRoZW4gc3RhcnQgd29ycnlpbmcgYWJvdXQgdGhl IHNlY3VyaXR5IG9mIHRoZSBzdWIta2V5IPCfmIkgKS4NCj4NCj4gSWYgSSBkaWQgdGhhdCwg SSBiZWxpZXZlIHRoZSBGVFAgbWFzdGVycyB3b3VsZCBzdGlsbCBhY2NlcHQgbXkgdXBsb2Fk cy4NCldoeSBzaG91bGQgdGhleSBub3Q/IFRoZXkgZG9uJ3Qga25vdyB0aGF0IGEgYm90IGRp ZCBpdC4NCj4gSWYgSWFuIHdlcmUgdG8gb2ZmZXIgYSBob3N0aW5nIHNlcnZpY2UgZm9yIHN1 Y2ggcGVyc29uYWwgdGFnMnVwbG9hZA0KPiBpbnN0YW5jZXMsIGluIGEgd2F5IHRoYXQgaGUg YXNzdXJlZCBtZSBjb3VsZCBub3QgYmUgdXNlZCB0byBzaWduDQo+IHBhY2thZ2VzIHVubGVz cyBJIGhhZCBzaWduZWQgYSBtYXRjaGluZyBnaXQtdGFnLCBJIHdvdWxkIGJlIHdpbGxpbmcg dG8NCj4gdHJ1c3QgaGlzIGFzc3VyYW5jZXMsIGFuZCBtYXkgd2VsbCB0YWtlIGhpbSB1cCBv biB0aGUgb2ZmZXIuDQoNClNhbWUgaGVyZS4gSW1tZWRpYXRlbHkuDQoNCkluIGZhY3QsIGlm IHRoZSBkYXkgaGFkIG1vcmUgdGhhbiAyNCBob3VycyBJIHdvdWxkIGFscmVhZHkgaGF2ZSBh biANCmluc3RhbmNlIHVwIGFuZCBydW5uaW5nIOKAkyBvbmUgd2hpY2ggcHJvYmFibHkgd291 bGQgYmUgc29tZXdoYXQgbGVzcyANCnNlY3VyZSB0aGFuIGFuICJvZmZpY2lhbCIsIG9yIGF0 IGxlYXN0IHdlbGwtbWFpbnRhaW5lZCwgdGFnMnVwbG9hZCBzZXJ2aWNlLg0KDQotLSANCi0t IG1pdCBmcmV1bmRsaWNoZW4gR3LDvMOfZW4NCi0tIA0KLS0gTWF0dGhpYXMgVXJsaWNocw0K
    DQo=
    --------------2G0do3K9Kdmj5b5Cwe0y30se
    Content-Type: text/html; charset=UTF-8
    Content-Transfer-Encoding: quoted-printable

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
    <div class="moz-cite-prefix">On 15.06.24 11:03, Philip Hands wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:[email protected]">
    <pre>If it were easy to deploy an instance of tag2upload in my house, populated with a sub-key of my GPG key, I would probably set that up
    (and then start worrying about the security of the sub-key 😉 ).

    If I did that, I believe the FTP masters would still accept my uploads.</pre>
    </blockquote>
    Why should they not? They don't know that a bot did it.<br>
    <blockquote type="cite" cite="mid:[email protected]">
    <pre>If Ian were to offer a hosting service for such personal tag2upload instances, in a way that he assured me could not be used to sign
    packages unless I had signed a matching git-tag, I would be willing to
    trust his assurances, and may well take him up on the offer.</pre>
    </blockquote>
    <p>Same here. Immediately.</p>
    <p>In fact, if the day had more than 24 hours I would already have
    an instance up and running – one which probably would be somewhat
    less secure than an "official", or at least well-maintained,
    tag2upload service.<br>
    </p>
    <pre class="moz-signature" cols="72">--
    -- mit freundlichen Grüßen
    --
    -- Matthias Urlichs</pre>
    </body>
    </html>

    --------------2G0do3K9Kdmj5b5Cwe0y30se--

    --------------wNVqehVVsNkGUdhI5jICvIJE--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZv0QYFAwAAAAAACgkQcs+OXiW0wpPT yBAAjO2NNQVO6I/TPKUTndkSxS1TryJjaakENYCDYtlN8zmwe+0FCxztbjuZQuEI3xShSjiUO6kL RZ4fzUXQQwBCGqn+7B1y7rtGMSioskcJIlBDPZSGPCwbizX9aitWnD3us4Jrov3yaJ/oUTcBt1xD vkCq/7qFgRHuwhmfYXn6XXZ/9WZ8q1vBggKQWawd5Ft/kjPwjZBQU/O8V1FQwjJ1MI2wDtIGrCuL soFUisCGd13DN0ZswyirHDqzJ0VLm1faG0ewkPKNRoHLkr4+r70EtTNGXLnqmbjxo0o1Id9A8sJ8 wiMqw1/HIGFF3etYrNllF/KW4BNiP6dN1moumbBi08VAvI6NT8MpPxrQeVhjgmMX6d3/wba9vhA6 kpz1ZpGdzWJpkooackqeihu4YNjYky31MLhe80FQpFXgq2STt2XMhKoScIcTatIv1CdIpp3vF5rN p0LCuSGx3oPpRBZKJ/A8hjson1WJw9cCOQ/nCGENl0wBwfNhm1aP38pZPd/prSJFCxxJRwgeXCSm 4rKXjvQ0FAa/8qeDmvbRSwzQpmnywf/ICMTDUZRw/HHUaAGgDQvFr+kAaX2qXwB4i/UUOtyM2mz7 XClKvc2dTGaXqWjCsOuL2tWUWbuGsBqZpYL2BSfNt6/KdQRWGv4mIl+rRwhVHnevUimXfRh30k3r kAU=
    =/syW
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
  • From Matthias Urlichs@21:1/5 to All on Mon Jun 17 09:00:01 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------07b75FynU80a4eEhDwtAMLKO
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMTcuMDYuMjQgMDA6MDQsIEpvZXJnIEphc3BlcnQgd3JvdGU6DQo+IFN0aWxsLCB3ZSBz aG91bGQgZmluZCBhIHdheSB0byBrZWVwIHRoZSBleGlzdGluZyBwcm9wZXJ0eSBvZiB2ZXJp ZnlpbmcNCj4gd2hhdCB0aGUgdXBsb2FkZXIgc2lnbmVkIHRvIHVwbG9hZCAqd2l0aG91dCog cmVxdWlyaW5nIGEgdGhpcmQtcGFydHkNCj4gJHNvbWV0aGluZyB0byBiZSBhdmFpbGFibGUu IA0KDQpWZXJpZnlpbmcgd2hhdCB0aGUgdXBsb2FkZXIgc2lnbmVkIGlzIHNpbXBsZSBlbm91 Z2gsIGl0J3MgYSBnaXQgdGFnLiBZb3UgDQpmZXRjaCBpdCBhbmQgdmVyaWZ5IHRoYXQgdGhl IGhhc2hlcyBtYXRjaCAoImdpdCBmc2NrIjsgY3VycmVudCBnaXQgaXMgDQpoYXJkZW5lZCBh Z2FpbnN0IFNIQXR0ZXJlZCkgYW5kIHRoYXQgaXQncyBzaWduZWQgYnkgdGhlIGNvcnJlY3Qg a2V5Lg0KDQpZb3Ugd2FudCB0byB2ZXJpZnkgdDJ1J3Mgd29yaz8gU2ltcGxlIGVub3VnaCwg cnVuIGRnaXQgYW5kIGNvbXBhcmUgdG8gDQp3aGF0ZXZlciB0MnUgc2VudCB5b3UuIE5vICRz b21ldGhpbmcgcmVxdWlyZWQuDQoNCk9oIHdhaXQsIHQydSBpc24ndCBldmVuICJ0aGlyZCBw YXJ0eSIuIEl0J3MgYSBEZWJpYW4gdG9vbCBydW5uaW5nIG9uIA0KcHJvcGVybHktYWRtaW5p c3RlcmVkICh3ZSBhc3N1bWUpIERlYmlhbiBoYXJkd2FyZSwgcnVubmluZyBqdXN0IGFub3Ro ZXIgDQpidWlsZCBzdGVwIGluIGEgc2FuZGJveC4NCg0KDQpBbm90aGVyIHdheSBvZiBkb2lu ZyB0aGlzIHdvdWxkIGJlIHRvIHRlYWNoIHQydSB0byBzaW1wbHkgcHVzaCB0aGUgdGFnIA0K dG8gYW4gYXBwZW5kLW9ubHkgZ2l0IHN0b3JlLiBUaGVuIHRlYWNoIHRoZSBidWlsZGVycyB0 aGF0IGluc3RlYWQgb2YgDQp0aGVpciBlcXVpdmFsZW50IG9mICJhcHQtZ2V0IHNvdXJjZSIg dGhleSBzaG91bGQgZmV0Y2ggdGhpcyB0YWcgZnJvbSBvdXIgDQpnaXQgc3RvcmUgYW5kIHJ1 biBkZ2l0IChhbmQgdGhlbiBwdXNoIHRoZSBsZWdhY3kgc291cmNlIHRhcmJhbGxzKSANCnRo ZW1zZWx2ZXMuDQoNCldvdWxkIHRoYXQgc2NoZW1lIHdvcmsgYmV0dGVyIGZvciB5b3U/DQoN Ci0tIA0KLS0gbWl0IGZyZXVuZGxpY2hlbiBHcsO8w59lbg0KLS0gDQotLSBNYXR0aGlhcyBV cmxpY2hzDQoNCg==

    --------------07b75FynU80a4eEhDwtAMLKO--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZv2A4FAwAAAAAACgkQcs+OXiW0wpPv WRAAm/MftiGtIM3ZgqAWL16PuC0qxdWO36gYTCGKrGdLxq+PFMK1OKvx9DtCaKtvhykSrt0xhtp5 Auj46zk7C8X3SHlxMkb6jZbsrb7Wo7AF9p9aYy1jzTRqS9QgJXXpm2hBaIqEHzCouTOBe17BYYcD I/m37zlQWilx8tkM7uIRpsNSU5ndj9i2BMfeDRhAEJrY7zxcd8/jrQXrsStgqIgKkicuvVbKyAxf LagOi6g9R0ZvVPxg7d9FI7+Qh5f0zYeiYG+9Gpx+YkXqOs2t0REgJOCCKF7Ln5URANCZBQIwitS9 lbxg7e6aagR5UtuNNdbS0iHv1P+KBl08BC8aKYpwhXXtOopZenDgm4Z8DzaH6jC0quC4klPdTp3F YpVA59OHsnC1pm7AkdXM59JBBiGtXPchHcXhAjid0NBQu/0q4riVzypZaeU+7CMpc91zuEPke0aq xPLJnZuQlz6Vnr6qochiotACWv89fVRVE68SPRCHoisPYXv0WwXtet4rGfQHDdcjfx8O0PM6eqx1 ylef3fGdGE65U2moeJ8e1+8HtBTFeiW0jeMI2gxBzcAbzF6g+0FHT002LxmE7iNFdJmrFVvmosjy xrH+XM87YdU1ni3HWkV5DjyK592cwdRoG6i6glAQod0+QuV3giyiuqcRh/lN0CHB/F4ZinqfyS+5 wUM=
    =DdFT
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Rakhmatullin@21:1/5 to Bastian Blank on Mon Jun 17 10:20:01 2024
    On Mon, Jun 17, 2024 at 07:00:19AM +0200, Bastian Blank wrote:
    But maybe you can answer the question: Given the .dsc file, how can
    you, and more critical the public, verify that you and only you signed
    that upload?

    I'm surprised to learn that people check .dsc signatures, especially
    as we don't really seem to support that.

    --
    WBR, wRAR

    -----BEGIN PGP SIGNATURE-----

    iQJhBAABCgBLFiEEolIP6gqGcKZh3YxVM2L3AxpJkuEFAmZv8P4tFIAAAAAAFQAP cGthLWFkZHJlc3NAZ251cGcub3Jnd3JhckBkZWJpYW4ub3JnAAoJEDNi9wMaSZLh HxgQAKlzr3rUA/9Vtp9SwG5zqhwuEl9xswmowAxgNA4L0np7q0jtvbDtPcmaPJss OeBOkcuCEa3KL++CooYB/D2dlaf0JOuCQ4TMtACZWIiAuV7ujv/jsjrKWqCDE/GH Ptb64MyiKkOA//n1huc4AdWv90QKRw9nkDVD099FffGnIMi9f015oSA6kWnC8dw3 UAq7dF7tY6zt/fNTpNURK1sOXkyGemEX7rLn++9RGP8e/0olY5rwtcQUzZ6LRZDq X3l+6kIAznTGOLC1NuSM18adVDaFwaAgC3PsFXGw3Ra7aeMcEno/mQJ/lopBPkS1 xHyXjiPTkhqPAucWO12bgke/bh8AOkctjapk8ZhyMyCu6Hd7UPn+fWaUkcUHDf6L 0YT8vhSZDPSiMJ5KblYUOs/yGZc9vsVbLaiDEYq7Sx+xfKmXcM7oVpbHKydNI7oY SgguD8Nga3c4x36BZhd7k+q+x+8GkdAjccYMM60LBxkqfWRB/pmoRAOA/V09nun9 GL6VIRa7Q4vY4pqw2ygZ9epKcRMYlA4f6pzen36/P8GeC8BYuuCvP/g4jvjbW11r mQ1K4tG/b0wFmtmYW0buEMInLH22+b0Y9hhXk7InQ2wGyhtYWSaBLJyEDXRTVatN a6MS0gG4gqYg8UcsVFWZYY8YImvS87pwFPsZMopkSyaARfzO
    =ecCM
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joerg Jaspert@21:1/5 to Matthias Urlichs on Mon Jun 17 11:40:01 2024
    On 17263 March 1977, Matthias Urlichs wrote:

    Still, we should find a way to keep the existing property of
    verifying
    what the uploader signed to upload *without* requiring a third-party
    $something to be available.
    Verifying what the uploader signed is simple enough, it's a git tag.
    You
    fetch it and verify that the hashes match ("git fsck"; current git is hardened against SHAttered) and that it's signed by the correct key.

    Thats a third-party.

    You want to verify t2u's work? Simple enough, run dgit and compare to whatever t2u sent you. No $something required.

    $something is required. It is not there with the source package on your
    mirror. It is a random other place. Sure, hosted by Debian, but its
    still elsewhere and another thing required to have.

    Oh wait, t2u isn't even "third party". It's a Debian tool running on properly-administered (we assume) Debian hardware, running just
    another
    build step in a sandbox.

    It is third-party, the same way that "to verify, fetch $blah from
    ftp-masters api host" would be.

    Another way of doing this would be to teach t2u to simply push the tag
    to an append-only git store. Then teach the builders that instead of
    their equivalent of "apt-get source" they should fetch this tag from
    our
    git store and run dgit (and then push the legacy source tarballs)
    themselves.

    Would that scheme work better for you?

    Not with an unchanged archive structure.

    Oh wait, you mean the builders generate the source package as it will
    end up in the archive? Where is the difference in builders generating
    vs. t2u generating here, as the other part, signature from uploader,
    would still not be there?

    --
    bye, Joerg

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to All on Mon Jun 17 11:30:01 2024
    Daniel Gröber writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    Hi Ansgar,

    On Fri, Jun 14, 2024 at 10:39:11PM +0200, Ansgar 🙀 wrote:
    ...

    Could you please expand on this and/or provide references? I have no idea what you're even talking about here.

    FTR, I have no idea either. Ansgar's assertions in this subthread
    seem quite wild and incomprehensible.

    I doubt any more involved patches to fix security issues would be
    applied. So I decided to not waste my time on that (but I checked
    briefly and it at a quick glance it looks like issues from ~5 years ago
    are still not resolved) and not stand in the way to create another stalemate in case someone wants to fix them.

    Glances can be deceiving. From what I've seen from dgit bugs Ian just likes to keep bugs open for discussion. I see no problem if thats what you're seeing.

    What bugs are you looking at? Please be more concrete.

    dgit has many open tickets in the Debian BTS, it's true.
    https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=dgit

    It's existed for 11 years and is a complicated piece of software.
    Perhaps we should stop using dpkg? It has ~5x as many open tickets!

    Personally I like to keep a bug open whenever it represents an
    opportunity for improvement to the software - or, even, as
    documentation, when it probably doesn't. For example,
    #726953 dgit fails with submodules
    is not very likely to ever be closed, and I think git submodules
    could never work with tag2upload. (Ob. note:
    never use git submoudles! https://diziet.dreamwidth.org/14666.html.)

    And, even quite important bugs can remain unsolved for a long time, if
    they depend on changes elsewhere. That's true of many of Important
    tickets. For example I had a conversation with some folks abut
    #829526 No TOFU for git server host key
    (sadly in RT, I think, so not public) and it's quite nontrivial.
    As another example,
    #932558 git-debpush service is not deployed
    has been blocked for four years, despite formal appeals to several
    DPLs and informal requests for help to several ex-DPLs and TC members;
    it might be unblocked by a GR, soon.

    None of the open tickets are IMO criticial to tag2upload, other than
    #1069001 tag2upload: [dgit ...] should include source= and version= fields which is a work item arising from Russ's security review.
    (The design is updated; that bug represents the fact that the code has
    not yet been improved.) And I would very much like to address
    #1073157 [dgit-infrastructure] access control system
    should have emergency fingerprint blocklist
    which arose from this thread.

    If you look at
    https://bugs.debian.org/cgi-bin/pkgreport.cgi?archive=1;src=dgit
    https://tracker.debian.org/pkg/dgit
    you can see that stagnation is not what's happening here.

    Of course, like any project in Debian, if people would like to help
    work on dgit and tag2upload to improve things, that'd be very welcome.
    But, yes, we are asking the project to approve the system basically as
    it is now.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Marco d'Itri@21:1/5 to Sven Mueller on Mon Jun 17 12:00:03 2024
    On Jun 17, Sven Mueller <[email protected]> wrote:

    1) because it is the job of FTPmaster to authenticate and authorize the
    uploader (and Joerg sees that as "human uploader", which I somewhat agree
    with) 
    If this were the actual issue then the ftpmasters could just run the tag2upload server themselves (which I think would make sense).

    2) because Joerg wants third parties to be able to verify the signature of
    the human uploader without the need for Debian specific tools.
    Yes, I understand what he wants. But again, it is not obvious why we
    should share this desire.

    There is another aspect he mentioned: he thinks the uploader needs to test
    the build of the package. (I'm theory I agree, but there are situations
    Everybody can upload totally untested packages even without tag2upload:
    maybe tag2upload would make this marginally easier, but then I do not
    believe that this is a compelling enough argument to offset the benefits
    of a tag2upload-like service.

    --
    ciao,
    Marco

    -----BEGIN PGP SIGNATURE-----

    iHUEABYIAB0WIQQnKUXNg20437dCfobLPsM64d7XgQUCZnAGtAAKCRDLPsM64d7X gcgJAQD2j3fST1wlF2HPjf9by+exGgF7N/Ty1xZS/Uf5UQDSDwD/fzvde7mupX0p LsKBuTMvI7hZKoO0pUgVRwXG36Di0go=
    =mFcv
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Soren Stoutner on Mon Jun 17 12:00:02 2024
    Soren Stoutner writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    As someone who has read every email in this chain, I have a couple of recommendations.

    1. Clarify that the GR does not prevent future flexibility in changing the tag2upload service and does not give Sean Whitton, Ian Jackson, Jonathan McDowell, or Russ Allbery perpetual power to direct how it is implemented. This was already discussed as the intent, but I think it should be clearer in the GR itself who has authority to implement and manage tag2upload going forward.

    I agree.

    IMO Russ is right to say that extablished project norms answer this
    question definitively, but this has come up more than once. We need
    it to be clear *in the text*.

    My recommendation is that either, 1) the tag2upload service should
    come under the implementation and management umbrella of the
    ftpmasters delegation, or, 2) the DPL should create a new delegation
    to implement and manage the tag2upload service. The DPL might
    consider appointing one or more of the four people listed above as
    either ftpmasters or to the new delegation (assuming they are
    interested and willing).

    This is a good point.

    Currently the *.dgit.d.o service maintainers are in a kind of
    governance limbo, since we just set up the service and now run it. If
    someone didn't like one of our decisions (for example, if we declined
    a maintainers' request to rewind a project's git history), the
    escalation process is not clear. That's not satisfactory. IMO we
    (the *.dgit.d.o service maintainers) should probably be delegates.

    The tag2upload conversion service becomes quite a critical piece of infrastructure. Realistically, it'll have to be maintained by the
    src:dgit team, since we know how it works.

    So I agree that this should be dealt with by DPL delegations.

    However, I don't want to get into this in the GR text. For two
    reasons. It is super important that GR texts should be short.
    Experience suggests that voting Project Members are more like electors
    in a public vote, than legislators: we should ask Members to decide
    broad policy, not ask them to approve details of governance.

    How about we add a bullet point, something like this:

    * This resolution neither prevents, nor encourages, any future
    changes.

    This leaves the resolution of any disputes implicit. In practice this
    means the DPL, which I think is fine.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Russ Allbery on Mon Jun 17 12:40:01 2024
    Russ Allbery writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    My understanding is that the problem with this
    design from their perspective is that it requires a fat client on the uploader's system,

    Yes.

    Indeed, we have a system very like this already. It's called dgit.
    dgit push-source *is* that fat client.

    In your inferred design sketch, the fat client makes a git tag which
    somehow encodes the special Debian-specific hash tree. That is kind
    of weird, and isn't really necessary. We can just make the existing Debian-specific hash tree signatures: the signatures on the .dsc and
    the .changes. So, with dgit, there are just two sets of signatures:
    one set for the archive, to make the upload be accepted, and one set
    for the git form, which gets pushed to dgit-repos.

    What we are trying to do with tag2upload is get rid of dgit. [1]

    Ian.

    [1] Well, of course, it still runs on the server, but it becomes an implementation detail of the automatic gateway between git and source
    packages.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Russ Allbery on Mon Jun 17 12:20:01 2024
    Russ Allbery writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    Timo R�hling <[email protected]> writes:
    Would it be possible for tag2upload generate some sort of log or diff of its operation? Then, a verifier does not have to reimplement the whole
    dgit logic with all its edge cases, it merely has to apply the same tree transformation(s) as t2u and verify that this will indeed produce the source package from the signed Git tag.

    I believe that's what tag2upload pushes to the dgit-repos server, although I'm not sure that exactly matches what you're asking for.

    Whst gets pushed to the dgit-repos server is:

    1. The original tag, made by the maintainer uxing git-debpush.
    It's a DEP-14 tag with a bit of additional metadata in the body,
    where the tagger declares precisely what and where they intend be
    upload.

    2. git commits generated automaticallty to convert the signer's tree
    to the canonical form and history. For a native package, there are
    no commits which change the tree. In the most common case[0] with
    a patches-unapplied package in gbp form, the tree-changing commits
    are precisely the patches in d/patches[1].

    3. There is also usually a synthetic merge commit, making the result
    fast-forward from the previous upload. That way the canonicalised
    git branch for a particular Debian suite is always ff.

    4. A git tag archive/debian/VERSION, on the canonical git view.
    This is signed by the t2u conversion system. (When you upload
    yourself with dgit, dgit makes a tag like this and signs it with
    your key.)

    The source package is made by running dpkg-source on the canonicalised
    tree, and the system verifies that unpacking that package results in
    the very same filesystem tree.

    So if you want to see what changes the t2u server made to the package *contents*, compared to the maintainer's git repo, you can use `git
    diff` on the two tags. In the most simple case for a gbp git tree,
    the result is precisely the diff implied by all the patches. For a
    native package. the diff will be empty: the two tags are treesame.[2]

    In an important sense, this git information is a log. It is
    append-only: the dgit-repos server does not accept force pushes.[3]
    We also plan for the t2u server to email reports to a mailing list.

    Ian.

    [0] I am eliding many corner cases!

    [1] "precisely the patches in d/patches" turns out to be extremely
    complicated in the general case. Different maintainer tooling
    interprets d/patches differently. dpkg-source and gbp do not agree!
    There are maintainer workflows and git trees with partially
    incompatible notions!

    [2] Because of the ff requirement, and the need to handle uploads not
    done with t2u or dgit, the canonical history may need to contain
    imports of .dscs. So the histories can differ.

    [3] There is an exception for NEW packages, because NEW review may
    discover that the history needs to be laundered. We can't do
    tag2upload with NEW at all right now because it can only do
    source-only uploads.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kurt Roeckx@21:1/5 to All on Mon Jun 17 12:40:01 2024
    ------3CV6WAMY9MAQSLXNX0HDDTIS3UHALD
    Content-Type: text/plain;
    charset=utf-8
    Content-Transfer-Encoding: quoted-printable

    Not having fully read everything, would this be acceptable:
    - The DSC contains a copy of the original signature, and the hash that was signed. Possibly an url to the repo at that time.
    - there exists some tool that can extract the information from the DSC, verify the git signature, and that it generates a tar with the same content?

    Kurt

    ------3CV6WAMY9MAQSLXNX0HDDTIS3UHALD
    Content-Type: text/html;
    charset=utf-8
    Content-Transfer-Encoding: quoted-printable

    <!DOCTYPE html><html><body><div dir="auto">Not having fully read everything, would this be acceptable: <br>- The DSC contains a copy of the original signature, and the hash that was signed. Possibly an url to the repo at that time. <br>- there exists
    some tool that can extract the information from the DSC, verify the git signature, and that it generates a tar with the same content? <br><br>Kurt<br></div></body></html>
    ------3CV6WAMY9MAQSLXNX0HDDTIS3UHALD--

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Matthias Urlichs on Mon Jun 17 12:40:01 2024
    Matthias Urlichs writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    Another way of doing this would be to teach t2u to simply push the tag
    to an append-only git store.

    tag2upload already does precisely that. (dgit does this too.)

    Then teach the builders that instead of their equivalent of "apt-get
    source" they should fetch this tag from our git store and run dgit
    (and then push the legacy source tarballs) themselves.

    Right now that wouldn't work right because only uploads done with
    tag2upload (or dgit) are visible in the dgit-repos git repository.

    This is why `dgit clone` must look at the ftpmaster API server, and
    archive mirrors, as well as the git repository, and must sometimes
    import source packages. So, for example, Raspbian, who are ingesting
    Debian as git branches, must use `dgit fetch` and can't use
    `git fetch`.

    One thing I'd like to do is make dgit unnecessary on the client side,
    too, and just let people use "git clone/fetch". I think supporting
    that is quite a way off.

    But an obvious next step is:

    Have a robot convert non-t2u/dgit uploads to git, and push the results
    to dgit-repos. That's not practical right now for a number of
    reasons, inclidng that it wouild dramatically and suddenly increase
    the size of dgit-repos for not much benefit. If tag2upload becomes
    widely used that calculus would change.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Joerg Jaspert on Mon Jun 17 13:00:06 2024
    Joerg Jaspert writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    On 17262 March 1977, Sean Whitton wrote:
    I would ask you not to characterise the disagreement we are having as merely over a technical detail.

    You see this as personal? I don't, but if it is not technical, what
    else?

    I think Sean means it's not a detail. From our point of view, we're
    talking about a critical property of our design.

    Which behind the scenes? To who did you talk?

    Firstly, I want to ask: would it have made any difference if we had
    raised the matter in public again on -devel?

    Based on your replies here, it seems that ftpmaster's objections are
    still just as firm now as they have been over the past four years.
    We wouldn't want to keep asking the same question on a list like
    -devel, when we are pretty sure the answer will just be the same; that
    would be rude to both ftpmaster and the rest of Debian.

    Anyway, if we're going down this route:

    I think we didn't speak to ftpmaster directly about this since 2019.

    I don't want to name names in case this turns into a finger-pointing
    exercise, but, over the years, we have spoken to various people, with
    varying levels of formality:

    * We made fairly formal appeals to two sitting DPLs. What we got
    was, basically, attempts at mediation, or facilitation of
    discussions. We didn't see that as helpful, since we saw an
    irreconcilable gap between our position and ftpmaster's.

    Sean and I were under the impression that the most recent response
    we got from a sittinug DPL was sent to us after consulting with
    ftpmaster.

    * We have asked for help from two sitting members of the TC, and one
    former DPL. I don't think any of those people would have spoken to
    ftpmaster, but neither did they suggest that we should raise the
    matter on -devel again.

    One outcome of that was encouragement to give the talk I did at the
    2023 Cambridge minidebconf. I explicitly stated that the project
    was blocked by ftpmaster, but of course I don't expect ftpmaster to
    have necessarily seen that talk.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Daniel =?utf-8?Q?Gr=C3=B6ber?=@21:1/5 to Joerg Jaspert on Mon Jun 17 13:30:02 2024
    Hi Joerg,

    On Mon, Jun 17, 2024 at 12:04:20AM +0200, Joerg Jaspert wrote:
    Also, currently we have the nicety that we store all signatures directly besides the source package, available for everyone to go and check.
    Linking back to the actual Uploader, not to a random service key. You
    can take that, run a gpgv on it and via the checksums of the files then
    see that, sure, this is the code that the maintainer took and uploaded.
    You do *not* need to trust any other random key on that. Not that of tag2upload. *AND* not that of FTPMaster.

    [...]

    We want dak (and anyone else) to be able to say "Yes, DD/DM $x has
    signed off this content". That only works, if dak (and later, the
    public, if they want to check too) have the signature for this in a way
    they can verify it. And not just a line somewhere "Sure, $service
    checked this for you, trust us, please".

    Idea: assuming we had support for (something like) source-format
    [3.0 (git)] in dak, tag2upload could generate a dsc in that [format], which could then include the maintainer's signed tag in the bundle.

    [format]: For those who don't know, essentially just a shallow git-bundle.
    [3.0 (git)]: https://wiki.debian.org/GitSrc

    That way everything is in the archive, assuming verifying git tags works on shallow clones and the conversion to a different source format doesn't
    present a problem for t2u.

    In my mind the dsc itself would still be signed by the t2u service key here
    but the original maintainer's signature is right there inside that dsc for anyone to verify.

    I keep coming back to the idea of working on 3.0 (git) but the thought of
    the ideas behind it having been (maybe?) rejected by ftp-master already is keeping me from even trying. I never could figure out why exactly it didn't
    go forward though? It's even in [dpkg-source] already so what happened
    there?

    [dpkg-source]: https://manpages.debian.org/unstable/dpkg-dev/dpkg-source.1.en.html#Format:_3.0_(git)

    --Daniel

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCAAdFiEEV6G/FbT2+ZuJ7bKf05SBrh55rPcFAmZwGqEACgkQ05SBrh55 rPfBQRAAtIBSM8mvL+vMhUNJkNAUqh5RTI5foIBUmdNu3+hSGjHO0I6aUk3HqKht NQ490hinWqfnj5Ta9gidzqhvBFVGRXQ6u03tdlw9ZddEFLPqf2pdaNk6ZQdOwnn7 ZGi3Ov//7Rd9OlrhuBFltgerlrR0g4cZ88XbWqa4928yY7sQAi7NGGx4he2T4tir BOZGa0uYwFbVo7kxDCjd/W8KPy6l2BcnStayCWPhSvLjsJV6e9QxCPjTVWKZ3VTc Ujbivsb70gDMK2w002cR5HKGFsWTL1HuSUddRKp50PVWgoeeRAq7/6+Y4RZqWiEG /erEqVC7OJ8HK9nA+O/MjzebC6zl/j/YfttperC9q1bcRuwlQAynN9iU3p5LLaxd ruAnDDJ696eArNdiGjfAsCU2DJ2QcZ2a2A1WSCiwhTURuujnpSDOHlscf2C+4K+W izBHsTLWFwvrp2mKKXvvyVkZDT/T54vFLrwRCJhoxpnj6GVdbJgT2Vqx5Bo3TtJi 2B6OtVq4cvnrX4JeMQaiVNFyFdZ0AsOlAXK1Z4KZ59+k/Z1B9DBQx/m7F5lI/6tS O7kz6P420pSORYAfvqlaNqJcAe59J0yJOkWpYvact1KiJV2aC9v3ned/FGZ63bEk T2qiQ1Bx72j6ftjFfEe4ssUkKr1TJtixcHgpMdPVUYLS/QE0OZ8=
    =x8Dg
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Mon Jun 17 13:30:02 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------UX8nQ2ZIuU5uIvqHMXsEyUMh
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMTcuMDYuMjQgMTI6MTQsIElhbiBKYWNrc29uIHdyb3RlOg0KPiBbMV0gInByZWNpc2Vs eSB0aGUgcGF0Y2hlcyBpbiBkL3BhdGNoZXMiIHR1cm5zIG91dCB0byBiZSBleHRyZW1lbHkN Cj4gY29tcGxpY2F0ZWQgaW4gdGhlIGdlbmVyYWwgY2FzZS4gIERpZmZlcmVudCBtYWludGFp bmVyIHRvb2xpbmcNCj4gaW50ZXJwcmV0cyBkL3BhdGNoZXMgZGlmZmVyZW50bHkuICBkcGtn LXNvdXJjZSBhbmQgZ2JwIGRvIG5vdCBhZ3JlZSENCj4gVGhlcmUgYXJlIG1haW50YWluZXIg d29ya2Zsb3dzIGFuZCBnaXQgdHJlZXMgd2l0aCBwYXJ0aWFsbHkNCj4gaW5jb21wYXRpYmxl IG5vdGlvbnMhDQoNClRoYXQncyBhbiBpbXBvcnRhbnQgcG9pbnQgSU1ITy4NCg0KU2F5IEkg bmVlZCB0byBhcHBseSBhIHNlY3VyaXR5IHBhdGNoIHRvIHNvbWUgcGFja2FnZSdzIGdpdCB0 cmVlIG9uIA0KU2Fsc2EuIEhvdyBjYW4gSSBiZSBzdXJlIHRvIGV2ZW4gY3JlYXRlIHRoZSBz YW1lIHNvdXJjZSB0cmVlIGFzIHRoZSANCnByZXZpb3VzIHVwbG9hZGVyPyBJIGRvbid0IGtu b3cgd2hpY2ggdG9vbCB0aGUgbWFpbnRhaW5lciB1c2VkLCBub3IgdGhlIA0Kb3B0aW9ucyBz dXBwbGllZCB0byBpdCwgc28gSSBjYW4ndC4NCg0KVGh1cyBJIG5lZWQgdG8gaWdub3JlIHRo ZSBtYWludGFpbmVyJ3MgZ2l0IHRyZWUgaW4gZmF2b3Igb2YgImFwdC1nZXQgDQpzb3VyY2Ui LCBtYW51YWxseSBhcHBseSB0aGUgZml4LCB1cGxvYWQgdGhhdCB0byB0aGUgYXJjaGl2ZSwg dGhlbiBhcHBseSANCnRoZSAoaG9wZWZ1bGx5KSBleGFjdCBzYW1lIHBhdGNoIHRvIHRoZSBh Y3R1YWwgZ2l0IHNvdXJjZXMuIFNvcnJ5IGJ1dCANCldURj8gWzFdDQoNCnQydSBrbm93cyBo b3cgdG8gYnVpbGQgdGhlIHNvdXJjZSBhbmQgd2lsbCBkbyBpdCB0aGUgc2FtZSB3YXkgd2l0 aCB0aGUgDQpzZWN1cml0eSBwYXRjaCBhcHBsaWVkLiBXYXkgbGVzcyBtYXJnaW4gZm9yIGVy cm9yLiBbMl0NCg0KWzFdIEkgaGF2ZSBhIHRvbiBvZiBzeW1wYXRoeSBmb3IgdGhvc2UgRERz IChJIGtub3cgb2YgYXQgbGVhc3QgdGhyZWUpIA0Kd2hvIGRlY2lkZWQgdG8gcGF1c2UgdGhl aXIgaW52b2x2ZW1lbnQgd2l0aCBEZWJpYW4gcGFja2FnaW5nIGJlY2F1c2UgDQp0aGVyZSBz dGlsbCBpcyB6ZXJvIHN1cHBvcnQgZm9yIGEgImdpdCBtYWtlLXNwZWNpYWwtdGFnICYmIGdp dCBwdXNoIA0KYnVpbGRlciIgd29ya2Zsb3cuDQoNClsyXSBUaGVyZSdkIGJlIGV2ZW4gbGVz cyBtYXJnaW4gZm9yIGVycm9yIGlmIHdlIGRlY2lkZWQgb24gKm9uZSogDQpjYW5vbmljYWwg Z2l0LWNvbXBhdGlibGUgd29ya2Zsb3cgdGhhdCBvdXIgbWFpbnRhaW5lcnMgYXJlIGV4cGVj dGVkIHRvIA0KdXNlLCBhcyBpbiBhICJ3aGVuIHNvbWVib2R5IGNvbnZlcnRzIHlvdXIgcGFj a2FnZSB0byB0aGlzIHN0cnVjdHVyZSB5b3UgDQpkb24ndCBnZXQgdG8gdmV0byB0aGVtIGFu ZCB5b3UgZG9uJ3QgZ2V0IHRvIHVuZG8gdGhlaXIgd29yayIgcG9saWN5LCBidXQgDQp0aGF0 J3MgYXQgbGVhc3QgYW5vdGhlciBkZWNhZGUgb2YgRGViaWFuLXN0eWxlIGRpc2N1c3Npb25z IGF3YXkuDQoNCi0tIA0KLS0gcmVnYXJkcw0KLS0gDQotLSBNYXR0aGlhcyBVcmxpY2hzDQoN
    Cg==

    --------------UX8nQ2ZIuU5uIvqHMXsEyUMh--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZwGG4FAwAAAAAACgkQcs+OXiW0wpPl 8RAAvh5NoybOsWtkyTilzKVSTHUKNpNqce6uah257IAfjkRnqF1f45r9BOf0ND2Q5E0CDzLE9/nw cWi5cAEragbjsgRag0fT/Y+5L5u2CzZFMxR7HAL6P/m4TqlHoesxbxjHr5iFWkq2d5LToxGlPZ5W lPCkjTAKYl3blGJ3pxKxn4Va8LoZ4uHMM372uovTFSgZJiS7jnrVxUWeoBiARh1NuPlUMwOFiVsX 0wXPvhJlBqTZ6Mrb6wx4qxTviN3IQyag62aaDC3BWiETDjqPUwfOgseVVRJ1eSy6B11b1076XppD Kelwgb9yUcQB89Y2g47Za2zJ/O3FC4J4C1flgOmkbnKvLG3vsODq5KmjMcl+lFrEhpPMRhDo+j+U Bg4sPMoFCtEVJjEg4IdKXaIZXpqMhOtynERLTcB/LURrErXnbXwfvspPJyqM728D0XFgKM4orE3F EytYQ6dFzj+00usixKI56jyS5hPVsxRVypkH1lalAIWacbtSA4AbzLrQanyjRgT/MVew0VXFSlP5 dfMzbyZH6R67vY2/hRHSt3Abt6ZiiYgagmAjgIJLDKseoBGhRKp+gw8byk+S0zj1npgzcgSHebpB rG26cFzFeZx3JNV2FXscUHBIXYOX3qc895ECuk67SU5b+tquBVs35kwthLgKgBXNKpx9Vg4AW9p9 yeg=
    =KLHE
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Matthias Urlichs on Mon Jun 17 14:00:01 2024
    Matthias Urlichs writes ("Re: [RFC] General Resolution to deploy tag2upload [and 1 more messages]"):
    Say I need to apply a security patch to some package's git tree on
    Salsa. How can I be sure to even create the same source tree as the
    previous uploader? I don't know which tool the maintainer used, nor the options supplied to it, so I can't.

    This is the security uploader's version of my blog post https://diziet.dreamwidth.org/9556.html titled:
    Get source to Debian packages only via dgit;
    "official" git links are beartraps

    Thus I need to ignore the maintainer's git tree in favor of "apt-get
    source",

    `dgit clone` will automate this for you, including importing the
    source into git. As a bonus, if the maintainer used `dgit push`,
    you get their git history, not just a .dsc import.

    This is the security uploader's version of my blog post https://diziet.dreamwidth.org/17579.html titled:
    Don't use apt-get source; use dgit

    Sadly if there was a previous security upload, that won't have been
    done via dgit push, because that's not supported. That's

    #1050143 dgit: support uploading to security-master

    I'm kind of hoping that if tag2upload becomes popular, there will be
    additional momentum there. It's not trivial - there's real work
    involved, on the part of multiple teams.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jonathan Carter@21:1/5 to Ian Jackson on Mon Jun 17 13:40:01 2024
    Hi Ian

    On 2024/06/17 12:56, Ian Jackson wrote:
    * We made fairly formal appeals to two sitting DPLs. What we got
    was, basically, attempts at mediation, or facilitation of
    discussions. We didn't see that as helpful, since we saw an
    irreconcilable gap between our position and ftpmaster's.

    Sean and I were under the impression that the most recent response
    we got from a sittinug DPL was sent to us after consulting with
    ftpmaster.

    My response was to suggest that you find a way to talk to DSA/ftpmaster, ideally in person, and that you check whether the xz-utils postmortem in
    MDC Hamburg was happening, because that would be an ideal place to speak
    to both in person.

    I wouldn't necessarily expect that you get the exact resolution that
    you're looking for, but when you get enough people together in person
    that understands the infrastructure and the trust chain well, then there
    should be a good chance that at least an alternate solution could be
    presented. I know that they specifically said they don't want the
    service to have it's own upload key, but perhaps there are other ways to implement this without losing the key benefits that tag2upload provides.
    I'm sure you and Sean have thought a lot about it, but you might have
    some more leeway from DSA/ftpmaster if they have also taken a shot at it
    and exhausted all the possibilities.

    Personally, I think that tag2upload is a great idea and it has a lot of potential, and I want to see it succeed, but I think a more pragmatic
    approach might get you there faster than forcing it.

    As a project, I think we have some lessons to learn from overriding
    maintainers from the issues that arose from usr-merge/dpkg, and
    overriding two teams of people that are both highly skilled and
    competent at keeping critical infrastructure up for so long, won't sit
    well with many DDs voting on this either.

    As I suggested in my reply to you months ago, I still believe that
    working with ftpmaster to come up with solutions will be worth while,
    but I don't think email/irc are the best platforms for hashing out problems.

    As an aside, it might be worth while to integrate tag2upload into other services. I wasn't sure if I wanted to go down this rabbit hole in this
    mail, but Debusine looks like it has a lot of potential, and it could be
    a great backend for a PPA-like service, which could also have tag2upload integration or could even be *the* way it's implemented. That way
    tag2uplaod could get wider testing and more by-in from users using that service. It probably doesn't sound very useful to suggest that you
    integrate tag2upload with a PPA service that's effectively still
    vapourware, but sometimes you need to have some good long-term strategy
    in order to get change to happen.

    When it comes to tag2upload, I believe it's something that most people
    would want. At least it doesn't take away from any existing workflow or
    force people to change their habits right away, so in terms of being
    able to gain support for it, it has a lot going for it. The cost of
    overriding DSA/ftpmaster is really high though, and I'm not sure it's
    worth while doing a GR until all other options have been properly
    exhausted. Even if there is a GR, I believe a vote for "we all really
    want this, please find a way forward" would be better than "let's force
    this to happen right now".

    -Jonathan

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jonas Smedegaard@21:1/5 to All on Mon Jun 17 14:00:02 2024
    Quoting Matthias Urlichs (2024-06-17 13:05:17)
    On 17.06.24 12:14, Ian Jackson wrote:
    [1] "precisely the patches in d/patches" turns out to be extremely complicated in the general case. Different maintainer tooling
    interprets d/patches differently. dpkg-source and gbp do not agree!
    There are maintainer workflows and git trees with partially
    incompatible notions!

    That's an important point IMHO.

    Say I need to apply a security patch to some package's git tree on
    Salsa. How can I be sure to even create the same source tree as the
    previous uploader? I don't know which tool the maintainer used, nor the options supplied to it, so I can't.

    Thus I need to ignore the maintainer's git tree in favor of "apt-get source", manually apply the fix, upload that to the archive, then apply
    the (hopefully) exact same patch to the actual git sources. Sorry but
    WTF? [1]

    It seems you are looking at this backwards: You don't "need to" anything
    with git or salsa.

    What you "need to" do, if you want to contribute to a Debian package, is
    follow whatever is the maintenance style for that package.

    Your WTF seems to be from a false assumption that git is central to
    Debian package maintenance. It isn't. It is popular, but not central,
    nor standardized.

    The topic of this GR is not streamlining Debian use of git, but allowing
    a simpler path from existing messy git to acceptance into Debian.


    - Jonas

    --
    * Jonas Smedegaard - idealist & Internet-arkitekt
    * Tlf.: +45 40843136 Website: http://dr.jones.dk/
    * Sponsorship: https://ko-fi.com/drjones

    [x] quote me freely [ ] ask before reusing [ ] keep private --==============56900651718541876=MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Description: signature
    Content-Type: application/pgp-signature; name="signature.asc"; charset="us-ascii"

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEn+Ppw2aRpp/1PMaELHwxRsGgASEFAmZwI60ACgkQLHwxRsGg ASFHYhAAkySuMrTqfFNI5+4gw2jKFQvOl6V4zKdnCvKAeptrHFtq87cB1TvrH+TS cWLRyvb0AWxPBNaGvJHyiOPuVKAeLQxez2OA+FOV/famd+BFIKcJmd0TN4t+QXpe fQOxu9Ag4JV8m/ArhmXyFUh9tfbakV6YzEgNc27MN5lzaUKTtgdTXY3DCH2m2lpT xuJFW+4hh5U62gm4XEfhQDrEbXvtsaFmbqi/DF5wRrbSThfdDF1xHf1Cgh+uUN86 EtWzkovwUysiHZj7Hoo0oXD2qDTHCTgA7YtLHEtS0a/E1Ld0lGb2wWgmE3j5L2cv CJU/1rXChb49I/9I88mA8ICbYoF/yTrAKjsqbCtP+EQMXxiFQf6zijbrDanwzrqB DTTv4bZlNUcBXtkKmuNZa1riMVgGg/mJXE0R9SeCAeOKpwYnGMmexC097kzn3ZhG LPYaXFcEoFmB35TNCC751nVOKt3AC7fA6aZta11I
  • From Ian Jackson@21:1/5 to Kurt Roeckx on Mon Jun 17 14:00:02 2024
    Kurt Roeckx writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    [how about a design which includes:]

    - there exists some tool that can extract the information >from the
    DSC, verify the git signature, and that it generates a tar with
    the same content?

    The difficult part is "the same content". Converting a maintainer's
    git tree into a corresponding list of files for the .dsc is far from
    trivial.

    It's trivial in simple cases. For example, with a native package, the
    git tree is identical to the extracted source package.

    In the full generality it's very complicated. dgit has thousands of
    lines of code to deal with all of the edge cases and malbehaviours and disagreements amongst the various tools.

    For example, you perhaps knew that git and dpkg-source disagree about
    how to represent "commit message" information in a patch file. But
    did you know that they can disagree about the *file changes* implied
    by a patch ?

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sven Mueller@21:1/5 to the signature by the developer on on Mon Jun 17 14:00:02 2024
    Am 2024-06-17 11:39, schrieb Joerg Jaspert:
    On 17263 March 1977, Matthias Urlichs wrote:

    Still, we should find a way to keep the existing property of
    verifying
    what the uploader signed to upload *without* requiring a third-party
    $something to be available.
    Verifying what the uploader signed is simple enough, it's a git tag.
    You fetch it and verify that the hashes match ("git fsck"; current git
    is hardened against SHAttered) and that it's signed by the correct
    key.

    Thats a third-party.

    That claim depends on the definition of first party. You use a narrow definition of it (only the archive / mirrors and dak are first party,
    unless I misunderstood), others would include salsa and tag2upload in
    their definition of first party. I haven't made up my mind yet on which
    one I find more compelling. But for the sake of argument, let's use your definition in my reply.

    You want to verify t2u's work? Simple enough, run dgit and compare to
    whatever t2u sent you. No $something required.

    $something is required. It is not there with the source package on your mirror. It is a random other place. Sure, hosted by Debian, but its
    still elsewhere and another thing required to have.

    I don't know git very well (so please be tolerant when my wording
    doesn't match what canonical verbage git enthusiasts would use), but if
    I understood correctly, one could create some a bundle (sort of archive)
    from a git repo, restricted to only a few (one?) state. Assuming I'm
    right and one could create a bundle that *only* contains the state of
    the git repo at the tag that the Debian developer signed. Would it be acceptable to you if tag2upload did the following:
    1) Create the standard Debian source package (.dsc, .orig* archives if applicable, .debian* archive or .diff*) from the git tag that was
    signed.
    2) Create a bundle of the git repo at said tag
    3) If that doesn't already include the signed tag, somehow export that
    as well, including the verifyable signature
    4) Upload bundle, dsc, tag2upload-signed .changes-file with references
    to the bundle and dsc and other uploaded files (.debian*, .orig*,
    .diff*)

    Assuming someone would provide a code update to dak to verify that the
    tag is signed correctly and that the bundle contains the state at the
    signed tag, would that be sufficient in your view, or would you *also*
    want something to verify that the .dsc and related source-package files
    are actually generated from that? Because if you also wanted that, we
    would be back at square one, since you didn't want dak (or a tool called
    by it) to generate the source package (assuming I didn't misunderstand
    previous mails).
    AFAICT, this would allow us to keep the data in the relevant git tag and
    the signature by the developer on said tag right next to the (generated)
    source package.

    Another way of doing this would be to teach t2u to simply push the tag
    to an append-only git store. Then teach the builders that instead of
    their equivalent of "apt-get source" they should fetch this tag from
    our git store and run dgit (and then push the legacy source tarballs)
    themselves.

    Would that scheme work better for you?

    Not with an unchanged archive structure.

    Oh wait, you mean the builders generate the source package as it will
    end up in the archive? Where is the difference in builders generating
    vs. t2u generating here, as the other part, signature from uploader,
    would still not be there?

    (Not a direct reply) In my proposal above, this would essentially be
    equivalent to .bundle+tag+sig = Developer upload, source package &
    binary packages: Generated and uploaded by builders (including
    tag2upload).

    Kind regards,
    Sven

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michael Lustfield@21:1/5 to [email protected] on Mon Jun 17 14:30:01 2024
    On Mon, Jun 17, 2024, 04:53 Jonas Smedegaard <[email protected]> wrote:

    Quoting Matthias Urlichs (2024-06-17 13:05:17)
    [...]
    Thus I need to ignore the maintainer's git tree in favor of "apt-get source", manually apply the fix, upload that to the archive, then apply
    the (hopefully) exact same patch to the actual git sources. Sorry but
    WTF? [1]

    [...]

    The topic of this GR is not streamlining Debian use of git, but allowing
    a simpler path from existing messy git to acceptance into Debian.


    Is this a GR? If it is, don't we have a process that's designed to
    eventually stop never-ending back and forth disagreements, like the many
    that have been seen in these threads?

    <div dir="auto"><div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jun 17, 2024, 04:53 Jonas Smedegaard &lt;<a href="mailto:[email protected]">[email protected]</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px
    0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Quoting Matthias Urlichs (2024-06-17 13:05:17)<br>
    &gt; [...]<br>
    &gt; Thus I need to ignore the maintainer&#39;s git tree in favor of &quot;apt-get <br>
    &gt; source&quot;, manually apply the fix, upload that to the archive, then apply <br>
    &gt; the (hopefully) exact same patch to the actual git sources. Sorry but <br> &gt; WTF? [1]<br>
    <br>[...]<br><br>
    The topic of this GR is not streamlining Debian use of git, but allowing<br>
    a simpler path from existing messy git to acceptance into Debian.</blockquote></div></div><div dir="auto"><br></div><div dir="auto">Is this a GR? If it is, don&#39;t we have a process that&#39;s designed to eventually stop never-ending back and forth
    disagreements, like the many that have been seen in these threads?</div><div dir="auto"></div></div>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Jonas Smedegaard on Mon Jun 17 14:20:02 2024
    Jonas Smedegaard writes ("Re: [RFC] General Resolution to deploy tag2upload [and 1 more messages]"):
    Your WTF seems to be from a false assumption that git is central to
    Debian package maintenance. It isn't. It is popular, but not central,
    nor standardized.

    git is central to most software maintenance in the world at large.
    Not all, by any means. But, overwhelmingly, most.

    In Debian it's unstandardised *unless* you use dgit push or tag2upload.
    Then the git representation *is* standardised, albeit complex.

    The topic of this GR is not streamlining Debian use of git, but allowing
    a simpler path from existing messy git to acceptance into Debian.

    I don't think this is true. tag2upload (like dgit) imposes a taxonomy
    of git approaches, and defines precisely what each of these named
    approaches means.

    The system is complicated, and has some unfortunate details (necessary
    for compatibility reasons), but it's not an intractable mess.[1]

    The alternative would be to try to force every package into the same
    mold, which I think is unworkable. It certainly wouldn't be popular.

    Ian.

    [1] It could be simplified in the future if we were prepared to rule
    out various strange things that can be found in source packages. I
    think this is quite theoretical, given the political situation.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Rakhmatullin@21:1/5 to Michael Lustfield on Mon Jun 17 14:40:02 2024
    On Mon, Jun 17, 2024 at 05:07:43AM -0700, Michael Lustfield wrote:
    Thus I need to ignore the maintainer's git tree in favor of "apt-get source", manually apply the fix, upload that to the archive, then apply the (hopefully) exact same patch to the actual git sources. Sorry but WTF? [1]

    [...]

    The topic of this GR is not streamlining Debian use of git, but allowing
    a simpler path from existing messy git to acceptance into Debian.


    Is this a GR? If it is, don't we have a process that's designed to
    eventually stop never-ending back and forth disagreements, like the many
    that have been seen in these threads?

    It wasn't formally started by the GR proposers yet.

    --
    WBR, wRAR

    -----BEGIN PGP SIGNATURE-----

    iQJhBAABCgBLFiEEolIP6gqGcKZh3YxVM2L3AxpJkuEFAmZwLG4tFIAAAAAAFQAP cGthLWFkZHJlc3NAZ251cGcub3Jnd3JhckBkZWJpYW4ub3JnAAoJEDNi9wMaSZLh v1UQAJhraBoyvDtqJF7DVTsvHxeS6sNvb+oJEzWkH8/3BcVw77M3i/BkUowIJiw7 W5AyQ7XM5YiuGbX6EtK4WhCyrnx7osv9OqiT2ttM/Q2zvZ4Awnd08x64Mlm6WuUc kKnnTVIgKF4RJhmdlmA7Ll17Mq24Pk2ZVD+E7THL7qXFJ3JJVmFaqO1wCdnFUgut GhudapRU+Al/MxyHAvB8uOYHsjAlk5Ypzu9dAYBgTH+7uuiccjwOttN0EUyWK8x/ bgyze/YfVwsuBx1JHz5Y0P/lrcDXUNonrnrVfQwGcwOOVvWHrngV22fKLQiEgK5q 7ggYBn8PiGOYc/4rTo3BFJBwn/Nbr0Md9jAhO12eEUynHchcYNq9gh7G2nuyLa2/ 1l9yugw+W5D7AVa+Mi2c8d6VuQBLTDCzeTY2XIVorhOmaWni58s2KMb1UtY5MCCu 4SalPdAoO2UdpmrOW5TaCbsm7tpFbsPH3x1EuTAtv2k/UrrNBR8LqL4AVZl1n1K/ lAAbuK5YNKh24c9E0OkMIRjagICMXQvSSGcymGFFXJAMd9nFLIL9Ks7r1NeSrUUR iISS6POzRHV87T4Kem8b9fduPvFuusyU1KXz90fz6xyqXchbwqSuybNl4S+4/e5w 8TxMmxiA9AVaSBN70L7540vjJF3uj2PEtNstfEm32qAgEJV3
    =nOZ/
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Aigars Mahinovs@21:1/5 to Bart Martens on Mon Jun 17 14:50:01 2024
    On Sun, 16 Jun 2024 at 17:32, Bart Martens <[email protected]> wrote:

    On Sun, Jun 16, 2024 at 03:31:25PM +0200, Matthias Urlichs wrote:
    On 13.06.24 10:26, Sean Whitton wrote:
    Yes. A proposal that has not yet engaged with the complexities of
    3.0 (quilt) is not one in which we can yet have any confidence.

    The proposal simply intends to do whatever the uploader would do to build the source package from a tagged git worktree, except in a controlled and sandboxed environment.

    I fail to understand why we should have any less confidence in that than in whatever the uploader does manually to achieve the same result (we hope!!).

    One could argue that neiter matter. It is the outcome that matters: the source
    package itself. That's what gets distributed.

    One could argue that neither matters, it is the binary package that
    end users actually
    use on their systems, that runs commands on millions of installations, as root.

    And that binary package nearly always nowadays is generated *and signed* by an automated software system on one of Debian's servers. Not by the maintainer.

    You already have to go back the chain of verifications via
    automatically signed files:
    Release -> Packages -> binary deb -> source dsc

    What difference does it make to add another step to the end: -> git tag

    --
    Best regards,
    Aigars Mahinovs mailto:[email protected]
    #--------------------------------------------------------------#
    | .''`. Debian GNU/Linux (http://www.debian.org) |
    | : :' : Latvian Open Source Assoc. (http://www.laka.lv) |
    | `. `' Linux Administration and Free Software Consulting |
    | `- (http://www.aiteki.com) |
    #--------------------------------------------------------------#

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Michael Lustfield on Mon Jun 17 15:10:01 2024
    Michael Lustfield writes ("Re: [RFC] General Resolution to deploy tag2upload [and 1 more messages]"):
    Is this a GR?

    It is not yet a formally proposed GR. So in one sense, no.

    If it is, don't we have a process that's designed to eventually
    stop never-ending back and forth disagreements, like the many that have been seen in these threads?

    Actually, it seems to me that these threads, while long, have mostly
    avoided repetetive back-and-forth.

    The formal GR discussion period is very short. We have had a couple
    of important points raised here imply changes to the resolution.

    I think the thread so far has been very useful to help everyone
    understand our proposal; to reconfirm that our position and
    ftpmaster's are still irreconcilable; and to help us identify
    questions we probably want to address in the FAQ we're preparing.

    I don't think we would have achieved that with the formal GR
    discussion period. We anticipated that there would be many questions,
    which is why we started with a draft.

    I agree that we don't want to drag this out. I have been trying to
    avoid replying when I wouldn't be adding anything. I think Sean and
    Russ have been doing the same.

    And, we'll bring this to a formal GR soon, so hopefully you'll only
    have to bear a few more weeks of this. In the meantime, thanks for
    your forbearance.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Mon Jun 17 15:30:01 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------jvMkVeovk9cXXIRrXST3EWI1
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMTcuMDYuMjQgMTM6NTMsIEpvbmFzIFNtZWRlZ2FhcmQgd3JvdGU6DQo+IFdoYXQgeW91 ICJuZWVkIHRvIiBkbywgaWYgeW91IHdhbnQgdG8gY29udHJpYnV0ZSB0byBhIERlYmlhbiBw YWNrYWdlLCBpcw0KPiBmb2xsb3cgd2hhdGV2ZXIgaXMgdGhlIG1haW50ZW5hbmNlIHN0eWxl IGZvciB0aGF0IHBhY2thZ2UuDQoNCkV4YWN0bHkuIFRoZSBwcm9ibGVtIGlzIHRoYXQsICph c3N1bWluZyogdGhhdCB0aGUgbWFpbnRhaW5lciB1c2VzIGdpdCwgDQp3aGljaCBJTUhPIHRo ZSBtYWpvcml0eSBkb2VzLCBJICpzdGlsbCogaGF2ZSBubyBpZGVhIHdoYXQgdGhleSBkaWQg dG8gDQpjcmVhdGUgdGhlaXIgc291cmNlIHVwbG9hZCwgaGVuY2Ugd2hhdCBJIGhhdmUgdG8g ZG8gdG8gY3JlYXRlIGEgTk1VIHRoYXQgDQpkb2Vzbid0IGJyZWFrIHRoaW5ncy4NCg0KTWln aHQgYmUgZGdpdCAod2l0aCB3aGljaCBvcHRpb25zPykuIE1pZ2h0IGJlIHNvbWV0aGluZyBl bHNlLiBJIGhhdmUgdG8gDQpkaWcgdGhyb3VnaCB0aGUgcGFja2FnZSB0byBmaWd1cmUgdGhp cyBvdXQuDQoNCkhlY2sgSSBuZWVkIHRvIGRpZyB0aHJvdWdoIHRoZSBwYWNrYWdlIHRvIGZp Z3VyZSBvdXQgaG93IEkgZGlkIG15IG93biANCnVwbG9hZHMgYWZ0ZXIgbm90IHRvdWNoaW5n IHRoZW0gZm9yIGEgeWVhciBvciB0d28uIChJIGtpbmRvZiBkb3VidCBJJ20gDQp0aGUgb25s eSBwZXJzb24gd2l0aCB0aGlzIHByb2JsZW0uKQ0KDQpIb3dldmVyOiBpZiB0aGUgcHJldmlv dXMgdXBsb2FkIHVzZWQgdGFnMnVwbG9hZCwgd2hpY2ggcHJlc3VtYWJseSBpcyANCmdvaW5n IHRvIGJlIHZlcnkgY29tbW9uIGluIHRoZSBub3QgdG9vIGRpc3RhbnQgZnV0dXJlIGdpdmVu IGl0cyANCmNvbnZlbmllbmNlLCBzcGVlZCwgYW5kIG1vc3RseS1ub24tZGVwZW5kZW5jZSBv biBEZWJpYW4tc3BlY2lmaWMgDQp0b29saW5nLCB0aGVuIEkga25vdyBleGFjdGx5IHdoYXQg dG8gZG8gYW5kIHRoZXJlJ3MgKGFsbW9zdCDigKYpIHplcm8gDQptYXJnaW4gZm9yIGVycm9y LiBJIGRlZmluaXRlbHkgZG9uJ3QgbmVlZCB0aGUgY29ycmVjdCByZWxlYXNlIG9mIGRnaXQu DQoNCkluIHByaW5jaXBsZSwgd2l0aCB0MnUgSSBkb24ndCBldmVuIG5lZWQgYSBEZWJpYW4g c3lzdGVtIGluIHRoZSBmaXJzdCANCnBsYWNlLiBJdCdzIGp1c3QgYSBnaXQgdGFnLiBJIGNh biBjcmVhdGUgaXQgb24gYSBGZWRvcmEgc3lzdGVtLiBPciBvbiBNYWNPUy4NCg0KLS0gDQot LSBtaXQgZnJldW5kbGljaGVuIEdyw7zDn2VuDQotLSANCi0tIE1hdHRoaWFzIFVybGljaHMN
    Cg0K

    --------------jvMkVeovk9cXXIRrXST3EWI1--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZwNiIFAwAAAAAACgkQcs+OXiW0wpOl Ow/9HEuYcZOCftUN7CnqBfgYY7j7Kd0wHDq85lbEogOWtU+qt2p8C4HP+/nMXW/e+4sgfFQAX31l LnvJRgnabegh5kJzWvxiy1n9SxLNYfMrSxgoqZFvcGTX7AVEUy81Hnd4S6abNeXWe7+4zKWxaIvG ul7s9gRSmRlOSmHb1ZIidgkvNhLdYHUZ5sVne1X/pQPfgeynRR1V1A59un55XadUJebK6aYNADsO 3wa3DNsup1xyFLjpruNC1t/gBVylLlv8EG3EycJCoa2vDwakX3SQNbx5GYj8alBtDC/yPussXYmu MgiQFI7sTnFQWF8YJ638PRF2JRVLDM4XtmPrklkcWb69uIpeFxeVfFLMxRt6chdBgilJMOUhM+vp jgI2Hou8SM/n4bJE21cc4K6CDWg1L6lXJ2HTj5dsGsk4cx+z5OfV5xRIqv+0xgodE42gxHJ71XYJ c6aBpiYKNtiQdmcd/MyD0sflvAjO90IKolqOIMGqEnpME83vqlERqdp/0QWM18mUV1yB6Vmbamk+ 8MbzW7rIg27c04bWEc8Nqcn19gXiFEH6C2BnhRKAVYHqrs+kv6GncCDjIyRsSFDm1rjIB3/MvAGC HNaeBzPl/nQRRtZTowujrLMjMpeOafM3wIkEnJsIyWz//n2CQUhYhTTeJxvD14hxKxFhcRar8qsn g9s=
    =ft9x
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jonas Smedegaard@21:1/5 to All on Mon Jun 17 15:30:01 2024
    Quoting Ian Jackson (2024-06-17 14:13:00)
    Jonas Smedegaard writes ("Re: [RFC] General Resolution to deploy tag2upload [and 1 more messages]"):
    Your WTF seems to be from a false assumption that git is central to
    Debian package maintenance. It isn't. It is popular, but not central,
    nor standardized.

    git is central to most software maintenance in the world at large.
    Not all, by any means. But, overwhelmingly, most.

    In Debian it's unstandardised *unless* you use dgit push or tag2upload.
    Then the git representation *is* standardised, albeit complex.

    Has Debian standardized dgit for git source package representation?
    Or do you simply mean that dgit is standardized by the dgit developers,
    same as various other tools like git-buildpackage arguably has
    standardized their various structures as well?

    The topic of this GR is not streamlining Debian use of git, but allowing
    a simpler path from existing messy git to acceptance into Debian.

    I don't think this is true. tag2upload (like dgit) imposes a taxonomy
    of git approaches, and defines precisely what each of these named
    approaches means.

    Oh, if one of the proposers of the GR insists that the GR is indeed about streamlining Debian use of git, then I'll back off.


    - Jonas

    --
    * Jonas Smedegaard - idealist & Internet-arkitekt
    * Tlf.: +45 40843136 Website: http://dr.jones.dk/
    * Sponsorship: https://ko-fi.com/drjones

    [x] quote me freely [ ] ask before reusing [ ] keep private --==============(93603548523444657=MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Description: signature
    Content-Type: application/pgp-signature; name="signature.asc"; charset="us-ascii"

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEn+Ppw2aRpp/1PMaELHwxRsGgASEFAmZwOH8ACgkQLHwxRsGg ASEszQ/8CnBnpb8yPsGTGYka8ge3GyxFh5cF12jvNfQ1nJKuNmZiEOkC71DBsVqt U1FL/9oAGDno4RqKg/275bL0/kizdY9P7MU89kEesRQ2QpOlpSUDfMMRPee3bCyE p8YMPigUaDGcMx1Fi21EvoqiME/R94asb32fN59cLOPAt4fobHjSVkcErvS9a1Aj oJehcBTYGdaEO3R/cHVGVVAEf04VnjTaa0XdQgmOo5BH94EXPTfdMc1MNm5dIYQ+ sjd6C+Mw3oIEWb17xGpow6INjbJKvScHFJBNsbddBUVkRrT8LxQnY6iLpLGq9jMl sznfeXZE14FhSkGzxuH0YPAIcxpQ3aQBOKjw5uJWPA9MC+rybW8XhxuBWfhVOtHK /0LZKoYpWnVjyI8+o6NDbJNQD313HhC5QyfPThfS3+Bm7+U8bK1k4NGHlWMBGKz8 v9jNFyPQ1n6WN1N48bZHkMj6AE32rAh9wTO0b+G9
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Matthias Urlichs on Mon Jun 17 16:00:01 2024
    Hi,

    On Mon, 2024-06-17 at 08:30 +0200, Matthias Urlichs wrote:
    On 17.06.24 00:04, Joerg Jaspert wrote:
    Still, we should find a way to keep the existing property of verifying
    what the uploader signed to upload *without* requiring a third-party $something to be available.

    Verifying what the uploader signed is simple enough, it's a git tag. You fetch it and verify that the hashes match ("git fsck"; current git is hardened against SHAttered) and that it's signed by the correct key.

    That's not usable though to match to what dak gets.

    You want to verify t2u's work? Simple enough, run dgit and compare to whatever t2u sent you. No $something required.

    No, I just want it not to duplicate authentication and authorization in incompatible ways. Sadly tag2upload developers explicitly do not want
    that.

    Oh wait, t2u isn't even "third party". It's a Debian tool running on properly-administered (we assume) Debian hardware, running just another build step in a sandbox.

    It's a third party that would accept uploads that dak would reject for
    security and/or policy reasons (including security critical ones); that
    is not easily fixable if tag2upload is deployed as is (and the
    developers have indicated that they do not want to change that).

    It essentially introduces an alternative authentication system (and authorization system as tag2upload seems to care about DM status) that *replaces* the one in dak *and* *disagrees* it. Even when you fix one
    of the instances where the systems disagree, the basic problem remains
    at least technical debt). It is very bad design to have multiple of
    these for a single system as you significantly increase the attack
    surface (and one of these usually ends up with less maintenance than
    the other). (Only one of the systems has to allow the upload, i.e., a
    big "*OR*".)

    *Additional* authentication or authorization do not have this issue. So tag2upload can do whatever checks it wants, but dak has to accept the
    upload as well (i.e., a big "*AND*").

    (A different example: you wouldn't want to accept a package in Debian's Packages index if only the md5sum matched, but sha1 and sha256 differed
    even though some would argue that md5 is still strong against preimage
    attacks and fine to use. You use either the strongest hash (though
    people would probably disagree which one that is; it could be the SHA- 1-derived hash in Git after all...) or require all of them to match.
    You might even drop all other hashes after a transition period.)

    So the question really is "should we have multiple disagreeing
    authentication and authorization systems that accept uploads to the
    Debian archive?" Ftp-masters say "no", tag2upload developers say
    "yes".

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jessica Clarke@21:1/5 to [email protected] on Mon Jun 17 16:10:01 2024
    On 17 Jun 2024, at 14:53, Ansgar 🙀 <[email protected]> wrote:

    Hi,

    On Mon, 2024-06-17 at 08:30 +0200, Matthias Urlichs wrote:
    On 17.06.24 00:04, Joerg Jaspert wrote:
    Still, we should find a way to keep the existing property of verifying
    what the uploader signed to upload *without* requiring a third-party
    $something to be available.

    Verifying what the uploader signed is simple enough, it's a git tag. You
    fetch it and verify that the hashes match ("git fsck"; current git is
    hardened against SHAttered) and that it's signed by the correct key.

    That's not usable though to match to what dak gets.

    You want to verify t2u's work? Simple enough, run dgit and compare to
    whatever t2u sent you. No $something required.

    No, I just want it not to duplicate authentication and authorization in incompatible ways. Sadly tag2upload developers explicitly do not want
    that.

    Oh wait, t2u isn't even "third party". It's a Debian tool running on
    properly-administered (we assume) Debian hardware, running just another
    build step in a sandbox.

    It's a third party that would accept uploads that dak would reject for security and/or policy reasons (including security critical ones); that
    is not easily fixable if tag2upload is deployed as is (and the
    developers have indicated that they do not want to change that).

    It essentially introduces an alternative authentication system (and authorization system as tag2upload seems to care about DM status) that *replaces* the one in dak *and* *disagrees* it. Even when you fix one
    of the instances where the systems disagree, the basic problem remains
    at least technical debt). It is very bad design to have multiple of
    these for a single system as you significantly increase the attack
    surface (and one of these usually ends up with less maintenance than
    the other). (Only one of the systems has to allow the upload, i.e., a
    big "*OR*".)

    Would an API for tag2upload to use satisfy that concern? It feeds in a
    source package name and key fingerprint (or the signature, or
    whatever’s deemed useful), dak replies whether it’s valid for
    uploading. Then you don’t need to trust tag2upload’s authorisation
    checks beyond that it adheres to what dak says each time.

    Jess

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Kitterman@21:1/5 to Ian Jackson on Mon Jun 17 17:00:02 2024
    On June 17, 2024 10:56:11 AM UTC, Ian Jackson <[email protected]> wrote:
    Joerg Jaspert writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    On 17262 March 1977, Sean Whitton wrote:
    I would ask you not to characterise the disagreement we are having as
    merely over a technical detail.

    You see this as personal? I don't, but if it is not technical, what
    else?

    I think Sean means it's not a detail. From our point of view, we're
    talking about a critical property of our design.

    Which behind the scenes? To who did you talk?

    Firstly, I want to ask: would it have made any difference if we had
    raised the matter in public again on -devel?

    Based on your replies here, it seems that ftpmaster's objections are
    still just as firm now as they have been over the past four years.
    We wouldn't want to keep asking the same question on a list like
    -devel, when we are pretty sure the answer will just be the same; that
    would be rude to both ftpmaster and the rest of Debian.

    Anyway, if we're going down this route:

    I think we didn't speak to ftpmaster directly about this since 2019.

    I don't want to name names in case this turns into a finger-pointing >exercise, but, over the years, we have spoken to various people, with
    varying levels of formality:

    * We made fairly formal appeals to two sitting DPLs. What we got
    was, basically, attempts at mediation, or facilitation of
    discussions. We didn't see that as helpful, since we saw an
    irreconcilable gap between our position and ftpmaster's.

    Sean and I were under the impression that the most recent response
    we got from a sittinug DPL was sent to us after consulting with
    ftpmaster.

    * We have asked for help from two sitting members of the TC, and one
    former DPL. I don't think any of those people would have spoken to
    ftpmaster, but neither did they suggest that we should raise the
    matter on -devel again.

    One outcome of that was encouragement to give the talk I did at the
    2023 Cambridge minidebconf. I explicitly stated that the project
    was blocked by ftpmaster, but of course I don't expect ftpmaster to
    have necessarily seen that talk.

    It seems to me that you are the one that's unwilling to engage in any discussion on the topic and as a result, have blocked yourself.

    I don't know that there is an irresolvable disconnect between your design goals for tag2upload and the FTP Masters' design goals for managing access to the Debian archive. Unfortunately, due to your unwillingness to engage in good faith dialogue on the
    topic, it's likely we'll never know. If you keep on the current path, one of two things is going to happen:

    1. Your GR passes and you get what you want.

    2. Your GR fails and tag2upload is dead.

    Personally, I don't like either of those outcomes.

    My recommendation is that you step back, give everyone about 6 months to cool off and then actually engage with the FTP Team to see if we can do both.

    Scott K

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon Richter@21:1/5 to Jonathan Carter on Mon Jun 17 16:50:01 2024
    Hi,

    On 6/17/24 20:38, Jonathan Carter wrote:

    When it comes to tag2upload, I believe it's something that most people
    would want. At least it doesn't take away from any existing workflow or
    force people to change their habits right away, so in terms of being
    able to gain support for it, it has a lot going for it.

    Is tag2upload completely orthogonal to any efforts to move all packages
    to git-based team maintenance?

    Simon

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michael Lustfield@21:1/5 to All on Mon Jun 17 17:10:01 2024
    A few more weeks, eh?

    To me, it seems like we're intentionally avoiding the GR process because we don't like the process and have decided to simply ignore it for the sake of extending the discussion.

    On Mon, Jun 17, 2024, 06:04 Ian Jackson <[email protected]> wrote:

    Michael Lustfield writes ("Re: [RFC] General Resolution to deploy
    tag2upload [and 1 more messages]"):
    Is this a GR?

    It is not yet a formally proposed GR. So in one sense, no.

    If it is, don't we have a process that's designed to eventually
    stop never-ending back and forth disagreements, like the many that have
    been
    seen in these threads?

    Actually, it seems to me that these threads, while long, have mostly
    avoided repetetive back-and-forth.

    The formal GR discussion period is very short. We have had a couple
    of important points raised here imply changes to the resolution.

    I think the thread so far has been very useful to help everyone
    understand our proposal; to reconfirm that our position and
    ftpmaster's are still irreconcilable; and to help us identify
    questions we probably want to address in the FAQ we're preparing.

    I don't think we would have achieved that with the formal GR
    discussion period. We anticipated that there would be many questions,
    which is why we started with a draft.

    I agree that we don't want to drag this out. I have been trying to
    avoid replying when I wouldn't be adding anything. I think Sean and
    Russ have been doing the same.

    And, we'll bring this to a formal GR soon, so hopefully you'll only
    have to bear a few more weeks of this. In the meantime, thanks for
    your forbearance.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my
    own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.


    <div dir="auto"><div>A few more weeks, eh?<div dir="auto"><br></div><div dir="auto">To me, it seems like we&#39;re intentionally avoiding the GR process because we don&#39;t like the process and have decided to simply ignore it for the sake of extending
    the discussion.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jun 17, 2024, 06:04 Ian Jackson &lt;<a href="mailto:[email protected]">[email protected]</a>&gt; wrote:<br></div><blockquote class="
    gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Michael Lustfield writes (&quot;Re: [RFC] General Resolution to deploy tag2upload [and 1 more messages]&quot;):<br>
    &gt; Is this a GR?<br>

    It is not yet a formally proposed GR.  So in one sense, no.<br>

    &gt; If it is, don&#39;t we have a process that&#39;s designed to eventually<br>
    &gt; stop never-ending back and forth disagreements, like the many that have been<br>
    &gt; seen in these threads?<br>

    Actually, it seems to me that these threads, while long, have mostly<br> avoided repetetive back-and-forth.<br>

    The formal GR discussion period is very short.  We have had a couple<br>
    of important points raised here imply changes to the resolution.<br>

    I think the thread so far has been very useful to help everyone<br>
    understand our proposal; to reconfirm that our position and<br>
    ftpmaster&#39;s are still irreconcilable; and to help us identify<br>
    questions we probably want to address in the FAQ we&#39;re preparing.<br>

    I don&#39;t think we would have achieved that with the formal GR<br>
    discussion period.  We anticipated that there would be many questions,<br> which is why we started with a draft.<br>

    I agree that we don&#39;t want to drag this out.  I have been trying to<br> avoid replying when I wouldn&#39;t be adding anything.  I think Sean and<br> Russ have been doing the same.<br>

    And, we&#39;ll bring this to a formal GR soon, so hopefully you&#39;ll only<br> have to bear a few more weeks of this.  In the meantime, thanks for<br>
    your forbearance.<br>

    Ian.<br>

    -- <br>
    Ian Jackson &lt;<a href="mailto:[email protected]" target="_blank" rel="noreferrer">[email protected]</a>&gt;   These opinions are my own.  <br>

    Pronouns: they/he.  If I emailed you from @<a href="http://fyvzl.net" rel="noreferrer noreferrer" target="_blank">fyvzl.net</a> or @<a href="http://evade.org.uk" rel="noreferrer noreferrer" target="_blank">evade.org.uk</a>,<br>
    that is a private address which bypasses my fierce spamfilter.<br> </blockquote></div></div></div>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Rakhmatullin@21:1/5 to Michael Lustfield on Mon Jun 17 17:20:01 2024
    On Mon, Jun 17, 2024 at 07:50:30AM -0700, Michael Lustfield wrote:
    A few more weeks, eh?

    To me, it seems like we're intentionally avoiding the GR process because we don't like the process and have decided to simply ignore it for the sake of extending the discussion.

    Which is a GR author's decision to make so it looks fine to me.

    --
    WBR, wRAR

    -----BEGIN PGP SIGNATURE-----

    iQJhBAABCgBLFiEEolIP6gqGcKZh3YxVM2L3AxpJkuEFAmZwUmktFIAAAAAAFQAP cGthLWFkZHJlc3NAZ251cGcub3Jnd3JhckBkZWJpYW4ub3JnAAoJEDNi9wMaSZLh VVsP/3UQlq+hfGfTmBviiuhWXbAzDYCSa30NQA+vUhHXb7KS8SPkWuwWP3tzWwlV LyKXye+xEgyFNhJR0Ms7L2QKMOa276YR2JaTntgbwjWbGsjBslCgsBpeqc8WyCf7 Zc2hNvPSkO8kk5OKHcM+qXD3wBb5FcvEE8QSh2UCwkkX2b38ia/8OhkncQidNufW vDkCgXiW7bggMDaWzQtLW8VzZt2UCli3ZHOgvKsH5ezwKQuB2AwRhG7D2ssjP2t1 vZelWKU9ah2DgjJBiobjninKMDnEss5/ct5NLNU3q3CtD1Z2KCtOL1ADdq+dwLjU +rfHEWJgzdwtYZ+N+fKcKvCyIH5srARGcYwYxe63VhLLGcmALDyQKUZyiDjyJg5V UVU42TvMzrmB8fN2IfFY24JqGVN7tZpaV+N8TPsmbi1e+eA2U1kbP7G+61j8hptz qaPG+zvOSdvEJU21r6/HYXbbqu1vkH5b8xFTYwy+VgxQo1y5TRuXUwEJlZE+l7JG ZVebGzXsPrjd8qiEKP0UQV6dvOZ1GDD9Xo+LFVY4Ek6GrF/+KhiJuKvBG7zZRaA/ FNqI5yKeq7O8f/dVz5dKnaKESTRXWzpVWiVjT5Ggm5YpAKy3pDyR8BLrknoPsJt5 a7aHVhKflMP/iV535ayLAnrw97MUv8ARTXSeGVDIgAjTuzuq
    =3kdI
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Judit Foglszinger@21:1/5 to All on Mon Jun 17 17:20:01 2024
    A few more weeks, eh?

    To me, it seems like we're intentionally avoiding the GR process because we don't like the process and have decided to simply ignore it for the sake of extending the discussion.

    Technically, the GR process advantages the ones proposing a GR
    for giving them more time to think things trough,
    while the others are restricted to the short discussion period.

    So doing it like this is more fair play.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Scott Kitterman on Mon Jun 17 17:50:01 2024
    Scott Kitterman <[email protected]> writes:

    I think if you want to step away from the implementation details, the
    more abstract point is that you don't need data from outside the archive
    (or a mirror of the archive) in order to verify that the source package
    you downloaded has not been modified since then and who uploaded it.

    tag2upload provides all of this. It provides both a verification that the source package has not been modified and detailed information on who
    uploaded it.

    The information it provides is not trustworthy if the tag2upload server
    has been compromised. The signature on the the *.dsc file today is not trustworthy if the system on which the uploader generated the source
    package has been compromised. I consider these to be parallel cases
    since, in the tag2upload design, the tag2upload server *is* the system on
    which the maintainer directs the construction the source package.

    The design replaces a highly hetrogenous variety of workflows with a centralized system that is also a centralized attack target. This has
    various security properties and trade offs about which we can disagree.
    But that disagreement necessarily requires some nuance to state it
    precisely. People keep trying to discard the nuance and, as a result, at
    least in my opinion, make claims that are either incorrect or simplified
    to the point of uselessness.

    As it happens though you can't tell if what's in the archive matches the uploader intent with tag2upload either.

    Correct, and this is exactly why I said that I don't consider this a
    useful way to talk about security guarantees.

    With tag2upload, you can trace the provenance of the source package
    *closer* to maintainer intent, and to a much richer format that is easier
    to audit. I think this is a security benefit.

    All you can vet is that the tag2upload service claims it does. You may
    think that's better, but neither of them are entirely free of risk.

    I completely agree with this.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon Richter@21:1/5 to Marco d'Itri on Mon Jun 17 18:00:01 2024
    Hi,

    On 6/17/24 18:49, Marco d'Itri wrote:

    There is another aspect he mentioned: he thinks the uploader needs to test
    the build of the package. (I'm theory I agree, but there are situations

    Everybody can upload totally untested packages even without tag2upload:
    maybe tag2upload would make this marginally easier, but then I do not
    believe that this is a compelling enough argument to offset the benefits
    of a tag2upload-like service.

    Minimal testing already generates a source package -- so it
    disproportionately benefits workflows that upload totally untested packages.

    I can absolutely see the benefit of integrating git in our workflows,
    but I'm less enthusiastic about this service precisely because it was
    marketed to us not on its technical merits, but on how it will allow us
    to take shortcuts, plus some handwaving about xz-utils and a promise
    that people do not have to change their workflows.

    The latter point is a massive problem for this proposal, because it
    leaves only two options down the road: break another promise of
    compatibility, or be stuck with support for "legacy" systems for ages.

    Simon

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Simon Richter on Mon Jun 17 17:50:01 2024
    Simon Richter writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    On 6/17/24 20:38, Jonathan Carter wrote:
    When it comes to tag2upload, I believe it's something that most people would want. At least it doesn't take away from any existing workflow or force people to change their habits right away, so in terms of being
    able to gain support for it, it has a lot going for it.

    Is tag2upload completely orthogonal to any efforts to move all packages
    to git-based team maintenance?

    There is a technical and a social answer to your question.


    The social answer is that there is absolutely no connection.

    The tag2upload team, like the dgit team, are not interested in trying
    to get everyone to use the same development practices. We aim to
    provide tooling that supports everyone - in their current practices -
    insofar as we can.


    The technical answer is that they're *almost* completely orthogonal.
    You can't use tag2upload unless you're using git, obviously.

    But t2u supports single maintainers using git locally and just pushing
    to Salsa as an output; git based collaboration via Salsa MRs; NMUs;
    gbp; git-dpm; git-debrebase; git-merge; and, everything in between and
    around.

    "Move all packages to git-based team maintenance" implies using git,
    so I guess that it would make tag2upload more available. Maybe it
    implies some standardisation of git workflows. You'd have to ask
    people who are favour of such ideas what they think. But tag2upload
    does not depend on standardisation of development practices.

    Indeed, tag2upload (and before it, dgit) *supports* the continued
    existence of multiple git workflows, by providing a coherent taxonomy
    of representations, and convenient automated tooling for converting
    between them. It makes Debian's multiple workflows more workable for
    everyone.

    As for teams vs individuals: tag2upload doesn't care at all about maintainership. It only cares that the signed git tag, indicating the
    intent to upload, is signed by a DD - just like the archive right now.
    How that uploader decided to upload, and what they decided to upload,
    is a matter for the uploader. tag2upload just follows their
    instructions.


    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Michael Lustfield on Mon Jun 17 18:10:01 2024
    Michael Lustfield <[email protected]> writes:

    To me, it seems like we're intentionally avoiding the GR process because
    we don't like the process and have decided to simply ignore it for the
    sake of extending the discussion.

    I'm the person who wrote the current timelines that the GR process
    follows. I completely agree with Sean and Ian's decision to post a draft first, and I have recommended waiting to proceed to a GR while the
    discussion is still this active and is not entirely repetitive. I know
    that some parts of the discussion are starting to look repetitive, but I
    think there are still corners that are exploring new areas, and there's
    now a concrete discussion with the FTP team happening that I think is very important to let play out.

    One of the objections that some FTP team members have had is that they
    feel like they're being rushed into a GR, and GR timelines, on a topic
    that they haven't thought about in a while. A draft GR and a preliminary discussion process is a way to avoid that; maybe not the most comfortable
    way to avoid that, but there is no GR currently and we're having a
    discussion to confirm the assumptions underlying the GR, namely whether or
    not the FTP team still objects to core design goals of tag2upload, or if
    there is a way to square that circle.

    The timelines in the formal GR process have a significant problem: in
    order to avoid the appearance of people manipulating the system, which has
    been a topic of hot controversy in the past, they offer very little leeway
    and have to be minimally suitable for every possible topic that we could
    be having a GR about, including matters of urgency. I knew that was the
    case when I wrote them, and couldn't figure out a better solution to the problems we were trying to solve at the time.

    The compromise was to strongly suggest that anyone who was going to
    propose a GR on a topic that was controversial and not urgent post a draft first and allow a generous period of time for preliminary discussion. I
    think this is that system working as designed, speaking as the person who proposed it.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michael Lustfield@21:1/5 to [email protected] on Mon Jun 17 18:10:01 2024
    On Mon, Jun 17, 2024, 08:18 Judit Foglszinger <[email protected]> wrote:

    A few more weeks, eh?

    To me, it seems like we're intentionally avoiding the GR process because
    we
    don't like the process and have decided to simply ignore it for the sake
    of
    extending the discussion.

    Technically, the GR process advantages the ones proposing a GR
    for giving them more time to think things trough,
    while the others are restricted to the short discussion period.

    So doing it like this is more fair play.


    My understanding was that the modified timeline was for the benefit of the list, and not to create an advantage for the drafter. I apologize for this misunderstanding.



    <div dir="auto"><div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jun 17, 2024, 08:18 Judit Foglszinger &lt;<a href="mailto:[email protected]">[email protected]</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px
    0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">&gt; A few more weeks, eh?<br>
    &gt; <br>
    &gt; To me, it seems like we&#39;re intentionally avoiding the GR process because we<br>
    &gt; don&#39;t like the process and have decided to simply ignore it for the sake of<br>
    &gt; extending the discussion.<br>

    Technically, the GR process advantages the ones proposing a GR<br>
    for giving them more time to think things trough,<br>
    while the others are restricted to the short discussion period.<br>

    So doing it like this is more fair play.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">My understanding was that the modified timeline was for the benefit of the list, and not to create an advantage for the drafter. I apologize
    for this misunderstanding.</div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
    </blockquote></div></div></div>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Jessica Clarke on Mon Jun 17 18:30:01 2024
    Hi,

    On Mon, 2024-06-17 at 14:59 +0100, Jessica Clarke wrote:
    On 17 Jun 2024, at 14:53, Ansgar 🙀 <[email protected]> wrote:
    It essentially introduces an alternative authentication system (and authorization system as tag2upload seems to care about DM status) that *replaces* the one in dak *and* *disagrees* it. Even when you fix one
    of the instances where the systems disagree, the basic problem remains
    at least technical debt). It is very bad design to have multiple of
    these for a single system as you significantly increase the attack
    surface (and one of these usually ends up with less maintenance than
    the other). (Only one of the systems has to allow the upload, i.e., a
    big "*OR*".)

    Would an API for tag2upload to use satisfy that concern? It feeds in
    a source package name and key fingerprint (or the signature, or
    whatever’s deemed useful), dak replies whether it’s valid for
    uploading. Then you don’t need to trust tag2upload’s authorisation
    checks beyond that it adheres to what dak says each time.


    Hmm, a signed manifest solves that problem and also adds some integrity verification and possibility for third parties to check the signature
    itself as well.

    An API that gets the signed data (signed tag) with some metadata (which package, version, target suite, maybe some other bits of d/control,
    would have to think; parts of that might also be in the tag) would
    still allow having a single system make the decisions. A downside is
    that integrity verification and third parties (possibly) verifying the
    data falls flat. For me integrity verification would be somewhat nice
    and third parties a bit less interesting (given they can get the tag,
    compare files and possibly redo what tag2upload does if they also care
    about .dsc and stuff).

    We are not very good at doing integrated services though. (Please no
    RPC via SSH forced commands...)

    With regard to integrity verification, it's probably not fully clear
    what one exactly wants there. Joerg's idea to have tag2upload run by
    ftp-master is related to that: if it was part of the archive, all
    integrity promises still come from within the archive. (I don't really
    want to run the service though; outsourcing is probably better.)
    Arguably we do trust some external services somewhat already (like
    buildds for binary packages).

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Jonas Smedegaard on Mon Jun 17 18:20:01 2024
    Jonas Smedegaard writes ("Re: [RFC] General Resolution to deploy tag2upload [and 1 more messages]"):
    Quoting Ian Jackson (2024-06-17 14:13:00)
    git is central to most software maintenance in the world at large.
    Not all, by any means. But, overwhelmingly, most.

    In Debian it's unstandardised *unless* you use dgit push or tag2upload. Then the git representation *is* standardised, albeit complex.

    Has Debian standardized dgit for git source package representation?
    Or do you simply mean that dgit is standardized by the dgit developers,
    same as various other tools like git-buildpackage arguably has
    standardized their various structures as well?

    This gets into philosophy quite quickly. What does it mean for
    "Debian" to have standardised something? If we write a DEP that
    describes dgit's canonical git representation, and its quilt mode
    names, would that that help?

    I mean, we could do that but it seems like makework. We have
    in-archive documentation (mostly, manpages). We have a wiki page
    which lists the git workflows we're aware of. etc.

    One of the nice things about the tag2upload design (like dbit's before
    it) is that if you don't care about it you can largely ignore it.
    Whereas, if you are a user of dgit, you can get the canonical git form
    of *any* package.

    So, simultaneously: it is standard; but you can ignore it.

    This property makes it much easier to get anything done, and has been
    true of most of the most successful new ideas in Debian.

    The topic of this GR is not streamlining Debian use of git, but allowing a simpler path from existing messy git to acceptance into Debian.

    I don't think this is true. tag2upload (like dgit) imposes a taxonomy
    of git approaches, and defines precisely what each of these named approaches means.

    Oh, if one of the proposers of the GR insists that the GR is indeed about streamlining Debian use of git, then I'll back off.

    Again I think we're into philosophy here. But certainly, a big part
    of the point of tag2upload is to streamline use of git in Debian.

    I won't say "the whole point". I have thought quite hard about how
    git is used in Debian, and how source code is managed; we have held
    formal and informal requirements gathering sessions, including one
    facilitated by Sam Hartman at the Curitiba Debconf. We've released
    code and responded to a wide variety of user feedback.

    tag2upload is part of a programme that is supposed to meet *almost
    all* of these requirements, *without* imposing things on people who
    prefer to do things differently. It's supposed to be so good and
    convenient people will want to use it, and I think it will be.

    So there are *many* purposes. But many of them do relate to
    streamlining git packaging. One way tag2upload helps streamline git
    packaging is by allowing maintainers to less often deal with .dscs.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Gunnar Wolf@21:1/5 to All on Mon Jun 17 20:00:02 2024
    Thanks, Joerg and Ian, for summing it up in this subthread and
    arriving at the mail I am quoting. I think that, if we are to vote on
    this topic, both sides to this disagreement should be made clear and
    explicit. The call for votes should include, or at least prominently
    link to, where the disagreement lies. Seeing this as an example of
    (failed) collaboration between two teams with differing goals, with
    both not willing to compromise in their position, makes it much
    clearer to those of us who have only watched at (quite) a distance.

    Ian Jackson dijo [Mon, Jun 17, 2024 at 11:56:11AM +0100]:
    Which behind the scenes? To who did you talk?

    Firstly, I want to ask: would it have made any difference if we had
    raised the matter in public again on -devel?

    Based on your replies here, it seems that ftpmaster's objections are
    still just as firm now as they have been over the past four years.
    We wouldn't want to keep asking the same question on a list like
    -devel, when we are pretty sure the answer will just be the same; that
    would be rude to both ftpmaster and the rest of Debian.

    Anyway, if we're going down this route:

    I think we didn't speak to ftpmaster directly about this since 2019.

    I don't want to name names in case this turns into a finger-pointing exercise, but, over the years, we have spoken to various people, with
    varying levels of formality:

    * We made fairly formal appeals to two sitting DPLs. What we got
    was, basically, attempts at mediation, or facilitation of
    discussions. We didn't see that as helpful, since we saw an
    irreconcilable gap between our position and ftpmaster's.

    Sean and I were under the impression that the most recent response
    we got from a sittinug DPL was sent to us after consulting with
    ftpmaster.

    * We have asked for help from two sitting members of the TC, and one
    former DPL. I don't think any of those people would have spoken to
    ftpmaster, but neither did they suggest that we should raise the
    matter on -devel again.

    One outcome of that was encouragement to give the talk I did at the
    2023 Cambridge minidebconf. I explicitly stated that the project
    was blocked by ftpmaster, but of course I don't expect ftpmaster to
    have necessarily seen that talk.

    Ian.

    --

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon Richter@21:1/5 to Ian Jackson on Mon Jun 17 20:00:02 2024
    Hi,

    On 6/17/24 21:13, Ian Jackson wrote:

    Your WTF seems to be from a false assumption that git is central to
    Debian package maintenance. It isn't. It is popular, but not central,
    nor standardized.

    git is central to most software maintenance in the world at large.
    Not all, by any means. But, overwhelmingly, most.

    We are, however, not using git for software maintenance. We are using
    git as a versioned network file system below our package maintenance tools.

    Each of the git workflows then tries a different mapping of the
    packaging metadata onto git metadata. They all fall short, because git
    cannot represent the data model of Debian source packages, so each tool
    makes a different trade off where some of our metadata is then
    represented as data inside the git model.

    Because that mapping misrepresents what is data and what is metadata,
    using any git tools beyond versioned object storage has the potential to
    break the invariants of the higher layers, so maintainers need to
    unlearn some of the git recipes they know.

    If pristine-tar is in use, a special branch full of special commits must
    exist, but git cannot provide referential integrity for us here because
    this is stored as data, not metadata.

    Importing a new upstream version via merge commit also breaks the higher layers' invariant that patches apply cleanly, but git is not aware that
    these are patches, because again we are storing metadata as data,
    because there is not accurate mapping.

    Generating the Debian changelog from git commits then has the opposite
    problem: we need to convert metadata back into data, but some of the
    metadata was created by git, outside the packaging workflow, so we need
    to filter the commit messages.

    There are lots of other problems with the various mappings in use, each
    makes different trade-offs. Accommodating them all inside tag2upload is
    an ab-initio commitment to technical debt.

    A git based workflow that has a lossless mapping would probably require
    special git objects that the base git tools refuse to handle (because
    they would mess it up), and that are explicit about what is happening.

    This would not be an incremental approach, but I think we cannot
    increment ourselves into a good solution here.

    Simon

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Gunnar Wolf on Mon Jun 17 20:30:01 2024
    Gunnar Wolf writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    Thanks, Joerg and Ian, for summing it up in this subthread and
    arriving at the mail I am quoting. I think that, if we are to vote on
    this topic, both sides to this disagreement should be made clear and explicit. The call for votes should include, or at least prominently
    link to, where the disagreement lies. Seeing this as an example of
    (failed) collaboration between two teams with differing goals, with
    both not willing to compromise in their position, makes it much
    clearer to those of us who have only watched at (quite) a distance.

    Right.

    Our the FAQ we're currently working on internally has an explanation
    of this, and links to Sven's and Russ's posts
    https://lists.debian.org/debian-vote/2024/06/msg00224.html
    https://lists.debian.org/debian-vote/2024/06/msg00225.html

    Obviously there is a limit to how much we want to try to speak for
    ftpmaster, but I think their position has been fairly clearly restated
    here.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Mon Jun 17 20:30:01 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------kBgJBFhGj3jV2Tbn3dGgcsEz
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMTcuMDYuMjQgMTc6NTAsIFNpbW9uIFJpY2h0ZXIgd3JvdGU6DQo+IG1hcmtldGVkIHRv IHVzIG5vdCBvbiBpdHMgdGVjaG5pY2FsIG1lcml0cywgYnV0IG9uIGhvdyBpdCB3aWxsIGFs bG93IA0KPiB1cyB0byB0YWtlIHNob3J0Y3V0cw0KDQpJIHdvdWxkbid0IGNhbGwgd2hhdCB0 YWcydXBsb2FkIGRvZXMgYSAic2hvcnRjdXQiLiBDdXJyZW50IHdvcmtmbG93cyANCihpLmUu IHdpdGhvdXQgdGFnMnVwbG9hZCkgZG8gbm90IGNvbnRhaW4gYW55IHN0ZXBzIHRoYXQgdDJ1 IHdvdWxkIHNraXAuDQoNCnQydSBzaW1wbHkgZG9lcyB0aGVzZSBzdGVwcyBmb3IgbWUg4oCT IGluIGEgY29udHJvbGxlZCBhbmQgc2FuZGJveGVkIA0KZW52aXJvbm1lbnQuDQoNCldoZW4g SSBzZXQgdXAgYSBDSSB3b3JrZmxvdyBmb3IgbXkgcGFja2FnZSBvbiBTYWxzYSwgaW5zdGVh ZCBvZiBzdGFyaW5nIA0KYXQgdGhlIHByb2dyZXNzIG9mICJtYWtlIHRlc3QiOiB3b3VsZCB5 b3UgY2FsbCB0aGF0IGEgc2hvcnRjdXQgdG9vPw0KDQpIZWNrLCB3ZSBub3cgbW9yZS1vci1s ZXNzIGluc2lzdCBvbiB0aGUgImRvbid0IGJ1aWxkIGEgYmluYXJ5IHBhY2thZ2UgDQpiZWZv cmUgdXBsb2FkaW5nIiBzaG9ydGN1dCDigKYgSSByZW1lbWJlciB0aGUgc2FtZSBraW5kIG9m IGFyZ3VtZW50IA0KdW1wdGVlbiB5ZWFycyBhZ28sIHdoZW4gdGhlIGVuZCBvZiB0aGUgd29y bGQgd2FzIG5lYXIgKEkgZXhhZ2dlcmF0ZSwgaWYgDQpvbmx5IHNvbWV3aGF0LCB0aGlzIGlz IGEgREQgZGlzY3Vzc2lvbiBhZnRlciBhbGwgOi1QICkgYmVjYXVzZSB3ZSBubyANCmxvbmdl ciByZXF1aXJlZCBidWlsZC10ZXN0aW5nIG91ciBzb3VyY2VzIGJlZm9yZSB1cGxvYWRpbmcg dGhlbS4NCg0KLS0gDQotLSByZWdhcmRzDQotLSANCi0tIE1hdHRoaWFzIFVybGljaHMNCg0K


    --------------kBgJBFhGj3jV2Tbn3dGgcsEz--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZwe2oFAwAAAAAACgkQcs+OXiW0wpP4 FQ/+IRW/7oZRHX1tqRRPbJQNVcA0z4AxpSXvSmLpyj6TzEZ4gArs5UqPpn+pyz+emYlxgqMQqUey BGmYged/fJng9+RwWYfnTNIi5LatfjnHoZf5d/6HpANv/apdWkQJoyJ3jgY23FmMvTvurfFm6thF AX/urAPp6J+YALX9GPtxf1p6EaD2+ZbtAhdYbfjESOMs248Rye8VkLaP6ZQaLKRJb7hFxUqIF8xe sXGu7M5c6L819fBu7LvsRE9aBK/Wcf98s0OtLQHPOOSb2/w5Orvr11Uk6DQANiknI8WTxJKlRFAu vTlByUBmvSoHx+KuwCgtJk7oVd+lJDNFFx75ZoFPy0muQnF63wsJtPwXvI6wKXfpVRXIAK/q6MPn a3eqtM5EYrxOec3jmoyDRVsAhCcVvUH7seZBxJSefL28zdGL2qQe8mq5VOdrwxgL6dYvoBbffO2y uC3BeFrtfI3yuGc4rkW3zP6Kes8iUNZhgMTthCTaMAEe5RFr5NC3uwZCRzoswlUwai8wrO7KQ/Bl HBWKPVSdaAg04d1KUVQ/jed2AuNhucdasnyKKI1XUjSQWRqQ1R3ASb7Bsb3FTISfcenFYQEMAbyN XfW3W10jgNf1hR1GJ0+27PNE0Uz2eyqEo0XnscKPjcAk2OMUDEYLzF/9CJ+ElCLzvIiq05/U622o 5MU=
    =ePdl
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Mon Jun 17 21:00:01 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------6NhjdajcPT9041kResUqlJ2Z
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMTcuMDYuMjQgMTk6NTAsIFNpbW9uIFJpY2h0ZXIgd3JvdGU6DQo+IFRoZXkgYWxsIGZh bGwgc2hvcnQsIGJlY2F1c2UgZ2l0IGNhbm5vdCByZXByZXNlbnQgdGhlIGRhdGEgbW9kZWwg b2YgDQo+IERlYmlhbiBzb3VyY2UgcGFja2FnZXMNCg0KV2VsbC4gSSB3b3VsZG4ndCBnbyB0 aGF0IGZhci4gQSBEZWJpYW4gc291cmNlIHBhY2thZ2UsIGFmdGVyIGFsbCwgaXMgDQpzaW1w bHkgYSBkaXJlY3RvcnkgdHJlZSB3aXRoIGEgYnVuY2ggb2YgZmlsZXMgaW4gYSBkZWJpYW4v IHN1YmRpcmVjdG9yeS4gDQpUaGVyZSdzIG5vdGhpbmcgbWFnaWMgYWJvdXQgYW55IG9mIHRo YXQuIFlvdSBjaGVjayBpdCBvdXQgYW5kIHJ1biANCiJkZWJ1aWxkIC1iIiBhbmQgImRwdXQi LiBEb25lLg0KDQpXaGVyZSBnaXQgZG9lcyBmYWxsIHNob3J0IGlzIG1pcnJvcmluZyB0aGUg cHJlLWdpdCBhbmQgZXh0cmEtZ2l0IHN0YXRlIA0Kb2YgdGhlIHdvcmxkLCBpbmNsdWRpbmcg VXBzdHJlYW0gdGFyIGZpbGVzIGFuZCBxdWlsdGVkIHBhdGNoZXMgYW5kIA0Kd2hhdG5vdC4g VGhhdCdzIGhhcmRseSB1bmlxdWUgdG8gRGViaWFuLCB0aG91Z2g7IGp1c3QgbG9vayBhdCB0 aGUgbXlyaWFkIA0Kb2YgdG9vbHMgdGhhdCBzdXJyb3VuZCB0aGUgTGludXgga2VybmVsJ3Mg ZGV2ZWxvcG1lbnQgbW9kZWwuIFdoaWxlIHdlIA0KZG9uJ3QgaGF2ZSBhIHNpbmdsZSB0cmVl LCB3ZSBjb21wZW5zYXRlIHdpdGggbXVsdGlwbGUgVXBzdHJlYW0gbW9kZWxzLCANCnBsdXMg bXVsdGlwbGUgZGljdGF0b3JzLWZvci1saWZlIF5XIG1haW50YWluZXJzIGluc3RlYWQgb2Yg b25lIExpbnVzIA0KVG9ydmFsZHMuDQoNClRoZXJlIGFyZSBkaWZmZXJlbnQgdHJhZGUtb2Zm cyB0byBiZSBoYWQgaGVyZSwgd2hpY2ggcmVzdWx0cyBpbiANCmRpZmZlcmVudCBtYWdpYyBp bmNhbnRhdGlvbnMgeW91IG5lZWQgdG8gaW52b2tlIHRvIGNyZWF0ZSBhIHNvdXJjZSANCnBh Y2thZ2UuIFNvbWUgb2YgdGhlbSBhcmUgYnVpbHQgaW50byBkZ2l0LiB0YWcydXBsb2FkIHNp bXBseSBpbnZva2VzIA0KdGhhdCB0b29sLg0KDQpJJ20gd2lsbGluZyB0byBhc3N1bWUgdGhh dCwgaWYgaW4gdGhlIGZ1dHVyZSBzb21lYm9keSBkZWNpZGVzIHRvIGRyb3AgDQp0aGUgYWJp bGl0eSB0byBleGVjdXRlIG9uZSBvZiB0aGVzZSBtYWdpYyBpbmNhbnRhdGlvbnMgZnJvbSBk Z2l0IGZvciANCndoYXRldmVyIHJlYXNvbiwgd2UnbGwgY2hlY2sgdGhlIGFyY2hpdmUgZm9y IHBhY2thZ2VzIHRoYXQgcmVxdWlyZSB0aGlzIA0Kc3BlY2lmaWMgaW5jYW50YXRpb24gYW5k IHRhbGsgdG8gdGhlaXIgbWFpbnRhaW5lcnMgaG93IHRvIG1vdmUgZm9yd2FyZC4NCg0KQWdh aW4sIHRoYXQncyBkZ2l0J3MgcGFydCBvZiB0aGUgZXF1YXRpb24sIG5vdCB0MnUncyBwcm9w ZXIuIFRodXMgSSANCmRvbid0IHNlZSB3aHkgdGhlIGV4aXN0ZW5jZSBvZiB0aGlzIGFkbWl0 dGVkbHktdGhvcm55IHByb2JsZW0gc2hvdWxkIA0KYWZmZWN0IG91ciBkZWNpc2lvbiB0byBn byBhaGVhZCB3aXRoIGRlcGxveWluZyB0YWcydXBsb2FkLg0KDQotLSANCi0tIHJlZ2FyZHMN Ci0tIA0KLS0gTWF0dGhpYXMgVXJsaWNocw0KDQo=

    --------------6NhjdajcPT9041kResUqlJ2Z--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZwgIkFAwAAAAAACgkQcs+OXiW0wpMN GQ//f3tYEKR3nUBdyduPU8PIdXC0RnDkDGLoNdpsMETZaVI8BAFJyFH1jDc+UYjCIza8dmAjZJfV rqEYEXgw5KkgCqKDKjTEJfy8w85JibcV74/etdOByHGHPhwyeOId/9X8m4RPYab7n+pzrxo8990P 8MF0/A+Sb2FajC6N+9Wfauy2PsY0OWyEqqdNDC51zsCNMIRT8l5AEOoNAMQ2v9PjZ6DEPtc5ODzA eO4RqNjpKiTHEesQjxq5pOzCw0vjgL8Qi9UQIW86gcGtJpX7h+vbQpruJSCOGeDZiZP0Ai/EKKyf t4dVGvFSgbAkjpVjoaf8WFkwkDe7lJa2LKK0b7VRXHWjjJdKpPW31xyTKd/cWIJr6SkkFMuv0PzM dX1CgPbI6FFkFDO1Mx4pJW9H9QWO68loJSGK26htUIkxeB/qMYPc9euTnWHLsJkf0Y7PcWjSykay i4pcUnwYXXQV+6gSUSO/E2ns71LYA2WOBV7PoW9SFnQ5jmCFVnCrDT2070g/LwE3w7x3RGv3uzZ0 DGegDylo1y50nKONtaCX4xvhOhVx3tORrZQRxFg10XbfcQ8bk/0ogTu12hqKjBDmltq5uxR/UCLc g4phswTMHt6ExuGMJi817mmfcTt+ykWM9JlPinY7onth5Do8EmDMxgjw/AM2mctV7rCXl4mCG9Tw c5w=
    =lJu3
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Joerg Jaspert on Mon Jun 17 21:00:01 2024
    So, first, I owe you and the FTP team an apology. I was totally convinced
    that there had been more recent public discussions of tag2upload involving
    the FTP team than 2019. I either got confused with other discussions or
    had the increasingly common problem of thinking that things that happened
    ten years ago had only happened two years ago. Regardless, I really
    should have checked, I didn't, I made an incorrect assumption, and I
    apologize.

    I would not, as a general rule, assume that any delegate decision made
    five years ago still holds today, and if I had not made erroneous
    assumptions about the timeline, I would have phrased several of my
    messages here differently. This is entirely my fault.

    So far, from this thread, it looks like the decision from 2019 may still
    stand, but I think there are still places to explore.

    Joerg Jaspert <[email protected]> writes:
    On 17261 March 1977, Russ Allbery wrote:

    Why is this your red line? Is it only that you don't want to add
    another system to the trusted set, or is there something more specific
    that you're concerned about?

    There ought to be one point that is doing this step, not many, yes.
    Includes that it is the delegated work and task description of FTPMaster
    to do this, though that can be addressed by either us ending up running
    it, or adjusting delegations. Not sure the latter ends up with happy
    people, but is one existing way.

    Elsewhere in this thread, Jessica Clarke made the excellent suggestion
    that perhaps the authentication check concern could be resolved by dak providing an API for performing the authentication and authorization
    check. I am embarrassed that I didn't think of that; thank you very much
    to Jessica for that suggestion.

    That gives me some hope that this point has a relatively neat solution, so
    I'm going to focus on exactly what dak needs the uploader signature to
    cover in order to accept the package.

    Also, currently we have the nicety that we store all signatures directly besides the source package, available for everyone to go and check.
    Linking back to the actual Uploader, not to a random service key. You
    can take that, run a gpgv on it and via the checksums of the files then
    see that, sure, this is the code that the maintainer took and uploaded.
    You do *not* need to trust any other random key on that. Not that of tag2upload. *AND* not that of FTPMaster.

    The dgit-repos server similarly archives the signed Git tag with the Git
    tree over which it is a signature, ensuring that this is independent of
    Salsa where the tag could potentially be deleted by someone. This is not
    in the archive, of course, but I don't see any technical reason why some version of that data couldn't also be uploaded to the archive if one
    wanted to use the archive as a highly distributed backup of the dgit-repos server. There is, however, the long-standing concern about any variation
    on the 3.0 (git) source package format that the Git tree the maintainer
    signed may contain non-free code somewhere in its history.

    So here too, I'm not sure that this is inherently a blocker, although in
    the past the FTP team has been reluctant to include in the archive the
    data that is required to preseve a complete record of what is signed by a
    Git tag. (One obvious potential solution is to only put a shallow clone
    in the archive, so you can verify the signature but some of the content-addressable store references are unresolved.)

    Unsure those are the right words. We want to have the uploader create a signature over the content they want to have appear in the archive. In a
    way, that this signature can be taken and placed beside the source, and
    then independently verified. *Currently* this is done using .dsc files.

    Okay, so again I think it's easier to talk about specifics, so let me make
    this concrete by using myself as the use case.

    I use the git-debrebase workflow for maintaining most of my Debian
    packages. What this means, for those who aren't familiar with it, is that
    my workflow looks like this (this is idealized; I'm still migrating my
    packages fully to this workflow so the specifics currently vary somewhat):

    1. I start a new package by creating a new Git branch based on the Git tag
    of the latest upstream release. I then add the debian/* directory with
    packaging files and commit that directly to the resulting branch.

    2. I work on the package, freely making commits to both the debian/* files
    and the upstream source to fix problems and adjust the software for
    Debian. The only constraint that I have to follow is that I can't make
    a commit that changes both files in debian/* and files outside of
    debian/* at the same time. Other than that, I can treat this branch
    like a completely normal Git branch and do development like I would in
    any other Git repository, without doing anything special for the Debian
    packaging.

    3. When upstream releases a new release, I can *rebase* my changes on top
    of the new upstream release rathe than doing a merge with all the
    messiness that a merge involves. For me, this is huge. I can fully
    drop upstream changes that have been merged upstream, rework changes
    that need to be done differently based on upstream changes, and don't
    have to wrestle with a long and messy merge history with conflict
    resolutions that grows over time. Instead, I can always see a simple
    list of the changes that I've applied to the current upstream release.
    This is exactly the workflow that I use with other development forks in
    Git with non-Debian packages. (I do have to remember to run git
    debrebase conclude here to make the magic work.)

    4. When I'm ready to upload, currently I run dgit locally. dgit looks at
    my Git repository, finds all of the commits that modify the upstream
    source, extracts the commit metadata, creates nice patches based on
    those commits with proper metadata taken from the Git commit metadata,
    and uses them to construct a normal 3.0 (quilt) source package. Anyone
    working with the source package can treat it exactly like any other 3.0
    (quilt) source package and has no need to care that I use the
    git-debrebase workflow.

    Making all of this work involves some Git trickery that I know some people dislike (for example, all of this is serialized as a sequence of Git
    changes that are fast-forwardable *including the rebases*, which is dark magic), but for me this is an excellent workflow. The development
    experience matches my mental semantics of the relationship between the
    Debian packaging and the upstream code, and the Git trickery is all hidden
    from me behind a nice interface.

    Now, I would like to use tag2upload rather than using dgit locally to make
    the upload. I want to move my testing into Salsa CI so that my overall workflow more closely matches the way that I do all of my development in
    my day job. Salsa CI is great about not getting lazy and skipping test
    steps just because I am in a hurry to get a package uploaded, and I can
    capture every test that was useful and not have to remember to re-run it.
    (This is the part that I haven't done yet; I know I want to do it and have
    not yet found the time.)

    What signed artifact do I need to provide so that the FTP team will be comfortable accepting my tag2upload-built source package?

    Note, importantly, that the source package contains things that are not in
    the files present in the working tree of a local Git checkout of my source package. The patch descriptions and committer information and related
    metadata are where they are supposed to be in Git: in the metadata for the corresponding Git commit, not in a file in my working tree. The
    transformation that puts that data into a 3.0 (quilt) source package is
    not rocket science, but it's not trivial either.

    The signed artifact that I'm naturally providing is a signature across the entire Git tree, which includes all of the history and thus all of the
    data that goes into the source package. So everything that goes into the source package *is signed*, by me, when I trigger a tag2upload upload.
    The problem comes when dak wants to verify the correspondence between that
    data structure and the source package. It certainly can verify that my
    Git tag is valid and it can verify that the tag specifies the correct
    source package, version, and so forth. But if it wants to verify that the construction of the debian/patches/* directory is correct, I think it
    would have to perform the same transformation on my Git history that dgit
    and tag2upload perform.

    I basically assume that the uploader *does* need to have their source locally, no matter what. (Their git cloned).

    Yes, I agree. I don't think there's any way to avoid this: the source has
    to be in the same place that the key is in, or close to in the case of
    secure key storage, in order for the uploader to sign it and know what
    they are signing.

    I also do assume that the uploader will build things, to see if the
    stuff they are going to "push to the archive" (and our users) actually
    does what they intended it to do - and to test it.

    This is the assumption that I think is no longer valid given Salsa CI. It
    used to be that this was the only way to test a package; now we can do
    equally well and often better by letting Salsa CI do the hard work.

    Well, if the maintainers system is broken in, it makes no difference if
    a git tag or a dsc or whatever else is signed.

    This is more true than I would like it to be, and in the case of a Debian maintainer who doesn't have any sort of hardware key storage and does all
    their Debian development on the same system that they read mail, browse
    the web, opens random downloaded PDFs, try random software, etc., I think
    this is true and it's one of the things that I worry about with our
    existing security model.

    However, I don't think this is *necessarily* true for all maintainers, and tag2upload creates the *possibility* of doing better. Whether we will
    take advantage of that possibility, I don't know. But creating a
    tag2upload tag requires GnuPG and Git and not much else, and other people
    can see exactly the Git contents that were signed.

    Better security models are possible even with *.dsc files, of course, but
    I think tag2upload opens the door for a few additional improvements such
    as moving the source package construction off the maintainer's system,
    and, more importantly, forces exactly the content that was signed to be uploaded to Salsa, which provides that data in a somewhat richer form that gives us some additional detection and tracing capabilities.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Simon Richter on Mon Jun 17 21:10:01 2024
    Simon Richter writes ("Re: [RFC] General Resolution to deploy tag2upload [and 1 more messages]"):
    I think we cannot increment ourselves into a good solution here.

    We certainly can improve things a long way. That's what we're doing.
    The way to do a big transition is to write a gateway, and then
    gradeually move interfaces to the new way of doing things.

    But you're right that there's an underlying hard problem.
    Right now there isn't *any* really good solution to the problem of
    maintaining a long term delta queue, as a downstream.

    That is the core problem which is addressed by gbp pq, by
    git-debrebase, by git-dpm, by git-debcherry, by stgit, and in own its
    way by dpkg-sources's `3.0 (quilt)`.

    But tag2upload *does* significantly improve each of our existing
    git-based approaches, and enables future improvements. It *will*
    enable leaving cruft behind:

    There are lots of other problems with the various mappings in use, each
    makes different trade-offs. Accommodating them all inside tag2upload is
    an ab-initio commitment to technical debt.

    It's certainly not. We are already saddled with that debt.
    tag2upload doesn't help pay it all off, only some of it.

    Nevertheless, tag2upload does represent a bet about the future.

    It represents a bet that the hypothetical answer to our prayers (for a
    really good way to handle maintaining and rebasing and sharing a delta
    queue) won't be based on tar and patch and diff.

    It represents a bet that that answer looks enough like a fast
    forwarding git branch that we can store it in existing git
    repositories and share it using existing git tooling.

    It represents a bet that if it is not precisely git, but maybe
    something on top of git, it's close enough in model to a git branch,
    or a a signed git tag, that we can reuse much of the data model and
    much of the code.

    Almost all of the somewhat-clumsy answers we have already to this
    problem have these properties. So that bet seems a good one to me,
    a decade or so after I first made it in the context of dgit.

    It's true that there's a fair amount of code in tag2upload to deal
    with the different workflows. Most of that is to do with *source
    packages*, not git representations. The pure-git representations
    generated by fully git-based tooling are generally tractable. But, to
    an extent, that code represents a bug that the marvellous downstream
    delta queue tool won't appear, and become ubiquitous, tomorrow.
    (Even, tomorrow in Debian terms.)

    But the real difficulty comes when importing a .dsc from the
    archive, and then modifying it in git, and wanting to re-upload it.
    This is something tag2upload wants to support. But it's hard because
    the varieties of nonsense you can upload as a source package are quite astonishing, and that makes a bidirectional gateway hard.
    Nevertheless, we have solved that problem. I think it was worth doing.
    Debian hasn't abolished source package uploads and `quilt (3.0)`
    in the last 10 years, and we won't in the next 10 either.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Russ Allbery on Mon Jun 17 21:30:01 2024
    Russ Allbery writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    Joerg Jaspert <[email protected]> writes:
    I also do assume that the uploader will build things, to see if the
    stuff they are going to "push to the archive" (and our users) actually
    does what they intended it to do - and to test it.

    This is the assumption that I think is no longer valid given Salsa CI. It used to be that this was the only way to test a package; now we can do equally well and often better by letting Salsa CI do the hard work.

    Also, you can build a package directly from a git tree.

    Unlike a gbp branch, a git-debrebase format branch does not need any
    changes made, so you can just run `make` or `dpkg-buildpackage -uc -b`
    to build executables, or binary packages, for local informal testing.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Aigars Mahinovs@21:1/5 to [email protected] on Mon Jun 17 22:50:01 2024
    If you have a source package already compiled locally to be
    manifested/signed, then why are you not just uploading that? This
    assumption completely removes the point of tag2upload.

    There are plenty of valid use cases that do not create a dsc locally. Or wouldn't if it wasn't required for upload.

    The whole point is that dsc package is *not* source. It is not the format
    most commonly used for development work. It is an intermediate software generated artifact. I can not imagine develplopers regularly manually inspecting contents of their generated dsc packages before signing them to
    make sure that source in files there match the files in their work dir.

    Developers signing a git tree state is far closer to developer signing the *actual* artifact that they are working on, inspecting and modifying. Everything after that: dsc, deb, Packages.gz, Release.gz are generated from that actual source tree and can be handled by appropriate automation.

    Nothing technically prevents dak simply looking at tag2upload field/file specifying the uploader key and reject the upload if that key is no longer valid by the time the dsc makes it to the dak. Or reject the deb upload for buildd if the original uploaders key is invalid by the time arm64 buildd
    has finished building the source-only upload they pushed yesterday. People loosing access is quite rare, so it doesn't hurt to make these checks
    multiple times and reject as soon as one check fails.

    Just because one system accepts the package for processing, does not mean
    that another system down the line can't reject it, especially when key
    criteria changed in the meantime.


    On Mon, 17 Jun 2024, 23:07 , <[email protected]> wrote:



    Sent from Workspace ONE Boxer
    On Jun 17, 2024 6:23 PM, Ansgar 🙀 <[email protected]> wrote:

    Hi,

    On Mon, 2024-06-17 at 14:59 +0100, Jessica Clarke wrote:
    On 17 Jun 2024, at 14:53, Ansgar 🙀 <[email protected]> wrote:
    It essentially introduces an alternative authentication system (and authorization system as tag2upload seems to care about DM status)
    that
    *replaces* the one in dak *and* *disagrees* it. Even when you fix
    one
    of the instances where the systems disagree, the basic problem
    remains
    at least technical debt). It is very bad design to have multiple
    of
    these for a single system as you significantly increase the attack surface (and one of these usually ends up with less maintenance than the other). (Only one of the systems has to allow the upload, i.e.,
    a
    big "*OR*".)

    Would an API for tag2upload to use satisfy that concern? It feeds in
    a source package name and key fingerprint (or the signature, or whatever’s deemed useful), dak replies whether it’s valid for uploading. Then you don’t need to trust tag2upload’s authorisation checks beyond that it adheres to what dak says each time.


    Hmm, a signed manifest solves that problem and also adds some integrity verification and possibility for third parties to check the signature itself as well.

    Back to square one: Didier's proof of concept design is much better, as it solves all of the concerns. No need to trust a 3rd party key, packages are signed and identified with the uploader's key, and respect all ACLs. No
    need to change anything to our infrastructure. Added bemefit: packages must be reproducible to support it.

    The point it isn't solving: contributors still need to learn how to build *source* packages locally. Is this a problem ? I don't think so: we are talking about contributing to packaging anyways. Isn't this the bare
    minimum knowledge to expect ?

    Thomas




    <div dir="auto"><div>If you have a source package already compiled locally to be manifested/signed, then why are you not just uploading that? This assumption completely removes the point of tag2upload.</div><div dir="auto"><br></div><div dir="auto">There
    are plenty of valid use cases that do not create a dsc locally. Or wouldn&#39;t if it wasn&#39;t required for upload.</div><div dir="auto"><br></div><div dir="auto">The whole point is that dsc package is *not* source. It is not the format most commonly
    used for development work. It is an intermediate software generated artifact. I can not imagine develplopers regularly manually inspecting contents of their generated dsc packages before signing them to make sure that source in files there match the
    files in their work dir.</div><div dir="auto"><br></div><div dir="auto">Developers signing a git tree state is far closer to developer signing the *actual* artifact that they are working on, inspecting and modifying. Everything after that: dsc, deb,
    Packages.gz, Release.gz are generated from that actual source tree and can be handled by appropriate automation.</div><div dir="auto"><br></div><div dir="auto">Nothing technically prevents dak simply looking at tag2upload field/file specifying the
    uploader key and reject the upload if that key is no longer valid by the time the dsc makes it to the dak. Or reject the deb upload for buildd if the original uploaders key is invalid by the time arm64 buildd has finished building the source-only upload
    they pushed yesterday. People loosing access is quite rare, so it doesn&#39;t hurt to make these checks multiple times and reject as soon as one check fails.<br><br>Just because one system accepts the package for processing, does not mean that another
    system down the line can&#39;t reject it, especially when key criteria changed in the meantime.<br><br><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Mon, 17 Jun 2024, 23:07 , &lt;<a href="mailto:[email protected]">thomas@
    goirand.fr</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><br><br><div dir="ltr">Sent from Workspace ONE Boxer</div>
    <div dir="ltr">On Jun 17, 2024 6:23 PM, Ansgar 🙀 &lt;<a href="mailto:[email protected]" target="_blank" rel="noreferrer">[email protected]</a>&gt; wrote:</div>
    <div dir="ltr">&gt;</div>
    <div dir="ltr">&gt; Hi, </div>
    <div dir="ltr">&gt;</div>
    <div dir="ltr">&gt; On Mon, 2024-06-17 at 14:59 +0100, Jessica Clarke wrote: </div>
    <div dir="ltr">&gt; &gt; On 17 Jun 2024, at 14:53, Ansgar 🙀 &lt;<a href="mailto:[email protected]" target="_blank" rel="noreferrer">[email protected]</a>&gt; wrote: </div>
    <div dir="ltr">&gt; &gt; &gt; It essentially introduces an alternative authentication system (and </div>
    <div dir="ltr">&gt; &gt; &gt; authorization system as tag2upload seems to care about DM status) that </div>
    <div dir="ltr">&gt; &gt; &gt; *replaces* the one in dak *and* *disagrees* it. Even when you fix one </div>
    <div dir="ltr">&gt; &gt; &gt; of the instances where the systems disagree, the basic problem remains </div>
    <div dir="ltr">&gt; &gt; &gt; (~&gt; at least technical debt). It is very bad design to have multiple of </div>
    <div dir="ltr">&gt; &gt; &gt; these for a single system as you significantly increase the attack </div>
    <div dir="ltr">&gt; &gt; &gt; surface (and one of these usually ends up with less maintenance than </div>
    <div dir="ltr">&gt; &gt; &gt; the other). (Only one of the systems has to allow the upload, i.e., a </div>
    <div dir="ltr">&gt; &gt; &gt; big &quot;*OR*&quot;.) </div>
    <div dir="ltr">&gt; &gt; </div>
    <div dir="ltr">&gt; &gt; Would an API for tag2upload to use satisfy that concern? It feeds in </div>
    <div dir="ltr">&gt; &gt; a source package name and key fingerprint (or the signature, or </div>
    <div dir="ltr">&gt; &gt; whatever’s deemed useful), dak replies whether it’s valid for </div>
    <div dir="ltr">&gt; &gt; uploading. Then you don’t need to trust tag2upload’s authorisation </div>
    <div dir="ltr">&gt; &gt; checks beyond that it adheres to what dak says each time. </div>
    <div dir="ltr">&gt;</div>
    <div dir="ltr">&gt;</div>
    <div dir="ltr">&gt; Hmm, a signed manifest solves that problem and also adds some integrity </div>
    <div dir="ltr">&gt; verification and possibility for third parties to check the signature </div>
    <div dir="ltr">&gt; itself as well. </div>
    <br><div dir="ltr">Back to square one: Didier&#39;s proof of concept design is much better, as it solves all of the concerns. No need to trust a 3rd party key, packages are signed and identified with the uploader&#39;s key, and respect all ACLs. No need
    to change anything to our infrastructure. Added bemefit: packages must be reproducible to support it.</div>
    <br><div dir="ltr">The point it isn&#39;t solving: contributors still need to learn how to build *source* packages locally. Is this a problem ? I don&#39;t think so: we are talking about contributing to packaging anyways. Isn&#39;t this the bare minimum
    knowledge to expect ?</div>
    <br><div dir="ltr">Thomas</div>
    <br><br></div></blockquote></div></div></div>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joerg Jaspert@21:1/5 to Ian Jackson on Mon Jun 17 22:20:02 2024
    On 17263 March 1977, Ian Jackson wrote:

    Which behind the scenes? To who did you talk?
    Firstly, I want to ask: would it have made any difference if we had
    raised the matter in public again on -devel?

    Or if you would directly have addressed us. That happened last in 2019.
    And Sean is part of the ftpteam, honestly, I would have expected working
    on the inside to - I don't know, maybe - change our point.

    I didn't write i got surprised by this GR proposal just for the lolz. :)

    Based on your replies here, it seems that ftpmaster's objections are
    still just as firm now as they have been over the past four years.
    We wouldn't want to keep asking the same question on a list like
    -devel, when we are pretty sure the answer will just be the same; that
    would be rude to both ftpmaster and the rest of Debian.

    Now, *officially* it would have led to an actual ftpmaster position at
    least, instead of "merely individual members participating in a
    discussion". But then, thats also going down a "processes and
    procedures" rabbit hole..., lets don't.

    I think we didn't speak to ftpmaster directly about this since 2019.

    Ack.

    discussions. We didn't see that as helpful, since we saw an
    irreconcilable gap between our position and ftpmaster's.

    I really wonder if there does exist a middle thing between those two.

    *I* am interested in finding it, though I still have to read and process
    Russ latest mail (long, as it is :) ). Unfortunately that has to wait
    until tomorrow or day after, I did develop something with my eye,
    meaning it hurts a *lot* when opened and focusing on things for more
    than 2 or so minutes. This *sucks*. Going to see a doc tomorrow.

    I would ask you to wait a bit more before continuing with a GR (in the
    term of days, not months), at least some time, but do whatever you feel.

    --
    bye, Joerg

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Aigars Mahinovs@21:1/5 to [email protected] on Tue Jun 18 10:10:01 2024
    On Tue, 18 Jun 2024 at 01:57, <[email protected]> wrote:
    There are plenty of valid use cases that do not create a dsc locally.

    Please be specific in why it is unacceptable to have a local tool do local (very quick) computation in a full automated way for you. Why is this unacceptable?

    The whole point is that dsc package is *not* source. It is not the format most commonly used for development work. It is an intermediate software generated artifact.

    What point are you trying to make here? A .dsc is metadata for the upload indeed, just like the
    .changes. Then what? Why should you care if a local tooling on your laptop is building it, adding it to the signed tag, and maybe (optionnaly) deleting your local copy after sending it to Salsa CI for the upload?

    Everything after that: dsc, deb, Packages.gz, Release.gz are generated from that actual source tree and can be handled by appropriate automation.

    Have you ever created a .dsc file by hand? I suppose answer is no. So what is the trouble ? Or are you saying I am proposing to do that ? I suppose no as well. So what bothers you? :)

    That your laptop need to calculate the hash of your debian.tar.xz when tagging? Isn't this a very small deal to make, so we don't need to touch a bit to our infrastructure, auth and ACLs? Plus having no "a single key to sign them all" would be an
    awesome feature.

    The point is that with certain git-centric workflows (like what Russ
    described for git-debrebase) there never is a *.dsc or a debian.tar.xz
    or even an orig.tar.gz. Those are never there to be checksummed. And
    the process for getting from the real git tree that a developer
    *actually* does their work on and verifies the contents of to these
    generated source artifacts is sufficiently non-trivial that people end
    up never actually verifying the files they are signing. The signature
    on the dsc is signing something that people never actually check.

    It is bad from a process perspective because it means that generation
    of these artifacts from the real source happens on many developer
    machines with many different configurations and versions and may be
    influenced by old bugs. It is the exact same reason why we stopped
    building all binary packages on developer local machines.

    And it is bad from security perspective, because it is sufficient for
    one developer machine to have any piece of software in the software
    chain that assembles and signs the source package to be compromised
    and you will end up signing an artifact containing malicious code that
    never appeared in your source code tree or in any collaborative git
    repository. And there is zero trace of that ever happening, except the
    already signed code package. Same as a compromised compiler (or any
    other component) injecting a malicious code packages directly into a
    binary while a developer is compiling a deb package.

    The whole point of open source is to go back as much as possible from
    binaries running on the computer to a human-editable form of software.
    That is the source. In a git-centric workflow the git tree is the
    source of the software, not a tarball. So our release and signing
    processes should take that into account and start automated processing
    and signing of the source as close to the human-editable source as
    possible. tag2upload moves this a full step forward.

    --
    Best regards,
    Aigars Mahinovs mailto:[email protected]
    #--------------------------------------------------------------#
    | .''`. Debian GNU/Linux (http://www.debian.org) |
    | : :' : Latvian Open Source Assoc. (http://www.laka.lv) |
    | `. `' Linux Administration and Free Software Consulting |
    | `- (http://www.aiteki.com) |
    #--------------------------------------------------------------#

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Tue Jun 18 13:00:01 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------6bXZp3x3ooWyOzNyCBN6PQ5R
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMTcuMDYuMjQgMDA6MDQsIEpvZXJnIEphc3BlcnQgd3JvdGU6DQo+IFdlbGwsIGlmIHRo ZSBtYWludGFpbmVycyBzeXN0ZW0gaXMgYnJva2VuIGluLCBpdCBtYWtlcyBubyBkaWZmZXJl bmNlIGlmDQo+IGEgZ2l0IHRhZyBvciBhIGRzYyBvciB3aGF0ZXZlciBlbHNlIGlzIHNpZ25l ZC4gSXQgYWxsIGNhbiBlbmQgdXANCj4gbW9kaWZpZWQgYnkgdGhlIGF0dGFja2VyLiANCldo aWxlIHRoYXQncyB0cnVlIGFzIGEgbWF0dGVyIG9mIHByaW5jaXBsZSwgdGhlICpkaXNjb3Zl cmFiaWxpdHkqIG9mIGFuIA0KYXR0YWNrZXIncyBtb2RpZmljYXRpb24gaXMgZmFyIGhpZ2hl ciB3aGVuIHVzaW5nIHRhZzJ1cGxvYWQuDQoNCkEgc2lnbmVkIGdpdCB0YWcgZG9lc24ndCBt ZXJlbHkgdHJhY2sgYSBzZXQgb2YgZmlsZXM7IGl0IGFsc28gdHJhY2tzIA0KdGhlaXIgaGlz dG9yeS4gWW91IGNhbiB0aHVzIGdvIHRvIFNhbHNhIGFuZCB2ZXJpZnkgdGhhdCBlLmcuIHRo ZSANCmVtZXJnZW5jeSBOTVUgdGhhdCBJIHB1c2hlZCB0byAkUGFja2FnZSB5ZXN0ZXJkYXkg b25seSBjb250YWlucyBvbmUgDQpjb21taXQgb24gdG9wIG9mIHRoZSBtYWludGFpbmVyJ3Mg YW5kIGNoYW5nZXMgb25seSBvbmUgZmlsZSAoT0sgdHdvIGlmIA0Kd2UgY29uc2lkZXIgZC9j aGFuZ2Vsb2cpLg0KDQpPciwgSSBjYW4gc2NhbiBteSBwYWNrYWdlJ3MgZ2l0IGhpc3Rvcnkg KHdoaWNoIEkgZnJlcXVlbnRseSBkbykgYW5kIA0Kbm90aWNlIHRoZSBzcHVyaW91cyBjaGFu Z2UgdG8gc3JjL3V0aWwvc2VjdXJpdHljaGVjay5jIGluIHRoZXJlLg0KDQpXaGlsZSBpbiBw cmluY2lwbGUgaXQncyBwb3NzaWJsZSB0byBkbyB0aGUgc2FtZSB0aGluZyBieSBkb3dubG9h ZGluZyB0d28gDQpzZXRzIG9mICRQYWNrYWdlLSouZGViaWFuLnRhci5neiBmaWxlcyBmcm9t IGFyY2hpdmUuZC5vLCB1bnBhY2tpbmcgdGhlbSwgDQphbmQgcnVubmluZyAiZGlmZiAtciIs IHRoYXQncyB0d28gb3JkZXJzIG9mIG1hZ25pdHVkZSBtb3JlIHdvcmssIG1pZ2h0IA0KcmVx dWlyZSBkZWNpcGhlcmluZyBjcnlwdGljIGRpZmYtb2YtZGlmZnMgZ2liYmVyaXNoLCBkb2Vz bid0IHdvcmsgdG9vIA0Kd2VsbCBiZXR3ZWVuIHVwc3RyZWFtIHZlcnNpb25zLCBhbmQgZG9l c24ndCBoYXZlIGEgbmljZSB3ZWJwYWdlIEkgY2FuIA0KbGluayB0byBpbiBteSBOTVUgYnVn IOKApiBhbGwgb2Ygd2hpY2ggbWVhbnMgdGhhdCBub2JvZHkncyBnb2luZyB0byBkbyBpdCwg DQptdWNoIGxlc3Mgbm90aWNlIHNhaWQgc3B1cmlvdXMgY2hhbmdlIGJ5IGFjY2lkZW50Lg0K DQpUaHVzIGEgc291cmNlIHVwbG9hZCBtZWFucyB0aGF0LCBjb21wYXJlZCB3aXRoIHQydSwg aXQncyBkZWZpbml0ZWx5IG1vcmUgDQpsaWtlbHkgdGhhdCB0aGUgYmFja2Rvb3Igd2hpY2gg JEJhZFBlcnNvbiBpbnNlcnRlZCBpbnRvIG15IHJlbGVhc2Ugd2hlbiANCnRoZXkgaGFja2Vk IG15IG1hY2hpbmUgd2lsbCBnbyB1bmRldGVjdGVkLiBJTUhPLCBhIHdob2xlIGxvdCBtb3Jl LiBZTU1WIA0KYW5kIGFsbCB0aGF0Lg0KDQpUaGUgdDJ1IG91dHB1dCwgaW4gdHVybiwgY2Fu IGVhc2lseSBiZSB2ZXJpZmllZC4gQ2xvbmUgdGhlIHRhZywgcnVuIA0KZGdpdCwgY2hlY2sg dGhhdCBpdCdzIHRyZWUtc2FtZSBhcyB0aGUgYXJ0aWZhY3RzIHRoYXQgdGhlICJyZWFsIiAN CnRhZzJ1cGxvYWQgc2VydmljZSBnZW5lcmF0ZWQuDQoNCi0tIA0KLS0gcmVnYXJkcy0tDQot LSBNYXR0aGlhcyBVcmxpY2hzDQoNCg==

    --------------6bXZp3x3ooWyOzNyCBN6PQ5R--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZxaF4FAwAAAAAACgkQcs+OXiW0wpN3 Fg//SiCTh4COPTDb7j+cH5NPVbcIwuvQkqdv9sdM6Hv8daRghfWPzZGaEmDsrpykzCByQmzlf/ww RaRoIm+CNftejbEoN8jy1c5n9ssUITTfcZUMe/Xf6VcBH4PxwpJZmzPxpzAG7NvEYmHHoqbIKslz 0hhus/PVjiCmKZcEPDfPi9xdqZb9yJetvX6MX7oIzQaeYtNr1n3PFLf+ryNO/1pOWTvwFFPV17vx MgyniBj5RFZwX5YZhzLY7nw0bCfschW1jHPEDBzwKnwY38og18d7QW1ff2qGJBXOx/Y2L0RT+O4i UfSIK5iNntWGn0s8EnYyGRuWrKAC3iPtIpDs2yxhL9mtTjWmxH6RuN8EAC4rmd43UqF6RPn/rxLm miHnRjV6SzZuw8YnWvbtmBhpl3Z8hBByvZ8V1pTyh0I6zChLMYXUM18hJPnwnC1nwikRHQtPMQjK kl8WybvCbH9AcHiuS1A/wrs2sfsOWM0CY+sqaZbL3qe04pqN+bfVIW9MMpb3H+DrRDAw/pKN6fAS kOh4VLTBt4LlS5Ocao26SJ1a99B6tbig2y35SpQkEjh/Tf8WWcTWQXlhzPbr/kEobz5yvkZk9wP+ riCYXqh2pxwhtgQe+HpIfIMQKPH1rRbl0g3/me92v7U4DY1BCTww8YmsL16IR/6ee2AGFOZYK+Zb GTc=
    =Ax0E
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Soren Stoutner@21:1/5 to All on Tue Jun 18 08:43:56 2024
    On Tuesday, June 18, 2024 8:28:14 AM MST Thomas Goirand wrote:
    How do you upload then? There's somewhere a script that actually creates
    the .dsc and .changes files for upload, right?

    So, you're proposing to upload a signed git tag. I'm proposing that you
    do that, PLUS 2 signed artifact within that git tag, that are later
    check (expected to be bit-by-bit identical) against something that's generated in a trusted environment.

    Agreed 100%. I'm just voting for a different way to write the
    automation, one where the .dsc and .changes *SIGNATURES* are produce on
    a DD laptop, just like now. Everything else is the way you describe.

    From a security perspective, it makes sense to me that the DD should create a .dsc and .changes and sign them, and then tag2upload should create them as well and verify they match exactly.

    In terms of preventing the insertion of malicious code into the final build that is not represented in Git, this prevents either the DD’s computer or the
    infrastructure running tag2upload from doing so if they are compromised (unless they are both compromised in the same way). It also removes any concerns of Salsa or any other Git server being compromised as the host for the signed tag, including any concerns about SHA1 weakness.

    It addresses the FTP Master’s concerns by allowing anyone to verify the original intent of the DD by checking the DD signature on the .dsc and .changes.

    And it improves the security posture of Debian by generating the source package in tag2upload's controlled environment.

    From my perspective, the extra work that needs to be done on the DD’s system to create and sign the .dsc and .changes is worth the benefits in the previous four paragraphs.

    --
    Soren Stoutner
    [email protected]
    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEJKVN2yNUZnlcqOI+wufLJ66wtgMFAmZxqzwACgkQwufLJ66w tgPTYBAAngMUfTuf8gR9HWzJ/SG4K72eSbCu1eBUsDmJweln3uqyacEgmG/0Yoma 4P5pLlcE2oGHIi4ZWvu/Qf5VGXfZFbxRIFj/cxesbfJ+BH324r+09VJplEjCrnGH wAqblgDwpv18NOSF2lmDtJNal/ewynrWRQiVt/QjUHy8h0Xfz/OQRbyemUlf6HLV OVSpCU0rmbUiIkxmVtKYgYQt1WI0E/diczRLKvyPqDY6GSUIUnsTRHRdVsSF/znT NmpXi3Hk+wNB/uZaBWkZ2KBeoLQepMmRqWbeWx8dm4ByZaESpikBf2X0h7ZAFrpm WzPlyVN9P0CkXNDYyKyvqDhWgfoD9M2I5/Rm9y4Ua6BPZ3dsIFYwE+lq5P6ImzXX eLC3TJ3Z09aPqa6rqdRBUxzDA2uMOJ+6b2Yniw9okMTJpbKa2Ivh08R2rjMN8e1x CWoQaIUtonutS7CAhAqJ7NM1+ggtqIMc/qStug/p7hp/v+HMPJMjBK1sieMLuhwL Nw+IqCNRfQ3kJOrEQpmKvvIIxLJOkIRWrEQTuuLVkVfnMj475RxwZGBBgfF9tKJT yTZxafDqG/a02j1SPkNRqpTitBfFMqXDj1XtNcYIgNGAfgT7LTHsbf++nYh1n+TD 8ZQ5HoO2E6i0OegnhNYG17RPHfH4+oeKqawxbbDOEqLOInqmL1I=
    =SM9Y
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Thomas Goirand on Tue Jun 18 18:00:02 2024
    Thomas Goirand writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    On 6/18/24 10:03, Aigars Mahinovs wrote:
    The point is that with certain git-centric workflows (like what Russ described for git-debrebase) there never is a *.dsc or a debian.tar.xz
    or even an orig.tar.gz. Those are never there to be checksummed. And
    the process for getting from the real git tree that a developer
    *actually* does their work on and verifies the contents of to these generated source artifacts is sufficiently non-trivial that people end
    up never actually verifying the files they are signing. The signature
    on the dsc is signing something that people never actually check.

    How do you upload then? There's somewhere a script that actually creates
    the .dsc and .changes files for upload, right?

    Typically, and I'm sure Russ is doing this, you run
    dgit push-source

    That does the git to dsc conversion on your laptop. dgit push works
    really well - most of dgit's users seem very happy with it. You can
    adopt it today; there are a number of benefits you experience directly
    as an uploader.

    But: dgit is still complicated; it has many dependencies; it often
    needs to download tarballs; manipulation of source packages can be
    slow; etc. dgit is working really hard to paper over the many strange properties of sourcxe packages. That's the work we're trying to move
    to a central service.

    We want Russ to be able to do these uploads without installing and
    runing dgit.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Soren Stoutner@21:1/5 to All on Tue Jun 18 09:10:37 2024
    On Tuesday, June 18, 2024 8:57:28 AM MST Aigars Mahinovs wrote:
    On Tue, 18 Jun 2024 at 17:44, Soren Stoutner <[email protected]> wrote:
    From a security perspective, it makes sense to me that the DD should
    create
    a
    .dsc and .changes and sign them, and then tag2upload should create them as well and verify they match exactly.

    They will not. Translation from a git tree to a Debian source package
    with dsc and changes
    is not a trivial operation.

    If we can’t do this reproducibly and verifiably, then I don’t think we should
    do tag2upload at all.

    But my guess is it can be done.

    I know that one of the goals of those proposing the GR is to not have a fat client on the DD machine to generate the .dsc and .changes. But I think the security of the tag2upload proposal would be improved if they dropped that as one of their goals.

    To me that is the Gripping Hand (meaning, the most important factor that trumps all the other factors).

    --
    Soren Stoutner
    [email protected]
    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEJKVN2yNUZnlcqOI+wufLJ66wtgMFAmZxsX4ACgkQwufLJ66w tgPRMw/+JFUeMz0Wj0iqY7W2dI+0udplirt7DrDWz+QSMYfZ33iw7FvvFPqmC3yb nB4Rcg81Gm5BEiGZQHVY1DsEHkz2F7NrZOUvWtjuDk7Lc4VAU76FLSR0Tb03Wsdw Js1pXUzAhOWMvzxPrDrCzfQPQbd3VhdXP6agcWM7mHuEzLOYLcavaU153jEsAaur pcwc/ec0GFZfuHt82Rl+4fCjyIweQecrU1aMqNiFqrc3toHxa2IT7iFQXp57ER6R oYg6HqWy/qyWieMQbbJAiu46U8ldkw+/Jah/BNNp1R01uJepND+ACVBtz1NqS5Vi 3O4uygU3MZgOGBGRQm5rh6CMyTjKLGre3HLhBlS8dMNsWUjPqaPmGnkB+/fbGBuh LDbPW+r7XB+bvc5vzmxatqYW+wHBICsXQF9SwIPFe0lvYOMxE58sCeU/EsHlkYRF vYrSwU7JAsC+OLyWVAh7yfrioaiujYFjGjSmyjJcx6+1P+4xMKzvo0upjSNM75zD M634avhg1eCjRXr7av+s3qiYoFVFe2MIZDAo6uaNxhkXqvMPuC8wkSNQV9iSXX8s oHGHbsd22yhGmcDplAvJkmgs0MPcLjelCZ8/3UyKZj5KIwnjxHIpdh3+YxXqpYSE YALpEvapXFS1eTaUsiU+CeFgieiZlai2HX4J5KkBT7gsKABPAuY=
    =RBbP
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Rakhmatullin@21:1/5 to Paul R. Tagliamonte on Tue Jun 18 19:30:01 2024
    On Tue, Jun 18, 2024 at 12:11:53PM -0400, Paul R. Tagliamonte wrote:
    I wonder if we have a good idea of what the project believes to be the case between #1 and #2:

    1) Is the source of a package the debian source distribution?
    2) Is the source of a package the VCS where the source is held?

    The project believes 1 is currently true. A large part of it wants 2
    instead. So far a possibility of a path from 1 to 2 didn't appear, in part because of the famous (unwritten?) decision that we can't ship git history
    in the archive due to our licensing and distributability requirements.

    Or, to extend it once more in the context of this discussion -- should the source be built by a buildd from the "true" source? Why do we bother having
    a maintainer sign this intermediate artifact, like we used to with debs?

    Even more extremely -- should we bother with dscs anymore if they're just
    an intermediate artifact?

    I think a large part of the project, maybe most of it, doesn't care about
    dscs. I'd expect most people caring about dscs to be people using them for various partially or fully external purposes like analyzing, rebuilding, redistributing or archiving.

    This doesn't count people who want to continue building and uploading
    source packages using old tools and not using git, though.

    Most extremely -- do we need a new dpkg source format?

    We already have 3.0 (git)...

    Should buildds build off git tags? Do we need to overhaul how we treat sources?

    Seems so?

    --
    WBR, wRAR

    -----BEGIN PGP SIGNATURE-----

    iQJhBAABCgBLFiEEolIP6gqGcKZh3YxVM2L3AxpJkuEFAmZxwxgtFIAAAAAAFQAP cGthLWFkZHJlc3NAZ251cGcub3Jnd3JhckBkZWJpYW4ub3JnAAoJEDNi9wMaSZLh yOoP/ifV14tyg95oxMF1pzasyw29y+4UswNwxYG+hrvtia6HLmjQx0iKP0/7Jl5Y 97YqP+xoLFTU1ZFSdmm6VFjDW2LWkpPrScmULSGiDEDsKqJGsX91aM3ioW1RCT/W joTf80f8nVFku2Z5p/cCG+zsvwPXKakRtBMTx/8jVqDJbwGq+VUwDOUyRk3caEB8 s1eNRK02rvgx9sZ4Wiecy/j3y9aOcnPqQMabNhcv3lAbUmYe2AIJjpwUxRVX67j6 JuP1X+l27YsxDmnY8unwzBRq6YoWfd6GqPEzw7xTRwT1uxA7ey9z1v2f38Ox+7PZ 6P2Bc2Uv8/iXeLgIe9uVT9ibkODQTKseeT8AydhGWIX07Z96vsEkaChxg4nuV6eI IglQ8bAjROZDlBq3vkigIkDFmgjqnCcCEybRdm9o5t2sZjlzcrUvVS9hjgnoTBUp +2UzHtRCi1z27ha8suSBOPmMWoR4H9BzeoT2HgACdTWyh5CSgX7jDoEu3+sUfGPI gVzoV5kLXCkYICvDkyC5kza+inHQJ/WEvU5aS7Ymf57eiEOjE0qRykQp/7AkJIF2 hdnmoxfhJpUpullZRFc9abQ+K9eiKJJt9UVuFLEgWd9ScWj2SMxykkqZ5PhGLLBE SE1bZjasRuJ5Mm9f4PeHm1k1sYE02Rg/pm119iWP6lGV+Ukl
    =Ahbb
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Soren Stoutner on Tue Jun 18 20:50:02 2024
    Soren Stoutner <[email protected]> writes:

    From a security perspective, it makes sense to me that the DD should
    create a .dsc and .changes and sign them, and then tag2upload should
    create them as well and verify they match exactly.

    I don't believe that it's feasible to do this because both tar and a compression program are involved in the process of creating the
    debian.tar.gz or debian.tar.xz. That means that this problem, as stated,
    is a variation of the pristine-tar problem -- an easier variation,
    admittedly, because there is less variance of tooling involved, but still
    the same class of problems. And as anyone who has been involved in pristine-tar maintenance can attest, this is not an easy problem.

    What I agree should be feasible is to make the *contents* of the tarballs
    and metadata files that compose a source package, as unpacked on a file
    system, identical. This dodges all the problems with unreproducibility in
    tar and xz/gzip at the cost of making the equality check somewhat more complicated. (For example, timestamp resolution varies by file system,
    hard links are a thing... there are some obstacles here, but I think it's possible to overcome them.)

    I also think that providing tools that let people do this check whenever
    they wish is an excellent idea. As Ian and I were discussing elsewhere in
    this thread, I think dgit already has a lot of the pieces to do this.

    I also agree with your point that doing this in two places and ensuring
    that they match provides a useful security property. This is true for
    almost any two independent places that would not be compromised by the
    same attacker.

    What I disagree with is *forcing* one of those two places to be the
    uploader's system. This is where I think the design is too inflexible and defeats the point of what tag2upload is trying to do, which is to make the local system less central to the development process. The point of
    tag2upload is to enable something closer to the Git-first development
    model that is widely used outside of Debian, where package development
    happens primarily in the Git repository and the laptops of individual contributors to that development interact with it by being Git clients.

    I think the action of vetting a Git tree and indicating that it should be uploaded is conceptually separate from the build system that turns that
    into a source package. Those two things *can* be done on the same
    computer, but there is no reason to *force* them to be done on the same computer, and there are a few good reasons not to:

    1. The uploader's laptop may be running Debian stable, or Debian
    oldstable, or not Debian at all (I believe we have several folks who
    work primarily on other distributions but also contribute work to
    Debian). This doesn't interfere with it acting as a Git client and it
    doesn't interfere with it signing a Git tag, but it may very well
    interfere with it building the source package correctly. To work
    around this, they then have to set up even more somewhat-arcane
    Debian-specific stuff: an unstable chroot, or unstable Docker images,
    or whatever.

    2. The tagging process is no longer transparent to the uploader. It now
    involves doing this other extra Debian-specific magic that gets loaded
    into their signed Git tag but that they probably don't know anything
    about and can't actually verify is correct, whereas the tag2upload tag
    is a straightforward set of metadata that can be understood on its own
    without special tools other than Git. I like the property that
    tag2upload has of moving us closer to a world where people understand
    the thing that they're signing, rather than trusting the output of a
    somewhat opaque build system. (There are some real limits here, of
    course, because I'm still trusting that Git and GnuPG are doing what
    they say they are, but at least we've removed a bit of the
    indirection.)

    3. Locking us in to doing this verification on the uploader's system,
    specifically, is unnecessarily limiting. There's only one uploader,
    and there's nothing special about their computer that gives it the
    ability to perform this check better than others. I think it's a lot
    more interesting to imagine a world in which someone external to Debian
    runs a separate source package verification and could make available,
    or even upload to the archive, a signed verification that it found the
    same Git tag, verified the original signature, reproduced the source
    package build, and got the same results.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joerg Jaspert@21:1/5 to Russ Allbery on Tue Jun 18 23:40:02 2024
    On 17263 March 1977, Russ Allbery wrote:

    So far, from this thread, it looks like the decision from 2019 may
    still
    stand, but I think there are still places to explore.

    The requests from there are still valid, yes.

    There ought to be one point that is doing this step, not many, yes.
    Includes that it is the delegated work and task description of
    FTPMaster
    to do this, though that can be addressed by either us ending up
    running
    it, or adjusting delegations. Not sure the latter ends up with happy
    people, but is one existing way.
    Elsewhere in this thread, Jessica Clarke made the excellent suggestion
    that perhaps the authentication check concern could be resolved by dak providing an API for performing the authentication and authorization
    check. I am embarrassed that I didn't think of that; thank you very
    much
    to Jessica for that suggestion.

    That gives me some hope that this point has a relatively neat
    solution, so
    I'm going to focus on exactly what dak needs the uploader signature to
    cover in order to accept the package.

    Yes, Ansgar also replied and doesn't appear to hat it, and it sounds
    good to me too, so multiple in favor already.

    While I still answer to some of the rest of your mail, this api thing
    sounds like a good way forward to me.

    I mean, Ansgar already hashed out some things that t2u should send - all
    bits that it should have/know anyways, and exact details don't need to
    be found right in this thread anyways - and then dak does whatever dak
    does and replies to t2u with a OK or NOK. Which can then either ditch or continue with the upload.

    It will mean that the property of "everything to trace uploaded files
    back to the uploader is on the mirror" is going away, but that appears
    not a muched loved one anyways. Also, maybe, depending on what t2u
    sends, we can store that for others to look at.


    Funny, this API would also enable one, if they are inclined to, adjust
    queued (or maybe better yet, rewrite) and put early-acceptance checks in
    that thing.

    Also, currently we have the nicety that we store all signatures
    directly
    besides the source package, available for everyone to go and check.
    Linking back to the actual Uploader, not to a random service key. You
    can take that, run a gpgv on it and via the checksums of the files
    then
    see that, sure, this is the code that the maintainer took and
    uploaded.
    You do *not* need to trust any other random key on that. Not that of
    tag2upload. *AND* not that of FTPMaster.
    The dgit-repos server similarly archives the signed Git tag with the
    Git
    tree over which it is a signature, ensuring that this is independent
    of
    Salsa where the tag could potentially be deleted by someone. This is
    not
    in the archive, of course, but I don't see any technical reason why
    some
    version of that data couldn't also be uploaded to the archive if one
    wanted to use the archive as a highly distributed backup of the
    dgit-repos
    server. There is, however, the long-standing concern about any
    variation
    on the 3.0 (git) source package format that the Git tree the
    maintainer
    signed may contain non-free code somewhere in its history.

    So here too, I'm not sure that this is inherently a blocker, although
    in
    the past the FTP team has been reluctant to include in the archive the
    data that is required to preseve a complete record of what is signed
    by a
    Git tag. (One obvious potential solution is to only put a shallow
    clone
    in the archive, so you can verify the signature but some of the content-addressable store references are unresolved.)

    The thing with a complete git tree is just that it is not exactly
    supported to get undistributable things out of that trees history,
    without rewriting that history. And rewriting only our view of history
    does
    feel kind of silly.

    Now, making a source format that's based on a subset of the git history (shallow clone, git archive, whatever) and not the full git history
    would avoid this.

    Unsure those are the right words. We want to have the uploader create
    a
    signature over the content they want to have appear in the archive.
    In a
    way, that this signature can be taken and placed beside the source,
    and
    then independently verified. *Currently* this is done using .dsc
    files.
    Okay, so again I think it's easier to talk about specifics, so let me
    make
    this concrete by using myself as the use case.

    I use the git-debrebase workflow for maintaining most of my Debian
    packages. What this means, for those who aren't familiar with it, is
    that
    my workflow looks like this (this is idealized; I'm still migrating my packages fully to this workflow so the specifics currently vary
    somewhat):

    [... Description of a git workflow ...]

    Now, I would like to use tag2upload rather than using dgit locally to
    make
    the upload. I want to move my testing into Salsa CI so that my
    overall
    workflow more closely matches the way that I do all of my development
    in
    my day job. Salsa CI is great about not getting lazy and skipping
    test
    steps just because I am in a hurry to get a package uploaded, and I
    can
    capture every test that was useful and not have to remember to re-run
    it.
    (This is the part that I haven't done yet; I know I want to do it and
    have
    not yet found the time.)

    What signed artifact do I need to provide so that the FTP team will be comfortable accepting my tag2upload-built source package?

    See below.

    Note, importantly, that the source package contains things that are
    not in
    the files present in the working tree of a local Git checkout of my
    source
    package. The patch descriptions and committer information and related metadata are where they are supposed to be in Git: in the metadata for
    the
    corresponding Git commit, not in a file in my working tree. The transformation that puts that data into a 3.0 (quilt) source package
    is
    not rocket science, but it's not trivial either.

    The signed artifact that I'm naturally providing is a signature across
    the
    entire Git tree, which includes all of the history and thus all of the
    data that goes into the source package. So everything that goes into
    the
    source package *is signed*, by me, when I trigger a tag2upload upload.
    The problem comes when dak wants to verify the correspondence between
    that
    data structure and the source package. It certainly can verify that
    my
    Git tag is valid and it can verify that the tag specifies the correct
    source package, version, and so forth. But if it wants to verify that
    the
    construction of the debian/patches/* directory is correct, I think it
    would have to perform the same transformation on my Git history that
    dgit
    and tag2upload perform.

    I do like that workflow. The one magic part seems to be the thing that
    creates debian/patches files out of your git tree. As soon as that step
    is done, I think everything should be there that makes up the thing that
    gets uploaded?

    But I bet there are other ways to work that make it less trivial magic
    than what you seem to have.

    To answer your question from above: At the point the magic is done,
    anything that lists the files and checksums of (ignore metadata like
    file timestamps) that will appear when one unpacks the source package.

    I basically assume that the uploader *does* need to have their source
    locally, no matter what. (Their git cloned).
    Yes, I agree. I don't think there's any way to avoid this: the source
    has
    to be in the same place that the key is in, or close to in the case of
    secure key storage, in order for the uploader to sign it and know what
    they are signing.

    I also do assume that the uploader will build things, to see if the
    stuff they are going to "push to the archive" (and our users)
    actually
    does what they intended it to do - and to test it.
    This is the assumption that I think is no longer valid given Salsa CI.
    It
    used to be that this was the only way to test a package; now we can do equally well and often better by letting Salsa CI do the hard work.

    I'm not a believer of that, but I accept that people do so.

    --
    bye, Joerg

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Joerg Jaspert on Wed Jun 19 00:50:01 2024
    I very much hope that you're feeling better! And once again I really appreciate your messages in this discussion. I think they have been very helpful in clarifying the FTP team position.

    Joerg Jaspert <[email protected]> writes:
    On 17263 March 1977, Russ Allbery wrote:

    What signed artifact do I need to provide so that the FTP team will be
    comfortable accepting my tag2upload-built source package?

    [...]

    I do like that workflow. The one magic part seems to be the thing that creates debian/patches files out of your git tree. As soon as that step
    is done, I think everything should be there that makes up the thing that
    gets uploaded?

    But I bet there are other ways to work that make it less trivial magic
    than what you seem to have.

    To answer your question from above: At the point the magic is done,
    anything that lists the files and checksums of (ignore metadata like
    file timestamps) that will appear when one unpacks the source package.

    Okay, I think we have identified the point of irreconcilable difference.
    So, to make sure, let me repeat what I understand of both positions and
    make sure that I have this right, and also why I think it's
    irreconcilable.

    My understanding of the FTP team position is that the uploader must
    generate and sign either the final source package, or the files that
    constitute the unpacked view of the final source package, or a trivial variation thereof, and include that signature in the upload. If the
    uploader does not sign the final contents of the source package, then no
    matter what else they sign and no matter where else the source package is created, the FTP team will not accept the package into the archive. It is
    fine for tag2upload to build the source package and to upload things to
    dak for the uploader, but the uploader must provide a signed attestation
    of the final generated contents of the source package as well.

    My understanding of the tag2upload developer position is that this
    requirement prohibits the goal of tag2upload. People who want to build
    the source package locally can already use the same algorithm today;
    that's what dgit is. The whole point of the tag2upload project is to
    remove the requirement that the package uploader install dgit or
    equivalent software locally and build the source package locally. This
    FTP team requirement therefore makes it impossible for tag2upload to
    proceed; any system that would have the required property would fail to accomplish the core goal of the tag2upload project. Therefore, this
    delegate decision is blocking the deployment of tag2upload.

    I am seeing in this discussion a lot of confusion and bafflement on both
    sides over why the other side cares about the things that they do and
    considers essential the things that they consider essential. This is
    sometimes how it works in life; people care about different things and
    come to different conclusions and find each other's arguments
    unpersuasive.

    There are other points of disagreement that could potentially be hashed
    out, but this point of disagreement is fundamental and, so far as I can
    tell from the discussion (both now and in 2019), irreconcilable.

    Therefore, we have a situation where a delegate decision is blocking
    deployment of something that a different team wants to deploy in Debian. Assuming no one changes their positions, the clear options the tag2upload developers have under the project constitution are to abandon the work or
    to appeal the delegate decision to the project via a GR.

    Does anyone think I've missed anything?

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Joerg Jaspert on Wed Jun 19 02:00:01 2024
    Joerg Jaspert <[email protected]> writes:
    On 17265 March 1977, Russ Allbery wrote:

    Does anyone think I've missed anything?

    Yah. About the whole first half of my mail.

    I don't understand. Are you saying that if dak checks the signature on
    the tag, you no longer need to check an uploader signature on the contents
    of the source package and are okay with the tag2upload signature on the
    final source package?

    I thought these were two separate things, but yes, if you're fine with dak checking the signature on the Git tag without having an uploader signature
    on the final source package, that means this difference may not be irreconcilable (and also that I didn't understand the second part of your message, but that's a separate issue).

    The API details need to be defined, of course, but the basic idea is
    there and sounds good, and I believe one can get t2u and dak
    interoperate with that with about all of the client side requirements
    the t2u people want to have stay intact.

    This would be great news, certainly.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joerg Jaspert@21:1/5 to Russ Allbery on Wed Jun 19 01:30:01 2024
    On 17265 March 1977, Russ Allbery wrote:

    Does anyone think I've missed anything?

    Yah. About the whole first half of my mail.

    While I still answer to some of the rest of your mail, this api
    thing
    sounds like a good way forward to me.

    And all around that.

    The API details need to be defined, of course, but the basic idea is
    there and sounds good, and I believe one can get t2u and dak
    interoperate with that with about all of the client side requirements
    the t2u people want to have stay intact.

    --
    bye, Joerg

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to [email protected] on Wed Jun 19 03:30:01 2024
    I'm adding Joerg as an additional cc to this part of the thread to
    hopefully make it easier to find this discussion without wading through everything else.

    Joerg's message helped me realize that I had completely misunderstood this message the first time I read it. I had thought that this part of the
    thread was only about the problem of the authentication check on the
    upload -- and had it marked to come back to if we could resolve the other issues -- but I completely missed that you were also talking about the
    source package verification here. I'm very sorry to have missed that!

    Ansgar 🙀 <[email protected]> writes:
    On Mon, 2024-06-17 at 14:59 +0100, Jessica Clarke wrote:

    Would an API for tag2upload to use satisfy that concern? It feeds in a
    source package name and key fingerprint (or the signature, or
    whatever’s deemed useful), dak replies whether it’s valid for
    uploading. Then you don’t need to trust tag2upload’s authorisation
    checks beyond that it adheres to what dak says each time.

    Hmm, a signed manifest solves that problem and also adds some integrity verification and possibility for third parties to check the signature
    itself as well.

    An API that gets the signed data (signed tag) with some metadata (which package, version, target suite, maybe some other bits of d/control,
    would have to think; parts of that might also be in the tag) would
    still allow having a single system make the decisions.

    My understanding is that the tag that triggers tag2upload currently has
    the following information in the directly signed Git tag object, so you
    don't need the rest of the Git tree to verify this:

    * The name and email of the uploader (in the Git Tagger field)
    * A statement that they intend to upload to Debian
    * The name of the source package
    * The version of the source package

    It doesn't currently have target suite (tag2upload gets that from the debian/changelog file), but I doubt that would be a problem to add to the
    tag directly.

    A downside is that integrity verification and third parties (possibly) verifying the data falls flat. For me integrity verification would be somewhat nice and third parties a bit less interesting (given they can
    get the tag, compare files and possibly redo what tag2upload does if
    they also care about .dsc and stuff).

    Integrity verification of the source package construction by dak was the
    part of this that I was the most worried about, because that's the place
    where it had looked like the tag2upload goals couldn't meet the FTP team's requirements. If that's something that can be relaxed, that's huge for
    being able to find an implementation that hopefully makes everyone happy.

    We are not very good at doing integrated services though. (Please no RPC
    via SSH forced commands...)

    It would really be nice if we had a project infrastructure API mechanism
    that everyone agreed was fine and that we could use for new projects.

    That said, I think we can dodge the need for that initially, with the note
    that it would be nice to have it in the future. The ideal protocol would
    look something like:

    1. tag2upload receives the upload request.
    2. tag2upload sends the uploader-signed tag and metadata to dak for
    approval.
    3. After receiving approval, tag2upload builds the source package.
    4. tag2upload uploads everything to dak, including the uploader-signed tag
    object as a separate file listed in the *.changes file that it signs
    with its own key. You presumably want the tag object here too, just to
    be sure nothing weird happened in the middle of this process and so
    that you don't have to keep local state for an upload in progress.

    But I think the following protocol has all the same properties from your perspective, with the cost that there is a small risk that tag2upload may
    do pointless work and the dgit-repos server may receive a push of
    something that then failed to upload:

    1. tag2upload receives the upload request.
    2. tag2upload makes a guess at the authorization decision that dak will
    eventually make, based on a (possibly partial or out of date) set of
    the rules that dak has.
    3. If it thinks the upload will be accepted, tag2upload builds the source
    package and also preserves the signed tag object with its metadata.
    4. tag2upload uploads both the source package and the uploader-signed tag
    object to dak, including the tag object in the *.changes file that it
    signs with its own key.
    5. dak then verifies the signed tag object and metadata and rejects the
    upload if it doesn't pass its authentication and authorization checks.

    This would avoid the need for a new RPC mechanism for now and I think
    results in exactly the same behavior as far as the archive itself is
    concerned.

    With regard to integrity verification, it's probably not fully clear
    what one exactly wants there. Joerg's idea to have tag2upload run by ftp-master is related to that: if it was part of the archive, all
    integrity promises still come from within the archive. (I don't really
    want to run the service though; outsourcing is probably better.)

    I also think outsourcing is better.

    Arguably we do trust some external services somewhat already (like
    buildds for binary packages).

    Yes, I do think roughly the right way to think about tag2upload is that
    it's a source package buildd, where the "source of the source package" is
    a signed Git tree.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Russ Allbery on Wed Jun 19 08:00:01 2024
    Hi,

    On Tue, 2024-06-18 at 18:25 -0700, Russ Allbery wrote:
    Ansgar 🙀 <[email protected]> writes:

    A downside is that integrity verification and third parties (possibly) verifying the data falls flat. For me integrity verification would be somewhat nice and third parties a bit less interesting (given they can
    get the tag, compare files and possibly redo what tag2upload does if
    they also care about .dsc and stuff).

    Integrity verification of the source package construction by dak was the
    part of this that I was the most worried about, because that's the place where it had looked like the tag2upload goals couldn't meet the FTP team's requirements.  If that's something that can be relaxed, that's huge for being able to find an implementation that hopefully makes everyone happy.

    I don't think it is hard to include that as well. Just include a hash
    similar to [1] in the signed tag data; it might need minor changes if
    one cares about file permissions[2].

    That is a strong hash, easy to implement and if people like entering
    upstream commit ids manually into Git tags then they can also run the equivalent command manually. They already have to manually look up
    matching upstream commits and tags[3] and very carefully write a
    specially formatted tag. Most people will likely use git-debpush which
    could most easily do this.

    It is also easy to change to a different scheme, already supports Git
    LFS[4], ... It doesn't require dak to reproduce whatever steps
    tag2upload runs to generate the .dsc from that or source packages to be reproducible; the uploader only needs to know which files end up in the
    source package, something I would expect an uploader to know.

    (I hope tag2upload supports Git LFS too. We should allow use of it
    where appropriate. But as `git clone` does the right thing for Git LFS
    it should be easy to enable if not already done.)

    Ansgar

    [1]: https://pkg.go.dev/golang.org/x/mod/sumdb/dirhash#Hash1
    [2]: For example just include output from an additional `find . -type
    f -printf ... | sort` or similar in the hash with the output including
    all relevant data.
    [3]: Even though an upstream tag doesn't seem technically required,
    its presence is enforced by tag2upload for some reason I don't know.
    Maybe that could be omitted to make the interface easier to use
    manually.
    [4]: Often even without downloading the file as long as the same hash
    as Git LFS uses is used (currently SHA-256).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Russ Allbery on Wed Jun 19 08:30:01 2024
    Hi Russ,

    On Tue, 2024-06-18 at 15:39 -0700, Russ Allbery wrote:
    My understanding of the FTP team position is that the uploader must
    generate and sign either the final source package, or the files that constitute the unpacked view of the final source package, or a
    trivial variation thereof, and include that signature in the upload.
    [...]
    My understanding of the tag2upload developer position is that this requirement prohibits the goal of tag2upload.  People who want to
    build the source package locally can already use the same algorithm
    today; that's what dgit is.  The whole point of the tag2upload
    project is to remove the requirement that the package uploader
    install dgit or equivalent software locally and build the source
    package locally. This FTP team requirement therefore makes it
    impossible for tag2upload to proceed; any system that would have the
    required property would fail to accomplish the core goal of the
    tag2upload project.  Therefore, this delegate decision is blocking
    the deployment of tag2upload.

    The code the tag2upload developers wrote is perfectly able to do that: git-debpush, the tag2upload client by the tag2upload developers,
    doesn't require dgit nor building the source package, and documented in
    the initial mail about the GR to be used by people. It already looks at
    patched and unpatched source trees (and checks that patches applies)
    and compares them with the tree in Git.

    It could easily compute an integrity hash as well.

    Or is git-debpush itself incompatible with the goals of tag2upload?
    What would a client-side compatible with the goals then look like?

    Will such a client be available before the GR?

    I hope the tag2upload developers requirements will not make it
    impossible to proceed and they will not continue to block the
    deployment of tag2upload.

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to All on Wed Jun 19 10:10:01 2024
    Hi,

    On Wed, 2024-06-19 at 08:26 +0200, Ansgar 🙀 wrote:
    My understanding of the tag2upload developer position is that this requirement prohibits the goal of tag2upload.  People who want to
    build the source package locally can already use the same algorithm
    today; that's what dgit is.  The whole point of the tag2upload
    project is to remove the requirement that the package uploader
    install dgit or equivalent software locally and build the source
    package locally. This FTP team requirement therefore makes it
    impossible for tag2upload to proceed; any system that would have the required property would fail to accomplish the core goal of the
    tag2upload project.  Therefore, this delegate decision is blocking
    the deployment of tag2upload.

    The code the tag2upload developers wrote is perfectly able to do that: git-debpush, the tag2upload client by the tag2upload developers,
    doesn't require dgit nor building the source package, and documented in
    the initial mail about the GR to be used by people. It already looks at patched and unpatched source trees (and checks that patches applies)
    and compares them with the tree in Git.

    It could easily compute an integrity hash as well.

    Or is git-debpush itself incompatible with the goals of tag2upload?
    What would a client-side compatible with the goals then look like?

    Will such a client be available before the GR?

    I hope the tag2upload developers requirements will not make it
    impossible to proceed and they will not continue to block the
    deployment of tag2upload.

    And thinking about this a bit more: we have an existing resolution
    mechanism for this blocker. The technical committee could overrule the git-debpush maintainers to include such a hash.

    This would unblock deployment of tag2upload for Debian, including the
    continued use of integrity verification by the archive (in its current
    scope limited to mostly dak).

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon Richter@21:1/5 to Aigars Mahinovs on Wed Jun 19 10:00:01 2024
    Hi,

    On 6/19/24 00:57, Aigars Mahinovs wrote:

    This is *exactly* the same situation as we already have with
    source-only uploads. There is a
    state of the software upload that the developer signs off on and then
    there are further technical
    build artifacts that the developer does *not* sign - they are signed
    by the technical systems that
    generated those artifacts. And those systems are centrally maintained
    for scalability, convenience
    and security.

    I agree with that, but it effectively changes what we consider a "source package", and that comes with all the baggage of archival:

    - we need to store the actual contents in the archive, not just a
    reference to an online service, or the online service becomes part of
    the archive.
    - we need to distribute that on CDs and mirrors (which both have size constraints)
    - we need to keep and archive also the tools required for processing
    - we still need to be able to comply with removal requests
    - we need to be able to deal with "epochs" in package development

    For example, the "clinfo" packages that were shipped in jessie and in
    stretch and following are completely unrelated, they just have similar
    enough output that one could be used as a replacement for the other.

    If those had been git-maintained packages, how would those have been
    archived? Is the dgit package namespace separate from Debian source
    package names?

    Building the conversion service is the easy part of the problem.

    Simon

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon McVittie@21:1/5 to All on Wed Jun 19 10:50:01 2024
    On Wed, 19 Jun 2024 at 07:54:45 +0200, Ansgar 🙀 wrote:
    Just include a hash
    similar to [1] in the signed tag data

    Prior art: this is conceptually the same as git-evtag from
    src:git-evtag. You can see real-world use of git-evtag in the upstream
    tags (e.g. v0.9.0) of src:bubblewrap.

    it might need minor changes if
    one cares about file permissions[2].

    If this is something that will be used as a security mechanism, then
    I think it probably needs to represent symbolic links as well. I think git-evtag does (it checksums all git "blobs" and I believe that includes symlinks), but it seems sumdb/dirhash behaves as though symlinks didn't
    exist.

    git specifically *doesn't* care about file permissions, beyond a 1-bit representation of whether it's executable or not, so anything like
    tag2upload that is based on git-as-source will have to cope with mtimes
    and detailed permissions possibly differing between what was obtained
    from git and what's in the .dsc. When people have talked about code being "treesame" elsewhere in this thread, I believe they mean "all facts that
    git tracks in its tree are the same, facts that git does not track might
    not be".

    smcv

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Aigars Mahinovs@21:1/5 to Simon Richter on Wed Jun 19 10:40:01 2024
    On Wed, 19 Jun 2024 at 09:51, Simon Richter <[email protected]> wrote:
    I agree with that, but it effectively changes what we consider a "source package", and that comes with all the baggage of archival:

    - we need to store the actual contents in the archive, not just a
    reference to an online service, or the online service becomes part of
    the archive.

    Effectively the dgit.debian.org becomes the archive or the snapshot service
    of the git view of the Debian source packages.

    People interacting with Debian on the Debian source package level can keep doing that exactly as before. But to access a deeper, git level of source you would, naturally, have to use different tools and access a different service.

    - we need to distribute that on CDs and mirrors (which both have size constraints)

    Do we? Already Debian source packages are in reality a separate set of DVDs
    (we don't even provide source on CDs anymore)
    and only a subset of mirrors. While having an option to have a dgit server mirrored might be nice, it does not really have to be inside the current mirror or archive structure. And it does not have to be a blocker.

    - we need to keep and archive also the tools required for processing

    Which should be trivial as long as they are packaged.

    - we still need to be able to comply with removal requests

    Same as, for example, Salsa git server?

    - we need to be able to deal with "epochs" in package development

    For example, the "clinfo" packages that were shipped in jessie and in
    stretch and following are completely unrelated, they just have similar
    enough output that one could be used as a replacement for the other.

    If those had been git-maintained packages, how would those have been archived? Is the dgit package namespace separate from Debian source
    package names?

    Well, there are many ways to do that. For example have a merge commit
    that merges in
    the new upstream into the old upstream branch where the merge commit
    itself deletes
    all old files and replaces them with the new files. The Debian changelog would note the changed upstream and move on as normal.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Simon McVittie on Wed Jun 19 11:00:01 2024
    Hi,

    On Wed, 2024-06-19 at 09:47 +0100, Simon McVittie wrote:
    On Wed, 19 Jun 2024 at 07:54:45 +0200, Ansgar 🙀 wrote:
    Just include a hash
    similar to [1] in the signed tag data

    Prior art: this is conceptually the same as git-evtag from
    src:git-evtag. You can see real-world use of git-evtag in the upstream
    tags (e.g. v0.9.0) of src:bubblewrap.

    That requires the Git objects to be available? These are no longer
    available once tag2upload processed the repository.

    So I think the Golang example is a better real-world use of something
    like this.

    it might need minor changes if
    one cares about file permissions[2].

    If this is something that will be used as a security mechanism, then
    I think it probably needs to represent symbolic links as well. I think git-evtag does (it checksums all git "blobs" and I believe that includes symlinks), but it seems sumdb/dirhash behaves as though symlinks didn't exist.

    The `find . -printf ...` part can include that. There is %y for the
    file type and %l for the target of symbolic links. (This is the reason
    I suggested that modification.)

    git specifically *doesn't* care about file permissions, beyond a 1-bit representation of whether it's executable or not, so anything like
    tag2upload that is based on git-as-source will have to cope with mtimes
    and detailed permissions possibly differing between what was obtained
    from git and what's in the .dsc. When people have talked about code being "treesame" elsewhere in this thread, I believe they mean "all facts that
    git tracks in its tree are the same, facts that git does not track might
    not be".

    As I said: just don't include what we don't care about in the hash. We
    might not want to care about timestamps or permissions beyond
    executable or not. That's fine.

    (AFAIU Golang doesn't care about file permissions at all, so it's fine
    for them to not include those at all.)

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Wed Jun 19 11:30:01 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------29EgeNjD7Fza0MeWuD0kXq6O
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMTkuMDYuMjQgMTA6NDcsIFNpbW9uIE1jVml0dGllIHdyb3RlOg0KPiBJZiB0aGlzIGlz IHNvbWV0aGluZyB0aGF0IHdpbGwgYmUgdXNlZCBhcyBhIHNlY3VyaXR5IG1lY2hhbmlzbSwg dGhlbg0KPiBJIHRoaW5rIGl0IHByb2JhYmx5IG5lZWRzIHRvIHJlcHJlc2VudCBzeW1ib2xp YyBsaW5rcyBhcyB3ZWxsLg0KDQo/IGdpdCBjYW4gaGFuZGxlIHN5bWxpbmtzIGp1c3QgZmlu ZS4NCg0KLS0gDQotLSByZWdhcmRzDQotLSANCi0tIE1hdHRoaWFzIFVybGljaHMNCg0K

    --------------29EgeNjD7Fza0MeWuD0kXq6O--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZym6kFAwAAAAAACgkQcs+OXiW0wpO1 cRAAyYwl72oIV4ooPwJF3XfBn+fGwTJhKNlc3G+iMe7hkAZ9pHT84ygXlZiRB2XjN1LKJvVsrSdN I2Vj6kx2qXYzIVy5b+97ezZ9mEnjs1h19if75kQ4BrA6XAEWp0G2kOfc6ioNrVnS6ExEaVQRpRML v57oL+HYIrBLuveOflg/fw21i3ywD+iqbmZflkliUJMMcom+TIej8o8oQqrDRVkGYkE6wIqanQzM Hv+q4EfAW9ir8bStyId3/WVKRUj+GQc95ZJ62SbtZ5mOGRAeHykBdZr60iKImpTd3BaNtbROMtyT 1QG8rN8mFhCcPFm5gpHBe1WkltvAZnDCL7yNKIfaVf+g8VkWbYc0qTBNXGJPY6eCEVKSRbQ7MTjC h4CT1zmypvI14+54KUGielo+3g/W/3Sx+wBG06VRFiDTs4lVnD/upGup4TAn3jRheXyWXSZjV/xa s+OYKILZVXV51hGHn7D7EjbnjfcUlp4M9TLqH400pqCbFOSjr9zmZdh7PZPVrvcAQI7as8KVVfjN VTTSypbw5vRLpB1pwbLc8FzLttGaCcPGQU5PBXmeum4gc3B2GTEGo9fc+pQxR6h4pJBXeShI320Y PU5nHDcfxrW2q3gN+1V/0kPOaG5pmFnStF1FhfdlTRnqb+uwC7szGR2o2vLP0TSCrAeznnJ6S89x AjQ=
    =RTvq
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Paul R. Tagliamonte on Wed Jun 19 12:00:01 2024
    Paul R. Tagliamonte writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    I wonder if we have a good idea of what the project believes to be the case between #1 and #2:

    1) Is the source of a package the debian source distribution?
    2) Is the source of a package the VCS where the source is held?

    IMO (and I realise not everyone is going to agree with me):

    Official doctrine in Debian is 1.
    For most packages in Debian, the truth is 2.

    This is pages 3 and 4 of the slides from my 2023 talk.

    https://wiki.debian.org/DebianEvents/gb/2023/MiniDebConfCambridge/Jackson?action=AttachFile&do=get&target=slides.pdf

    Or, to extend it once more in the context of this discussion --
    should the source be built by a buildd from the "true" source? Why
    do we bother having a maintainer sign this intermediate artifact,
    like we used to with debs?

    Even more extremely -- should we bother with dscs anymore if they're
    just an intermediate artifact?

    Most extremely -- do we need a new dpkg source format? Should
    buildds build off git tags? Do we need to overhaul how we treat
    sources?

    Those are all fine ideas, but don't think they are deployable in the
    huge Debian ecosystem. tag2upload is the part of my programme to fix
    this in a backward compatible way, without breaking anyone's workflow.

    Galaxy brain extremely -- what does GPL compliance mean if the dsc is not the true source? (ok this one isn't serious, there's no doubt it's corresponding source :) )

    Regardless of legal considerations, I consider the current usual
    situation intolerable for precisely these reasons: the actual source
    code is only on salsa and is not useable in an automated way.

    Sometimes the actual source code isn't on Debian-owned systems at all:
    for example, some of the language team monorepo workflows have this
    property, particularly those using a tarballs-based upstream
    language-specific repository, rather than the git repos those packages
    are actually maintained in by their respective upstreams.

    IOW, IMO language-specific package repositories that publish tarballs
    aren't publishing source code, either. Thosae tarballs are
    intermediate build products just like our .dsc tarballs-and-patches.

    Even if the rest of the world is terrible and don't mind mystery meat
    software sausage, we in Debian should be doing better than that.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Russ Allbery on Wed Jun 19 17:10:02 2024
    Russ Allbery <[email protected]> writes:
    Ansgar 🙀 <[email protected]> writes:

    It doesn't require dak to reproduce whatever steps tag2upload runs to
    generate the .dsc from that or source packages to be reproducible; the
    uploader only needs to know which files end up in the source package,
    something I would expect an uploader to know.

    No, the uploader doesn't know this. Some of the files (the ones in debian/patches) are synthesized from Git commits and do not exist at all
    in the checkout of the Git tree, which will often be in patches-applied
    form.

    I should have clarified: this is not *always* true, of course. There are simple cases such as packages with no patches to the upstream source, and
    there are maintainers who like workflows where they manually maintain the patches in debian/patches and thus have them on hand. But it is true in
    the general case, including in several popular Git workflows and a lot of interestingly complex packaging team standards that are supported
    correctly by the tag2upload design today.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to [email protected] on Wed Jun 19 16:50:01 2024
    Ansgar 🙀 <[email protected]> writes:
    On Tue, 2024-06-18 at 18:25 -0700, Russ Allbery wrote:

    Integrity verification of the source package construction by dak was
    the part of this that I was the most worried about, because that's the
    place where it had looked like the tag2upload goals couldn't meet the
    FTP team's requirements.  If that's something that can be relaxed,
    that's huge for being able to find an implementation that hopefully
    makes everyone happy.

    I don't think it is hard to include that as well. Just include a hash
    similar to [1] in the signed tag data; it might need minor changes if
    one cares about file permissions[2].

    I'm not sure I understand: what directory tree do you want hashed?

    The part that's a blocker for tag2upload goals is any requirement for a
    hash over the final contents of the source package, because the final
    contents of the source package aren't known when the Git tag is made. So
    if the directory over which you would like a hash is the directory that
    would end up in debian.tar.[xg]z, this design still has that same problem.

    If it's a hash over the HEAD of the Git tree, which will not match the
    final source package contents in the general case, I'm not sure I
    understand the purpose. If you want the HEAD, tag2upload could just give
    you a Git bundle of whatever depth you would like and then you'd have all
    the actual data. But I'm not sure that this gives you what you want.

    It doesn't require dak to reproduce whatever steps tag2upload runs to generate the .dsc from that or source packages to be reproducible; the uploader only needs to know which files end up in the source package, something I would expect an uploader to know.

    No, the uploader doesn't know this. Some of the files (the ones in debian/patches) are synthesized from Git commits and do not exist at all
    in the checkout of the Git tree, which will often be in patches-applied
    form.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon Richter@21:1/5 to Aigars Mahinovs on Wed Jun 19 16:50:01 2024
    Hi,

    On 6/19/24 17:33, Aigars Mahinovs wrote:

    - we need to store the actual contents in the archive, not just a
    reference to an online service, or the online service becomes part of
    the archive.

    Effectively the dgit.debian.org becomes the archive or the snapshot service of the git view of the Debian source packages.

    Exactly: this is not an "editorial change", but a major revision of how
    Debian works, and I would at least expect Policy to be updated accordingly.

    People interacting with Debian on the Debian source package level can keep doing that exactly as before. But to access a deeper, git level of source you would, naturally, have to use different tools and access a different service.

    Is there a requirement for maintainers to accept patches submitted via
    the BTS that are based on the last published source package, or can they
    insist on pull requests made through a website that requires the users
    to download a few megabytes of JavaScript? :>

    - we need to distribute that on CDs and mirrors (which both have size
    constraints)

    Do we? Already Debian source packages are in reality a separate set of DVDs (we don't even provide source on CDs anymore)
    and only a subset of mirrors. While having an option to have a dgit server mirrored might be nice, it does not really have to be inside the current mirror
    or archive structure. And it does not have to be a blocker.

    If dgit becomes the archive, not being able to mirror it is a major
    regression.

    - we need to keep and archive also the tools required for processing

    Which should be trivial as long as they are packaged.

    Do we impose any compatibility requirements? I.e. can we expect that
    dgit tools in bookworm will be able to check out any package in trixie?
    Do we expect trixie+1 to be able to reproduce packages released in
    bookworm, or can we drop compatibility code at some point?

    For example, the "clinfo" packages that were shipped in jessie and in
    stretch and following are completely unrelated, they just have similar
    enough output that one could be used as a replacement for the other.

    If those had been git-maintained packages, how would those have been
    archived? Is the dgit package namespace separate from Debian source
    package names?

    Well, there are many ways to do that. For example have a merge commit
    that merges in
    the new upstream into the old upstream branch where the merge commit
    itself deletes
    all old files and replaces them with the new files. The Debian changelog would
    note the changed upstream and move on as normal.

    This gets really ugly really fast though: the current package would
    still ship the old history for no particular reason, and this schema
    breaks when one upstream repo uses sha1 and the other uses sha256.

    I still think there are fundamental design flaws with the data
    representation that break several use cases, yet there is an expectation
    that this will become universally usable.

    I think this incremental change will increment us towards some local
    optimum that we will a hard time getting out of.

    Simon

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Russ Allbery on Wed Jun 19 17:10:02 2024
    Hi,


    On Wed, 2024-06-19 at 07:45 -0700, Russ Allbery wrote:
    Ansgar 🙀 <[email protected]> writes:
    It doesn't require dak to reproduce whatever steps tag2upload runs to generate the .dsc from that or source packages to be reproducible; the uploader only needs to know which files end up in the source package, something I would expect an uploader to know.

    No, the uploader doesn't know this.  Some of the files (the ones in debian/patches) are synthesized from Git commits and do not exist at all
    in the checkout of the Git tree, which will often be in patches-applied
    form.

    Hmm, I did not think of people effectively forking the upstream project
    instead of doing only packaging. People could just move to native
    packages if they do that: that also works for changes to binary files,
    no longer requires synthesizing patches and thus brings the Debian
    source package closer to the Git state. This is also easier to compare
    to maintainers' repository.

    (I'm a bit biased to only doing packaging, ideally unrelated to the
    upstream source code as it only describes how to use said code.)

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to [email protected] on Wed Jun 19 17:50:01 2024
    Ansgar 🙀 <[email protected]> writes:
    On Wed, 2024-06-19 at 07:45 -0700, Russ Allbery wrote:

    No, the uploader doesn't know this.  Some of the files (the ones in
    debian/patches) are synthesized from Git commits and do not exist at
    all in the checkout of the Git tree, which will often be in
    patches-applied form.

    Hmm, I did not think of people effectively forking the upstream project instead of doing only packaging.

    This is a very common case in Debian, though. A lot of packages carry
    upstream patches for a wide variety of reasons.

    It's rather nice to use a proper VCS like Git to maintain those changes
    instead of trying to use quilt as a VCS. This was true even with 1.0
    source packages. It was (and I suspect still is) common to use a proper
    VCS to manage all changes to the package, both in the Debian portion and
    in the upstream portion, and then let the source package build system
    serialize that into a diff. Nowadays the way to do that is with 3.0
    (quilt) with the single-debian-patch option, which is what I used before switching to git-debrebase.

    One of the critical things that dgit, and tag2upload, provide is a nice translation layer from a normal, ordinary Git representation to a normal, ordinary 3.0 (quilt) package without requiring the package maintainer do
    things like commit patch files to a VCS, something that a lot of us find
    weird and awkward and annoying.

    This was why I wrote up that long description of the git-debrebase
    workflow. I suspect that some people haven't seen it before and didn't
    realize that it's already possible in Debian today to use Git for Debian packaging the way you would use it for any other project, without having
    to do the branch switching of gbp pq (which is quite nice as far as it
    goes but still requires doing special things to edit upstream code), and
    still get nice Debian source packages rather than one giant unreadable
    blob of a diff.

    But even if one is happy with one giant unreadable blob of a diff, which
    is what I suspect a lot of maintainers settle for, that diff isn't present
    in the checked out tree and therefore isn't around to be hashed. If one
    tries to generate it with whatever random tools you have sitting around,
    one quickly runs into the problem that there are a lot of ways to generate
    a diff between two trees that represent the same semantic change but don't
    hash to the same value. This is the kind of problem that's solved in all
    that dgit code that tag2upload would also use.

    People could just move to native packages if they do that: that also
    works for changes to binary files, no longer requires synthesizing
    patches and thus brings the Debian source package closer to the Git
    state. This is also easier to compare to maintainers' repository.

    Sure, we could tell people to use 3.0 (native) for everything with Debian changes to the upstream source and stop trying to use 3.0 (quilt). You're
    not the first person to make that suggestion, and it has some real merit
    for simplicity of representation of source packages. But that means that
    we now can't share the .orig.tar.gz file between Debian package releases,
    which has implications for the size of the archive. It breaks tools to
    extract the patches from a 3.0 (quilt) package. And, based on previous debian-devel discussions of exactly this, people have a lot of strong
    opinions about not using 3.0 (native) when there is an upstream.

    tag2upload is intended to work with what package maintainers are doing
    today as much as reasonably possible, not to force them to use different workflows and source package representations.

    (I'm a bit biased to only doing packaging, ideally unrelated to the
    upstream source code as it only describes how to use said code.)

    This is a lovely situation when you can stay in it, but I have had to
    introduce Debian patches even for code for which I am upstream for a wide variety of reasons. I don't think it's realistically possible to avoid
    this forever for a lot of packages.

    Personally, I think the best way to think of Debian packaging is always to think of it as a fork. You fork upstream to add the packaging rules and
    build system, and you only selectively rebase your fork on newer upstreams
    when you think they're ready for Debian. Sometimes it's a trivial fork
    that only contains new files, and sometimes it's a more complicated fork
    with other changes and you try to reconverge with upstream over time, but
    it's always some sort of a fork.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Simon Richter on Wed Jun 19 18:50:01 2024
    Simon Richter writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    For example, the "clinfo" packages that were shipped in jessie and in
    stretch and following are completely unrelated, they just have similar
    enough output that one could be used as a replacement for the other.

    I think we wouldn't want the histories to be somehow intermingle.
    The suite branches for sid and whatever testing is should be archived,
    and a new history started.

    Currently, this is rather manual on the dgit-repos server. It could
    be automated, and probably should be.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Rakhmatullin@21:1/5 to Russ Allbery on Wed Jun 19 19:30:02 2024
    On Wed, Jun 19, 2024 at 08:39:35AM -0700, Russ Allbery wrote:
    People could just move to native packages if they do that: that also
    works for changes to binary files, no longer requires synthesizing
    patches and thus brings the Debian source package closer to the Git
    state. This is also easier to compare to maintainers' repository.

    Sure, we could tell people to use 3.0 (native) for everything with Debian changes to the upstream source and stop trying to use 3.0 (quilt). You're not the first person to make that suggestion, and it has some real merit
    for simplicity of representation of source packages. But that means that
    we now can't share the .orig.tar.gz file between Debian package releases, which has implications for the size of the archive.

    It was actually suggested on #d-d on Apr 16 that having orig sources for
    all uploads is maybe not a problem for the archive at all. Though there
    the context was building separate orig.tar for all packages, not switching
    to 3.0 (native), and the problem it was going to solve is pristine-tar.


    --
    WBR, wRAR

    -----BEGIN PGP SIGNATURE-----

    iQJhBAABCgBLFiEEolIP6gqGcKZh3YxVM2L3AxpJkuEFAmZzE/ItFIAAAAAAFQAP cGthLWFkZHJlc3NAZ251cGcub3Jnd3JhckBkZWJpYW4ub3JnAAoJEDNi9wMaSZLh cFoP+wdwAJGpX6c0BmCGJiIuMvt5p+57NHZ3kj8Mft2mfkyeavRqKuc8xPlJLkP2 7D/fXrXg/bxUgqFqa69t+H9sodT9nIwxKVVJEkvJJunPsVXbn/x8iVOrCSoX4Hz1 CRecWb8WWiKQrNnq0ahdar5vuayd0Z5EYo3n9d4PkvSy6EO5R+7hYDDm4uK+2nzQ pcZ/KYNCfBEir8UxCIznwHWgwDWSAVmrXzwkgn5fvv7Qsrot1TOZ3m9Z7Yl9UqEp 9mwatFEClSpTVUgORgOQVxh1qLTt81fgOUZoLDH8bX7M9hy+dLDYZ/TUfmB6R2QP AJ/NlWcq5j5pf8WighSgFvP1QUpn/P6uAepcaCFutJk83Kg3jABUOsYP2X8kQwBK uISkO6jl51kkOZoozhrwyUVkgHsz1I37y8D9KF/+3r5kMtU3hpVJutseRh22q3Ke DIITl+a6a4wfd0Xl0lVjyWvl7FQPfXFmamIoQuWjwoJVYzCnqXa6wo7DYTeAQhXI mjRPimuP1zjqsbh3jyPZIUtCt1xbE5ivl8EL1QA9Sx41s60inHiJ9TcmaBS96Pw1 GBMJl5QKkRURr/z26F6wsoDEgtjTp8uvU7K9bvtJIBSDn7dLl3JoQRhcRE1CJFpx GBi0oWM/OsQ6/k1N4wyk6+L9MhWRRG7kDr8zQadcg+P2TZgc
    =NHlQ
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Wed Jun 19 19:30:01 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------0hL6gB3B7MCQyuZHWAaE4le0
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMTkuMDYuMjQgMTY6NDUsIFNpbW9uIFJpY2h0ZXIgd3JvdGU6DQo+IElmIGRnaXQgYmVj b21lcyB0aGUgYXJjaGl2ZSwgbm90IGJlaW5nIGFibGUgdG8gbWlycm9yIGl0IGlzIGEgbWFq b3IgDQo+IHJlZ3Jlc3Npb24uIA0KDQpJdCdzIG5vdCBxdWl0ZSBhcyB0cml2aWFsIGFzIEkn ZCBsaWtlIHRvIHBhY2sgZ2l0IGFyY2hpdmVzIChzaGFsbG93IG9yIA0Kbm90KSBzbyB0aGF0 IHRoZXkgY2FuIGJlIG1pcnJvcmVkIGFuZCBtb3N0bHktc2VhbWxlc3NseSB1bnBhY2tlZCBh dCB0aGUgDQpkZXN0aW5hdGlvbiwgYnV0IGl0J3MgcG9zc2libGUuIFlvdSBjYW4gZXZlbiBk byBpdCBpbmNyZW1lbnRhbGx5Lg0KDQpTZWUgIm1hbiBnaXQtcGFjay1vYmplY3RzIiBmb3Ig dGhlIGdyaXR0eSBsb3ctbGV2ZWwgZGV0YWlscy4NCg0KSSdtIG5vdCBhd2FyZSBvZiBhIGhp Z2gtbGV2ZWwgd3JhcHBlciBmb3IgIm9mZmxpbmUiIGdpdCByZXBvc2l0b3J5IA0KbWlycm9y aW5nLCBtdWNoIGxlc3MgZG9pbmcgaXQgaW5jcmVtZW50YWxseSwgYnV0IEkgZG9uJ3Qgc2Vl IGFueSANCmZ1bmRhbWVudGFsIHJlYXNvbiB3aHkgaXQgc2hvdWxkbid0IGJlIHBvc3NpYmxl Lg0KDQotLSANCi0tIHJlZ2FyZHMNCi0tIA0KLS0gTWF0dGhpYXMgVXJsaWNocw0KDQo=

    --------------0hL6gB3B7MCQyuZHWAaE4le0--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZzEDwFAwAAAAAACgkQcs+OXiW0wpOi 4Q/9FBOwVriHArEIMDMqyUj0NnCkhQh7tuavRMaHzoZP5zhIN34g9qwSuTKClP3hRH2XkIpMiDfU JF6lUhU5KctCMyKnp9w0e0mEWVglUTUy6Fa+DBr/j8VxcxFtRzbis79eWKpg36aqpAAHHa8hdgK8 y/a0aLYI3BqrI7A2m1Tk3RNs0MutOGILGlrUUjxa1DTh6/emsgY+NNwUn5rJ5DhBHvuB4izNTH9k y61uuwSHrYEUmQfYcpYMtEnSLg9JfZp88GaoCwlZrjNZ3SBfxEb/mcIoW/EsyITOLOms4+yNoKU2 Bi9/mWlUUZx20mmXwbiaMC0qMhX1zvsVWl69rV98cq9aRCZrxhjRuoy+QZt3dWbZc1DLRbconfEZ LxIRF2Yt4VNoraHwek3RfGf9Cga5BZ4Ns7lVFN9lbYxn8qFKAeeb9WEh50KkroNWZPpqYzbU5Fp3 A7WvKyomZVg0cr5GAuq9b4fU7FHKlr7Q1ivJJtQEclyZmD2trSI11yHpou9sM6s3LJO67ZesGJJD SlkX4EU1vfZHQC0eZzJqZOndRC1/HgfI66r3WhXFgZaKYBZGNQoK2273Om+CVw564kR9u91HYftO +cYB4LzK8Js85uFwAZKPPa5LmopbKu3Yzpal1GghCDexpW/brAhAO0YCllRgRMebWj0Fsc/zdyBs Dto=
    =MlNx
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Russ Allbery on Wed Jun 19 19:40:01 2024
    Hi,

    On Wed, 2024-06-19 at 08:39 -0700, Russ Allbery wrote:
    Ansgar 🙀 <[email protected]> writes:
    People could just move to native packages if they do that: that also
    works for changes to binary files, no longer requires synthesizing
    patches and thus brings the Debian source package closer to the Git
    state. This is also easier to compare to maintainers' repository.

    Sure, we could tell people to use 3.0 (native) for everything with Debian changes to the upstream source and stop trying to use 3.0 (quilt).  You're not the first person to make that suggestion, and it has some real merit
    for simplicity of representation of source packages.

    Yes, it is both simpler and allows for more integrity guarantees.

    Other ideas like waldi's 3.0 (gitarchive) also go in that direction.

    But that means that
    we now can't share the .orig.tar.gz file between Debian package releases, which has implications for the size of the archive.

    I'm not sure it changes much given we have arch:any binaries and debug
    symbols for all packages these days. Uploads being large is also not a
    problem as tag2upload does not have to be content with a possibly low
    bandwidth end-user connection.

    For repeated downloads one could use Git to get incremental updates and
    use only the integrity information from the archive (if desired).

    I'm interested what other ftp-masters prefer when considering a trade
    off between space and additional integrity guarantees here. I have a
    preference for the integrity side.

    It breaks tools to
    extract the patches from a 3.0 (quilt) package.  And, based on previous debian-devel discussions of exactly this, people have a lot of strong opinions about not using 3.0 (native) when there is an upstream.

    We break some things either way. If people want to extract patches in
    that format, they can still generate them from the Git repository?


    tag2upload is intended to work with what package maintainers are doing
    today as much as reasonably possible, not to force them to use different workflows and source package representations.

    Well, it doesn't change what package maintainers do as the purpose of tag2upload is that package maintainers don't have to think about source
    package representation? So changing those should not affect maintainers
    much?

    It's far more consistent with treating source packages as a build
    artifact to not do complicated transformations if that can be
    avoided...

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to [email protected] on Wed Jun 19 20:20:02 2024
    Ansgar 🙀 <[email protected]> writes:
    On Wed, 2024-06-19 at 08:39 -0700, Russ Allbery wrote:

    Sure, we could tell people to use 3.0 (native) for everything with
    Debian changes to the upstream source and stop trying to use 3.0
    (quilt).  You're not the first person to make that suggestion, and it
    has some real merit for simplicity of representation of source
    packages.

    Yes, it is both simpler and allows for more integrity guarantees.

    Yes, agreed, 3.0 (quilt) is very complicated under the hood.

    The simplicity in 3.0 (native) comes from discarding information
    (specifically what bits come from upstream and what bits were added by the Debian packaging), but if that's information you're fine with discarding,
    it's at least worth thinking through what the implications would be.

    I think the main problem with 3.0 (native) without a canonicalization step
    for maintainer workflows is that it forces patches-applied. This is
    totally fine with *me*, since this is how I want to work on all of my
    packages, but as I recall from past discussions it is very much not fine
    with a lot of maintainers. Some folks really do want to directly maintain
    a stack of patches in debian/patches. This breaks with 3.0 (native)
    because 3.0 (native) turns off all the dpkg mechanisms to apply those
    patches. Now you have to add some goo to debian/rules to apply the
    patches during the build and we're back to the world of dpatch and I don't think any of us want that.

    So, I think this reintroduces the same problem with a different set of
    source packages and transformations: the Git tree doesn't represent the
    format of the buildable source package, and there's no way to easily
    provide dak with the final form of the source package because that has to
    be constructed by applying all of the patches.

    (And in case you're now wondering whether tag2upload can just bifurcate
    here and produce 3.0 (native) for patches-applied and 3.0 (quilt) for patches-unapplied, I don't think that works either. There are yet other
    cases that we haven't talked about. For just one example, I believe one
    large maintainer team uses a combination of some changes in debian/patches
    and some changes committed directly to the upstream code. I personally
    would not do this, but it is supportable and supported and they have their reasons for wanting to do it that way. See dpkg-source --auto-commit.)

    The whole reason why dgit exists is that the checkout of Git HEAD has
    widely a varying relationship to the source package contents depending on
    the maintainer workflow, and forcing it to be in any one form on the maintainer's system breaks workflows that some group of people feel
    strongly about. I'm not sure there's any way to dodge around that
    problem. We either need a relatively complicated source package build
    step, or we have to start telling people that they cannot use the workflow
    that they want to use. I don't have a lot of appetite for the latter.

    Other ideas like waldi's 3.0 (gitarchive) also go in that direction.

    Similarly, I'm not sure a source package based on Git avoids the need for
    a source package build system. There are a ton of ways that maintainers
    store things in Git, and I'm not sure it makes sense to upload all of
    those as-is. The things that break are slightly different, but, for
    instance, some maintainers do not want the upstream source in the same
    branch as their Debian packaging files. You may have to add quite a lot
    of unwanted complexity to 3.0 (gitarchive) to represent those cases. Or reintroduce a source package build step, in which case we're back to where
    we started.

    tag2upload canonicalizes all of this random stuff to 3.0 (quilt) with
    specific predictable properties, which has some real and non-trivial
    benefits for everything downstream that wants to analyze the archive.

    I'm interested what other ftp-masters prefer when considering a trade
    off between space and additional integrity guarantees here. I have a preference for the integrity side.

    I think it's also a trade off in supported workflows. If we start telling people exactly how they have to use Git to work on Debian packages, we can simplify a lot of things, but wow do I ever not want to open that can of
    worms. Every time we open it on debian-devel, it's a giant mess. (Even
    more than this thread!)

    Well, it doesn't change what package maintainers do as the purpose of tag2upload is that package maintainers don't have to think about source package representation? So changing those should not affect maintainers
    much?

    I wish it wouldn't change what package maintainers do, but the only way I
    think that works is to interpose a relatively complex build step between
    the maintainer representation and the archive, which is exactly what we're currently stuck on.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon Richter@21:1/5 to Matthias Urlichs on Wed Jun 19 20:40:02 2024
    Hi,

    On 6/20/24 02:07, Matthias Urlichs wrote:

    If dgit becomes the archive, not being able to mirror it is a major
    regression.

    It's not quite as trivial as I'd like to pack git archives (shallow or
    not) so that they can be mirrored and mostly-seamlessly unpacked at the destination, but it's possible. You can even do it incrementally.

    git-bundle should do that nicely.

    I'd really like to have a shallow bundle of the upstream commit as the
    orig archive, together with a git-debrebase-like workflow where patches
    are commits. The dsc would then refer to the (possibly signed) tag or
    commit by checksum, instead of using a checksum for the bundle, that
    makes it reproducible even if the bundle format changes, and allows
    upstream bundles to be reused as if they were tarballs.

    Such a format would be opinionated about workflow, though. It could
    potentially be made a bit workflow-agnostic by specifying a different
    layout in the dsc (this is something I'd make explicit instead of autodetecting), but the non-rebasing repo layouts cannot be converted to shallow bundles easily, or if they can, the patches are no longer
    separate commits and cannot be matched against upstream commits.

    Simon

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Russ Allbery on Wed Jun 19 21:00:01 2024
    Hi,

    On Wed, 2024-06-19 at 11:18 -0700, Russ Allbery wrote:

    I think the main problem with 3.0 (native) without a canonicalization step for maintainer workflows is that it forces patches-applied.  This is
    totally fine with *me*, since this is how I want to work on all of my packages, but as I recall from past discussions it is very much not fine
    with a lot of maintainers.  Some folks really do want to directly maintain
    a stack of patches in debian/patches.  This breaks with 3.0 (native)
    because 3.0 (native) turns off all the dpkg mechanisms to apply those patches.  Now you have to add some goo to debian/rules to apply the
    patches during the build and we're back to the world of dpatch and I don't think any of us want that.

    You can use 3.0 (native) for patches-applied without duplicating the
    patches in d/patches and still use 3.0 (quilt) for patches-unapplied
    with the patches in d/patches.

    So, I think this reintroduces the same problem with a different set of
    source packages and transformations: the Git tree doesn't represent the format of the buildable source package, and there's no way to easily
    provide dak with the final form of the source package because that has to
    be constructed by applying all of the patches.

    (And in case you're now wondering whether tag2upload can just bifurcate
    here and produce 3.0 (native) for patches-applied and 3.0 (quilt) for patches-unapplied, I don't think that works either.  There are yet other cases that we haven't talked about.  For just one example, I believe one large maintainer team uses a combination of some changes in debian/patches and some changes committed directly to the upstream code.  I personally would not do this, but it is supportable and supported and they have their reasons for wanting to do it that way.  See dpkg-source --auto-commit.)

    Then those packages can't use tag2upload as is. That doesn't seem to be
    a critical problem as tag2upload doesn't support all cases anyway.


    tag2upload canonicalizes all of this random stuff to 3.0 (quilt) with specific predictable properties, which has some real and non-trivial
    benefits for everything downstream that wants to analyze the archive.

    Some of this random stuff, not all of it.

    I think it's also a trade off in supported workflows.  If we start telling people exactly how they have to use Git to work on Debian packages, we can simplify a lot of things, but wow do I ever not want to open that can of worms.  Every time we open it on debian-devel, it's a giant mess.  (Even more than this thread!)

    We don't do that? There is no requirement to use tag2upload to do
    uploads. Otherwise tag2upload already limits the set of supported
    workflows.

    Well, it doesn't change what package maintainers do as the purpose of tag2upload is that package maintainers don't have to think about source package representation? So changing those should not affect maintainers much?

    I wish it wouldn't change what package maintainers do, but the only way I think that works is to interpose a relatively complex build step between
    the maintainer representation and the archive, which is exactly what we're currently stuck on.

    All these transformations remind me of running autoreconf to include
    generated configure scripts in the release tarballs. That is a
    relatively complex build step between the maintainer representation and
    the release. Running autoreconf at that stage has come a bit out of
    fashion, but I feel we talk about hanging on to that here...

    I also think the maintainer should have a chance to know what actually
    ends in the source package that gets used as input by buildds. Complex transformations happening on a remote black-box do not make that
    easier. We should try to get rid of them to make it easier for
    maintainers to specify their intent clearly.

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Bastian Blank@21:1/5 to Russ Allbery on Wed Jun 19 21:10:01 2024
    Hi

    On Wed, Jun 19, 2024 at 11:18:36AM -0700, Russ Allbery wrote:
    Other ideas like waldi's 3.0 (gitarchive) also go in that direction.

    Similarly, I'm not sure a source package based on Git avoids the need for
    a source package build system. There are a ton of ways that maintainers store things in Git, and I'm not sure it makes sense to upload all of
    those as-is.

    Do you have some examples of weird things?

    The things that break are slightly different, but, for instance, some maintainers do not want the upstream source in the same
    branch as their Debian packaging files. You may have to add quite a lot
    of unwanted complexity to 3.0 (gitarchive) to represent those cases.

    Well, I already thought about something like that. The question is
    just: can we boil that down to a manageable number?

    For example the Linux kernel just got the debian directory in git, but
    not the source. We in Debian still maintain patches, but other
    distributions just switched to a fork of upstream Linux with their
    changes on top.

    A possible impelementation would use one or more submodules to reference
    the real source. The implementation for the source format just needs to
    expand those submodules for "git archive". This creates then a
    reproducible result.

    Okay, this still have the problem that parts of the source is actually generated. But we can also integrate such a step into the source format
    if we want. So in the end you are not doing "commit; push" but
    "dpkg-source --commit", which prepares, commits the changes, tags and
    push or so.

    Or reintroduce a source package build step, in which case we're back to where
    we started.

    And that's where the problem lies. We make this either declarative and reproducible. Or we make it touring complete.

    I'm interested what other ftp-masters prefer when considering a trade
    off between space and additional integrity guarantees here. I have a preference for the integrity side.

    I think it's also a trade off in supported workflows. If we start telling people exactly how they have to use Git to work on Debian packages, we can simplify a lot of things, but wow do I ever not want to open that can of worms. Every time we open it on debian-devel, it's a giant mess. (Even
    more than this thread!)

    But why would tag2upload need to support them? It is something new, it
    can tell people: we support the following, use it or not.

    IMHO it is one of the problem of Debian that we fail to move forward.

    Bastian

    --
    Sometimes a feeling is all we humans have to go on.
    -- Kirk, "A Taste of Armageddon", stardate 3193.9

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Wed Jun 19 22:00:01 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------J0RxwWksb539FbZdSUsc4kOI
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMTcuMDYuMjQgMjA6NTYsIFJ1c3MgQWxsYmVyeSB3cm90ZToNCj4+IFdlbGwsIGlmIHRo ZSBtYWludGFpbmVycyBzeXN0ZW0gaXMgYnJva2VuIGluLCBpdCBtYWtlcyBubyBkaWZmZXJl bmNlIGlmDQo+PiBhIGdpdCB0YWcgb3IgYSBkc2Mgb3Igd2hhdGV2ZXIgZWxzZSBpcyBzaWdu ZWQuDQo+IFRoaXMgaXMgbW9yZSB0cnVlIHRoYW4gSSB3b3VsZCBsaWtlIGl0IHRvIGJlLA0K DQpPbiB0aGUgb3RoZXIgaGFuZCwgYSBzaWduZWQgZ2l0IHRhZyBkb2Vzbid0IG1lcmVseSB0 cmFjayBhIHNldCBvZiBmaWxlczsgDQppdCBhbHNvIHRyYWNrcyB0aGVpciBoaXN0b3J5LiBZ b3UgY2FuIHRodXMgZ28gdG8gU2Fsc2EgYW5kIHZlcmlmeSB0aGF0IA0KZS5nLiB0aGUgZW1l cmdlbmN5IE5NVSB3aGljaCBJIHB1c2hlZCB0byAkUGFja2FnZSB5ZXN0ZXJkYXkgb25seSAN CmNvbnRhaW5zIG9uZSBjb21taXQgb24gdG9wIG9mIHRoZSBtYWludGFpbmVyJ3MgYW5kIGNo YW5nZXMgb25seSB0aGlzIG9uZSANCmZpbGUgKE9LIHR3byBpZiB3ZSBjb25zaWRlciBkL2No YW5nZWxvZykuDQoNCk9yLCBJIGNhbiBsb29rIGF0IG15IHBhY2thZ2UncyBnaXQgaGlzdG9y eSAoc29tZXRoaW5nIHdoaWNoIEkgZnJlcXVlbnRseSANCmRvKSBhbmQgZ28gaW50byBwYW5p YyBtb2RlIHdoZW4gSSBzZWUgYSBzcHVyaW91cy9zdXNwaWNpb3VzIGNoYW5nZSB0byANCnNy Yy91dGlsL3NlY3VyaXR5Y2hlY2suYyBpbiB0aGVyZS4NCg0KV2hpbGUgaW4gcHJpbmNpcGxl IGl0J3MgcG9zc2libGUgdG8gZG8gdGhlIHNhbWUgdGhpbmcgYnkgZG93bmxvYWRpbmcgdHdv IA0Kc2V0cyBvZiAkUGFja2FnZS0qLmRlYmlhbi50YXIuZ3ogZmlsZXMgZnJvbSBhcmNoaXZl LmQubywgdW5wYWNraW5nIHRoZW0sIA0KYW5kIHJ1bm5pbmcgImRpZmYgLXIiLCB0aGF0J3Mg dHdvIG9yZGVycyBvZiBtYWduaXR1ZGUgbW9yZSB3b3JrLCBtaWdodCANCnJlcXVpcmUgZGVj aXBoZXJpbmcgY3J5cHRpYyBkaWZmLW9mLWRpZmZzIGdpYmJlcmlzaCwgYW5kIGRvZXNuJ3Qg aGF2ZSBhIA0KbmljZSB3ZWIgZnJvbnRlbmQgeW91IGNhbiBsaW5rIHRvIGluIHlvdXIgTk1V IGJ1Zywgd2hpY2ggbWVhbnMgdGhhdCANCm5vYm9keSdzIGdvaW5nIHRvIGRvIGl0LiBUaHVz IGl0J3MgZmFyIG1vcmUgbGlrZWx5IHRoYXQgdGhlIGJhY2tkb29yIA0Kd2hpY2ggJEJhZFBl cnNvbiBpbnNlcnRlZCBpbnRvIG15IHVwbG9hZCB3aWxsIGdvIHVuZGV0ZWN0ZWQuDQoNClRo ZSB0MnUgb3V0cHV0LCBpbiB0dXJuLCBjYW4gZWFzaWx5IGJlIHZlcmlmaWVkLiBDbG9uZSB0 aGUgdGFnLCBydW4gDQpkZ2l0LCBjb21wYXJlIHdpdGggImFwdC1nZXQgc291cmNlIiBhcnRp ZmFjdHMuDQoNCi0tIA0KLS0gcmVnYXJkcw0KLS0gDQotLSBNYXR0aGlhcyBVcmxpY2hzDQoN
    Cg==

    --------------J0RxwWksb539FbZdSUsc4kOI--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZzNnkFAwAAAAAACgkQcs+OXiW0wpN4 PxAAxx4REVnD+JHdC5sT3q3Rj+KjY076g9nMzXvXkG9TikkAD7vhiPCKSWbRuMOAUPKM6JOz355o BLP6o+KPTcoDLVZuTi54bQi2t4cWKmyxZ5zxtTfnzh5KBjRQpdGvQeyEBf11tffNO0UTlbpfGHqD hrsKs3XKtOopxBMqtHajrsyZe5ZNW15DgBW4YhLizC90oOSR4fl3CHYM69YMHRbqc3Ulp2O7gNLA M+rXYlQyJ+yTdHaBjg8dueepd+kxNqc5tbNiR8/x+lheN+fO+M1UvsjVr+RhI5EdNNcGBtgOLt16 KdOrHf6kjBMIHUt0ubWOu/3ejimGLDR43GrAAR0afCfPhkECJ799A5HOEESCoF80i0HCClB3U2vK gxFvUEZ0UmNYoFyS1ipEWruUWf9HT3CdIk6X6nG/Lv/zyhIw+AA+4PoKrQayqQMGcfZV9DHQsuFN Ec4mJ4zyGh1jT4HJwN4hdrX+ZWRWT7G13/vzpK2h8uHAarllr7KmD6nTUm6i7Fzt/IfmUte9jDb/ KvUT5lXzb3OHXVJE7IUxeu/9smZQHPy9FlATfqwXiTBim8l4hrfjKCZwmLp//b9mGSkknr7ISDbz 9Ldc9utPECPmI5UWEs+Twp0fBYkNKbEpKLXnFfXwlnWfuNFlZMXfXK36HWCt91ElYlT3OytJAEar QWY=
    =qTEU
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to [email protected] on Wed Jun 19 21:40:01 2024
    Ansgar 🙀 <[email protected]> writes:
    On Wed, 2024-06-19 at 11:18 -0700, Russ Allbery wrote:

    (And in case you're now wondering whether tag2upload can just bifurcate
    here and produce 3.0 (native) for patches-applied and 3.0 (quilt) for
    patches-unapplied, I don't think that works either.  There are yet
    other cases that we haven't talked about.  For just one example, I
    believe one large maintainer team uses a combination of some changes in
    debian/patches and some changes committed directly to the upstream
    code.  I personally would not do this, but it is supportable and
    supported and they have their reasons for wanting to do it that way. 
    See dpkg-source --auto-commit.)

    Then those packages can't use tag2upload as is. That doesn't seem to be
    a critical problem as tag2upload doesn't support all cases anyway.

    I feel like we're drifting back into "I'm okay with specific tag2upload
    use cases that are trivial, but not okay with places where tag2upload is
    doing real work for the maintainer" territory, which is where I thought we
    were stuck on before Joerg said maybe we weren't.

    The point is to support a wide variety of workflows and not impose a
    workflow on the maintainer. The cost is a source package build step.
    Maybe there are some workflows that can be supported without that, but
    that's not the point; in the general and hardest cases, the build step is required and the transformations are not trivial. The goal is that the maintainer doesn't have to reproduce that step and sign the results; they
    can sign a Git tag and let tag2upload do the work.

    You and Joerg both sounded like you were considering accepting that. Specifically, you said:

    | A downside is that integrity verification and third parties (possibly)
    | verifying the data falls flat. For me integrity verification would be
    | somewhat nice and third parties a bit less interesting (given they can
    | get the tag, compare files and possibly redo what tag2upload does if
    | they also care about .dsc and stuff).

    "Somewhat nice" is not "this is a blocking requirement." It's "I don't
    like that we don't have this, but maybe there's some room here." So... is there some room here?

    We can argue back and forth about whether a source package build step is a
    good idea or not for another hundred messages and I'm not sure that we're
    going to manage to convince each other, so let's take it as given that you
    are unhappy there's a build step here (that is not done by the uploader)
    and would rather there not be.

    Is this a hard blocker from the FTP team perspective? Or is there some
    space here where tag2upload can do this build step for the uploader and
    the FTP team will accept the resulting package, even though this is a
    design that you don't like?

    tag2upload canonicalizes all of this random stuff to 3.0 (quilt) with
    specific predictable properties, which has some real and non-trivial
    benefits for everything downstream that wants to analyze the archive.

    Some of this random stuff, not all of it.

    The point is that it can keep adding more. It's a piece of software that
    can be improved, including supporting the *next* good workflow idea that
    comes up with that none of us know about yet. This is, from the
    tag2upload development perspective, a truly vital decoupling.

    All these transformations remind me of running autoreconf to include generated configure scripts in the release tarballs. That is a
    relatively complex build step between the maintainer representation and
    the release. Running autoreconf at that stage has come a bit out of
    fashion, but I feel we talk about hanging on to that here...

    We didn't eliminate running autoreconf, we moved it into the *binary*
    package build system. The build step is still there, it just now happens elsewhere. (In, I might note, a buildd whose output dak implicitly trusts
    even though it's not signed by the uploader.)

    I don't see a way to move the Git tree transformation into the binary
    package build system because the interface to the binary package build
    system is a source package and I'm trying to avoid boil-the-ocean changes
    to the entire Debian architecture here. But, rather more to the point, I
    don't understand how that would make anything more secure.

    I also think the maintainer should have a chance to know what actually
    ends in the source package that gets used as input by buildds. Complex transformations happening on a remote black-box do not make that easier.

    The maintainer *can* run dgit locally, and I agree that the output of dgit
    and tag2upload should match. The point here is not to make it impossible
    for them to do that; the point is to remove the *requirement* that they do that.

    I do not look at the source package that dgit spits out, I just sign it
    and upload it. I do not think that's a reasonable thing to expect me to
    do, and realistically I don't think that's a thing that people are doing.
    I don't read the configure script that autoconf spits out either, for much
    the same reason. If we want to check the output of build systems, we need reproducible builds, because humans are very bad at this, won't do it, and won't find problems even if they do.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Bastian Blank on Wed Jun 19 22:20:01 2024
    (Trimming down the cc list because I think the topic in this corner of the thread is different.)

    Bastian Blank <[email protected]> writes:
    On Wed, Jun 19, 2024 at 11:18:36AM -0700, Russ Allbery wrote:

    Similarly, I'm not sure a source package based on Git avoids the need
    for a source package build system. There are a ton of ways that
    maintainers store things in Git, and I'm not sure it makes sense to
    upload all of those as-is.

    Do you have some examples of weird things?

    patches-applied vs. patches-unapplied is a big difference and I'm not sure
    you want them both in the same source format, let alone variations where patches are partly applied. Separate branches for Debian and upstream
    files as mentioned. There are doubtless a bunch more that I'm not
    thinking of.

    This is my own fault for opening the door, and I'm sorry to do that and
    then immediately close it again, but it's all that I can do to keep up
    with the discussion of whether we can enable tag2upload as already
    designed. If I get into a discussion of how to design a future different Git-based source package format, it's going to make this thread even more unwieldy and I'm going to drown. I don't think these two things are
    related, so I'm going to try to duck out of this conversation. I do care
    about this! But I think it needs a separate conversation.

    If we eventually get a Git-based source format, lots of things could in
    theory change, including how tag2upload works. But I remember what it
    took to introduce 3.0 (quilt) and I don't think we're going to get a new
    source format in any near-future time frame. Maybe I'm too cynical, and I
    will be delighted to be proven wrong.

    But why would tag2upload need to support them? It is something new, it
    can tell people: we support the following, use it or not.

    It already *does* support those workflows, if it's allowed to be deployed. People want to use them, and therefore they're supported.

    I don't think people are realizing just how restrictive the requirement
    that all the files in the source package be present in the working
    directory is. This doesn't only prohibit the work that tag2upload does.
    It also prohibits a bunch of what dpkg-source does, including all
    non-native 1.0 packages, --single-debian-patch, --auto-commit, etc.

    If the only thing that tag2upload is allowed to support is the cases where
    the source package is built by just tarring up the Git working tree,
    there's not much point to tag2upload. That's not where the important
    problems are, it has no future flexibility, and it is going to fail in all sorts of packaging scenarios that are commonly seen in Debian.

    IMHO it is one of the problem of Debian that we fail to move forward.

    I think part of what is going on here is that there are profound
    disagreements over what "moving forward" looks like, and people are not
    going to all agree on the right approach. This is similar to Git
    workflows: we have a ton of them, not because people are ignorant and
    haven't seen the better workflow, but because people truly disagree over
    the correct workflow to use for their problems.

    One way to solve that problem is to say "we're going to pick one way to do things and you aren't allowed to do it the other ways whether you want to
    or not." Sometimes that's appropriate. But sometimes we can instead say "there are a lot of different ways to do software development, and there
    is a lot of personal preference and diversity of use cases involved, but
    we can canonicalize them after the fact so that we can support a bunch of
    them without breaking things."

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joerg Jaspert@21:1/5 to Russ Allbery on Wed Jun 19 23:30:01 2024
    On 17265 March 1977, Russ Allbery wrote:

    I'm interested what other ftp-masters prefer when considering a trade
    off between space and additional integrity guarantees here. I have a
    preference for the integrity side.
    I think it's also a trade off in supported workflows. If we start
    telling
    people exactly how they have to use Git to work on Debian packages, we
    can
    simplify a lot of things, but wow do I ever not want to open that can
    of
    worms. Every time we open it on debian-devel, it's a giant mess.
    (Even
    more than this thread!)

    Honestly, while this thread has been long, it's mostly useful too. Lets
    add some mess, just for the fun of it? :)

    Well, it doesn't change what package maintainers do as the purpose of
    tag2upload is that package maintainers don't have to think about
    source
    package representation? So changing those should not affect
    maintainers
    much?
    I wish it wouldn't change what package maintainers do, but the only
    way I
    think that works is to interpose a relatively complex build step
    between
    the maintainer representation and the archive, which is exactly what
    we're
    currently stuck on.

    Well, no. We *can* say "This new thingie *only* works this way. If you
    want it, your package has to look like this, if not, do it whatever way
    you prefer, but this new thing then is not for you". I don't think thats
    bad.

    --
    bye, Joerg

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joerg Jaspert@21:1/5 to [email protected] on Wed Jun 19 23:30:01 2024
    On 17265 March 1977, [email protected] wrote:

    For repeated downloads one could use Git to get incremental updates
    and
    use only the integrity information from the archive (if desired).

    I'm interested what other ftp-masters prefer when considering a trade
    off between space and additional integrity guarantees here. I have a preference for the integrity side.

    I think size is less of a problem nowadays. Especially as this is
    *mostly* not directly affecting end users (and sizes on images and
    stuff), but the "back side" things, sources and mirror space. *Sure*,
    needless wasting that is not nice, but this doesn't sound needless.

    --
    bye, Joerg

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joerg Jaspert@21:1/5 to Russ Allbery on Wed Jun 19 23:40:02 2024
    On 17265 March 1977, Russ Allbery wrote:

    The point is to support a wide variety of workflows and not impose a
    workflow on the maintainer. The cost is a source package build step.
    Maybe there are some workflows that can be supported without that, but
    that's not the point; in the general and hardest cases, the build step
    is
    required and the transformations are not trivial. The goal is that
    the
    maintainer doesn't have to reproduce that step and sign the results;
    they
    can sign a Git tag and let tag2upload do the work.

    You and Joerg both sounded like you were considering accepting that. Specifically, you said:

    | A downside is that integrity verification and third parties
    (possibly)
    | verifying the data falls flat. For me integrity verification would
    be
    | somewhat nice and third parties a bit less interesting (given they
    can
    | get the tag, compare files and possibly redo what tag2upload does if
    | they also care about .dsc and stuff).

    "Somewhat nice" is not "this is a blocking requirement." It's "I
    don't
    like that we don't have this, but maybe there's some room here."
    So... is
    there some room here?

    From my side, it hasn't changed. A new way of representing things is not
    a blocker.
    --
    bye, Joerg

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Joerg Jaspert on Wed Jun 19 23:50:01 2024
    Joerg Jaspert <[email protected]> writes:
    On 17265 March 1977, Russ Allbery wrote:

    I wish it wouldn't change what package maintainers do, but the only way
    I think that works is to interpose a relatively complex build step
    between the maintainer representation and the archive, which is exactly
    what we're currently stuck on.

    Well, no. We *can* say "This new thingie *only* works this way. If you
    want it, your package has to look like this, if not, do it whatever way
    you prefer, but this new thing then is not for you". I don't think thats
    bad.

    I don't think it's bad in any inherent way, but it's not tag2upload. It's
    not the thing that the developers have been working on, it doesn't solve
    the problems they're trying to solve, and it doesn't let people use the workflows that they want to support.

    Maybe it's a useful thing that Debian would benefit from having, but it
    doesn't achieve what they set out to achieve, which is "you can use the
    Git workflow that you like and are currently using (for a bunch of common workflows and hopefully more later) *and* upload with a Git tag without
    having to have the Debian-specific source package machinery locally."
    That's the thing they wrote, and that's the thing they want to deploy.

    "Uploading Debian packages only requires making a tarball of a Git
    checkout as long as you follow this specific way of using Git" is a
    different solution to a different problem. It's not bad! It has some
    nice properties! But it's a very different interface for the package maintainer than "do whatever you're currently doing but stick this stuff
    in your signed Git tag and you can stop thinking about source packages."

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Russ Allbery on Thu Jun 20 00:10:01 2024
    Hi,

    On Wed, 2024-06-19 at 14:43 -0700, Russ Allbery wrote:
    I don't think it's bad in any inherent way, but it's not tag2upload.  It's not the thing that the developers have been working on, it doesn't solve
    the problems they're trying to solve, and it doesn't let people use the workflows that they want to support.

    You basically say "nothing would work at all".

    Is any change a hard blocker from the tag2upload team perspective? Or
    is there some room for changes, even though it would be a design that
    is not identical to the one currently proposed by the tag2upload
    developers?

    Because from my perspective it mostly looks like us like ftp-master
    willing to find some compromise, but the tag2upload side hard blocking
    on any possible change.

    If there is absolutely no space for changes, then it's probably not
    useful to have any discussion as we would just turn in circles.

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to [email protected] on Thu Jun 20 01:10:02 2024
    Ansgar 🙀 <[email protected]> writes:
    On Wed, 2024-06-19 at 14:43 -0700, Russ Allbery wrote:

    I don't think it's bad in any inherent way, but it's not tag2upload. 
    It's not the thing that the developers have been working on, it doesn't
    solve the problems they're trying to solve, and it doesn't let people
    use the workflows that they want to support.

    You basically say "nothing would work at all".

    Is any change a hard blocker from the tag2upload team perspective? Or
    is there some room for changes, even though it would be a design that is
    not identical to the one currently proposed by the tag2upload
    developers?

    The piece that the tag2upload developers are asking for is the ability to
    move the source package build step to a project server so that the
    uploader doesn't have to do it. This requires that dak accept a *.changes
    and *.dsc file signed by tag2upload, and it requires that the uploader not
    have to do the source package build step locally. I think we're now past
    the first part, but we're still stuck on the second part.

    (Or at least you and I still are, and maybe Joerg is okay with this? I'm
    not 100% sure.)

    Not having to build the source package locally, and that includes building
    the tree of files that go into the source package locally, is what makes
    the whole thing useful. Without being able to do this, it doesn't really
    have a point. We already have a system that lets the uploader build the
    source package locally. The point of tag2upload is to not do that.

    I appreciate that you're trying really hard to find a way to represent the
    Git tree directly in a source package so that no build step is required
    and building the tree of files locally is trivial. I understand that you
    truly think that this accomplishes the same goal with some acceptable
    lossage around the edges. But it doesn't; it's missing the point. The
    point is that there are a wide variety of potential transformations
    between the Git tree and the source package required to accomodate the
    range of Git workflows used in Debian today *and tomorrow*. Having a
    source package build system in the middle is what allows us to *decouple*
    the workflow from the build output so that people can use the workflow
    that works best for them and we get standardized Debian source packages
    out the other end.

    I think we've found potential compromises to a number of other things
    already:

    * The most recent design had tag2upload as the only verifier of the
    signature on the Git tag, and I think we found a plan for that to not be
    the case that everyone is happy with.

    * It sounded like you might want more metadata in the tag. I don't think
    that will be a problem if it's metadata that's easy for the uploader to
    add, like the target suite.

    * There was an objection to the object signed by the uploader not being in
    the archive. I think that's solvable if you are okay with publishing
    the signed Git tag object in some form in the archive.

    I suggested a bunch of other things earlier that were already changed in
    the design. If we go back to the 2019 discussion, there have been more changes. There's a lot of willingness to adjust here.

    But the key design point has always been that tag2upload builds the source package and the uploader doesn't have to. I think we're now at "well,
    that's fine as long as the uploader can build the source package file tree locally." That *is* a compromise, absolutely! We've at least gotten the
    *.dsc file construction out of the picture. But the number of workflows
    that can be supported under that restriction is extremely limited without making the uploader build the source package locally, still. It might be useful for some relatively simple cases, but it doesn't move the source
    package build step to a Debian project infrastructure system and it still requires that the uploader build the source package file tree locally.

    At the risk of trying to argue by analogy, it feels akin to saying "okay,
    you can have a binary buildd, but only if it doesn't use a compiler and
    only copies files around." Yes, that's a compromise compared to no binary buildds, but in a way that makes the whole picture more complicated and
    doesn't achieve the point of the design.

    Because from my perspective it mostly looks like us like ftp-master
    willing to find some compromise, but the tag2upload side hard blocking
    on any possible change.

    Well, first, I don't think this is true, but second, the designs proposed
    so far that you've said that you would accept (maybe not including Joerg's message?) all involve not doing exactly the thing thing that tag2upload is designed to do.

    I'm not assuming that this is how you are thinking of it. I think there
    has been a lot of confusion about what the point of tag2upload is, and
    that's why I keep explaining it in different words because sometimes it
    really is hard to grasp the essence of what someone is asking for.
    (That's also why I'm trying to do a lot of the writing here; I have a lot
    of patience and it's easier for me to do this because I'm not personally invested.)

    But some features of a system really are integral. You can't compromise absolutely anything and still have a coherent design that does something useful. "I think a bicycle should have no wheels and you think a bicycle should have two wheels, so let's compromise and give it one wheel" does
    not produce a bicycle. It produces a unicycle. This might be a useful
    device, but it's not a compromise bicycle.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Aigars Mahinovs on Thu Jun 20 06:40:01 2024
    Hi Aigars,

    thank you for your contribution. Could you quantify how much usefulness
    is removed? Like, for what percentage of packages would this work and
    for how many not?

    I'm looking forward to your answer.

    Ansgar

    On Thu, 2024-06-20 at 01:11 +0300, Aigars Mahinovs wrote:
    Removing nearly all usefulness from the system and preventing it from
    getting more useful over time is not a compromise. That is blocking
    by a wrecking amendment.

    On Thu, 20 Jun 2024, 01:03 Ansgar 🙀, <[email protected]> wrote:
    Hi,

    On Wed, 2024-06-19 at 14:43 -0700, Russ Allbery wrote:
    I don't think it's bad in any inherent way, but it's not
    tag2upload.  It's
    not the thing that the developers have been working on, it
    doesn't solve
    the problems they're trying to solve, and it doesn't let people
    use the
    workflows that they want to support.

    You basically say "nothing would work at all".

    Is any change a hard blocker from the tag2upload team perspective? 
    Or
    is there some room for changes, even though it would be a design
    that
    is not identical to the one currently proposed by the tag2upload developers?

    Because from my perspective it mostly looks like us like ftp-master
    willing to find some compromise, but the tag2upload side hard
    blocking
    on any possible change.

    If there is absolutely no space for changes, then it's probably not
    useful to have any discussion as we would just turn in circles.

    Ansgar


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Russ Allbery on Thu Jun 20 07:10:01 2024
    Hi Russ,

    On Wed, 2024-06-19 at 16:06 -0700, Russ Allbery wrote:
    I appreciate that you're trying really hard to find a way to represent the Git tree directly in a source package so that no build step is required
    and building the tree of files locally is trivial.  I understand that you truly think that this accomplishes the same goal with some acceptable
    lossage around the edges.  But it doesn't; it's missing the point.  The point is that there are a wide variety of potential transformations
    between the Git tree and the source package required to accomodate the
    range of Git workflows used in Debian today *and tomorrow*.

    Let us talk about *today*. How many packages would not be possible to
    upload via tag2upload if one required a signature covering content of
    packages? Is it 0.1%? Is it 90%?

    For *tomorrow* we might change things in the future. Some things like
    arbitrary code execution at .dsc construction time are fairly useful
    after all (required for some workflows, even when it might not change
    the files ending in the source package).

    Pretty much all changes in Debian (say systemd, usrmerge, ...) happened incrementally. Why should that not be appropriate here? (Or was a slow
    move wrong in retrospect and we should have decided to support only
    systemd and drop sysvinit in 2014, and to move to only usrmerge also
    several releases earlier?)

    Having a
    source package build system in the middle is what allows us to *decouple*
    the workflow from the build output so that people can use the workflow
    that works best for them and we get standardized Debian source packages
    out the other end.

    Why should there be a standardized Debian source package in the end
    (where tag2upload might try to build quilt patches) when nobody but a
    machine is supposed to use them?

    Also, if they are standardized why are there options for the maintainer
    to control how the source package gets constructed? (Like an option to
    control how many patches end up in d/patches.)

    But the number of workflows
    that can be supported under that restriction is extremely limited without making the uploader build the source package locally, still.  It might be useful for some relatively simple cases, but it doesn't move the source package build step to a Debian project infrastructure system and it still requires that the uploader build the source package file tree locally.

    The number of workflows that can be supported without arbitrary code
    execution at source package construction time is also extremely
    limited.

    As asked earlier: it would be helpful to know how many packages would
    be affected by this.

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Philip Hands@21:1/5 to Russ Allbery on Thu Jun 20 08:30:01 2024
    Russ Allbery <[email protected]> writes:

    ...
    At the risk of trying to argue by analogy, it feels akin to saying "okay,
    you can have a binary buildd, but only if it doesn't use a compiler and
    only copies files around." Yes, that's a compromise compared to no binary buildds, but in a way that makes the whole picture more complicated and doesn't achieve the point of the design.

    Also, packages change over time.

    If one had that restriction, and got used to being allowed to use that
    sort of restricted buildd, what happens when upstream adds something
    that needs compilation?

    Similarly, if one has a package that could be dealt with by a limited tag2upload, and then upstream changed something that nudged you into the problematic territory, you'll be confronted with having to abandon
    tag2upload, or perhaps having to start doing trickery to live within the limitations (e.g. performing the problematic steps and then committing
    the results of that to git, say, which will just make the package
    horrible).

    If that's the choice available, I'll be sticking with local dgit from
    the start, because at least that's going to be able to deal with
    tomorrow's version from upstream.

    If that's the rational choice which any well-informed uploader will
    adopt, then such a limited tag2upload really serves no purpose.

    Cheers, Phil.
    --
    Philip Hands -- https://hands.com/~phil

    --=-=-Content-Type: application/pgp-signature; name="signature.asc"

    -----BEGIN PGP SIGNATURE-----

    iQIzBAEBCgAdFiEE3/FBWs4yJ/zyBwfW0EujoAEl1cAFAmZzyfQACgkQ0EujoAEl 1cB/QhAAqhY9kVdvel+WTph+Ak+EmEm8a8VRtb0YpczS1qEO9Y6+OTcUJ//zlJhG AFRqj0YySEN18gsBkxa45b7umAs3UvAAO5UmNU+rOPQ07sOMxMFTcZBvLoUxvjBz zNmHzE335GQrJkyZieay65miJWd5bQxkGoBkU/qsv1nYZMH0Gy+oDoo/TM2GLsK4 7AQY5Lr6sRRsgooWpQsb81Z9PaUEhb978XsYgc3r1itH3l8NuoAmmk6xp0Fbnq8Y iodMcXHUFmxoD+rvpNJ/MPoh9B4Osi3Dgma8qTrbKjXRSOJXUnQkE8jFx6EkLzrW Fg9k8v+DtIG0UjIARotX2QhjcHSzB4+m5QVuK/ZINKJMXBXmolJbOnv9cbgCDluc nS82agi/S4L09jKvFQZpD48lwhJgwhkvUfbGD2/j2rPd3Lu8VcfGLgke3qECqLn7 Hb/XGIEvheEn3ywW2xX/sjXxTamxaEVao596qQHC7Z6ziCB1wc7ONq7wtol+3prG 7LP3l9H6yx2q769pX4CzLGpSsvw3n/VAHje9wB/AsmrER7E8Xh7/EcO+Cy3fSSlQ nHThzvfOAgBnpChE6LqDkwl4uZYWOpjFiLfHe/cC0ZzY984KGElYoPveF12Gz1Cl C8TUSKDMW7kJ5peT4fi8WDSgXIeaUOg3RcdRC599nUsO4U9L8HA=vWNO
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gatewa
  • From Russ Allbery@21:1/5 to [email protected] on Thu Jun 20 21:50:02 2024
    (Trimming the cc list a bit to keep from deluging people who aren't
    actively participating in this part of the conversation.)

    Ansgar 🙀 <[email protected]> writes:
    On Wed, 2024-06-19 at 16:06 -0700, Russ Allbery wrote:

    I appreciate that you're trying really hard to find a way to represent
    the Git tree directly in a source package so that no build step is
    required and building the tree of files locally is trivial.  I
    understand that you truly think that this accomplishes the same goal
    with some acceptable lossage around the edges.  But it doesn't; it's
    missing the point.  The point is that there are a wide variety of
    potential transformations between the Git tree and the source package
    required to accomodate the range of Git workflows used in Debian today
    *and tomorrow*.

    Let us talk about *today*. How many packages would not be possible to
    upload via tag2upload if one required a signature covering content of packages? Is it 0.1%? Is it 90%?

    If we're talking about *today*, the answer is 100%, because what you're describing requires new code in both dak and tag2upload that no one has written. But I understand that you're not really talking about today,
    you're asking about a hypothetical future world in which someone does that work.

    I personally do not have those numbers. I know there are a huge variety
    of workflows mostly from previous debian-devel discussions, which gives me
    an appreciation for the scope of the problem that tag2upload solves but
    doesn't give me numbers. I checked on trends.debian.net to see if by
    chance it was trying to collect workflow data, but the closest thing to relevant is graphs showing the overwhelming popularity of 3.0 (quilt) as a source package format.

    I can say that for the packages I maintain personally, 100% of them would
    not be possible to upload this way at some point over time. As mentioned previously, I frequently have reasons to carry a Debian-specific patch for
    some period of time (which is a file that's generated at source package
    build time), and for the reasons that Philip Hands already explained, I
    don't want to have to think, with each package upload, whether this upload
    of the package will be blocked if I use tag2upload.

    If one only looks at the most recent version of each of my packages at a specific point in time, my guess is that about 50% of those packages could
    not be uploaded and the other 50% would currently work because they
    currently don't have any Debian-specific changes to upstream and therefore building the *.debian.tar.xz is fairly trivial and involves only files
    already present in the Git head. I haven't counted, though, so consider
    this number rather rough; I could be off by 10-20% in either direction.

    For *tomorrow* we might change things in the future. Some things like arbitrary code execution at .dsc construction time are fairly useful
    after all (required for some workflows, even when it might not change
    the files ending in the source package).

    If you also agree that having a source package build step is useful, why
    are you opposed it? What do you think would be different about tomorrow
    that we don't know today? I don't understand what you're trying to
    accomplish.

    Also, I think you're talking about yet a different style of build system
    than what tag2upload does, but just to be explicit: I believe tag2upload
    source package builds do not involve arbitrary code execution, if by that
    you mean running code shipped in the Git repository being built. (The tag2upload and dpkg-source code is not "arbitrary" in the normal security
    sense of that term.)

    Normally, arbitrary code execution can happen with source package builds
    due to running the clean target, which can be arbitrary code specified in debian/rules. That shouldn't be necessary in tag2upload since it's
    starting from a clean Git checkout.

    I'm not sure I'm a fan of truly arbitrary code execution during the source package build, since avoiding that is a very nice bit of security
    hardening for the source package builder that makes it way, way more
    difficult for a malicious source package to somehow compromise the
    builder. But that's hardening, not an essential element of the design, so
    I could be convinced.

    Pretty much all changes in Debian (say systemd, usrmerge, ...) happened incrementally. Why should that not be appropriate here? (Or was a slow
    move wrong in retrospect and we should have decided to support only
    systemd and drop sysvinit in 2014, and to move to only usrmerge also
    several releases earlier?)

    I don't think you thought through this analogy before you mailed it. :)
    Surely the differences between a system that would only be used by Debian package uploaders and is strictly optional, and major architectural
    changes to Debian *user* systems that are either huge changes in how they administer their systems (in the first case) or irreversible changes to
    their system (in the second case), is too obvious to get into.

    Also, I do feel like I have to point out that you have not, in this
    thread, been asking for an incremental deployment. You have been asking
    for someone to completely rewrite tag2upload along different principles
    using brand new features of dak that no one has yet written, in order to
    get a system that does a fraction of what it currently can do, has severe flexibility restrictions, and would be, to be quite frank, a tottering
    pile of workarounds and hacks. You're asking for the sort of muddled and incoherent design that, were someone advocating it anywhere else in
    Debian, you would be grumbling about as poor architecture. And you would
    be correct.

    The straightforward, flexible, and adaptable way to glue together the wild variety of preferred Git packaging workflows with a stable and useful
    source package format is to put a build step in between those two things.
    This is not some sort of novel or radical idea. It is literally what we
    have been doing in Debian for as long as I have been involved in the
    project.

    tag2upload doesn't change that property. It just allows me, and others
    who want to use it, to move that step off of potentially untrustworthy or unsuitable local hardware onto a Debian project system that, like binary buildds, we can secure and incrementally improve. And, as a bonus, it regularizes the construction and gives us hooks for doing useful
    additional verifications in the future.

    Why should there be a standardized Debian source package in the end
    (where tag2upload might try to build quilt patches) when nobody but a
    machine is supposed to use them?

    This is such a mystifying question to me that I can't reverse-engineer
    what you are trying to ask. There are innumerable consumers of source
    packages in Debian: analysis tools, linting tools, tools that gather
    together all of the Debian-specific patches so that upstreams can see how
    we're changing their software, reporting, auditing, etc. tag2upload's generation of normal, semantically correct 3.0 (quilt) packages lets that entire ecosystem of downstream tools continue to work. In some cases,
    using it (or dgit) makes them work better, by providing more or
    higher-quality metadata. This was the case for my own personal packages.

    If you want to change the source package format in the archives, by (for example) deprecating 3.0 (quilt) in favor of something else, I think
    that's at least arguably within your remit as an FTP team delegate.
    Figuring out all of the things that would break and all the assumptions
    that would change and fixing the entire ecosystem of tools so that you can
    make such a change is a massive amount of work, and I don't envy you the
    task. Nor would I make any assumptions about how long it would take you
    to complete.

    In the meantime, tag2upload works correctly with the ecosystem of tools
    that we have now, with the minor caveat that tools that care specifically
    about the identity of the package uploader will need to parse some fields
    out of *.dsc or *.changes instead of only from the OpenPGP signature.

    Also, if they are standardized why are there options for the maintainer
    to control how the source package gets constructed? (Like an option to control how many patches end up in d/patches.)

    Because that's a *semantic* decision and dgit or tag2upload cannot always
    guess the correct semantics. Some maintainers choose to not maintain
    changes to upstream as separable commits that can be meaningfully turned
    into a patch series, and in that case they need to tell dgit or tag2upload
    to not attempt to make sense of the changes and instead just build a
    monolithic patch.

    The tools can do a lot, but they can't recover information that the
    package maintainer has intentionally discarded.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Philip Hands on Fri Jun 21 12:20:01 2024
    Hi,

    On Thu, 2024-06-20 at 08:19 +0200, Philip Hands wrote:
    Similarly, if one has a package that could be dealt with by a limited tag2upload, and then upstream changed something that nudged you into the problematic territory, you'll be confronted with having to abandon tag2upload, or perhaps having to start doing trickery to live within the limitations (e.g. performing the problematic steps and then committing
    the results of that to git, say, which will just make the package
    horrible).

    If that's the choice available, I'll be sticking with local dgit from
    the start, because at least that's going to be able to deal with
    tomorrow's version from upstream.

    If we are talking about hypothetical ways upstream might nudge you
    into: there is a large territory that requires arbitrary code execution
    as build time (say to instatiate d/control from a template) which
    neither proposal for tag2upload allows.

    So with that choice, you would stick to not using tag2upload no matter
    which variant being discussed would be deployed.

    If that's the rational choice which any well-informed uploader
    will adopt, then such a limited tag2upload really serves no purpose.

    And if that's the rational choice any well-informed uploader will
    adopt, than all variants of tag2upload currently discussed serve no
    purpose.

    But if you would use no variant either way, it would seem that either
    choice (including even no tag2upload at all) would not affect you
    anyway?

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Russ Allbery on Fri Jun 21 13:20:01 2024
    On Thu, 2024-06-20 at 12:48 -0700, Russ Allbery wrote:
    Ansgar 🙀 <[email protected]> writes:

    Let us talk about *today*. How many packages would not be possible to upload via tag2upload if one required a signature covering content of packages? Is it 0.1%? Is it 90%?
    [...]
    I personally do not have those numbers.  I know there are a huge variety
    of workflows mostly from previous debian-devel discussions, which gives me
    an appreciation for the scope of the problem that tag2upload solves but doesn't give me numbers.

    I checked on trends.debian.net to see if by
    chance it was trying to collect workflow data, but the closest thing to relevant is graphs showing the overwhelming popularity of 3.0 (quilt) as a source package format.

    I can say that for the packages I maintain personally, 100% of them would
    not be possible to upload this way at some point over time.  As mentioned previously, I frequently have reasons to carry a Debian-specific patch for some period of time (which is a file that's generated at source package
    build time)

    And you do not have a working tree containing either the patched source
    that would allow computing a integrity hash using 3.0 (native) or
    separate debian/patches where 3.0 (quilt) would work?

    How do these packages look like? Could you link to them?

    If we want to drop integrity checks, I would like to at least know how
    many packages would benefit from such a change.

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Fri Jun 21 14:00:01 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------ZOffWS7d5vHantrEcCcghCky
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMjEuMDYuMjQgMTM6MTgsIEFuc2dhciDwn5mAIHdyb3RlOg0KPiBJZiB3ZSB3YW50IHRv IGRyb3AgaW50ZWdyaXR5IGNoZWNrcywNCg0KSU1ITyB0YWcydXBsb2FkIGRvZXMgbm90IGRy b3AgaW50ZWdyaXR5IGNoZWNrcywgZm9yIHRoZSBzaW1wbGUgcmVhc29uIA0KdGhhdCBhIG1h aW50YWluZXIgd2hvIHVzZXMgZGdpdCB0b2RheSBkb2VzIG5vdCBwZXJmb3JtIGFueSBzdWNo IHRlc3QuDQoNCiJkZ2l0IHB1c2gtc291cmNlIHN1Y2NlZWRzPyBmaW5lLCBJJ20gZG9uZSB1 bnRpbCB0aGUgYnVpbGRkcyByZXBvcnQgDQpzdWNjZXNzIChvciBub3QpLiINCg0KPiAgIEkg d291bGQgbGlrZSB0byBhdCBsZWFzdCBrbm93IGhvdw0KPiBtYW55IHBhY2thZ2VzIHdvdWxk IGJlbmVmaXQgZnJvbSBzdWNoIGEgY2hhbmdlLg0KDQpBdCBtaW5pbXVtLCBhbGwgcGFja2Fn ZXMgdGhhdCBhbHJlYWR5IHVzZSBkZ2l0OiANCmh0dHBzOi8vYnJvd3NlLmRnaXQuZGViaWFu Lm9yZy8gY29udGFpbnMgfjMwMDAgcmVwb3NpdG9yaWVzLg0KDQotLSANCi0tIHJlZ2FyZHMN Ci0tIA0KLS0gTWF0dGhpYXMgVXJsaWNocw0KDQo=

    --------------ZOffWS7d5vHantrEcCcghCky--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZ1ajoFAwAAAAAACgkQcs+OXiW0wpNY KA//cjGZzMDXOJCEVfEmu/q+PVLJD++uDTfrycmHwpu25sXQDg/pDutiLm4TD4yjcDZTHfMVkd7h 7R/NWrvw3TLnLz/VpKTM/dfXHHmdDFfSjN23NqwUDzmTP+SPMiBgJfuZrUzQY3eYculTg9n42/4L 1XLPoG1P48wPWQMkIyiwtySCrYrXKQl31OyOYEazo1hd/At1DG7DHDvA8il+v0orRgUrnK9pU/XF 6eoDHuMnxpBVKT25X98wNWs8UxVa9gd2lCOeELzEP/W+r0lq5Bs+fYeGawrMqj0k4JM7d13Z2LAa R9epS1Gr/fAZ+miFqYa5KOCYxx/9+NnFsfnVTwfwn01QOwBnZTpoJxv3HYg4Hc+sTEIY1pL1iv/W /eqMJq4z72IhfAfspRb+p8tIcycm6KExEk4fT6WYmexFAcaeWOJjuch46qn6fAh0roMftD2R3kjj +o0p6cWPyZJBRgYWpfrSI78L+HtnJj9axia6ZrN84y5Kp3A+iDeItP7ZPEJJEv3QPScDcY/GkQgC T2q8irpotLLE/2fpWq9qR0L65leS4NePgXlLjfGgAlD/Lx9XfRXSJiqrbpHmsJzLLdVefQffMASK Wd1tjDf5AEdk9QXPq9tVW4g9/mr7O0j5gIZcf8pXMtR8FLnq36hoVnpkXErPL1k+7Er7LJGxYYAy m5U=
    =H8x/
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Matthias Urlichs on Fri Jun 21 14:40:01 2024
    Hi,

    On Fri, 2024-06-21 at 13:55 +0200, Matthias Urlichs wrote:
    On 21.06.24 13:18, Ansgar 🙀 wrote:
    If we want to drop integrity checks,

    IMHO tag2upload does not drop integrity checks, for the simple reason
    that a maintainer who uses dgit today does not perform any such test.

    The change request is for the archive to drop them.

      I would like to at least know how
    many packages would benefit from such a change.

    At minimum, all packages that already use dgit: https://browse.dgit.debian.org/ contains ~3000 repositories.

    I think you misunderstand my question: I would like to know which
    packages *could not* provide an integrity hash for the archive.

    It is very unlikely that this is the case for *all* packages using dgit
    and more.

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Fri Jun 21 16:00:01 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------g3B9YIe5AestCWdhBEcwf7PP
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMjEuMDYuMjQgMTQ6MzMsIEFuc2dhciDwn5mAIHdyb3RlOg0KPiBJIHRoaW5rIHlvdSBt aXN1bmRlcnN0YW5kIG15IHF1ZXN0aW9uOiBJIHdvdWxkIGxpa2UgdG8ga25vdyB3aGljaA0K PiBwYWNrYWdlcypjb3VsZCBub3QqICBwcm92aWRlIGFuIGludGVncml0eSBoYXNoIGZvciB0 aGUgYXJjaGl2ZS4NCg0KQWgsIHNvcnJ5Lg0KDQpBbnN3ZXI6IExvdHMgb2YgdGhlbS4gQUZB SUsgeW91IGNhbiBzaW1wbHkgY2xpY2sgb24gYSBwYWNrYWdlIGluIA0KaHR0cHM6Ly9icm93 c2UuZGdpdC5kZWJpYW4ub3JnLyBhbmQgY2hlY2sgd2hldGhlciB0aGUgbGF0ZXN0IA0KImFy Y2hpdmUvZGViaWFuLyoiIGFuZCAiZGViaWFuLyoiIHRhZ3MgYXJlIGRpZmZlcmVudC4NCg0K T2YgdGhlIGxhc3QgNTAgdXBsb2FkcywgSSBjb3VudGVkIDQyLiBUaHVzLCA+ODAlLg0KDQot LSANCi0tIHJlZ2FyZHMNCi0tIA0KLS0gTWF0dGhpYXMgVXJsaWNocw0KDQo=

    --------------g3B9YIe5AestCWdhBEcwf7PP--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZ1hxQFAwAAAAAACgkQcs+OXiW0wpMu vhAAkWsbbRBKtpomszujBwnVCf6+4C029xrf/qA8YQtoesrRJAM7AMBWU0hwr1tWa72+/2McImE6 GIVTMstnL1Umjk4cnEVVtPY+6+adMHoguaVfntmxXCz90y4uMROqGGpKlFlcxcOwlWYtRoiIJ6CV KO/Tsk+E9igDLK86TipH1f3NXh8r7vDjgDkJWTQaIYkwRrqo7EsipT59IZvC8PV/vosGdXQjxhRq kSFkcpM8EpoOtqATiBrt4UV+heyEAtPb9i4all0Jikopgd3PVxo67x4C8ZhT9NMuFIIFSOSq7Inn KLOrzKNNnHSGWk6O85XLCPdw4TuVhn19qXLTrqhu9A/X9Loa4CibeNNnwYlqYu2a61F5c9G2vRoG i/Wp9lqlLS3ImDhMmu/JLJYcNLtqdq/BYha+yU9AFw5FjoY/j6gSfSwmqOAy52ZJk+sC4oTOEKyz T33LUXJTWcDO5LWNAYp4qAPxRc77uEZp0/5OiZYxwAPjR5pUPIXpOCEBrCgMY3P4yTg3yqkgceip rCC14D5bjeSo/jac96T2twbzRBMkkpItGf4izKGaWg8DaFF/k/uyRae3wNobqthp5VHbWJ+kc2Sg Xd0JjfthkUR3LhlWuk6GqwcTwEK1WY9cFRqvCArSnwarAR4GkuX3N44Ek/5r7zietjNpaqDju1O5 juw=
    =1ChS
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Matthias Urlichs on Fri Jun 21 17:00:01 2024
    Hi,

    On Fri, 2024-06-21 at 15:58 +0200, Matthias Urlichs wrote:
    On 21.06.24 14:33, Ansgar 🙀 wrote:
    I think you misunderstand my question: I would like to know which packages*could not*  provide an integrity hash for the archive.

    Ah, sorry.

    Answer: Lots of them. AFAIK you can simply click on a package in https://browse.dgit.debian.org/ and check whether the latest "archive/debian/*" and "debian/*" tags are different.

    Of the last 50 uploads, I counted 42. Thus, >80%.

    I checked for the first best package (all-knowing-dns):

    commit b6b75815debd86053a3a09feb4ae4fc619292473 (tag: archive/debian/1.7-6)
    vs
    commit 26dbc900af3493f7626d1ec333b26fbd1b4cefc6 (tag: debian/1.7-6)

    So the tags are different, but:

    all-knowing-dns % git rev-parse 'archive/debian/1.7-6^{tree}' 539fd2433304ec4e06ade8272baab31c6b299a69
    all-knowing-dns % git rev-parse 'debian/1.7-6^{tree}' 539fd2433304ec4e06ade8272baab31c6b299a69

    So your suggested method of measurement and the resulting 80% seem very questionable and only usable as a very generous upper boundary.

    (Please also consider in your reply the suggested changes to make
    hashing possible/easier...)

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Fri Jun 21 17:00:01 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------6uqQuWyLqC2eqLdpzVVdJ0LO
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMjEuMDYuMjQgMTQ6MzMsIEFuc2dhciDwn5mAIHdyb3RlOg0KPj4gSU1ITyB0YWcydXBs b2FkIGRvZXMgbm90IGRyb3AgaW50ZWdyaXR5IGNoZWNrcywgZm9yIHRoZSBzaW1wbGUgcmVh c29uDQo+PiB0aGF0IGEgbWFpbnRhaW5lciB3aG8gdXNlcyBkZ2l0IHRvZGF5IGRvZXMgbm90 IHBlcmZvcm0gYW55IHN1Y2ggdGVzdC4NCj4gVGhlIGNoYW5nZSByZXF1ZXN0IGlzIGZvciB0 aGUgYXJjaGl2ZSB0byBkcm9wIHRoZW0uDQoNClVtbSwgbm8uIFdlJ3JlIG5vdCBkcm9wcGlu ZyB0aGUgY2hlY2s7IHdlIHJlcXVpcmVkIGEgbWFpbnRhaW5lcidzIA0Kc2lnbmF0dXJlIGJl Zm9yZSwgYW5kIHdlIHN0aWxsIGRvIHNvIGFmdGVyLiBXZSBqdXN0IHBsYWNlIGEgDQpwYWNr YWdpbmctYW5kLXBvc3NpYmx5LXNvdXJjZS1tYW5nbGluZyBzZXJ2ZXIgYmV0d2VlbiBBIGFu ZCBCLg0KDQpBbHNvIGl0J3Mgbm90IGFuIGludGVncml0eSBjaGVjay4gSXQgZG9lc24ndCB2 ZXJpZnkgdGhhdCB0aGUgZmlsZXMgaW4gDQp0aGUgdXBsb2FkZWQgdGFyYmFsbCBjb3JyZXNw b25kIHRvIGVpdGhlciB0aGUgZ2l0IHRhZyBvZiB0aGUgc291cmNlIHRoZSANCm1haW50YWlu ZXIgd29ya2VkIG9uICpvciogdGhlIGNvbnRlbnRzIG9mIHRoZWlyIGZpbGUgc3lzdGVtIHdo ZW4gdGhleSANCnJhbiAiZHBrZyAtUyIuDQoNCkZ1bmRhbWVudGFsbHksIHRoZSBmYWN0IHJl bWFpbnMgdGhhdCB3aGVuIHlvdSBkbyBhICJkZ2l0IHB1c2gtc291cmNlIiANCnRvZGF5LCBk YWsgaW50ZWdyaXR5LWNoZWNrcyBzb21lIHRhciBmaWxlcyB0aGF0IHdlcmUgZ2VuZXJhdGVk IGFuZCANCnNpZ25lZCBvbiBhIHJhbmRvbSBtYWNoaW5lIHdpdGggcmFuZG9tIGFuZCBwb3Nz aWJseS1tYWxldm9sZW50IHNvZnR3YXJlIA0KdGhhdCBjb3VsZCBoYXZlIHNpbGVudGx5IHJl cGxhY2VkIGFueSBmaWxlIGl0IHdhbnRlZCB0byDigJMgZmlsZXMgd2hpY2ggDQp5b3UgY3Vy cmVudGx5IGNhbid0IGF1dG8tdmVyaWZ5IGluZGVwZW5kZW50bHkgYW5kIHdoaWNoIG5vIGh1 bWFuIHdpbGwgDQpleGFtaW5lICh1bmxlc3MgdGhlcmUncyBhIHN0cm9uZyBleHRlcm5hbCBz dXNwaWNpb24gb2YgZm91bCBwbGF5KS4NCg0KV2hpbGUgdGhlICJyYW5kb20gbWFjaGluZSIg cHJvYmxlbSBzdGlsbCBob2xkcyB3aXRoIHQydSwgdGhhdCdzIA0KbWl0aWdhdGVkIGJ5IHRo ZSBmYWN0IHRoYXQgYWxsIG90aGVyIGRpc2FkdmFudGFnZXMgZ28gYXdheS4gVGhlIHNvdXJj ZSANCmlzIG5vdyBhIGdpdCB0YWcgb24gU2Fsc2Egd2hvc2UgaGlzdG9yeSBwZW9wbGUgd2hv IHdvcmsgb24gdGhlIGNvZGUgDQphY3R1YWxseSB1c2UgYW5kIGV4YW1pbmUsIHRoZSBkZ2l0 IGpvYiBydW5zIGluIGEgVk0gd2l0aCBkZWZpbmVkIHN0YXRlLCANCmFuZCB0aGUgY29ycmVj dG5lc3Mgb2YgaXRzIG91dHB1dCBpcyBlYXNpbHkgbWFjaGluZS12ZXJpZmlhYmxlLg0KDQpJ biB0aGF0IGxpZ2h0LCB0ZWxsaW5nIGRhayB0byB0cnVzdCB0aGF0IHRoZSB0MnUgc2Vydmlj ZSBoYXNuJ3QgYmVlbiANCnN1YnZlcnRlZCBzZWVtcyBsaWtlIGEgdmVyeSBtaW5vciBkaXNh ZHZhbnRhZ2UgdG8gbWUsIGVzcC4gc2luY2Ugd2UgDQphbHJlYWR5IGlkZW50aWZpZWQgd2F5 cyB0byBzdHJlbmd0aGVuIHRoYXQgdHJ1c3QuDQoNCi0tIA0KLS0gcmVnYXJkcw0KLS0gDQot LSBNYXR0aGlhcyBVcmxpY2hzDQoNCg==

    --------------6uqQuWyLqC2eqLdpzVVdJ0LO--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZ1lE0FAwAAAAAACgkQcs+OXiW0wpPq 1A/+Lwc1AeB7hEY5oW2DjhvCfxnhUC3m8gu28YU2B+yVN5zEZ4c657bjRrHusW77RoCefjKbrVf/ nLSp2JKmt7yjuVCr13YhNkS5w3zKl0DsZr+TdkMYX6WA+EJxjtXFsGAQOSgRt7OM2pDYPx4fH0pO GnkXDN5tqOPB3Z2vs8J3XV0caZdWAOAh13TU1v0/YGKXSgIzpLkDXAejdXb7eB2MfZjQXDwHgADO XaquAI3oyWLxdduD5z7LSskqZYPjPt6WjdcwPzn3CIM2ferM8OcJS2LXiqmJveSx637DhV4GLbFn r9vCQCG9wwzZC+tXAIDTdwQIn1c/fggKVYWgVnSo+IZbWLle9HQHKvbIhYB4ova3SljdpNmf2qqP eiz3neAASFaeHeXUgv+n07muPKcml3Q7H4u2lPPtzWwqk1rmiSkgIMpbQkt1tVWvpGLAu7vhQQgD hGKEBslR7gHoqT4aKfnstv2oyDTyzUe/VdU/Ih0V3jBWTxnpuWmjmXrRRk+nbzyjM1NeYBVBAOdN 7FEkDMm5Gn0wsrfHosCK2wrcPlqGyehvyQ/yd30F+zVzvd4SzNKa4m75dXIiaLp0EJqeWFptR1Yu R4UvBBtAuvgfoO0Oj1hNbvwd6439Wq7AfvCZEtJHoYOnKKt7wTJiAXuwDMV3SInw56WPBsUFjGlc M+4=
    =WMY3
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to [email protected] on Fri Jun 21 17:30:02 2024
    Ansgar 🙀 <[email protected]> writes:

    And you do not have a working tree containing either the patched source
    that would allow computing a integrity hash using 3.0 (native) or
    separate debian/patches where 3.0 (quilt) would work?

    Wait, why would I ever want to upload a 3.0 (native) package for a
    non-native package with the tooling as it is today in Debian? If I did
    that *today*, which I thought was the context of the question, that would
    be a significant regression and I would lose functionality that I, and
    other people downstream of me, rely on.

    My packages are patches-applied and I don't use debian/patches directly,
    so yes, *if* 3.0 (native) were a realistic option for uploading them, no transformation is currently required before uploading. But to take the
    most obvious example, I rely on <https:/udd.debian.org/patches.cgi> to communicate with upstream about exactly what changes I'm applying to their
    code and allow them to easily pull those patches any time they want. You
    would need to develop a replacement that worked with 3.0 (native) if you
    wanted to make this change in Debian. Lintian checks would misbehave, all sorts of downstream analysis code would likely get confused over whether
    my package was native rather than non-native, etc.

    We discussed the possibility that patches-applied packages could be
    represented as 3.0 (native), but we were (or at least I was) discussing
    that in a context where you, as FTP team delegate, deprecated 3.0 (quilt)
    for those packages and told everyone to use 3.0 (native) instead. That
    comes with a whole bunch of other obligations and work that you would have
    to do first. It is not something I could just do today.

    If you want to change source package formats, that's an interesting
    discussion and there are some theoretical advantages, but you have a long
    list of work ahead of you and problems to resolve before anyone else can reasonably take advantage of that change.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Fri Jun 21 17:30:02 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------6Fgzy70CDMa01Tt0eviwTzRk
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMjEuMDYuMjQgMTY6NTcsIEFuc2dhciDwn5mAIHdyb3RlOg0KPiBTbyB5b3VyIHN1Z2dl c3RlZCBtZXRob2Qgb2YgbWVhc3VyZW1lbnQgYW5kIHRoZSByZXN1bHRpbmcgODAlIHNlZW0g dmVyeQ0KPiBxdWVzdGlvbmFibGUgYW5kIG9ubHkgdXNhYmxlIGFzIGEgdmVyeSBnZW5lcm91 cyB1cHBlciBib3VuZGFyeS4NCg0KWW91J3JlIHJpZ2h0IGJ1dCBBRkFJQ1QgdGhpcyBjYW4g b25seSBoYXBwZW4gd2hlbiB0aGUgdHdvIHRhZ3MgYXJlIA0KY29uc2VjdXRpdmUsIEkgc3Bv dC1jaGVja2VkIGEgY291cGxlIG9mIHRoZW0gdG8gdmVyaWZ5IHRoaXMuDQoNCkV4Y2x1ZGlu ZyBwYWNrYWdlcyB3aGVyZSB0aGlzIGlzIHRoZSBjYXNlIGRyb3BzIHRoZSBjb3VudCB0byDi gKYgMzkuIFBsdXMgDQoyNiBmb3IgYW5vdGhlciA1MC4NCg0KVGh1cywgbm90ICp0aGF0KiBn ZW5lcm91cy4NCg0KLS0gDQotLSByZWdhcmRzDQotLSANCi0tIE1hdHRoaWFzIFVybGljaHMN
    Cg0K

    --------------6Fgzy70CDMa01Tt0eviwTzRk--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZ1m0EFAwAAAAAACgkQcs+OXiW0wpNd 2hAAleFy7d4HI9qXI+q3RvIny8X63n011imXX1w35tXqXRCe3g45nax28c0fa3znP3TFym+hiT2Y y4Y5DItsq8FBYt1CG9JtFXNEfzR07w4uh4G0gD3gbGmU7Fsht9E2jEdulBLCb/IMhnoK4aqIgeeB EFeEkxV3PDHW7JKRdLCk0ENNM8HGjcD3/AA9ZfVe4LlOZ0WZx8woaS8VciiNBTqTVBi0iRm5tJp8 PgRYCruvqVEaisJW8+VYmVzYKuy9OZJCY3MPdSwd5m03HeMX5fJNvGiuZWZph5LptjFBVVD/R9fp 8CL9T41192/e1Lfp0YU2WvD6pTnpgqfcXHqjQcPp7Jz4FFgzQy+EZX1rd5yqfavE4YIyGcLWE+kO a04/ka4dwtdbP+EEd32MWtukVWplZeILZEf69gCG6UqM9S9EubGb+7q3kCoB80smyZXyEmWa4V5E cOnbuqv6v6b/FjP53DFYfnhb4/8x9nGEciP1VnpnD+fVrv/pgfRl+7dE8exqzOO2DwiQrKGPx4LX Bx6uavnY7EDNeaW/JkWyLaYfQQL8PSl8V5RXXtqBDOjnUiJfBaNkUoyet7o+lE1iVgfcMdt32spk 1Wn8o/2pANNj4ZpaxdtvKCnfoJr7690WHbZfOQ8MV0bHwQFm89i3zYM5tGpxC6RWAc+/j8LxXp/p e1k=
    =y1us
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Matthias Urlichs on Fri Jun 21 17:20:01 2024
    Hi,

    On Fri, 2024-06-21 at 16:55 +0200, Matthias Urlichs wrote:
    On 21.06.24 14:33, Ansgar 🙀 wrote:
    IMHO tag2upload does not drop integrity checks, for the simple reason that a maintainer who uses dgit today does not perform any such test.
    The change request is for the archive to drop them.

    Umm, no. We're not dropping the check; we required a maintainer's
    signature before, and we still do so after. We just place a packaging-and-possibly-source-mangling server between A and B.

    So we drop the integrity check using the maintainer's signature in the archive...

    Also it's not an integrity check. It doesn't verify that the files in
    the uploaded tarball correspond to either the git tag of the source the maintainer worked on *or* the contents of their file system when they
    ran "dpkg -S".

    I'm not sure what you are talking about here.

    If you claim checking a cryptographic strong hash over some data and a cryptographic signature by the maintainer that covers the hash is not
    an integrity check, I feel like you might have a different
    understanding of an integrity check than I commonly see.

    In that case we should step back and look at those definitions first to
    come to a common understanding of an integrity check.

    Fundamentally, the fact remains that when you do a "dgit push-source"
    today, dak integrity-checks some tar files that were generated and
    signed on a random machine with random and possibly-malevolent software
    that could have silently replaced any file it wanted to – files which
    you currently can't auto-verify independently and which no human will
    examine (unless there's a strong external suspicion of foul play).

    And that will remain the case: even with tag2upload the maintainer will
    sign some data that was generated and signed on a random machine with
    random and possibly-malevolent software that could have silently
    replaced any file it wanted to...

    And generally no human will examine most of the code unless there is
    such suspicion. For example, AFAIU various parts of the xz-utils
    backdoor were just there in the Git tree and it wouldn't have made too
    much of a difference to place the last bits there as well.

    The source
    is now a git tag on Salsa whose history people who work on the code
    actually use and examine, the dgit job runs in a VM with defined state,
    and the correctness of its output is easily machine-verifiable.

    Or not so easily as otherwise the archive could simply do it.

    And people don't work on the tree actually uploaded to the archive and
    don't even notice whether those trees are identical to or different
    from the one they might have signed (or even know whether they are
    identical or different).

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to All on Fri Jun 21 17:40:01 2024
    Ansgar 🙀 writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    If we are talking about hypothetical ways upstream might nudge you
    into:

    No, that's not what Phil's talking about.

    Phil's talking about, for example, Russ's git-debrebase workflow,
    where the git is treesame to the source package *until Russ needs to
    diverge from upstream*.

    No sensible maintainer is going to adopt a workflow that falls apart
    the first time you want to carry a patch.

    There are other more subtle issues that might arise, depending on
    workflow, upstream practices, etc. etc. One of the things that we
    tag2upload proponents seem to be having difficulty getting across is
    just how complicated and diverse our existing workflows in Debian are.

    It's easy to imagine that everyone is doing roughly the same as you.
    But, they *really* aren't.

    But ...

    there is a large territory that requires arbitrary code execution
    as build time (say to instatiate d/control from a template) which
    neither proposal for tag2upload allows.

    There is no reason in principle why tag2upload couldn't support
    templating of d/control, provided that the templating doesn't involve
    executing arbitrary code and doesn't involve giant globs of
    language-specific processing. We'd want to define a templating
    arrangement that would be useable by multiple of the monorepo-based
    packaging teams. IHNI if that is feasible or not but it doesn't seem inherently impossible.

    This is an example of the kind of advancement that is enabled, at
    least theoretically, by centralising and standardising the building of
    source packages.

    (Currently, for those team monorepos, what's in the Debian archive
    *definitely* isn't the source code, IMO. It's the output of a
    mysterous transformation which takes as one of its inputs a git tree
    that - if you're lucky - is somewhere on salsa.)

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Russ Allbery on Fri Jun 21 17:40:02 2024
    Hi,

    On Fri, 2024-06-21 at 08:29 -0700, Russ Allbery wrote:
    Ansgar 🙀 <[email protected]> writes:
    And you do not have a working tree containing either the patched source that would allow computing a integrity hash using 3.0 (native) or
    separate debian/patches where 3.0 (quilt) would work?

    Wait, why would I ever want to upload a 3.0 (native) package for a
    non-native package with the tooling as it is today in Debian?

    As far as I understand this whole thread is about changing the tooling.

    If I did
    that *today*, which I thought was the context of the question, that would
    be a significant regression and I would lose functionality that I, and
    other people downstream of me, rely on.

    But to take the
    most obvious example, I rely on <https:/udd.debian.org/patches.cgi> to communicate with upstream about exactly what changes I'm applying to their code and allow them to easily pull those patches any time they want.

    Why do you point them to build artifacts instead of just the diff
    (including individual commits) between the upstream tree and Debian
    tree in Git?

    You
    would need to develop a replacement that worked with 3.0 (native) if you wanted to make this change in Debian.

    There are already multiple such: salsa.debian.org and possibly
    dgit.debian.org to name two of them.

    I would still like to understand how your packages would not work with
    the suggested integrity check. Could you give an example, possibly with
    a reference to a Git repository as well?

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Matthias Urlichs on Fri Jun 21 17:40:01 2024
    Hi,

    On Fri, 2024-06-21 at 17:24 +0200, Matthias Urlichs wrote:
    On 21.06.24 16:57, Ansgar 🙀 wrote:
    So your suggested method of measurement and the resulting 80% seem
    very
    questionable and only usable as a very generous upper boundary.

    You're right but AFAICT this can only happen when the two tags are consecutive, I spot-checked a couple of them to verify this.

    Excluding packages where this is the case drops the count to … 39.
    Plus
    26 for another 50.

    Thus, not *that* generous.

    I also wrote:

    | (Please also consider in your reply the suggested changes to make
    | hashing possible/easier...)

    Did you consider that in your new analysis? If yes, how?

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to [email protected] on Fri Jun 21 18:20:01 2024
    Ansgar 🙀 <[email protected]> writes:
    On Fri, 2024-06-21 at 16:55 +0200, Matthias Urlichs wrote:

    Umm, no. We're not dropping the check; we required a maintainer's
    signature before, and we still do so after. We just place a
    packaging-and-possibly-source-mangling server between A and B.

    So we drop the integrity check using the maintainer's signature in the archive...

    You do not now and never have had an integrity check that uses the
    maintainer's signature. The person signing the source package did not
    check its integrity, and therefore all the crypto and hashing in the world
    does not translate into an integrity check. You cannot create an
    integrity check out of thin air if nothing ever checked the integrity in
    the first place. This is Matthias's point.

    You can safely derive only two pieces of information from the maintainer signature on a package upload:

    1. The maintainer wants to upload this package with this version (intent).
    2. The maintainer thinks this source package represents their intent.

    Both of these are still true with tag2upload. The tag2upload Git tag
    signature includes metadata in which the maintainer clearly says "I want tag2upload to build the source package and I trust it to represent my
    intent."

    There is no integrity check on the contents of the source package, because
    the maintainer didn't make one. There will not be an integrity check on
    the contents of the Git tag either, because the maintainer didn't make
    one, although some integrity problems with the Git tag are going to be a
    lot easier to detect after the fact because of how Git works. (For
    example, some problems will be detectable by noticing that the Git tag
    does not correspond to any commit in the direct branch history of the
    relevant branch.)

    You don't even know that the maintainer built the source package on their
    own machine. Here is a thing someone could do today that dak would be perfectly happy with, but which would be worse than tag2upload in
    basically every respect:

    1. Set up a Salsa CI job to build a source package on tag push.
    2. Push an unsigned tag for a new Debian release to kick off that job.
    3. Download the resulting artifacts, sign them, and upload them.

    This trusts the Salsa Git repository, CI, and artifact store with all of
    their huge attack surface, loses the traceability to a signed Git tag, and loses any indication in the archive of how the package was built. And yet
    dak treats this as perfectly fine, because the dak security model is
    "blindly trust the uploader." tag2upload implements this workflow
    properly, closing multiple potential security vulnerabilities (and
    providing a much nicer UI), and yet you would reject its uploads because
    you're fixated on the maintainer signature as the only possible measure of integrity. Even though the maintainer signature does not and never has represented an integrity check, as I would hope that example makes
    obvious.

    You're not even trusting the maintainer to decide what constitutes an
    adequate check for their package. You blindly trust any decision that the maintainer makes provided that it's expressed in the form of a signature
    on a source package, but if the uploader says "I want to trust this piece
    of project infrastructure to do this for me," you're saying no, you're not allowed to do that.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to [email protected] on Fri Jun 21 18:30:01 2024
    Ansgar 🙀 <[email protected]> writes:
    On Fri, 2024-06-21 at 08:29 -0700, Russ Allbery wrote:

    Wait, why would I ever want to upload a 3.0 (native) package for a
    non-native package with the tooling as it is today in Debian?

    As far as I understand this whole thread is about changing the tooling.

    This whole thread is about deploying something that already works with our existing tooling and doesn't require boil-the-ocean changes to Debian infrastructure or workflows.

    Why do you point them to build artifacts instead of just the diff
    (including individual commits) between the upstream tree and Debian tree
    in Git?

    ...what? Because that's a godawful UI? Because there are lots of
    intermixed commits, some of which are to Debian files and some of which
    are to upstream files? Because it requires a whole bunch of Git knowledge
    to extract anything vaguely useful from that and how to do so depends on exactly what my workflow is? Because I want to use the same system that everyone else uses in Debian so that all any upstream, downstream, or
    person working on packages for another distro has to do is go to the
    package tracker for my package and click on the patches link?

    I would still like to understand how your packages would not work with
    the suggested integrity check. Could you give an example, possibly with
    a reference to a Git repository as well?

    https://tracker.debian.org/pkg/tf5

    See the "debian patches" link in the right sidebar.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Fri Jun 21 19:00:01 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------AvkXxQaKkW1tzbRJJrg0CmYW
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMjEuMDYuMjQgMTc6MzcsIEFuc2dhciDwn5mAIHdyb3RlOg0KPiBJIGFsc28gd3JvdGU6 DQo+DQo+IHwgKFBsZWFzZSBhbHNvIGNvbnNpZGVyIGluIHlvdXIgcmVwbHkgdGhlIHN1Z2dl c3RlZCBjaGFuZ2VzIHRvIG1ha2UNCj4gfCBoYXNoaW5nIHBvc3NpYmxlL2Vhc2llci4uLikN Cj4NCj4gRGlkIHlvdSBjb25zaWRlciB0aGF0IGluIHlvdXIgbmV3IGFuYWx5c2lzPyBJZiB5 ZXMsIGhvdz8NCg0KTm8sIGJ1dCBJIGp1c3QgY2hlY2tlZDogYW1vbmcgdGhlIG5ld2VzdCAy NSBwYWNrYWdlcyBpbiBicm93c2UuZGdpdC5kLm8sIA0KMTYgY29udGFpbiBhIGQvcGF0Y2hl cyBkaXJlY3RvcnkgYW5kIHdvdWxkIHRodXMgKHByZXN1bWFibHkpIGJlIG5vdCANCmVsaWdp YmxlIGZvciBjcmVhdGluZyB0aGUgaGFzaCBsb2NhbGx5Lg0KDQpUaGF0IG1pZ2h0IGJlIG92 ZXJseSBwZXNzaW1pc3RpYywgYnV0IGluIHRoYXQgY2FzZSBzb21lYm9keSBtb3JlIA0KY29u dmVyc2FudCB3aXRoIHRoZSBpbnRlcm5hbCB3b3JraW5ncyBvZiB2YXJpb3VzIGRnaXQgd29y a2Zsb3dzIHdvdWxkIA0KaGF2ZSB0byBvZmZlciBhIG1vcmUgc3RyaW5nZW50IGFuYWx5c2lz Lg0KDQotLSANCi0tIHJlZ2FyZHMNCi0tIA0KLS0gTWF0dGhpYXMgVXJsaWNocw0KDQo=

    --------------AvkXxQaKkW1tzbRJJrg0CmYW--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZ1rXwFAwAAAAAACgkQcs+OXiW0wpMy ExAA3go/8Ibw1g+Hv1Pknn9cjkgTcHE2mr7zZKETzJVujTFJzkgaAJbH/1NJmJ+ULnn4XoxJHd/a aIuPRwk0Kh+ncveUjfyQNYllZlr9/tG64d+97MDrd3P/lcps6eZzTSQG1BfrOTTKU1l+zUNLIl1+ XY+xhL1A/50gXgCEFcxcIRjLsfKJwFMibpqZAVNTbzkl5bEFqxtZ6/UG9jkzqGuR0nphbyZw5iNs vvgI1mRCvFBTvZ3/QgdbJd9bPFe3oymmTvEECgFyiWpVjraKc4Iz8BFbETjXxgwbju/2nioalXyi vX78wPrOfLqrR0JOciPDrLz7PyrU+o/AHO6qJPX/hZ0tnqqNJIEgjQwmy6MUvN4OlU115GwLcpev KLbxw1Kwa6vNPMFZztz1QtByiOxuXEbkymZwvB8Ppz2u/D6RRi/sRPVmZZomhXeJhwAfQYBUsuOG ymQBnKkaS+lcYlVRjuwF+gCtUIFX/VuZEtKvhfBRoRbGFYkDHlq1lrue4sOKqYUPH9/l/O4U+1vH w+i2EMRlwngTCqq96iuw2/HDA+N3Bx13pYxhfAde4KJ2b+JSKbgzcXWSOgWUgFECrf/JOS/S/AgZ //P+vgjdkKMCFzcBVOVEgLH3g2wSat6WhKJQ0HL/zA8hDgAN4sY1adYHfquR7E6WvOMz/u2Gih6c gX4=
    =MJj9
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Fri Jun 21 18:30:02 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------Is6MtbzgdYXGUCmjqAF19AXY
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMjEuMDYuMjQgMTc6MTQsIEFuc2dhciDwn5mAIHdyb3RlOg0KPiBBbmQgdGhhdCB3aWxs IHJlbWFpbiB0aGUgY2FzZTogZXZlbiB3aXRoIHRhZzJ1cGxvYWQgdGhlIG1haW50YWluZXIg d2lsbA0KPiBzaWduIHNvbWUgZGF0YSB0aGF0IHdhcyBnZW5lcmF0ZWQgYW5kIHNpZ25lZCBv biBhIHJhbmRvbSBtYWNoaW5lIHdpdGgNCj4gcmFuZG9tIGFuZCBwb3NzaWJseS1tYWxldm9s ZW50IHNvZnR3YXJlIHRoYXQgY291bGQgaGF2ZSBzaWxlbnRseQ0KPiByZXBsYWNlZCBhbnkg ZmlsZSBpdCB3YW50ZWQgdG8uLi4NCg0KVGhlIGtleXdvcmQgaGVyZSBpcyAic2lsZW50bHki LCB3aGljaCBpcyByYXRoZXIgZGlmZmljdWx0IGFuZCByZXF1aXJlcyBhIA0KZGVlcGx5LWNv bXByb21pc2VkIGNvcHkgb2YgZ2l0IGl0c2VsZiwgd2l0aCBhIGhlYXAgb2YgaW50cnVzaXZl IGNoYW5nZXMuIA0KVGhlIHJlYXNvbiBpcyB0aGF0IHRoZSBhdHRhY2tlciBuZWVkcyB0byBw ZXJtYW5lbnRseSBoaWRlIHRoZSBmYWN0IHRoYXQgDQp0aGUgY29tbWl0IGhpc3RvcnkgaW5j bHVkZXMgYSBjaGFuZ2UgdGhhdCB0aGV5IGRvbid0IHdhbnQgbWUgdG8gZmluZC4gDQpNb2Rp Znlpbmcgb25seSB0aGUgdmVyc2lvbiBwdXNoZWQgdG8gdGhlIGFyY2hpdmUgZG9lc24ndCB3 b3JrLCBJJ2QgDQpub3RpY2Ugd2hlbiBJIHB1c2ggYWdhaW4sIG9yIGV2ZW4gd2hlbiBJIG5l eHQgcnVuICJnaXQgc3RhdHVzIiAoc28gaW4gDQpmYWN0IHByZXR0eSBtdWNoIGltbWVkaWF0 ZWx5KS4NCg0KSSBkb24ndCBkb3VidCB0aGF0IHRoZXJlIGFyZSBwZW9wbGUgb3V0IHRoZXJl IHdobyBhcmUgY2FwYWJsZSBvZiBkb2luZyANCnRoYXQgYnV0IGl0J3MgZGVmaW5pdGVseSAq bXVjaCogbW9yZSBkaWZmaWN1bHQgdGhhbiBzdWJ2ZXJ0aW5nIGEgc291cmNlIA0KYnVpbGRl ciwgZXZlbiB3aXRob3V0IGNvbXByb21pc2luZyB0YXIgaXRzZWxmOiBzaW1wbHkgd2FpdCBm b3IgaXQgdG8gDQpzdGFydCwgcXVpY2tseSByZXBsYWNlIGEgZmlsZSB3aXRoIGEgY29tcHJv bWlzZWQgdmVyc2lvbiAvIGFkZCB0byANCmQvcGF0Y2ggLyB3aGF0ZXZlciwgd2FpdCBmb3Ig dGhlIGJ1aWxkZXIgdG8gZmluaXNoLCB1bmRvIHlvdXIgZXhwbG9pdC4gRG9uZS4NCg0KPiBB bmQgcGVvcGxlIGRvbid0IHdvcmsgb24gdGhlIHRyZWUgYWN0dWFsbHkgdXBsb2FkZWQgdG8g dGhlIGFyY2hpdmUNCg0KVGhleSBkbyB3b3JrIG9uIChhbmQgZXhhbWluZSB0aGUgaGlzdG9y eSBvZinCoCB0aGUgdHJlZSB0aGV5IGNsb25lIGZyb20gDQpTYWxzYSwgYW5kIHlvdSBjYW4g bWFjaGluZS12ZXJpZnkgdGhhdCB0aGF0J3MgdGhlIHNhbWUgYXMgdGhlIHRhZ2dlZCANCnRy ZWUgb24gZGdpdC5kLm8uDQoNCi0tIA0KLS0gcmVnYXJkcw0KLS0gDQotLSBNYXR0aGlhcyBV cmxpY2hzDQoNCg==

    --------------Is6MtbzgdYXGUCmjqAF19AXY--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZ1paMFAwAAAAAACgkQcs+OXiW0wpN2 Lw//Rp0TUNVGlyfcDsWXPxadRcPy9bXLtMEXcIB7c+j9FbjnkzIXLcl/w6/NnO9cZdmFTJHCzM4y Br0IlNW9QYBe4csMNtiibLm7MZxkIdnanPzbXPz1ZWwHJjkfxhRG2NL5uyG35bqzzu3NbttNDxAh fCNOJQpNzbBdYEeXeGOjAJzAYK8utsdMxY9RFavnaWcJ0gAaxKCygROTeMCpP6ZzMxnnTu1FGrm2 QZMpx5n5TgLJNNdseSLBeC4WbOX5NzqSLOIHJv2yoPYnIuacjndmzAKJ5LJqJIkV38mjMJ2H9iBR xjmZDYaIkurrNDweNvifV7ZzEzMsZQJ/0bnd2EiB5ITwnD7/d2EsRC8oiZ47Ko37Frj8yWpSKq1Y 0jzKCwQQvmBt2I8553OEp9Tapdtes8So8OFrqmisuqTD86ofnEvx1dMOpfmzRVQEU1DF3nHfFE2j 3B3MEFY3GYoThY8WDWenW0hzTs31AFFDM4bQdnUTsD9zgXAlAfMFDIvswnOGcMs5p26cdjwLzFEJ szgKejMZBs9huSbUDmZexwJXxdDpTsFweEnWftZqTsSjhUpC+9Q1G7Pr2laS2jURsfHNBuL9yFwQ WB+uLRkka7/tgvMt4SCkt/B2utwc2JO413wzOu0A0y0OiOQjGDWyMEbpPYGIvax3kidcyp5dpqGV VXE=
    =OMC3
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Russ Allbery on Fri Jun 21 19:20:01 2024
    Hi,

    On Fri, 2024-06-21 at 09:26 -0700, Russ Allbery wrote:
    Ansgar 🙀 <[email protected]> writes:

    I would still like to understand how your packages would not work with
    the suggested integrity check. Could you give an example, possibly with
    a reference to a Git repository as well?

    https://tracker.debian.org/pkg/tf5

    See the "debian patches" link in the right sidebar.

    The only published branch (debian/unstable) looks like it would be
    trivial to for git-debpush to compute an integrity hash as suggested
    using only a bit shell around Git commands (no dpkg, dgit or anything)?
    (AFAIU git-debpush would already check that patches apply cleanly here,
    so it could provide hashes of either patches-applied or patches-
    unapplied.)

    It's a classic 3.0 (quilt) package with a manually maintained patch
    queue that isn't magically assembled in any way (at least not in any
    way relevant to the published repository)?

    Could you point me a bit more into the direction of the problem? As I
    don't see it yet.

    And
    https://udd.debian.org/patches.cgi?src=tf5&version=5.0beta8-12
    vs
    https://salsa.debian.org/rra/tf5/-/tree/debian/unstable/debian/patches?ref_type=heads
    does not look too different either.

    I don't see why you couldn't point upstream there? There are no
    intermixed commits, some of which are to Debian files and some of which
    are to upstream files there? Nor does it require a whole bunch of Git
    knowledge to extract anything vaguely useful from that?

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Kitterman@21:1/5 to Russ Allbery on Fri Jun 21 19:20:01 2024
    On June 21, 2024 4:26:41 PM UTC, Russ Allbery <[email protected]> wrote:
    Ansgar 🙀 <[email protected]> writes:
    On Fri, 2024-06-21 at 08:29 -0700, Russ Allbery wrote:

    Wait, why would I ever want to upload a 3.0 (native) package for a
    non-native package with the tooling as it is today in Debian?

    As far as I understand this whole thread is about changing the tooling.

    This whole thread is about deploying something that already works with our >existing tooling and doesn't require boil-the-ocean changes to Debian >infrastructure or workflows.

    This whole thread is about a draft GR to override a FTP Master decision based on a claim that they had refused to engage with the tag2upload developers for years to explain their concerns or work on resolving them.

    None of that turned out to be accurate.

    Given that, perhaps debian-vote isn't the best place to do archive design work and we should stop and try to actually collaborate on an appropriate solution.

    Scott K

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Matthias Urlichs on Fri Jun 21 19:40:01 2024
    Hi,

    On Fri, 2024-06-21 at 18:42 +0200, Matthias Urlichs wrote:
    On 21.06.24 17:37, Ansgar 🙀 wrote:
    I also wrote:

    (Please also consider in your reply the suggested changes to make
    hashing possible/easier...)

    Did you consider that in your new analysis? If yes, how?

    No,

    Thanks for that confirmation.

    but I just checked: among the newest 25 packages in browse.dgit.d.o,
    16 contain a d/patches directory and would thus (presumably) be not
    eligible for creating the hash locally.

    I don't see why that would be the case in general...

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Scott Kitterman on Fri Jun 21 20:40:01 2024
    Scott Kitterman <[email protected]> writes:

    This whole thread is about a draft GR to override a FTP Master decision
    based on a claim that they had refused to engage with the tag2upload developers for years to explain their concerns or work on resolving
    them.

    None of that turned out to be accurate.

    tag2upload is still being blocked by the FTP team so far as I can tell (I
    don't understand if Joerg's last message changes this), and a GR is still
    the only way to unblock that work that I can see.

    It is true that we have now finally had the discussion, with actual
    engagement, that we needed to have. (And this is exactly why I am so in
    favor of draft GRs for controversial proposals. That final check is often
    so incredibly useful at uncovering communication problems and getting discussions to happen.)

    But so far, this has not resolved the problem that one team's work is
    being blocked by a delegate decision with no obvious path forward that
    achieves their goals. Maybe we will still be able to resolve this: for a
    brief moment, it looked like there was some movement, and then Ansgar
    walked it back. But I'm still willing to talk about that (and also
    because Joerg asked to keep talking about it for a bit longer).

    As things currently stand, though, a GR is still the only path forward.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to [email protected] on Fri Jun 21 20:50:02 2024
    Ansgar 🙀 <[email protected]> writes:

    The only published branch (debian/unstable) looks like it would be
    trivial to for git-debpush to compute an integrity hash as suggested
    using only a bit shell around Git commands (no dpkg, dgit or anything)? (AFAIU git-debpush would already check that patches apply cleanly here,
    so it could provide hashes of either patches-applied or patches-
    unapplied.)

    Oh! Well, that's certainly embarrassing. This is exactly what Ian was
    trying to tell me in the other thread, and I didn't understand what he was saying. I thought dgit plus git-debrebase deferred more work to the
    post-tag step than it actually does. I guess that shows you how much
    attention I pay to debian/patches when it's being tool-managed for me.

    So yes, you're right, the git-debrebase example is not nearly as
    interesting as I had thought because the tooling works differently than I
    had realized.

    I'm sorry for all the noise!

    That means I don't have a ready example for you. My packages all use git-debrebase these days. I have seen other discussions go by about
    workflows that require different types of transformations, but I did not
    retain the names of the source packages and my memory is not clear enough
    to throw up good search terms. Maybe someone else has a link for you.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Kitterman@21:1/5 to Russ Allbery on Fri Jun 21 21:00:01 2024
    On June 21, 2024 6:35:48 PM UTC, Russ Allbery <[email protected]> wrote:
    Scott Kitterman <[email protected]> writes:

    This whole thread is about a draft GR to override a FTP Master decision
    based on a claim that they had refused to engage with the tag2upload
    developers for years to explain their concerns or work on resolving
    them.

    None of that turned out to be accurate.

    tag2upload is still being blocked by the FTP team so far as I can tell (I >don't understand if Joerg's last message changes this), and a GR is still
    the only way to unblock that work that I can see.

    It is true that we have now finally had the discussion, with actual >engagement, that we needed to have. (And this is exactly why I am so in >favor of draft GRs for controversial proposals. That final check is often
    so incredibly useful at uncovering communication problems and getting >discussions to happen.)

    But so far, this has not resolved the problem that one team's work is
    being blocked by a delegate decision with no obvious path forward that >achieves their goals. Maybe we will still be able to resolve this: for a >brief moment, it looked like there was some movement, and then Ansgar
    walked it back. But I'm still willing to talk about that (and also
    because Joerg asked to keep talking about it for a bit longer).

    As things currently stand, though, a GR is still the only path forward.

    I don't think that every time an FTP Master makes a statement on a mailing list it should be considered a delegate's decision. I think that's only true if the tag2upload developer's view is that only deploying exactly what they have developed with no
    change is the only option.

    I would hope that we can be more collaborative than that in Debian.

    I get that there's a lot of frustration and impatience, but I think that is largely the result of misunderstanding and an absence of communication that was not understood to exist. I think it would be better to reset and actually have the conversation
    that was assumed to have happened before taking the step of a GR.

    I see broad agreement on the goals of tag2upload (at least to a certain level of detail) and I don't think there's any clear evidence that a solution that meets those goals while also addressing the FTP Master's concerns isn't possible.

    Scott K

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Scott Kitterman on Fri Jun 21 21:50:01 2024
    Scott Kitterman <[email protected]> writes:

    I think it would be better to reset and actually have the conversation
    that was assumed to have happened before taking the step of a GR.

    We're having that conversation right now. I see no reason to stop now
    that it's finally started in earnest unless it looks like it has concluded
    in an actual agreement, a delegate decision against tag2upload, or a
    pocket veto. In the last two cases, the obvious next step is a GR and I
    don't see a reason to wait.

    If people need some time to think, great, they can say so. The discussion
    is not on a clock yet; they can think while we're discussing.

    This is the soapbox that I climb onto whenever a GR is proposed, and I
    guess I need to climb onto it again. More fundamentally than my position
    on any given GR, I am on team closure. One of the worst and, I would
    argue, actually abusive things that Debian systematically does to people
    is string them along for long periods of time saying neither yes or no. I personally would rather be told "no" than "maybe" if the "maybe" involves staying in limbo for months or years.

    Obviously it's not my GR and I'm not going to make any of those decisions. Maybe the tag2upload maintainers would prefer "maybe" to "no" and that's
    their choice to make. But if it were me, I'd want this concluded here and
    now so that I can either deploy my thing or abandon it and find something
    else to do with my time and, more importantly, my emotional energy.

    We've just done a whole ton of work to reach a better shared understanding
    of all of the corners of the problem, and I for one have spent a truly
    absurd amount of time and energy over the past week trying to make the
    problem clear. It makes no sense to me, and I think would be actively
    cruel, to stop now and have to substantial amounts of that work all over
    again some time later. Debian is profligate in wasting the time and
    energy of its contributors already; we don't need to make it worse.

    I see broad agreement on the goals of tag2upload (at least to a certain
    level of detail)

    I would like to believe this, but I don't. The fundamental building block
    that FTP team did not allow in 2019, and is still not allowing right now
    as far as I can tell, is for Debian project infrastructure to build a non-trivial source package. We're still stuck on putting unjustifiable
    weight on a maintainer signature that isn't meaningful for the things that
    it's being used for.

    If they have changed their mind, great! Fantastic news. They need to say
    so. Until that happens, we keep talking. If the discussion stalls out
    with no movement from the FTP team, that amounts to a pocket veto whether there's a formal delegate decision or not.

    and I don't think there's any clear evidence that a solution that meets
    those goals while also addressing the FTP Master's concerns isn't
    possible.

    *Possible* is not the bar that I would use in voting in a GR. Lots of
    things are *possible* with computers that are clearly bad ideas, or that
    are so much work as to make them infeasible, or that are just an
    unjustifiable waste of other people's time.

    I am frequently told that Debian is a do-ocracy: the people who are
    willing to do the work have wide latitude over how that work is done. One
    of the implications of that is that delegates don't get to force other
    people to do their work in arbitrarily different ways just because they
    would personally like that better. There is an obligation that comes with
    the delegate position to only block things for clear and important reasons
    that matter, and to do that, one also has to be *correct*. If I make a delegate decision on an incorrect basis, I am wrong and I can and should
    be overridden.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Russ Allbery on Sat Jun 22 04:40:01 2024
    Hello,

    On Fri 21 Jun 2024 at 12:40pm -07, Russ Allbery wrote:

    This is the soapbox that I climb onto whenever a GR is proposed, and I
    guess I need to climb onto it again. More fundamentally than my position
    on any given GR, I am on team closure. One of the worst and, I would
    argue, actually abusive things that Debian systematically does to people
    is string them along for long periods of time saying neither yes or no. I personally would rather be told "no" than "maybe" if the "maybe" involves staying in limbo for months or years.

    Obviously it's not my GR and I'm not going to make any of those decisions. Maybe the tag2upload maintainers would prefer "maybe" to "no" and that's their choice to make. But if it were me, I'd want this concluded here and now so that I can either deploy my thing or abandon it and find something else to do with my time and, more importantly, my emotional energy.

    We've just done a whole ton of work to reach a better shared understanding
    of all of the corners of the problem, and I for one have spent a truly
    absurd amount of time and energy over the past week trying to make the problem clear. It makes no sense to me, and I think would be actively
    cruel, to stop now and have to substantial amounts of that work all over again some time later. Debian is profligate in wasting the time and
    energy of its contributors already; we don't need to make it worse.

    I am frequently told that Debian is a do-ocracy: the people who are
    willing to do the work have wide latitude over how that work is done. One
    of the implications of that is that delegates don't get to force other
    people to do their work in arbitrarily different ways just because they
    would personally like that better. There is an obligation that comes with the delegate position to only block things for clear and important reasons that matter, and to do that, one also has to be *correct*. If I make a delegate decision on an incorrect basis, I am wrong and I can and should
    be overridden.

    Very well said.

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Russ Allbery on Sat Jun 22 14:20:01 2024
    Russ Allbery writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    So yes, you're right, the git-debrebase example is not nearly as
    interesting as I had thought because the tooling works differently than I
    had realized.

    As ever, it's all more complicated than you thought (and than you now
    think). I'm going to give just a few examples of the frantic paddling
    that dgit is doing underneath the waterline. This is therefore an
    *extremely* long message.

    First, though, I want to summarise:

    In this message I discuss in some detail five packaging workflows.

    For the three current workflows I discuss their workings in some
    detail; I explain some of the wrinkles, anomalies and complications
    that dgit currently deals with, and that tag2upload takes care of.
    For the two future workflows - one near future, and one speculative -
    I sketch out what the support might look like.

    I also discuss my understanding of the alternative design proposed by
    some ftpmasters. In each case, the tag2upload design handles the
    situation well. In each case, the alternative design works
    significantly less well, or requires significantly more complexity in
    more places - usually both. In some cases the alternative design
    can't sensibly work at all.

    I want to emphasise that these are *examples*. I feel we have
    spent much of this thread (and much of previous conversations)
    playing whack-a-mole with "but you could fix that anomaly by doing
    X" and "you could handle that other sutation by doing Y". Where "X
    and "Y" are each not great, but perhaps might be tolerable, if they
    were the only limitation.

    So, yes, it is true, that in *some* of these cases, including
    perhaps many actual packages in practice, the alternativew design
    could be made to work. But the alternative design does *not* solve
    all the problems that tag2upload does, and the problems that it
    does solve it handles in a more complicated and ugly way, with more
    limitations.

    Taking this all together, the alternative proposal is sufficiently
    limited in scope, and poor in its outcomes, that it's not worth
    pursuing.


    Right then.


    1. git-debrebase:

    Firstly, this is one of the easier cases from tag2upload's point of
    view. git-debrebase is modern and git-based, so has fewer warts.

    It's true that git-debrebase can make patches.

    But, the calls to git-debrebase that you make as a maintainer do not
    make any patches in debian/patches. Indeed, usually, if git-debrebase
    finds anything in debian/patches, it simply deletes it all.

    What happens is that dgit has special knowledge about git-debrebase:
    it knows that git-debrebase can make patches. (This is actually there
    as an optimisation: git-debrebase can make patches much faster.)

    When you do `dgit push-source` (which is how git-debrebase users
    upload), dgit knows it needs to maybe make patches, because that's how
    a "3.0 (quilt)" source package works. This is the "quilt-fixup" step
    of uploading, which is what (for historical reasons) the source
    package canonicalisation is called.

    So iff you are using git-debrebase with "3.0 (quilt)", dgit uses
    git-debrebase to make the patches and commit them to your branch.

    However, you can also run `dgit push-source --split-view=always`.
    This is an alternative workflow. In that case, the synthetic git
    commits which introduce d/patches don't end up in your own maintainer
    git branch. (I'm not sure Russ knows this feature exists.) This mode
    is nicer because you don't get diff noise about changes to the
    completely autogenerated contents of d/patches. Specifically, without
    the split view, each upload introduces a bunch of patches onto the
    maintainer branch, which the next run of git-debrebase after the
    upload immediately deletes.

    So in that case the maintainer branch never has patches and isn't
    treesame to a "3.0 (quilt)" source package.

    Also! You can use git-debrebase with 1.0-with-diff, or with 1.0
    native. (I'm not sure Russ knows this, either.) This is often a nice
    way of working, for a small package which usually has an empty or tiny
    patch queue. If you do that then there are no patches, ever, just git
    commits and an output tarball. And, there's a wrinkle: you can't use git-debrebase with "3.0 (native)" because of a bug in dpkg-source [1].

    So whether there are patches depends on the maintainer workflow, the
    intended source package format, and the surrounding context (eg
    sponsorship), and they are made by dgit, which calls out to
    git-debrebase as an optimisation.


    Relationship to tag2upload:

    git-debpush and the tag2upload tag don't know anything about any of
    this chaos. git-debpush simply signs a tag saying "this git branch is
    in a format suitable for quilt fixup in linear patches mode".

    git-debpush has *no* code to deal with any of the above. All of this
    is left to the tag2upload service.

    With a git-based sponsorthip workflow, the sponsor may not need to
    learn git-debrebase. They can review the git *tree*, diffing it
    against the upstream (ideally, upstream's signed tag), and likewise
    they can diff it against the previous upload. They'll declare the
    nicely predictable "linear" workflow mode in their tag. They can be
    sure that the output source package will be precisely the code they've
    reviewed git.

    (git-debpush does have one piece of git-debrebase-specific knowledge -
    an overrideable sanity check to guard against a user error causing an
    anonalous branch state. It's 9 lines of code - and nothing to do
    with source pacakge construction or package contents. This sanity
    check is not an essential part of git-debpush, and another tag
    generation utility, or a human, could omit it.)


    ftpmaster's alternative design, AIUI:

    (Here I'm going to compare tag2upload with the alternative design
    where the uploader signature covers a manifest of all the files in the
    unpacked source package - ie, of the result of dpkg-source -x. The
    ftpmasters haven't produced a complete design, but I think I can infer
    the properties that a full proposal would have.)

    In this alternative design, software making an upload intent tag for a git-debrebase package would need code to generate the contents of debian/patches. Realistically, that means it needs a copy of
    git-debrebase.

    And, the person authorising the upload now needs to to learn about and
    run and trust git-debrebase, which in our design they often didn't.


    2. linear quilt mode, especially with NMUs

    I'm going to explain this in terms of git-based NMUs. Similar
    situations can arise in other situations, including certain (I think
    not widely used) maintainer workflows.

    When doing an NMU with git, you first obtain a suitable
    patches-applied git branch from somewhere. (Currently `dgit clone` is
    the best way to do that, but tag2upload will open up the
    possibility[2] of making it be just a `git clone` in the future.)

    You then make commit(s) representing your changes, and test them.
    (NB that testing them doesn't necessarily involve making a
    "3.0 (quilt)" source package. You can build binaries from git.)

    When you're happy, you file the NMUdiff bug report (you can use git-format-patch or git-diff for this), and you `dgit push-source`.
    Note that at no point have you done anything with d/patches.

    So at this stage, your git working tree has some applied patches in
    d/patches, plus also some changes that are only in git commits.

    dgit knows how to figure out *which* git commits need making into
    patches, which is a nontrivial problem. The basic algorithm is to
    calculate what the tree looks like if you take the orig tarball and
    apply the contents of debian/patches - that gives dgit the tree at the
    last upload. Then dgit walks backwards through the git history hoping
    to find a commit whose tree matches that last upload. Then it can
    walk forward again and make patches out of the commits.

    There's more. dgit wants to make patches that the NMU recipient won't
    object to. So, we can't just use gbp pq because some maintainers
    don't like its output and want the patches in closer to DEP-3 format. Therefore, dgit makes these patches by calling `dpkg-source --commit`
    with a stunt value of `EDITOR`.

    Again, all of this is only necessary with "3.0 (quilt)". It also
    depends on the archive contents - it's important to be using the orig
    tarball from the archive.

    Finally, did you know that dpkg-source and git can disagree about the
    meaning of patches? There are patches that dpkg-source can apply, but
    which git fails on. There are also patches that they *both* apply,
    but *disagree* about the meaning of! Real packages, including highly
    important core packges, are sometimes afflicted. dgit has code in it
    to deal with that too.


    Relationship to tag2upload:

    Once again, git-debpush and the tag2upload tag don't know anything
    about any of this chaos. git-debpush simply signs a tag saying "this
    git branch is in a format suitable for quilt fixup in linear patches
    mode".


    ftpmaster's alternative design, AIUI:

    In the alternative design it is probably not feasible to support NMUs
    of arbitrary "3.0 (quilt)" packages.

    Likewise maintainer workflows that rely on dgit's sophisticated git to
    quilt linearisation algorithm are also not supportable.


    3. gbp

    git-buildpackage and gbp pq, and its patches-unapplied branch format,
    are probably the most common workflow in Debian right now.

    With gbp pq, the maintainer's DEP-14 tag (the tag2upload tag) is on
    that unapplied branch. With a "3.0 (quilt)" source package, it is not actualliy strictly necessary to apply the patches to make the source
    package, since the applied form of the files is not directly
    represeented. Instead, dpkg-source applies the patches on extraction.

    But there is a wrinkle. gbp inherits a bug in dpkg-source[4]: if the maintainer has edited the upstream .gitignore, in their git
    representation, this is *not* represented in the source package
    generated by git-buildpackage. IMO this is a clear DFSG violation[5].

    If the maintainer uses `dgit push-source --quilt=gbp`, dgit will spot
    this situation and make an additional patch in debian/patches,
    representing the maintainer's edits to .gitignore. That patch appears
    only in the canonical git branch and the source package, not in the maintainer's view of debian/patches.


    How does this relate to tag2upload?

    The tag2upload git tag does not contain any detailed information about
    any of this. It simply specifies that the quilt mode `gbp` should be
    used. The tag2upload server does all the work.

    (git-debpush *does* contain an overrideable sanity check that upstream
    files match and the patches apply. Again, this is not an essential
    part of its functionality and another signing tool wouldn't need it.)


    ftpmaster's alternative design, AIUI:

    The alternative design I've been positing supposes including a
    manifest of the contents of the unpacked source package. Ie, patches
    applied.

    In that alternative design, any utility which wanted to make an upload
    intent tag would need to be able to apply the patches. The patch
    application code becomes an essential part of the tag generation
    software.

    Also, the tag generation utility would need to have special knowledge
    about .gitignore. There are two options here: (1) have code to find
    the upstream .gitignores, compare them with the maintainer's
    .gitignores, and generate a synthetic patch. Or, (2) find the
    upstream .gitignores and arrange to include the hashes of the upstream .gitignores rather than the maintainer's .gitignores in the manifest
    (which IMO violates the DFSG [5]). In either case the tag generation
    utility needs special knowledge about gbp's .gitignore behaviour. Or
    of course we could: (3) don't let maintainers edit or add .gitignore
    in the upstream part of the package.


    4. git-debcherry

    git-debcherry is an interesting git patch workflow utility. It is not currently supported by dgit, but that's not because it's impossible,
    or even particularly difficult. We just haven't got around to it. [6]

    I don't fully understand git-debcherry, but AIUI the basic principle
    is that it is a tool for constructing debian/patches based on a
    patches-applied maintainer branch. It has an interesting algorithm
    with some nice properties, including that it doesn't constrain the
    maintainer git branch structure.

    Only git-debcherry knows what patches it's going to produce, and
    it takes the orig tarball as an input.

    Support in dgit would be to have dgit call git-debcherry at an
    appropriate point in the source package construction (during what dgit
    calls "quilt fixup").


    Relationship to tag2upload:

    tag2upload doesn't support this yet, but it could do. We would add
    the support in dgit, and when that was deployed to the tag2upload
    server, git-debcherry would be useable with tag2upload right away.

    As with the other workflows, git-debpush wouldn't need any code
    specific to git-debcherrry. Like the other patches-applied workflows,
    the authorising uploader (eg, a sponsor) does not need to understand,
    or run, git-debcherry.


    ftpmaster's alternative design, AIUI:

    git-debcherry uses the orig tarball, so it couldn't be supported,
    since the uploading developer doesn't have any tarballs.

    It might be supportable if we also made changes to git-debcherry, to
    allow it to work off an upstream git tag instead.


    5. language team monorepos

    Several teams handling upstream language-specific package managers
    have a monorepo on salsa containing metadata and patches. I'm aware
    of at least Rust and Haskell working this way. The precise contents
    of the monorepo vary, and each team has team-specific tooling.

    The fragmentation is a problem, and the workflows can be very awkward. Typically .dscs are constructed on maintainer laptops using
    team-specific tooling, taking both the team monorepo and upstream
    artifacts as inputs.

    None of these are supported by `dgit push-source` right now. It would
    be nice to be able to improve this, by formalising and streamlining
    the conversion process including source package construction. I think
    that would be possible in principle, but the design space is large and
    as far as I'm aware there hasn't been any serious conversations,
    involving both source handling experts (like the dgit team) and
    multiple monorepo packaging teams, about common aspects of their
    workflows, differing requirements, etc.

    (I should say that at least for Rust, which I know very well, I have
    serious doubts as to whether the monorepo is the right approach, but
    that's a whole other can of worms.)


    Relationship to tag2upload:

    If we deploy tag2upload, we'll be greatly streamlining the usual
    uplaod case. This will increase the gap between the existing monorepo workflows on the one hand, and the majority of packages (which are
    supported by tag2upload) on the other hand.

    The potential gains from improving the monorepo workflows will be
    bigger, and also more evident to a wider set of people.

    In summary, supporting monorepo team(s) with more-git-based workflows
    is probably possible, in the medium to long term. I think it's likely
    to happen with tag2upload.


    ftpmaster's alternative design, AIUI:

    I think the alternative design couldn't ever handle multi-package
    monorepos in the style of the Rust or Haskell teams.



    Ian.


    Footnotes.


    [1] dpkg-source hates "3.0 (native)" with non-native version,
    despite TC request to please allow it:
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=737634#107

    [2] To support NMUs based on just "git clone" we'd need to start
    importing every non-git-based[3] .dsc into git, which isn't a sensible
    thing to do until the git repository and everything is scaled up due
    to git-based .dscs being more common, which will be an effect of
    tag2upload.

    [3] By "git-based" I mean that the .dsc tells you which git commit it
    was made from, and the git tags etc. tell you how. I don't mean to
    include ad-hoc source package construction from untraceable git trees
    using untrackedd software on maintainer laptops.

    [4] The dpkg-source bug about the .gitignore DFSG violation:
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=908747

    [5] Reading the bug report[4] it's clear that not everyone agrees that discarding our .gitignore changes is a DFSG violation. I find that
    position quite implausible but I'm hoping we don't need to resolve it
    here.

    [6] dgit feature request ticket "want dgit --quilt=debcherry"
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=930881


    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Ian Jackson on Sat Jun 22 19:10:01 2024
    Ian Jackson <[email protected]> writes:
    Russ Allbery writes ("Re: [RFC] General Resolution to deploy tag2upload"):

    So yes, you're right, the git-debrebase example is not nearly as
    interesting as I had thought because the tooling works differently than
    I had realized.

    As ever, it's all more complicated than you thought (and than you now
    think). I'm going to give just a few examples of the frantic paddling
    that dgit is doing underneath the waterline. This is therefore an *extremely* long message.

    This is fantastic, Ian. Thank you so much for writing all of this up.
    Entirely apart from the current debate, I learned a ton about Debian
    source packaging and workflows from this.

    However, you can also run `dgit push-source --split-view=always`. This
    is an alternative workflow. In that case, the synthetic git commits
    which introduce d/patches don't end up in your own maintainer git
    branch. (I'm not sure Russ knows this feature exists.) This mode is
    nicer because you don't get diff noise about changes to the completely autogenerated contents of d/patches. Specifically, without the split
    view, each upload introduces a bunch of patches onto the maintainer
    branch, which the next run of git-debrebase after the upload immediately deletes.

    Aha, this is the workflow that I mistakenly thought I was using because I
    had never checked. Thank you! Keeping the generated debian/patches/*
    files off of my development branch is exactly what I want, so I suspect
    this is the workflow that I want to be using and I should switch to it.

    I had always wondered what "split view" meant but had never taken the time
    to read the documentation properly and understand it.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Marco d'Itri@21:1/5 to [email protected] on Sat Jun 22 20:20:02 2024
    [email protected] wrote:

    In this message I discuss in some detail five packaging workflows.
    I am more familiar with the gbp patches-unapplied workflow: can you
    point us to some educationlly relevant example repositories using the git-debrebase workflows?
    (Maybe without dgit, to make things easier to understand.)

    [gbp]
    ftpmaster's alternative design, AIUI:

    The alternative design I've been positing supposes including a
    manifest of the contents of the unpacked source package. Ie, patches >applied.
    But why does it have to be patches-applied?
    Then both sides could easily (?) compute a canonical hash of the patches-unapplied git repositories, and it would still provide the same security properties.

    --
    ciao,
    Marco

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ian Jackson@21:1/5 to Marco d'Itri on Sun Jun 23 15:10:01 2024
    Marco d'Itri writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    [email protected] wrote:
    In this message I discuss in some detail five packaging workflows.

    I am more familiar with the gbp patches-unapplied workflow: can you
    point us to some educationlly relevant example repositories using the git-debrebase workflows?
    (Maybe without dgit, to make things easier to understand.)

    Russ can perhaps provide more examples, but src:xen is a complex one.
    https://salsa.debian.org/xen-team/debian-xen/

    I doubt anyone is using git-debrebase but not dgit. There would be no
    reason to do that. dgit push just makes things better, compared to
    the old dput-based approach.

    (xen security uploads aren't done with dgit because security.d.o
    doesn't support dgit, #1050143, but you won't see anything about that
    in git, really.)

    The alternative design I've been positing supposes including a
    manifest of the contents of the unpacked source package. Ie, patches >applied.

    But why does it have to be patches-applied?
    Then both sides could easily (?) compute a canonical hash of the patches-unapplied git repositories, and it would still provide the same security properties.

    This is a reasonable question, especially since the ftpmasters haven't
    really nailed down what precisely this manifest would be, so I had to
    make it up myself. So:

    I chose patches-applied as the comparator in my big writeup because patches-unapplied is even worse.

    If the manifest form is patches-unapplied, then all the
    patches-applied git workflows would have to *unapply* the patches to
    generate the manifest. That means *more* patch-wrangling, in more
    cases. The NMU case becomes particularly bad, because in the general
    case only dpkg-source knows how to apply patches; and even then I
    think it doesn't know how to *un*apply them; and, it wants a tarball.

    Also, it would mean that the same manifest could mean different
    unpacked trees depending on the source package format, which is super
    weird and confusing.

    Ian.

    --
    Ian Jackson <[email protected]> These opinions are my own.

    Pronouns: they/he. If I emailed you from @fyvzl.net or @evade.org.uk,
    that is a private address which bypasses my fierce spamfilter.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Simon Richter on Sun Jun 23 17:00:01 2024
    Simon Richter <[email protected]> writes:

    The difference is the expectation that the delegates will continue to
    perform this work and therefore need to deal with the long term
    impact. One-time contributions are welcomed as long as they are a net positive, but not all of them are, and some take up hundreds of hours of volunteer time several years down the line.

    Sure. I don't think anyone involved has ever intended for tag2upload to
    be a one-time contribution. It's an ongoing service and the developers
    have been clear that they intend to maintain and further improve it if it
    is deployed.

    Deploying tag2upload *as a service* is an ongoing commitment, which
    means creating a new delegation, or altering the scope of an existing
    one. We need to be explicit which one it is.

    I don't know what the general practice is for Debian project
    infrastructure. There isn't a separate delegation for the buildds, even
    though I don't believe they're run by the FTP team, and I don't think
    they're entirely covered by the DSA delegation. tag2upload is essentially
    a source package buildd, so however the buildds are handled might make
    sense, although I realize binary buildds are a bit more complicated since
    it's often different people per architecture.

    In other words, I'm not sure that "ongoing commitment" == "delegation"
    (either new or existing). I think there are lots of things in Debian that
    are ongoing commitments but not delegations. But I can also see the
    argument for considering that a bug and wanting a delegation for any new ongoing service.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Scott Kitterman on Sun Jun 23 17:50:01 2024
    Scott Kitterman <[email protected]> writes:

    First, as I understand the position of the FTP Masters involved in this discussion (for clarity, I'm a non-delegated member of the FTP Team
    (i.e. FTP Assistant)), their view is that determining if an upload is
    from a person authorized to upload to the Debian archive is a function
    that is within the scope of their delegated authority and the current tag2upload proposal takes over that function.

    As mentioned in the summary, I believe we've found a resolution to this
    problem provided that the FTP team is willing to implement the protocol I described in dak, which Ansgar seemed supportive of. That allows them to
    do both the authentication and authorization check directly on the Git tag signed by the uploader, which means the trust extended to tag2upload is
    then almost precisely equivalent to the trust extended to a binary buildd: start from an independently-verified maintainer-signed thing and produce a build artifact.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Kitterman@21:1/5 to All on Sun Jun 23 11:40:15 2024
    On Sunday, June 23, 2024 10:57:26 AM EDT Russ Allbery wrote:
    Simon Richter <[email protected]> writes:
    The difference is the expectation that the delegates will continue to perform this work and therefore need to deal with the long term
    impact. One-time contributions are welcomed as long as they are a net positive, but not all of them are, and some take up hundreds of hours of volunteer time several years down the line.

    Sure. I don't think anyone involved has ever intended for tag2upload to
    be a one-time contribution. It's an ongoing service and the developers
    have been clear that they intend to maintain and further improve it if it
    is deployed.

    Deploying tag2upload *as a service* is an ongoing commitment, which
    means creating a new delegation, or altering the scope of an existing
    one. We need to be explicit which one it is.

    I don't know what the general practice is for Debian project
    infrastructure. There isn't a separate delegation for the buildds, even though I don't believe they're run by the FTP team, and I don't think
    they're entirely covered by the DSA delegation. tag2upload is essentially
    a source package buildd, so however the buildds are handled might make
    sense, although I realize binary buildds are a bit more complicated since it's often different people per architecture.

    In other words, I'm not sure that "ongoing commitment" == "delegation" (either new or existing). I think there are lots of things in Debian that are ongoing commitments but not delegations. But I can also see the
    argument for considering that a bug and wanting a delegation for any new ongoing service.

    I think that misses some key points, although I mostly agree.

    Three thoughts:

    First, as I understand the position of the FTP Masters involved in this discussion (for clarity, I'm a non-delegated member of the FTP Team (i.e. FTP Assistant)), their view is that determining if an upload is from a person authorized to upload to the Debian archive is a function that is within the scope of their delegated authority and the current tag2upload proposal takes over that function.

    Second, whatever the current buildd's do, it's downstream of that decision, so not involved in the question of if a new upload is authorized or not. I don't think the buildd analogy is particularly helpful here.

    Third, even though the host that DAK runs on is DSA managed, DAK is not. It's maintained and developed by the FTP Team and that's an explicit part of the
    FTP Master's delegation. Assuming tag2upload is integrated into the package upload process, I think it is clear it will have to run on a DSA managed host, but that's a separate question from who will manage the tag2upload service.

    The idea what we would take something that's part of one team's delegated responsibility and move it elsewhere for some types of uploads without that also being subject to some form of DPL delegation seems wrong.

    Scott K

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEE53Kb/76FQA/u7iOxeNfe+5rVmvEFAmZ4Qd8ACgkQeNfe+5rV mvHBxg/+OkW0MH1/EqQbLmN4pZAPRNJnEM0Oz0a+NK3yk3kyKQMp3HIbEEfTUtrb 7FBiezZIBo7NB/Xs3lzbmgekMmRkBBWsi6AeNspwqp31KitmI6VMjDzcsjxWQwpV icOKMqQlWKaqPcVCVKF8SeQbaJANoWsQHe4cbEg4/ngn1bHNoxYUqyi9be7PKCQP QfBrGA7EXB4Nf/iUtIK/VD840+wLuwbBwMkRRvROm9SO3Kh38U89LK275285Li1v 4yDkzBT1egPJ3P8UDu6vtIywTCQGDXveMnGVd42ga3LQejH4VrO63IiQe+i91gyr LmY1I0/oCICrZpTpNjLVizz/O8AMQpyQuAYWMjCaEoSRzl8Vn4/HGkMVoNCmlv5j JgVUOVWgJ6EsQ1Ecy1uAhDcZmHICrYMZdZ8K28whVvm9y6wKsptXayP7CpnDkcB4 5OuBQRAs4htZPEuznb0T80nI+2xzzcxukprsub+cye4FavzMLdS8+X4gUfuXqywU o3U+VL9lYcbVW6uKN4fBOjKxLiglEfq8fzzJN32fwYl4Yn/NSs2TCm87AWCgWrJp cnhZkvo0Itmj5Xae+k9AfXJByBXeP6PTIgGtRTXXWSaY5gmVSzEThQIaIg471sSM Op11nhYTMVlEFJ5+K05wm+RmfM5zwnvj4x1xTzbVdUFyzzw+Ew8=
    =XFVI
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Kitterman@21:1/5 to All on Sun Jun 23 12:06:18 2024
    On Sunday, June 23, 2024 11:48:09 AM EDT Russ Allbery wrote:
    Scott Kitterman <[email protected]> writes:
    First, as I understand the position of the FTP Masters involved in this discussion (for clarity, I'm a non-delegated member of the FTP Team
    (i.e. FTP Assistant)), their view is that determining if an upload is
    from a person authorized to upload to the Debian archive is a function
    that is within the scope of their delegated authority and the current tag2upload proposal takes over that function.

    As mentioned in the summary, I believe we've found a resolution to this problem provided that the FTP team is willing to implement the protocol I described in dak, which Ansgar seemed supportive of. That allows them to
    do both the authentication and authorization check directly on the Git tag signed by the uploader, which means the trust extended to tag2upload is
    then almost precisely equivalent to the trust extended to a binary buildd: start from an independently-verified maintainer-signed thing and produce a build artifact.

    I will confess having trouble keeping track of all the back and forth. After that, it was my impression that the press was on to deploy as is.

    Regardless, I think the major point is that running on a DSA managed host doesn't necessarily equate to DSA running the service. I think who is going
    to run the tag2upload service and if some delegation for doing so is appropriate are both questions that aren't answered by DSA will run the host.

    Scott K
    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEE53Kb/76FQA/u7iOxeNfe+5rVmvEFAmZ4R/oACgkQeNfe+5rV mvFWIBAAr1LgNKrFbymhk4k653YjGi5wBedE624xWkfQ8LUDq9TPS8SeS23OXt8P 1VtumsRhuQVnEMToAJASeP8NTfeV+XKEwcDHK763/nYG8asYRHaEIbRUYAOQXjLh i5JiUcdVSgUQV4SjYznd7EzI6MWNeliABCQrV7Zdg/xclSZIfEpD4ECk6SEdg1q1 FEIP4QjUsCcbMQPZbc0KLqbgo7bXM2nSox/HWyK7w7ilsnREOSp+zNllCu51hVv6 d9AogcU/s0osgy2jxWxME5vvbwzdfe2QIOUQ3IAd6BTHkt52OGEQzU2QWlwwA1o0 TEkNICLft2wSbgt1zGU8YjvyX5OQ/T5wsim3ih7VRXUkSNU3GT0e4oapxzA6hnsY fa0+atmdfCFC60yCm99DoYy7G3ZKWqR0K0k5ETD9nXsjcWCmPj9HnSi/Ki4AmXpk 6SLyoAG9hDZik19HJXQoqFICWblAABwLRsBfaaF4nj6Xd7dBLjWm5Ir9NNnMaKQH lsBtFcXK/ynUnaFu/Rx0kEHlla4eeYfiKiUNSMp9na6vBsS1R4gaTLDlbBihUdMR ZhxQ4QHbxEg4kT1iOtapyiNguBD6TI1A+WlA6EqL13/0mEsQl1wkXSEpD9aWqPbR lHGcUYqqNz2taYun7jlqy2gYCAs2E69aM5QBYM8s8ko76zOrGeU=
    =/Mv6
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Scott Kitterman on Sun Jun 23 19:20:01 2024
    Scott Kitterman <[email protected]> writes:
    On Sunday, June 23, 2024 11:48:09 AM EDT Russ Allbery wrote:

    As mentioned in the summary, I believe we've found a resolution to this
    problem provided that the FTP team is willing to implement the protocol
    I described in dak, which Ansgar seemed supportive of. That allows
    them to do both the authentication and authorization check directly on
    the Git tag signed by the uploader, which means the trust extended to
    tag2upload is then almost precisely equivalent to the trust extended to
    a binary buildd: start from an independently-verified
    maintainer-signed thing and produce a build artifact.

    I will confess having trouble keeping track of all the back and forth.
    After that, it was my impression that the press was on to deploy as is.

    So far as I know, no one in this discussion has ever asked for the FTP
    team to deploy tag2upload. The only hard request of the FTP team is to
    not block uploads made with it. If the FTP team refuses to do any work whatsoever on anything related to tag2upload, it is still possible to
    deploy it (with some assistance from other teams such as DSA, of course).

    There are some very obvious and relatively minor changes to dak that would
    make Debian as a whole more secure and that I would hope the FTP team
    would be willing to make, such as a separate keyring for tag2upload that
    only allows source packages similar to the separate keyring for buildds
    that only allows binary packages. One of them is to allow tag2upload
    uploads to contain an additional file holding the original signed Git tag,
    and then dak can choose to repeat the authentication and authorization
    checks on that tag, verify that the fields in the *.dsc match the tag,
    etc. tag2upload can be deployed without those changes, but it would be
    better if those changes were also made.

    If FTP team is willing to incorporate those changes into dak but doesn't
    want to write them, I am sure that we can find volunteers to do so. That volunteer might be me, for example; implementing something practical would
    be a nice break from arguing about things.

    Regardless, I think the major point is that running on a DSA managed
    host doesn't necessarily equate to DSA running the service.

    Yes, I think everyone agrees with this and no one expected DSA to run the service. Maybe I'm wrong, in which case someone please correct me.
    Sorting out exactly what "run" means and how labor is divided is something
    that I assumed they would work out with DSA once there was a path forward
    for deploying the service.

    I personally don't know what the standard model for Debian infrastructure services is, but I believe Ian has already been through this process with
    the dgit-repos service and knows how it works.

    I think who is going to run the tag2upload service and if some
    delegation for doing so is appropriate are both questions that aren't answered by DSA will run the host.

    I believe the answer to who is going to run the tag2upload service is Ian
    and Sean.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Kitterman@21:1/5 to All on Sun Jun 23 13:42:38 2024
    On Sunday, June 23, 2024 1:16:38 PM EDT Russ Allbery wrote:
    Scott Kitterman <[email protected]> writes:
    On Sunday, June 23, 2024 11:48:09 AM EDT Russ Allbery wrote:
    As mentioned in the summary, I believe we've found a resolution to this
    problem provided that the FTP team is willing to implement the protocol
    I described in dak, which Ansgar seemed supportive of. That allows
    them to do both the authentication and authorization check directly on
    the Git tag signed by the uploader, which means the trust extended to
    tag2upload is then almost precisely equivalent to the trust extended to
    a binary buildd: start from an independently-verified
    maintainer-signed thing and produce a build artifact.

    I will confess having trouble keeping track of all the back and forth. After that, it was my impression that the press was on to deploy as is.

    So far as I know, no one in this discussion has ever asked for the FTP
    team to deploy tag2upload. The only hard request of the FTP team is to
    not block uploads made with it. If the FTP team refuses to do any work whatsoever on anything related to tag2upload, it is still possible to
    deploy it (with some assistance from other teams such as DSA, of course).

    There are some very obvious and relatively minor changes to dak that would make Debian as a whole more secure and that I would hope the FTP team
    would be willing to make, such as a separate keyring for tag2upload that
    only allows source packages similar to the separate keyring for buildds
    that only allows binary packages. One of them is to allow tag2upload
    uploads to contain an additional file holding the original signed Git tag, and then dak can choose to repeat the authentication and authorization
    checks on that tag, verify that the fields in the *.dsc match the tag,
    etc. tag2upload can be deployed without those changes, but it would be better if those changes were also made.

    If FTP team is willing to incorporate those changes into dak but doesn't
    want to write them, I am sure that we can find volunteers to do so. That volunteer might be me, for example; implementing something practical would
    be a nice break from arguing about things.

    Regardless, I think the major point is that running on a DSA managed
    host doesn't necessarily equate to DSA running the service.

    Yes, I think everyone agrees with this and no one expected DSA to run the service. Maybe I'm wrong, in which case someone please correct me.
    Sorting out exactly what "run" means and how labor is divided is something that I assumed they would work out with DSA once there was a path forward
    for deploying the service.

    I personally don't know what the standard model for Debian infrastructure services is, but I believe Ian has already been through this process with
    the dgit-repos service and knows how it works.

    I think who is going to run the tag2upload service and if some
    delegation for doing so is appropriate are both questions that aren't answered by DSA will run the host.

    I believe the answer to who is going to run the tag2upload service is Ian
    and Sean.

    Thanks. I guess I misunderstood the buildd analogy. I appreciate the clarification.

    Scott K

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEE53Kb/76FQA/u7iOxeNfe+5rVmvEFAmZ4Xo4ACgkQeNfe+5rV mvEB6RAAyc5MCj8uQ/sw+5c/n51H+7cdoyx1/NoKDmW8GxsE2Q9oAZLLfEY+gJLM zyU+6Lxl3XDyYHqiDwYnAj3mmQEtuYaHK3ePwJViFHLHuFNyhbRLHdMIT3MlwF7z /C9UwplN7H38asrOWm+dX/Rv2EpXeqWtcy72PEyvgMkkubBLoCLY9c1iVNh1N2pO MP90dNvrwq6kiSGMfOkv9Yh1f/gPal8zC4/UG90ch6oN70+aeG9K2pJVILziQrOT WQ/yvPHyHlXUZ8WeJp47ZITJY6kI/E9NMaCd9jVZhRQzdSApgM1XkzM/Kp4v2xEE Vqo/I5Wg3D94epPdiU6+Em5OFbOTuh/dX3WyCotemI1dF1B5jY2FRdSLn4VZIKAy eVttvggyG5hez1xKrOo7disjCLIa0hpXz+ei5rlKS/SA8jDn9lRT57doLq40aU1G WKvwkzHxpZ158pGB2DESwx5LkAW+gxIQz8EHubHqFIeJi8JXBci1J0oLfM5rH/hp EIMkiA1YvKE7OsqXUCKHYLjCmw1rzHeJ8DB1RUkxpJnEwHsN17srvg4/J3yI9aqz MYP+bzsxmXfbVJEVlKqqYifF4jZ/2raaUsae5kcelKRem2XvngFx67irmkz5uMl1 xySCNEIezpmn8e+3erfyLxzVYgTlIYgVrkTjFD1gNvPpRptzCcs=
    =Zx+E
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Ian Jackson on Mon Jun 24 10:20:01 2024
    Ansgar, Joerg,

    Discussion has died down without a resolution of our impasse, but Ian
    sent a very long message, so perhaps you are working through it.

    Could you let me know if you are still working on further responses, and
    if so, roughly how long you think you need?

    Thanks.

    On Sat 22 Jun 2024 at 01:18pm +01, Ian Jackson wrote:

    Russ Allbery writes ("Re: [RFC] General Resolution to deploy tag2upload"):
    So yes, you're right, the git-debrebase example is not nearly as
    interesting as I had thought because the tooling works differently than I
    had realized.

    As ever, it's all more complicated than you thought (and than you now
    think). I'm going to give just a few examples of the frantic paddling
    that dgit is doing underneath the waterline. This is therefore an *extremely* long message.

    First, though, I want to summarise:

    In this message I discuss in some detail five packaging workflows.

    For the three current workflows I discuss their workings in some
    detail; I explain some of the wrinkles, anomalies and complications
    that dgit currently deals with, and that tag2upload takes care of.
    For the two future workflows - one near future, and one speculative -
    I sketch out what the support might look like.

    I also discuss my understanding of the alternative design proposed by
    some ftpmasters. In each case, the tag2upload design handles the
    situation well. In each case, the alternative design works
    significantly less well, or requires significantly more complexity in
    more places - usually both. In some cases the alternative design
    can't sensibly work at all.

    I want to emphasise that these are *examples*. I feel we have
    spent much of this thread (and much of previous conversations)
    playing whack-a-mole with "but you could fix that anomaly by doing
    X" and "you could handle that other sutation by doing Y". Where "X
    and "Y" are each not great, but perhaps might be tolerable, if they
    were the only limitation.

    So, yes, it is true, that in *some* of these cases, including
    perhaps many actual packages in practice, the alternativew design
    could be made to work. But the alternative design does *not* solve
    all the problems that tag2upload does, and the problems that it
    does solve it handles in a more complicated and ugly way, with more
    limitations.

    Taking this all together, the alternative proposal is sufficiently
    limited in scope, and poor in its outcomes, that it's not worth
    pursuing.


    Right then.


    1. git-debrebase:

    Firstly, this is one of the easier cases from tag2upload's point of
    view. git-debrebase is modern and git-based, so has fewer warts.

    It's true that git-debrebase can make patches.

    But, the calls to git-debrebase that you make as a maintainer do not
    make any patches in debian/patches. Indeed, usually, if git-debrebase
    finds anything in debian/patches, it simply deletes it all.

    What happens is that dgit has special knowledge about git-debrebase:
    it knows that git-debrebase can make patches. (This is actually there
    as an optimisation: git-debrebase can make patches much faster.)

    When you do `dgit push-source` (which is how git-debrebase users
    upload), dgit knows it needs to maybe make patches, because that's how
    a "3.0 (quilt)" source package works. This is the "quilt-fixup" step
    of uploading, which is what (for historical reasons) the source
    package canonicalisation is called.

    So iff you are using git-debrebase with "3.0 (quilt)", dgit uses git-debrebase to make the patches and commit them to your branch.

    However, you can also run `dgit push-source --split-view=always`.
    This is an alternative workflow. In that case, the synthetic git
    commits which introduce d/patches don't end up in your own maintainer
    git branch. (I'm not sure Russ knows this feature exists.) This mode
    is nicer because you don't get diff noise about changes to the
    completely autogenerated contents of d/patches. Specifically, without
    the split view, each upload introduces a bunch of patches onto the
    maintainer branch, which the next run of git-debrebase after the
    upload immediately deletes.

    So in that case the maintainer branch never has patches and isn't
    treesame to a "3.0 (quilt)" source package.

    Also! You can use git-debrebase with 1.0-with-diff, or with 1.0
    native. (I'm not sure Russ knows this, either.) This is often a nice
    way of working, for a small package which usually has an empty or tiny
    patch queue. If you do that then there are no patches, ever, just git commits and an output tarball. And, there's a wrinkle: you can't use git-debrebase with "3.0 (native)" because of a bug in dpkg-source [1].

    So whether there are patches depends on the maintainer workflow, the
    intended source package format, and the surrounding context (eg
    sponsorship), and they are made by dgit, which calls out to
    git-debrebase as an optimisation.


    Relationship to tag2upload:

    git-debpush and the tag2upload tag don't know anything about any of
    this chaos. git-debpush simply signs a tag saying "this git branch is
    in a format suitable for quilt fixup in linear patches mode".

    git-debpush has *no* code to deal with any of the above. All of this
    is left to the tag2upload service.

    With a git-based sponsorthip workflow, the sponsor may not need to
    learn git-debrebase. They can review the git *tree*, diffing it
    against the upstream (ideally, upstream's signed tag), and likewise
    they can diff it against the previous upload. They'll declare the
    nicely predictable "linear" workflow mode in their tag. They can be
    sure that the output source package will be precisely the code they've reviewed git.

    (git-debpush does have one piece of git-debrebase-specific knowledge -
    an overrideable sanity check to guard against a user error causing an anonalous branch state. It's 9 lines of code - and nothing to do
    with source pacakge construction or package contents. This sanity
    check is not an essential part of git-debpush, and another tag
    generation utility, or a human, could omit it.)


    ftpmaster's alternative design, AIUI:

    (Here I'm going to compare tag2upload with the alternative design
    where the uploader signature covers a manifest of all the files in the unpacked source package - ie, of the result of dpkg-source -x. The ftpmasters haven't produced a complete design, but I think I can infer
    the properties that a full proposal would have.)

    In this alternative design, software making an upload intent tag for a git-debrebase package would need code to generate the contents of debian/patches. Realistically, that means it needs a copy of
    git-debrebase.

    And, the person authorising the upload now needs to to learn about and
    run and trust git-debrebase, which in our design they often didn't.


    2. linear quilt mode, especially with NMUs

    I'm going to explain this in terms of git-based NMUs. Similar
    situations can arise in other situations, including certain (I think
    not widely used) maintainer workflows.

    When doing an NMU with git, you first obtain a suitable
    patches-applied git branch from somewhere. (Currently `dgit clone` is
    the best way to do that, but tag2upload will open up the
    possibility[2] of making it be just a `git clone` in the future.)

    You then make commit(s) representing your changes, and test them.
    (NB that testing them doesn't necessarily involve making a
    "3.0 (quilt)" source package. You can build binaries from git.)

    When you're happy, you file the NMUdiff bug report (you can use git-format-patch or git-diff for this), and you `dgit push-source`.
    Note that at no point have you done anything with d/patches.

    So at this stage, your git working tree has some applied patches in d/patches, plus also some changes that are only in git commits.

    dgit knows how to figure out *which* git commits need making into
    patches, which is a nontrivial problem. The basic algorithm is to
    calculate what the tree looks like if you take the orig tarball and
    apply the contents of debian/patches - that gives dgit the tree at the
    last upload. Then dgit walks backwards through the git history hoping
    to find a commit whose tree matches that last upload. Then it can
    walk forward again and make patches out of the commits.

    There's more. dgit wants to make patches that the NMU recipient won't
    object to. So, we can't just use gbp pq because some maintainers
    don't like its output and want the patches in closer to DEP-3 format. Therefore, dgit makes these patches by calling `dpkg-source --commit`
    with a stunt value of `EDITOR`.

    Again, all of this is only necessary with "3.0 (quilt)". It also
    depends on the archive contents - it's important to be using the orig
    tarball from the archive.

    Finally, did you know that dpkg-source and git can disagree about the
    meaning of patches? There are patches that dpkg-source can apply, but
    which git fails on. There are also patches that they *both* apply,
    but *disagree* about the meaning of! Real packages, including highly important core packges, are sometimes afflicted. dgit has code in it
    to deal with that too.


    Relationship to tag2upload:

    Once again, git-debpush and the tag2upload tag don't know anything
    about any of this chaos. git-debpush simply signs a tag saying "this
    git branch is in a format suitable for quilt fixup in linear patches
    mode".


    ftpmaster's alternative design, AIUI:

    In the alternative design it is probably not feasible to support NMUs
    of arbitrary "3.0 (quilt)" packages.

    Likewise maintainer workflows that rely on dgit's sophisticated git to
    quilt linearisation algorithm are also not supportable.


    3. gbp

    git-buildpackage and gbp pq, and its patches-unapplied branch format,
    are probably the most common workflow in Debian right now.

    With gbp pq, the maintainer's DEP-14 tag (the tag2upload tag) is on
    that unapplied branch. With a "3.0 (quilt)" source package, it is not actualliy strictly necessary to apply the patches to make the source
    package, since the applied form of the files is not directly
    represeented. Instead, dpkg-source applies the patches on extraction.

    But there is a wrinkle. gbp inherits a bug in dpkg-source[4]: if the maintainer has edited the upstream .gitignore, in their git
    representation, this is *not* represented in the source package
    generated by git-buildpackage. IMO this is a clear DFSG violation[5].

    If the maintainer uses `dgit push-source --quilt=gbp`, dgit will spot
    this situation and make an additional patch in debian/patches,
    representing the maintainer's edits to .gitignore. That patch appears
    only in the canonical git branch and the source package, not in the maintainer's view of debian/patches.


    How does this relate to tag2upload?

    The tag2upload git tag does not contain any detailed information about
    any of this. It simply specifies that the quilt mode `gbp` should be
    used. The tag2upload server does all the work.

    (git-debpush *does* contain an overrideable sanity check that upstream
    files match and the patches apply. Again, this is not an essential
    part of its functionality and another signing tool wouldn't need it.)


    ftpmaster's alternative design, AIUI:

    The alternative design I've been positing supposes including a
    manifest of the contents of the unpacked source package. Ie, patches applied.

    In that alternative design, any utility which wanted to make an upload
    intent tag would need to be able to apply the patches. The patch
    application code becomes an essential part of the tag generation
    software.

    Also, the tag generation utility would need to have special knowledge
    about .gitignore. There are two options here: (1) have code to find
    the upstream .gitignores, compare them with the maintainer's
    .gitignores, and generate a synthetic patch. Or, (2) find the
    upstream .gitignores and arrange to include the hashes of the upstream .gitignores rather than the maintainer's .gitignores in the manifest
    (which IMO violates the DFSG [5]). In either case the tag generation
    utility needs special knowledge about gbp's .gitignore behaviour. Or
    of course we could: (3) don't let maintainers edit or add .gitignore
    in the upstream part of the package.


    4. git-debcherry

    git-debcherry is an interesting git patch workflow utility. It is not currently supported by dgit, but that's not because it's impossible,
    or even particularly difficult. We just haven't got around to it. [6]

    I don't fully understand git-debcherry, but AIUI the basic principle
    is that it is a tool for constructing debian/patches based on a patches-applied maintainer branch. It has an interesting algorithm
    with some nice properties, including that it doesn't constrain the
    maintainer git branch structure.

    Only git-debcherry knows what patches it's going to produce, and
    it takes the orig tarball as an input.

    Support in dgit would be to have dgit call git-debcherry at an
    appropriate point in the source package construction (during what dgit
    calls "quilt fixup").


    Relationship to tag2upload:

    tag2upload doesn't support this yet, but it could do. We would add
    the support in dgit, and when that was deployed to the tag2upload
    server, git-debcherry would be useable with tag2upload right away.

    As with the other workflows, git-debpush wouldn't need any code
    specific to git-debcherrry. Like the other patches-applied workflows,
    the authorising uploader (eg, a sponsor) does not need to understand,
    or run, git-debcherry.


    ftpmaster's alternative design, AIUI:

    git-debcherry uses the orig tarball, so it couldn't be supported,
    since the uploading developer doesn't have any tarballs.

    It might be supportable if we also made changes to git-debcherry, to
    allow it to work off an upstream git tag instead.


    5. language team monorepos

    Several teams handling upstream language-specific package managers
    have a monorepo on salsa containing metadata and patches. I'm aware
    of at least Rust and Haskell working this way. The precise contents
    of the monorepo vary, and each team has team-specific tooling.

    The fragmentation is a problem, and the workflows can be very awkward. Typically .dscs are constructed on maintainer laptops using
    team-specific tooling, taking both the team monorepo and upstream
    artifacts as inputs.

    None of these are supported by `dgit push-source` right now. It would
    be nice to be able to improve this, by formalising and streamlining
    the conversion process including source package construction. I think
    that would be possible in principle, but the design space is large and
    as far as I'm aware there hasn't been any serious conversations,
    involving both source handling experts (like the dgit team) and
    multiple monorepo packaging teams, about common aspects of their
    workflows, differing requirements, etc.

    (I should say that at least for Rust, which I know very well, I have
    serious doubts as to whether the monorepo is the right approach, but
    that's a whole other can of worms.)


    Relationship to tag2upload:

    If we deploy tag2upload, we'll be greatly streamlining the usual
    uplaod case. This will increase the gap between the existing monorepo workflows on the one hand, and the majority of packages (which are
    supported by tag2upload) on the other hand.

    The potential gains from improving the monorepo workflows will be
    bigger, and also more evident to a wider set of people.

    In summary, supporting monorepo team(s) with more-git-based workflows
    is probably possible, in the medium to long term. I think it's likely
    to happen with tag2upload.


    ftpmaster's alternative design, AIUI:

    I think the alternative design couldn't ever handle multi-package
    monorepos in the style of the Rust or Haskell teams.



    Ian.


    Footnotes.


    [1] dpkg-source hates "3.0 (native)" with non-native version,
    despite TC request to please allow it:
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=737634#107

    [2] To support NMUs based on just "git clone" we'd need to start
    importing every non-git-based[3] .dsc into git, which isn't a sensible
    thing to do until the git repository and everything is scaled up due
    to git-based .dscs being more common, which will be an effect of
    tag2upload.

    [3] By "git-based" I mean that the .dsc tells you which git commit it
    was made from, and the git tags etc. tell you how. I don't mean to
    include ad-hoc source package construction from untraceable git trees
    using untrackedd software on maintainer laptops.

    [4] The dpkg-source bug about the .gitignore DFSG violation:
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=908747

    [5] Reading the bug report[4] it's clear that not everyone agrees that discarding our .gitignore changes is a DFSG violation. I find that
    position quite implausible but I'm hoping we don't need to resolve it
    here.

    [6] dgit feature request ticket "want dgit --quilt=debcherry"
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=930881

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Sean Whitton on Thu Jun 27 10:00:01 2024
    Hi,

    On Mon, 2024-06-24 at 16:12 +0800, Sean Whitton wrote:
    Ansgar, Joerg,

    Discussion has died down without a resolution of our impasse, but Ian
    sent a very long message, so perhaps you are working through it.

    Could you let me know if you are still working on further responses,
    and if so, roughly how long you think you need?

    As I guess you are aware (given you are on #-ftp-private), I haven't
    found time to read recent mails. In particular I haven't had time to
    find anything after the discussion with Russ, leading to having no idea
    why a checksum as suggested isn't possible (it would work trivially for
    the counterexamples given...).

    I would still be interested in understanding this and seeing if one
    could find a solution (as I guess you are also aware of for the same
    reason). Sadly tag2upload developers have refused communication for
    several years prior to know, despite recommendations form multiple
    parties (including multiple DPLs AFAIU) to do so. Of course we cannot
    force developers to do so if they do not want to.

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Thu Jun 27 14:10:02 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------fgS2Unxosi9NI58YDwmIDgRm
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMjcuMDYuMjQgMDk6NTAsIEFuc2dhciDwn5mAIHdyb3RlOg0KPiBsZWFkaW5nIHRvIGhh dmluZyBubyBpZGVhDQo+IHdoeSBhIGNoZWNrc3VtIGFzIHN1Z2dlc3RlZCBpc24ndCBwb3Nz aWJsZSAoaXQgd291bGQgd29yayB0cml2aWFsbHkgZm9yDQo+IHRoZSBjb3VudGVyZXhhbXBs ZXMgZ2l2ZW4uLi4pLg0KDQpJwqAgYXNzdW1lIHRoYXQgImNoZWNrc3VtIiByZWZlcnMgdG8g c29tZXRoaW5nIA0KbGlrZWh0dHBzOi8vcGtnLmdvLmRldi9nb2xhbmcub3JnL3gvbW9kL3N1 bWRiL2Rpcmhhc2gjSGFzaDEgd2hpY2ggeW91IA0KcmVmZXJyZWQgdG8gaW4gYSBtZXNzYWdl IG9uIDA2LTE5Lg0KDQpRdWVzdGlvbjogSG93IGNhbiB0aGUgdGFnMnVwbG9hZCBjbGllbnQs IHdoaWNoIGlzIG5vdCBnb2luZyB0byBydW4gZGdpdCANCmJ5IGRlc2lnbiwgYWRkIHRoZSBo YXNoIG9mIGRnaXQncyBvdXRwdXQgdG8gdGhlIHRhZyBpdCBjcmVhdGVzPw0KDQpBbnN3ZXI6 IGl0J3MgaW1wb3NzaWJsZSB0byBkbyB0aGF0LiBUaGlzIGlzIHRoZSB3aG9sZSBwb2ludCBv ZiB0YWcydXBsb2FkLg0KDQpQbGVhc2UgZW5saWdodGVuIG1lIGlmIEkgaGF2ZSBtaXNzZWQg c29tZXRoaW5nIGhlcmUuDQoNCi0tIA0KLS0gcmVnYXJkcw0KLS0gDQotLSBNYXR0aGlhcyBV cmxpY2hzDQoNCg==

    --------------fgS2Unxosi9NI58YDwmIDgRm--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZ9U1IFAwAAAAAACgkQcs+OXiW0wpP+ ug/9GIZaClpALjVY4ieuLHNUWeMsVk/Jh9GSpnnY1Jwl1gtOwcYCjkbUa9/xPhujTBn86lzTS3yh 5/wy0TDxsdRZJ9mczdQvEjkc2Ey6p0dsgqBsSI4wZ/Ircm3uqZrrRRqjvwtn1pPhb4qrIkyrrANP aE0pIsZ+eAFp/vAjXapaIk9pD3U+9OjftqHBv19mHad1p9JFp/0OpJFkkIO7YZlkoySjI9+LI7c9 nK8AXm3GIWtHkLB9g5ENk6t8TjgJHaLfNqrwVc+jNWavlNq609h3Jp4qBa5vq+5wmeGnWK/FFycK JvU2L9RaNzPtGjmwhmECMx8CN4piUKN1QUfp8uD6i37DKrISnUJMS5TBy2lQG7lbY2YiOeKSlvjy dtycLPGeaki8kwvhk8e45StPnxejp4dGXXNi8zv61FDh5HcU5pqavnoUfzk+LAbuXLdLBIXqr2Zt pAeJRm/qdeViR2LKTZAK/s2W726R+VuH7u34s7Qmm/MmITJAoMGDFXxDNGIev1hcehnJqjU1If5/ InmhZpN04Fd2cNbSBUQSP2P8nIIKyQ08d4cd7fdaLyq3+m6Yb11sTidb6xurS+unb7oLTiB6Ewjm QE0JLiPX/KFSsoSI2BvnEJlbjnkVQIQf+KJ9qN1Zoh62vI31nAHKK1/1zZKM3PMqDyURlhjoC24W ck0=
    =FMB9
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Matthias Urlichs on Thu Jun 27 20:00:01 2024
    Hi Matthias,

    On Thu, 2024-06-27 at 13:56 +0200, Matthias Urlichs wrote:
    On 27.06.24 09:50, Ansgar 🙀 wrote:
    leading to having no idea
    why a checksum as suggested isn't possible (it would work trivially for
    the counterexamples given...).

    I  assume that "checksum" refers to something likehttps://pkg.go.dev/golang.org/x/mod/sumdb/dirhash#Hash1 which you referred to in a message on 06-19.

    Question: How can the tag2upload client, which is not going to run dgit
    by design, add the hash of dgit's output to the tag it creates?

    Answer: it's impossible to do that. This is the whole point of tag2upload.

    You missed a very simple part: it wouldn't sign (a hash of) the output
    of dgit. So the problem does not exist in the form you imagine.

    Please enlighten me if I have missed something here.

    You are welcome. Bye.

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Thu Jun 27 20:40:02 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------X6qKmcpNaN8h7i8vJkouuixj
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMjcuMDYuMjQgMTk6NTAsIEFuc2dhciDwn5mAIHdyb3RlOg0KPiBZb3UgbWlzc2VkIGEg dmVyeSBzaW1wbGUgcGFydDogaXQgd291bGRuJ3Qgc2lnbiAoYSBoYXNoIG9mKSB0aGUgb3V0 cHV0DQo+IG9mIGRnaXQuIFNvIHRoZSBwcm9ibGVtIGRvZXMgbm90IGV4aXN0IGluIHRoZSBm b3JtIHlvdSBpbWFnaW5lLg0KDQpPSy4gU29ycnkgaWYgSSBtaXN1bmRlcnN0b29kIHRoYXQg ZW1haWwgdGhlbiwgaXQncyBiZWVuIGEgYnVzeSB3ZWVrLCBidXQgDQrigKYgc28gd2hhdCAq ZG8qIHlvdSB3YW50IHQydSB0byBjaGVja3N1bT8NCg0KLS0gDQotLSByZWdhcmRzDQotLSAN Ci0tIE1hdHRoaWFzIFVybGljaHMNCg0K

    --------------X6qKmcpNaN8h7i8vJkouuixj--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZ9rakFAwAAAAAACgkQcs+OXiW0wpNK 2hAAzRNGAQ3O1h74U2Rg64VEZNyfK47d9EQ5AbCV9LJw5y9n95M8BOevXUsQ1HqxSCtSiFV69/TH HyKQunBf6HxfpN43VMr9u4TKGe+k2NVLdhcAQx8mwGzdCH9DSuQX7YE1cbpQUgHKumiI/Gq7M8FN CgLlQP8H7JbsyhWTSHLkQeUuqTR9dPd2HjBbm+Ubj88UiNl+NwF6co5I3a5464n54DdIFdzGCLY3 A/VzggDJYiQHpbXXZPd3x/Vyg7D3dd1qu09Ne7hsBdBgR6Gs/5hDhmIRGhnRJ0kyowZstujyYRB/ zU5K4gbY2e6R7gfHc99f5MZ1WhIVLuZItndZlWZRu5PbPsKhBF2WaZW1Q2ak7oiTBesE3tbb5Yfr 3Xo3P4SHdxNTXWtdZpUeiqbObErsBGDBg+c0woc/HHlDCgen0PbA6RyQe/yEUCV/tqDMOWptBXad qHW4r16ujA3kW7B7mHT/c33J0PAdbd5d78611F/muUxp7ExFIpMvSIOUkXpqWmQEzldfp6gO2DaP yOcnHBuEXxJKTj0hP8G7h8HViyh+ClpMhOvDGy/qhnnVknsD3mAV99V0Mmtcf4FZdcJRNfTapfvc rZIHuI50NXa8uTsRbXAANwZkxdOQD1w2EFN/hggfoh7guj+U3BuC+i0HS7YnGUr8Nt6R4rezNeFZ e20=
    =OgxR
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to All on Fri Jun 28 08:10:01 2024
    Hello,

    On Thu 27 Jun 2024 at 09:50am +02, Ansgar 🙀 wrote:

    On Mon, 2024-06-24 at 16:12 +0800, Sean Whitton wrote:
    Ansgar, Joerg,

    Discussion has died down without a resolution of our impasse, but Ian
    sent a very long message, so perhaps you are working through it.

    Could you let me know if you are still working on further responses,
    and if so, roughly how long you think you need?

    As I guess you are aware (given you are on #-ftp-private), I haven't
    found time to read recent mails.

    I wasn't aware until after I had started the vote.

    We hadn't heard from either you or Joerg since Saturday. I asked on
    Monday if you needed more time. There was no response to that.

    You didn't send any message in #debian-ftp-private directed to me.

    In particular I haven't had time to find anything after the discussion
    with Russ, leading to having no idea why a checksum as suggested isn't possible (it would work trivially for the counterexamples given...).

    This isn't true. You are just asserting it, without evidence.
    You have not done the detailed work on this topic that we have.

    --
    Sean Whitton

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Sean Whitton on Fri Jun 28 08:40:01 2024
    Hi Sean,

    On Fri, 2024-06-28 at 14:06 +0800, Sean Whitton wrote:
    On Thu 27 Jun 2024 at 09:50am +02, Ansgar 🙀 wrote:
    In particular I haven't had time to find anything after the discussion
    with Russ, leading to having no idea why a checksum as suggested isn't possible (it would work trivially for the counterexamples given...).

    This isn't true.  You are just asserting it, without evidence.

    Your claims are false both about me not having had time to read
    messages (please provide evidence covering my private schedules
    otherwise) and the evidence I provided about the example by Russ[1].
    I'll expand on the here slightly for your benefit:

    $ git clone https://salsa.debian.org/rra/tf5.git
    [...]
    $ apt-get source tf5
    [...]
    $ rm -rf tf5/.git tf5-5.0beta8/.pc
    $ diff -Nur tf5 tf5-5.0beta8; echo $?

    0

    If one is really bored:
    $ (cd tf5; sha256sum $(find . -type f | sort) | sha256sum -) 8d7820471fb44382a0c752319906064a1276ff18873fb4730dec1319aaf7b459 -
    $ (cd tf5-5.0beta8; sha256sum $(find . -type f | sort) | sha256sum -) 8d7820471fb44382a0c752319906064a1276ff18873fb4730dec1319aaf7b459 -

    I will leave it as an exercise to you to compare the output and to
    reason about results of different ways to compare both trees.

    Please stop accusing others of "just asserting it, without evidence"
    when it is trivial to show you claim of "This isn't true" is false.
    I don't think your behavior is constructive in any way.

    You have not done the detailed work on this topic that we have.

    Yeah, apparently not enough to even reason correctly about the trivial
    cases... It seems to lead to claims that can be demonstrated as being
    wrong trivially.

    Ansgar

    [1]: https://lists.debian.org/debian-vote/2024/06/msg00450.html

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Fri Jun 28 12:10:02 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------tKghyuj8M7keGjf23hOlqASl
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    Q2xhcmlmaWNhdGlvbjoNCj4gb2YgdGhlIGQvJEQgYW5kIGEvZC8kViB0YWdzDQoNCiJkZWJp YW4vJFYiIGFuZCAiYXJjaGl2ZS9kZWJpYW4vJFYiIHRhZ3Mgb2YgY291cnNlLiBOb3QgJEQu IFNpZ2guDQoNCi0tIA0KLS0gbWl0IGZyZXVuZGxpY2hlbiBHcsO8w59lbg0KLS0gDQotLSBN YXR0aGlhcyBVcmxpY2hzDQoNCg==

    --------------tKghyuj8M7keGjf23hOlqASl--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZ+icYFAwAAAAAACgkQcs+OXiW0wpOf Nw/8C/gFDvYPSMUWdm7hij5JgtD3DMivlYTQy3NTcHbpNcEF2FSP7OAPR4kwCGoLkflp0mVFt+ru s65BWc1WTYmp6fKakCgj/Y3BRGv9d0AyOMbUWEXx7txjDKs89nql6MNSVIQntBFfXeTjWqmTp0Ek wkfUm5d2azDswOgNcsJI/sgiqe8MmUgoAYB9q8PS5TbhYA4icaKrPFQ1G7j/cH+liukW6FYCwrzm 2jfsEKldvG/Cn7LxlOy5OOl4izUCaLDLiucoyCJMGpupomoTosuuY79x1fWy0+ErNNUQeQrFBPFz Rs8kAOVirhZ4TsKBOeIq/y2PfSOoUnKIOCVo3FrWRvt61oRnV1zZYuDfjSKHKHuk8/L76MUKD3fI FRlX66nYP0oIrOd3FNvdC7kVi3UJlsHDFz+1si2RtigAMrZQsDlndY1oTgJeSjujTdU9wwwevUwf ffO+UAOLtHk17+3v4tacejEYLWssUhBLXJGPxQaKlNSpF1TzXLRxgHov4U4NpSzzAVzhtdyVVvoP EUPuBPtj3zAd4nDaWvp5UT/KZ8OojzxkZy0IdaIab/YHFq6r4LB8fa4ke5rNDhS+VQVByDjRuyO7 Gnk1nZGX7XeDUT0D+VqJTMw6qlVkfwhyq1EJVd9YXi+Qz51NCNrL2HuqoJa2Rm9Efp6ZW6Xcj5q4 h70=
    =9A79
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Fri Jun 28 11:40:01 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------qd4l1xfEWFjeVXUTNpJUPFzZ
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMjguMDYuMjQgMDg6MzIsIEFuc2dhciDwn5mAIHdyb3RlOg0KPiBJIHdpbGwgbGVhdmUg aXQgYXMgYW4gZXhlcmNpc2UgdG8geW91IHRvIGNvbXBhcmUgdGhlIG91dHB1dCBhbmQgdG8N Cj4gcmVhc29uIGFib3V0IHJlc3VsdHMgb2YgZGlmZmVyZW50IHdheXMgdG8gY29tcGFyZSBi b3RoIHRyZWVzLg0KDQpUaGUgcHJvYmxlbSBpcyB0aGF0IHRoaXMgcGFydGljdWxhciBwYWNr YWdlIGlzIHRoZSByZXN1bHQgb2Ygb25lIG9mIA0Kc2V2ZXJhbCBwb3NzaWJsZSB3b3JrZmxv d3MsIHdoZXJlIHByZXZpb3VzIHdvcmsgaGFzIGFscmVhZHkgcmVzdWx0ZWQgaW4gDQphIGRn aXQgcnVuIHRoYXQgYXNzZW1ibGVkIHZhcmlvdXMgZW50cmllcyBpbiBkL3BhdGNoZXMgZm9y IHVzOyBzZWUgZS5nLiANCmNvbW1pdCA1NTZlZjAxIHdoaWNoIGlzIHNpbXBseSBkZ2l0J3Mg aGFuZGxpbmcgb2YgM2E4Yjc5NS4NCg0KQSBnaXQtY2VudGVyZWQgdGFnMnVwbG9hZC1iYXNl ZCB3b3JrZmxvdyAqd291bGQgbm90IGRvIHRoYXQqLCBsZWF2aW5nIA0KdGhlIGpvYiBvZiBn ZW5lcmF0aW5nIGNvbW1pdHMgbGlrZSA1NTZlZjAxIHRvIHRoZSB0MnUgc2VydmVyIGFuZCB0 aHVzIA0KcHJldmVudGluZyB5b3UgZnJvbSBkb2luZyB0aGlzIGNvbXBhcmlzb24uDQoNClRo aXMgZmFjdCBoYXMgYmVlbiBzdGF0ZWQgbXVsdGlwbGUgdGltZXMgc2luY2UgdGhlIFJGQyBo YXMgYmVlbiBwb3N0ZWQuIA0KSSBjYW4ndCBiZWxpZXZlIHlvdSBoYXZlIG5vdCByZWFkIC8g dW5kZXJzdG9vZCBhbnkgb2YgdGhlc2UgZW1haWxzLCBvciANCnRoYXQgeW91IGZvcmdvdCB0 aGUgZGlzY3Vzc2lvbiBhYm91dCB0aGUgc2lnbmlmaWNhbmNlIG9mIGlkZW50aXR5IChvciAN Cm5vdCkgb2YgdGhlIGQvJEQgYW5kIGEvZC8kViB0YWdzIG9uIGJyb3dzZS5kZ2l0LmQuby4N Cg0KKHRmNSBpcyBhbiBleGFtcGxlIG9mIGlkZW50aXR5LCB3aGljaCBzaG91bGQgbm90IHN1 cnByaXNlIGFueWJvZHkgYXQgDQp0aGlzIHBvaW50OyByZW1pbmRlcjogbGVzcyB0aGFuIGhh bGYgb2YgdGhlIDUwIG1vc3QtcmVjZW50IHNvdXJjZXMgb24gDQpicm93c2UuZGdpdC5kLm8g bG9vayBsaWtlIHRoaXMuKQ0KDQoNCklNSE8gdGhpcyBtZXNzYWdlIGFtcGx5IGRlbW9uc3Ry YXRlcyB0aGF0IGFueSBmdXJ0aGVyIGRlbGF5IHRvIGEgR1IsIGFzIA0KcHJlbWF0dXJlIGFz IHRoZSBjYWxsIGZvciBpdCBtaWdodCBoYXZlIHNlZW1lZCB0byBzb21lIChpbmNsdWRpbmcg bWUpIA0KeWVzdGVyZGF5IG1vcm5pbmcsIGlzIG5vdCB3YXJyYW50ZWQuDQoNCi0tIA0KLS0g bWl0IGZyZXVuZGxpY2hlbiBHcsO8w59lbg0KLS0gDQotLSBNYXR0aGlhcyBVcmxpY2hzDQoN
    Cg==

    --------------qd4l1xfEWFjeVXUTNpJUPFzZ--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmZ+gqYFAwAAAAAACgkQcs+OXiW0wpPc CRAA3IAYf3Id+fSqmhfnbfIvpqw/1R2pxNFwkbA725jEV+D0PTXpXZRCfiAG7kXiGLRuuAF1Kjhy iKqD8OKWWeFXFM0+EHIAXlO4hd6XG2X+NJxOB60/VqVEtC46YL04griyiA/67pZVge62qzROsC/s cv0kfCIfYATxUWsTHJM+sWHCS7I/MFWLolZxmdG1OaaRFY/z20/hp8XMlpJOqC3ZqP3IAntQRtqA xOAgbKkkF4NIvZOFAGXXRObYl5OFTBKRfughGLUvAbd3hMhacfbUSVc3xev7HFswwm46/gy5FbIu mvxwA7oKwpQ050fuR1NCPztHNDqL0lBFL0iWif7ZxC4e7Qdp/iJ2I3apArnDWocviH7AgpHlgdPB /KOkJWpiID0Ah//eI1WbM81w1GM4pXBem/URslvSIZTz0rcL0QV7KFAINqoxfrKfHN/jH0gh4rC2 /17AzN8foj/hCTUx8+fCZirwvvOay4KZUuICC6Df2K7Ty+AzBR3pnKZY/qGEPIocmdJZdqITFBuQ Ke/AYhRMto+uFGYixLnMoKNSexbytYCy7OWyI/XTW1fmIQcHbzw7IroOKpwClxqk4by9HdAq9n3o 0LC/fBPuVkDcuDe8n+qbElw9oro8BI2yBPI12rOGy2dzrEA9aEizJdKpbTvYg49jPr2m9aivbRaE 7ws=
    =4gh3
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Didier 'OdyX' Raboud@21:1/5 to All on Fri Jun 28 13:10:01 2024
    (dropping all CC, focusing on the content)

    Le vendredi, 28 juin 2024, 08.32:43 h CEST Ansgar 🙀 a écrit :
    I'll expand on the here slightly for your benefit:

    $ git clone https://salsa.debian.org/rra/tf5.git
    [...]
    $ apt-get source tf5
    [...]
    $ rm -rf tf5/.git tf5-5.0beta8/.pc
    $ diff -Nur tf5 tf5-5.0beta8; echo $?
    0

    If one is really bored:
    $ (cd tf5; sha256sum $(find . -type f | sort) | sha256sum -) 8d7820471fb44382a0c752319906064a1276ff18873fb4730dec1319aaf7b459 -
    $ (cd tf5-5.0beta8; sha256sum $(find . -type f | sort) | sha256sum -) 8d7820471fb44382a0c752319906064a1276ff18873fb4730dec1319aaf7b459 -

    I will leave it as an exercise to you to compare the output and to
    reason about results of different ways to compare both trees.

    It looks to me that you have taken (by choice, or by chance) an example that too conveniently fits what you want to demonstrate: in which the git repository and the .dsc are treesame. They are often the case, but not always, as documented in the various git workflows' documentation provided by dgit. The salsa repo can be patches-applied and not have the debian/patches files, they'd be created at dgit push-source time.

    If I understand your position correctly (please correct me if needed): you (with a ftpmaster hat) would like all uploads to come with a signed artefact of hashes corresponding to the set of files as represented by the current Debian source package format, as accepted by the archive today. And you would like this artefact's signature be a signature by the human uploader. Did I get this right?

    If I understand dgit and tag2upload correctly, in the cases where the git repository is treesame to the source package (patches-applied, with debian/ patches file stored in git, as pointed by a tag), this artefact has the exact same cryptographic value as the git tag, pointing to the git tree, pointing to the git objects (modulo the SHA-1 vs SHA-256 hash functions choice, which was clarified elsewhere). One such example is the tf5 source that you used as example. In that case, would you still want a outside-of-git hash, signed by the human uploader?

    In the cases where the git repository is _not_ treesame to the source package (patches-applied, but debian/patches not stored in git), uploads are already possible via dgit push-source (and the human upload signature covers the source package as it goes in the archive, not the git tree). In that other case, would you still want a signed artifact of hashes, signed by the human uploader? And do we both understand that this means that some git repository layouts would hence not be possible to be uploaded via tag2upload (because it needs a much heavier git tag client, that builds the final source package, hashes its contents, and creates the git tag)?

    (I have refrained from formulating the questions as explicit to the ftpmaster delegates "as a team", I merely want to understand Ansgar's position first ).

    --
    OdyX

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Russ Allbery on Fri Jun 28 19:50:01 2024
    Russ Allbery <[email protected]> writes:

    As soon as I start using tag2upload, I am no longer running dgit locally
    and that patch generation will be represented in the Git tree that I
    sign to trigger tag2upload.

    That patch generation will *not* be represented in the Git tree that I
    sign to trigger tag2upload. Among at least one other typo in that
    message. Good lord, I clearly still need more caffeine.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Didier 'OdyX' Raboud on Fri Jun 28 19:40:02 2024
    Didier 'OdyX' Raboud <[email protected]> writes:
    Le vendredi, 28 juin 2024, 08.32:43 h CEST Ansgar 🙀 a écrit :
    I'll expand on the here slightly for your benefit:

    $ git clone https://salsa.debian.org/rra/tf5.git
    [...]
    $ apt-get source tf5
    [...]
    $ rm -rf tf5/.git tf5-5.0beta8/.pc
    $ diff -Nur tf5 tf5-5.0beta8; echo $?
    0

    If one is really bored:
    $ (cd tf5; sha256sum $(find . -type f | sort) | sha256sum -)
    8d7820471fb44382a0c752319906064a1276ff18873fb4730dec1319aaf7b459 -
    $ (cd tf5-5.0beta8; sha256sum $(find . -type f | sort) | sha256sum -)
    8d7820471fb44382a0c752319906064a1276ff18873fb4730dec1319aaf7b459 -

    I will leave it as an exercise to you to compare the output and to
    reason about results of different ways to compare both trees.

    It looks to me that you have taken (by choice, or by chance) an example
    that too conveniently fits what you want to demonstrate: in which the
    git repository and the .dsc are treesame. They are often the case, but
    not always, as documented in the various git workflows' documentation provided by dgit. The salsa repo can be patches-applied and not have
    the debian/patches files, they'd be created at dgit push-source time.

    The initial confusion about this is my fault. I was the one who offered
    tf5 as an example; Ansgar didn't choose it.

    tf5 uses a git-debrebase workflow, which means that debian/patches has to
    be synthesized from Git commits. What I missed, much to my embarrassment,
    is that since tag2upload doesn't exist, I am using dgit locally, and the default dgit behavior with git-debrebase workflows is to generate all of debian/patches locally and commit them to Git before doing the package
    upload. So it *looks* from the current Git state like I am maintaining a debian/patches directory in Git that would be available to tag2upload.

    This isn't actually the behavior that I wanted and I had not realized that
    it was doing this. It's was a configuration error on my part. I've now
    fixed that configuration and pushed a new version so that people can see
    what I had intended the behavior to be. Note the difference between the debian/5.0beta8-13 tag (what I would tag with tag2upload) and the archive/debian/5.0beta8-13 tag (what the tree looks like after the
    processing that tag2upload would perform).

    However, more relevant to this discussion, tf5 even with the previous configuration only looks like it's a trivial case because I can't use tag2upload and therefore I am still using a thick client (dgit) locally to upload. That means that dgit can manipulate my local Git tree before
    doing the upload to do a bunch of Debian-specific work. As soon as I
    start using tag2upload, I am no longer running dgit locally and that patch generation will be represented in the Git tree that I sign to trigger tag2upload.

    Ian explained all of this in an excellent and comprehensive message that
    he sent in reply to mine, correcting my misunderstandings about how this workflow worked. (Hopefully I have it right now!)

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ansgar =?UTF-8?Q?=F0=9F=99=80?=@21:1/5 to Didier 'OdyX' Raboud on Fri Jun 28 22:00:02 2024
    Hi,

    On Fri, 2024-06-28 at 13:00 +0200, Didier 'OdyX' Raboud wrote:
    Le vendredi, 28 juin 2024, 08.32:43 h CEST Ansgar 🙀 a écrit :
    I'll expand on the here slightly for your benefit:

    $ git clone https://salsa.debian.org/rra/tf5.git
    [...]
    $ apt-get source tf5
    [...]
    $ rm -rf tf5/.git tf5-5.0beta8/.pc
    $ diff -Nur tf5 tf5-5.0beta8; echo $?
    0

    If one is really bored:
    $ (cd tf5; sha256sum $(find . -type f | sort) | sha256sum -) 8d7820471fb44382a0c752319906064a1276ff18873fb4730dec1319aaf7b459  -
    $ (cd tf5-5.0beta8; sha256sum $(find . -type f | sort) | sha256sum -) 8d7820471fb44382a0c752319906064a1276ff18873fb4730dec1319aaf7b459  -

    I will leave it as an exercise to you to compare the output and to
    reason about results of different ways to compare both trees.

    It looks to me that you have taken (by choice, or by chance) an example that too conveniently fits what you want to demonstrate: in which the git repository and the .dsc are treesame.

    I was given this very specific example by Russ as an example where it
    would not work and Sean continued to insist I rejected this specific
    example as invalid by just asserting it doesn't demonstrate the problem
    without any evidence. I've tried to address Sean's concern by
    expanding on my earlier reasoning.

    If I understand your position correctly (please correct me if needed): you (with a ftpmaster hat) would like all uploads to come with a signed artefact of hashes corresponding to the set of files as represented by the current Debian source package format, as accepted by the archive today. And you would
    like this artefact's signature be a signature by the human uploader. Did I get
    this right?

    Ideally yes, though this might not work for all cases.

    The next-best thing would be some reasonable representation of the
    source package contents that could be signed by the submitter and
    verified by the archive independently. (A signed artifact covering the
    exact set of files/metadata would obviously satisfy this, but it can be
    less than that.)

    If I understand dgit and tag2upload correctly, in the cases where the git repository is treesame to the source package (patches-applied, with debian/ patches file stored in git, as pointed by a tag), this artefact has the exact
    same cryptographic value as the git tag, pointing to the git tree, pointing to
    the git objects (modulo the SHA-1 vs SHA-256 hash functions choice, which was
    clarified elsewhere). One such example is the tf5 source that you used as example.

    That Russ used as an example; it doesn't come from me. I claim it is
    not an interesting example.

    In that case, would you still want a outside-of-git hash, signed by
    the human uploader?

    That would be desirable for the archive (or third parties using data
    from the archive) to be able to verify the contents are what the human
    uploader signed as the archive does not see the Git tree.

    In the cases where the git repository is _not_ treesame to the source package
    (patches-applied, but debian/patches not stored in git), uploads are already possible via dgit push-source (and the human upload signature covers the source package as it goes in the archive, not the git tree). In that other case, would you still want a signed artifact of hashes, signed by the human uploader?

    Ideally yes, and this is where the "reasonable representation of the
    source package contents" part gets relevant.

    And do we both understand that this means that some git repository
    layouts would hence not be possible to be uploaded via tag2upload (because it
    needs a much heavier git tag client, that builds the final source package, hashes its contents, and creates the git tag)?

    That is not obvious and probably not true. It is false for a trivial
    reasonable representation of the source package contents, but not
    necessarily for the set of all possible reasonable representations (and
    there is no requirement to use a single fixed one either). (It
    certainly isn't true if one leaves out the "reasonable" part.)

    To understand whether a representation[1] exists that is also
    reasonably easy to implement, one would need to look at it with an open
    mind and, in particular, not with specific implementation details in
    mind.

    [1]: Or small set of representations the upload mechanism/human
    uploader can choose from.

    Finding such a representation might be easier if one also changes some
    possible outputs that tag2upload generates. For example, if one wanted
    a reasonable representation to include patch names and contents in
    d/patches, these would need to be known at the time the content hash
    gets computed on the uploader's system for which limitations on
    generated build artifacts might be useful. (But it could also be valid
    to not include all details about d/patches in the reasonable
    representation.)

    It is probably hard to find such a representation if the source package generation includes arbitrary common things, like generating
    ./configure, building changelog files from fragments, vendoring third
    party sources (for which the exact contents are not known to the human
    uploader directly).

    Neither Russ Allbery's nor Matthias Urlichs' examples could convince me
    that such a representation does not exist as I hope I have explained sufficiently with my earlier reply. The tag2upload developers blocking
    any discussions for ~4 years also did not help to answer this question.

    As for some examples of things that are pretty likely reasonable representations:

    1. Some hash over all files (upstream + debian/, including d/patches)
    with patches applied.

    2. Some hash over all files (upstream + debian/, including d/patches)
    with patches unapplied.

    3. Two separate hashes: unpatched upstream, debian/ (including
    d/patches).

    4. Two separate hashes: upstream tarball, debian/ (including
    d/patches).

    5. Hashes over unpatched upstream + normalized diff.

    6. Hashes over upstream tarball + normalized diff.

    7. Hashes over the source (and no d/patches generated as an artificial
    build artifact no human uploader would look at anyway).

    Possible reasonable representations might also include:

    8. Some hash over all files, excluding d/patches. (This obviously
    allows an entire equivalence class of patches in d/patches.)

    9. Some hash over all files, excluding a single file in d/patches.
    (Limits the equivalence class from (5.); the allowed file should
    probably be required to be the last one in d/patches.)

    10. Some hash over all files in the tree covered by the tag with the
    tag2upload process indicating which files it added in addition to
    those. (Possibly with limits over which files can be added.)

    11. Weaker versions of (10.) that also allow modified or removed files.

    These also seem easy to implement in a thin client and technically
    already cover all possible workflows, including any not supported by
    tag2upload (by (11.) without limits over which files can be added or
    modified; though that probably leaves the "reasonable representation"
    space). No variant seems to require a complete rewrite and/or full
    redesign of how to tag2upload works (a claim that sometimes comes up).
    Nor do they require to build a source package locally or replicate the
    full functionality of dgit locally or require dpkg locally.

    Note that various variants would also cover generated d/patches if one
    feels a need for a higher variety of build artifacts.

    To see whether there is a reasonable set of representations (such as a
    subset of the ones above with agreed parameters) that covers a
    reasonable set of workflows would of course require at least
    willingness to communicate and some willingness to compromise (about
    what is still a reasonable representation and what a thin client can
    do).

    And yes, that might also include that not all workflows will work. But
    (a) tag2upload limits that too and (b) ftp-master limits that for
    (automatic) binary uploads and (manual) source uploads via other paths
    as well by imposing constraints such as no build-time modifications of d/control, compliance with various policies (file locations, package
    content, lintian checks, package naming, ...), requirements for buildd configuration, hashes including in indices, ... for each of which I'm
    sure a workflow could be found that is "blocked" by the current policy.

    But claiming no such solution exists and demanding that current
    requirements must be dropped while refusing to communicate about it[2],
    then complaining about being "blocked" and everything getting blocked
    because of "conservatism"[3] feels a bit dishonest and not like a good
    faith approach.

    [2]: Claiming no solutions exists would require an understanding what ftp-master thinks what a "reasonable representation" is. I find it very optimistic that tag2upload developers know this without communication.

    [3]: Rejecting any suggestions of possible changes to deploy it might
    qualify at that, but I wonder who the extremely conservative side is
    then...

    Ansgar

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)