Hi,

On 5/21/24 15:54, Andrey Rakhmatullin wrote:

The Debian archive itself is a VCS, so git-maintained packaging is also a
duplication, and keeping the official VCS and git synchronized is causing
additional work for developers, which is why people are opposed to having it
mandated.

The Debian archive itself is a *bad* and *poor* VCS. It should be obvious
in which areas it's poor, and it's bad e.g. because force pushes are
enabled, the history is periodically truncated (though there is no easy
way to get it anyway) etc.

All of these things are *also* explicit features. We need a way to unpublish things, and mirrors only want to keep a shallow subset.

Representing the Debian archive in git would probably look like a massive amount of submodules, because that's the only way to represent state across multiple projects without extending it -- and extending is a big no-no, because then we'd lose all the forge support. Submodules cannot represent the pristine-tar branch though.

It makes sense that some people want to replace it with a good VCS, but I
agree that adding a good VCS only gives us two VCSes because replacing
will never happen.

There are two axes here -- "good" and "fits the use case."

What I'm arguing is that git does not fit our use case, despite being good, because it is designed for something else. We can make it fit our use case by wrapping it, but then we have a choice between a thin veneer that breaks easily as people use git commands inside a source tree, when they should only be using gbp commands, or a completely opaque wrapper that loses us all the git integration from third-party tools like forges.

Because git treats packaging metadata as data, no correctness of metadata is enforced at this level. We could add this in the form of upload hooks, but then people would start complaining that they want to use the tools like they want. They would be wrong, but that is what happens with leaky abstractions.

This is the exact opposite of the mandatory-debhelper debate: requiring declarative packaging (and therefore calcifying all custom sequences into debhelper plugins) is precisely the opposite of "using git because it is familiar" -- the benefit of using the abstraction comes from denying access to the layer below and therefore hiding its complexity.

   Simon

Reply via email to