Hi,

On 8/5/24 17:26, Niels Thykier wrote:

  * Does this package use `gbp dch` [...]
  * Does this package use some form of automatic formatting [...]
  * Does the maintainer prefer MR via salsa or BTS [...]
  * Does the maintainer prefer dgit and if so, which of its 5+ different
    documented workflows should I follow?

The thing is: all of these things are really interfaces, but they have not been designed as interfaces, they are just exposed parts of the implementation.

What we want is a single machine readable interface that allows updating packages. What we get in this way is a selector for an open set of possible interfaces, all with their individual drawbacks.

To really use that in an automated fashion, someone will have to develop a software package that has a single interface and several plugins that implement this interface, and that abstract away the differences between the exposed-implementation-details-as-interface.

So this does not save us from designing a proper interface, so we might as well get this done and then add the abstraction layer for the tools directly into the tools themselves.

Such an interface would assume a backend data model that can accurately represent the timeline of Debian packaging, including

 - taking upstream source
   - from tarball
   - from git
   - leave option to support other VCS, but do not waste effort
 - removing DFSG non-compliant files
 - demarcating the separation between "upstream" and "Debian"
 - producing a reproducible .orig archive (with no limit on format)
 - adding and updating packaging metadata
- adding, updating and removing patches to the upstream source (ideally tracking patch author information and patch metadata information separately
 - producing a reproducible .debian archive (with no limit on format)
 - listing package history, with events classed accordingly

There needs to be some allowance for backends to be unable to retrieve some information, simply because the Debian archive does not track contributions line-by-line, and several of the git backends have also lost information along the way, like the original commit message for a patch that got copied into debian/patches.

A successful abstraction, in my view, hides the existence of the debian/patches directory, and represents it as metadata, with the metadata fields from the patch files themselves, and includes an interface for "add this patch to the upstream sources at this point in the patch stack and rebase everything." Whether that uses git rebase or quilt refresh in the background is of no concern to the interface user.

Of course that will lose most of the "usefulness" of salsa, which does not expose this high-level view, and cannot easily be made to do so. The point I was trying to make all along was that this was always a red herring, and if we want to have good tools, then we cannot tie packaging workflows to the back of a software development workflow just so we could reuse some of their shiny tools.

   Simon

Reply via email to