Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-05-10 Thread Sean Whitton
Hello,

At today's ctte meeting we considered whether we can start a vote on
this, but two committee members were missing, and someone else at the
meeting reported that they hadn't yet been able to spend enough time
thinking through the issue to be ready to vote.

We came up with the following plan.  Below I've drafted a ballot.  Once
each of those three individuals has let me know that they've had a
chance to catch up, I'll start a vote.  The hope is that this can happen
well in advance of our next meeting.  So, ctte members, if I don't
already know that you're caught up, please write to me once you are.

~

DRAFT

Using its powers under constitution 6.1.5, the Technical Committee
issues the following advice:

  1. It is not a bug of any severity for a package with a non-native
 version number to use a native source package format.

  2. Thus, we think that dpkg shouldn't issue warnings, or otherwise
 complain, when a non-native version number is used w/ 3.0 (native).

  3. We suggest that the wontfix tag on #737634 be reconsidered.

  4. We believe that there are indeed circumstances in which
 1.0-with-diff is the best choice for a particular source package,
 including, but not limited to, git-first packaging workflows.

  5. We decline to comment on the recent source package format MBF.

 Option A -- issue items 1--5

 Option B -- issue items 1, 2, 3 and 5, but not 4

 Option N -- none of the above.

END DRAFT

-- 
Sean Whitton


signature.asc
Description: PGP signature


Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-05-11 Thread Lucas Nussbaum
On 10/05/22 at 17:29 -0700, Sean Whitton wrote:
> Hello,
> 
> At today's ctte meeting we considered whether we can start a vote on
> this, but two committee members were missing, and someone else at the
> meeting reported that they hadn't yet been able to spend enough time
> thinking through the issue to be ready to vote.
> 
> We came up with the following plan.  Below I've drafted a ballot.  Once
> each of those three individuals has let me know that they've had a
> chance to catch up, I'll start a vote.  The hope is that this can happen
> well in advance of our next meeting.  So, ctte members, if I don't
> already know that you're caught up, please write to me once you are.
> 
> ~
> 
> DRAFT
> 
> Using its powers under constitution 6.1.5, the Technical Committee
> issues the following advice:
> 
>   1. It is not a bug of any severity for a package with a non-native
>  version number to use a native source package format.
> 
>   2. Thus, we think that dpkg shouldn't issue warnings, or otherwise
>  complain, when a non-native version number is used w/ 3.0 (native).
> 
>   3. We suggest that the wontfix tag on #737634 be reconsidered.
> 
>   4. We believe that there are indeed circumstances in which
>  1.0-with-diff is the best choice for a particular source package,
>  including, but not limited to, git-first packaging workflows.
> 
>   5. We decline to comment on the recent source package format MBF.
> 
>  Option A -- issue items 1--5
> 
>  Option B -- issue items 1, 2, 3 and 5, but not 4
> 
>  Option N -- none of the above.
> 
> END DRAFT

Hi,

If it was possible to use 3.0 (native) with non-native revisions, would
there be remaining circumstances where 1.0-with-diff is the best choice?
If not, maybe the fact that this is the blocking issue should be made
explicit in (4)?

That would be a way to state: "either dpkg maints refuses to support 3.0
(native) with non-native revs, and 1.0-with-diff must not be considered
deprecated; or dpkg maints supports it, and it might be possible to
deprecate 1.0".

Lucas



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-05-11 Thread Ian Jackson
Lucas Nussbaum writes ("Re: Bug#1007717: Draft resolution for "Native source 
package format with non-native version""):
> If it was possible to use 3.0 (native) with non-native revisions, would
> there be remaining circumstances where 1.0-with-diff is the best choice?

Yes, unfortunately.

If you have a package whose orig source code is large, and the delta
is representable with 1.0-with-diff (which is quite likely), then you
don't want to be reuploading the whole tarball each time.  That's
wasteful of everyone's bandwidth and disk space.

So you want a representation that offers delta compression.  That is
offered by the non-native formats.  The non-native formats supported
by the archive are 1.0-with-diff and "3.0 (quilt)".  The latter has
the problem with debian/patches/ living inside the source tree, which
is quite undesirable especially for "git-first workflows" (as the
draft text puts it).

> If not, maybe the fact that this is the blocking issue should be made
> explicit in (4)?

   4. We believe that there are indeed circumstances in which
  1.0-with-diff is the best choice for a particular source package,
  including, but not limited to, git-first packaging workflows.
 +This is because there is currently no other source format which avoids
 +reuploading the whole source (including upstream) for each upload,
 +and also avoids having to maintain debian/patches/ inside the
 +package tree.

Or something.

> That would be a way to state: "either dpkg maints refuses to support 3.0
> (native) with non-native revs, and 1.0-with-diff must not be considered
> deprecated; or dpkg maints supports it, and it might be possible to
> deprecate 1.0".

I would love for there to be something like 3.0-with-git-diff.  Indeed,
I filed this wishlist bug to ask if contribution would be welcome:
  https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1007781
but have not had any response.

The code in dpkg-source for 1.0-with-diff is quite crusty particularly
in respect of the implied behaviour wrt scanning your ".." for stuff.
The *format* of 1.0-with-diff is quite reasonable, but it lacks
support more kinds of delta.  That could be done as an extension to
1.0-with-diff, but I doubt that would be a popular direction.

Ian.

-- 
Ian JacksonThese 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.



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-05-11 Thread Lucas Nussbaum
Thanks for your answer.

On 11/05/22 at 12:38 +0100, Ian Jackson wrote:
> I would love for there to be something like 3.0-with-git-diff.  Indeed,
> I filed this wishlist bug to ask if contribution would be welcome:
>   https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1007781
> but have not had any response.
> 
> The code in dpkg-source for 1.0-with-diff is quite crusty particularly
> in respect of the implied behaviour wrt scanning your ".." for stuff.
> The *format* of 1.0-with-diff is quite reasonable, but it lacks
> support more kinds of delta.  That could be done as an extension to
> 1.0-with-diff, but I doubt that would be a popular direction.

Out of curiosity, if 3.0 (native) supported multiple tarballs, wouldn't
it be a good solution?

The main limitation I see is that it would not allow to represent
efficiently small changes to large text files (which a git-based diff
would allow).

I'm asking because if 3.0 (native) gets more generic by allowing
non-native revisions, it might be an easier sell to introduce
multi-tarballs support, than to introduce a completely different source
format.

Lucas



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-05-11 Thread Ian Jackson
Lucas Nussbaum writes ("Re: Bug#1007717: Draft resolution for "Native source 
package format with non-native version""):
> Out of curiosity, if 3.0 (native) supported multiple tarballs, wouldn't
> it be a good solution?

Oh, I hadn't thought of that.

> The main limitation I see is that it would not allow to represent
> efficiently small changes to large text files (which a git-based diff
> would allow).

That may not be important.  My feeling is that it wouldn't be.

However, I think there are some other difficulties with this idea.

*Deletion* of files *is* important.  Something would have to be done
to support that.  (Tarball repacking is an abominable workflow which
we should only do when we must.)

It is important that packing and unpacking these things works roughly
the same way that things work right now for the diffish formats.  Ie,
for a package with two tarballs, the first tarball would have to omit
the Debian revision from its filename (so that it needn't be
re-uploaded), and the second tarball would have to *contain* it.
dpkg-source -b would have to calculate the appropriate second tarball
as a diff from the first.  (GNU tar has an incremental option that
could perhaps be used.)

I think, having followed this line of throught, the result looks quite
like a "3.0 (diff)" only the diff is in the form of an incremental
tarball rather than a textual patch file.

This could definitely work.

But I think that might not meet ftpmaster's review needs.  AIUI
ftpmaster like to review the diff qua diff, and a tarball isn't so
straightforward.  I had a similar idea to use an rsync batchfile as
the delta, which foundered on the same issue.

And I'm not sure that it will find better favour with dpkg upstream
than my "3.0 (git-diff)".

> I'm asking because if 3.0 (native) gets more generic by allowing
> non-native revisions, it might be an easier sell to introduce
> multi-tarballs support, than to introduce a completely different source
> format.

Mmmm.  I think there are many possibilities here which would suffice.
Right now, though, it's a bit hard to make progress without feedback
on what general direction would be most well received.

Ian.

-- 
Ian JacksonThese 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.



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-05-11 Thread Lucas Nussbaum
On 11/05/22 at 17:29 +0100, Ian Jackson wrote:
> Lucas Nussbaum writes ("Re: Bug#1007717: Draft resolution for "Native source 
> package format with non-native version""):
> > Out of curiosity, if 3.0 (native) supported multiple tarballs, wouldn't
> > it be a good solution?
> 
> Oh, I hadn't thought of that.
> 
> > The main limitation I see is that it would not allow to represent
> > efficiently small changes to large text files (which a git-based diff
> > would allow).
> 
> That may not be important.  My feeling is that it wouldn't be.
> 
> However, I think there are some other difficulties with this idea.
> 
> *Deletion* of files *is* important.  Something would have to be done
> to support that.  (Tarball repacking is an abominable workflow which
> we should only do when we must.)
> 
> It is important that packing and unpacking these things works roughly
> the same way that things work right now for the diffish formats.  Ie,
> for a package with two tarballs, the first tarball would have to omit
> the Debian revision from its filename (so that it needn't be
> re-uploaded), and the second tarball would have to *contain* it.
> dpkg-source -b would have to calculate the appropriate second tarball
> as a diff from the first.  (GNU tar has an incremental option that
> could perhaps be used.)
> 
> I think, having followed this line of throught, the result looks quite
> like a "3.0 (diff)" only the diff is in the form of an incremental
> tarball rather than a textual patch file.
> 
> This could definitely work.

FWIW, GNU tar's incremental mode supports file deletions.

Example:
-->8
# create a first archive
mkdir t
echo foo > t/f1
echo bar > t/f2
echo baz > t/f3
tar --listed-increment=snapshot-file -czvvvf archive.tgz t
# remove a file, create an incremental archive
rm t/f2
tar --listed-increment=snapshot-file -czvvvf archive.1.tgz t

# remove everything
rm -rf snapshot-file t
# extract incremental archives
tar Gvvvxf archive.tgz
tar Gvvvxf archive.1.tgz

# listing of archive.1.tgz
tar Gvvvtf archive.1.tgz
-->8

This is implemented using the GNU-specific D entry type. According to
https://www.freebsd.org/cgi/man.cgi?query=tar&apropos=0&sektion=5&format=html :

  D  This indicates a directory entry. Unlike the POSIX-stan-
 dard "5" typeflag, the header is followed by data records
 listing the names of files in this directory.  Each name
 is preceded by an ASCII "Y" if the file is stored in this
 archive or "N" if the file is not stored in this archive.
 Each name is terminated with a null, and an extra null
 marks the end of the name list.  The purpose of this en-
 try is to support incremental backups; a program restor-
 ing from such an archive may wish to delete files on disk
 that did not exist in the directory when the archive was
 made.

 Note that the "D" typeflag specifically violates POSIX,
 which requires that unrecognized typeflags be restored as
 normal files.  In this case, restoring the "D" entry as a
 file could interfere with subsequent creation of the
 like-named directory.

> But I think that might not meet ftpmaster's review needs.  AIUI
> ftpmaster like to review the diff qua diff, and a tarball isn't so
> straightforward.  I had a similar idea to use an rsync batchfile as
> the delta, which foundered on the same issue.

Note that it's not worse than using native formats, where ftpmasters get
a single tarball anyway...

Lucas



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-05-11 Thread Ian Jackson
Lucas Nussbaum writes ("Re: Bug#1007717: Draft resolution for "Native source 
package format with non-native version""):
> On 11/05/22 at 17:29 +0100, Ian Jackson wrote:
> > But I think that might not meet ftpmaster's review needs.  AIUI
> > ftpmaster like to review the diff qua diff, and a tarball isn't so
> > straightforward.  I had a similar idea to use an rsync batchfile as
> > the delta, which foundered on the same issue.
> 
> Note that it's not worse than using native formats, where ftpmasters get
> a single tarball anyway...

Indeed.  But I don't necessarily expect to be able to predict what
ftpmaster (or, for that matter, the dpkg maintainers) will like.

Thanks for exploring the design space!  What would be really good
would be to get agreement in principle from the key stakeholders...

Ian.

-- 
Ian JacksonThese 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.



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-06-06 Thread Helmut Grohne
Hallo,

On Tue, May 10, 2022 at 05:29:57PM -0700, Sean Whitton wrote:
> DRAFT
> 
> Using its powers under constitution 6.1.5, the Technical Committee
> issues the following advice:

I've given this some thought and feel uneasy about one item.

>   4. We believe that there are indeed circumstances in which
>  1.0-with-diff is the best choice for a particular source package,
>  including, but not limited to, git-first packaging workflows.

While I can agree with this item on a technical level, I think there is
more to it than that and I am wondering whether it sends the "right"
message.

Sometimes, things we do are technically possible and fill a niche well.
Yet, we decide that it is no longer reasonable to continue supporting
them and remove their support despite the feature being useful to some.
Quite clearly, there is a trade-off involved here. Continuing to support
1.0-with-diff comes with a cost that reduces uniformity inside the
archive. Evidently, this is what motivated Lucas to file the MBF
initially. My experience is that lack of uniformity is a significant
barrier to prospective contributors to Debian.

Exploring different technical approaches does have value as well, but I
think we've had sufficient time to consider the various advantages and
disadvantages of various source packages formats. On a whole, it seems
to me that that the number of packages benefiting from 1.0-with-diff is
relatively small.

What would you think about adding an alternative option 4?

4b. We believe that there are indeed circumstances in which
1.0-with-diff is the best choice for a particular source package.
Given that the number of packages for which this is relevant is
fairly small, we recommend discontinuing use of 1.0-with-diff to
gain more uniformity.

Helmut



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-06-06 Thread Sean Whitton
Hello,

On Tue 07 Jun 2022 at 07:43am +02, Helmut Grohne wrote:

> While I can agree with this item on a technical level, I think there is
> more to it than that and I am wondering whether it sends the "right"
> message.
>
> Sometimes, things we do are technically possible and fill a niche well.
> Yet, we decide that it is no longer reasonable to continue supporting
> them and remove their support despite the feature being useful to some.
> Quite clearly, there is a trade-off involved here. Continuing to support
> 1.0-with-diff comes with a cost that reduces uniformity inside the
> archive. Evidently, this is what motivated Lucas to file the MBF
> initially. My experience is that lack of uniformity is a significant
> barrier to prospective contributors to Debian.

I think this argument needs to be made more precise -- we should be
clearer about why this particular un-uniformity is bad.  I don't think
the issue for new contributors is persuasive enough, as new contributors
can mostly ignore source packages.  It's not like, e.g., debhelper
vs. cdbs.  I haven't yet seen an argument that the lack of uniformity is
doing anyone's work any harm comparable to the harm done to things like
what Ian and Sam want to do.

> Exploring different technical approaches does have value as well, but I
> think we've had sufficient time to consider the various advantages and
> disadvantages of various source packages formats. On a whole, it seems
> to me that that the number of packages benefiting from 1.0-with-diff is
> relatively small.

I agree, it's not about the benefits of the source format, we do indeed
understand all the trade-offs by now.  It's that certain ideas and
workflows *which are not really about source packages* are made
inconvenient or impossible if we remove this option.  In other words, it
needs to be replaced before it can be deprecated.

> What would you think about adding an alternative option 4?
>
> 4b. We believe that there are indeed circumstances in which
> 1.0-with-diff is the best choice for a particular source package.
> Given that the number of packages for which this is relevant is
> fairly small, we recommend discontinuing use of 1.0-with-diff to
> gain more uniformity.

Thanks for coming up with the text.  I'd say that as uniformity is not
good in itself, it would be good to have more concrete reasons for
wanting uniformity in this case documented in this bug (not necessarily
in the resolution text) before we add it to the ballot.

-- 
Sean Whitton



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-06-07 Thread Lucas Nussbaum
On 07/06/22 at 07:43 +0200, Helmut Grohne wrote:
> Hallo,
> 
> On Tue, May 10, 2022 at 05:29:57PM -0700, Sean Whitton wrote:
> > DRAFT
> > 
> > Using its powers under constitution 6.1.5, the Technical Committee
> > issues the following advice:
> 
> I've given this some thought and feel uneasy about one item.
> 
> >   4. We believe that there are indeed circumstances in which
> >  1.0-with-diff is the best choice for a particular source package,
> >  including, but not limited to, git-first packaging workflows.
> 
> While I can agree with this item on a technical level, I think there is
> more to it than that and I am wondering whether it sends the "right"
> message.
> 
> Sometimes, things we do are technically possible and fill a niche well.
> Yet, we decide that it is no longer reasonable to continue supporting
> them and remove their support despite the feature being useful to some.
> Quite clearly, there is a trade-off involved here. Continuing to support
> 1.0-with-diff comes with a cost that reduces uniformity inside the
> archive. Evidently, this is what motivated Lucas to file the MBF
> initially. My experience is that lack of uniformity is a significant
> barrier to prospective contributors to Debian.
> 
> Exploring different technical approaches does have value as well, but I
> think we've had sufficient time to consider the various advantages and
> disadvantages of various source packages formats. On a whole, it seems
> to me that that the number of packages benefiting from 1.0-with-diff is
> relatively small.
> 
> What would you think about adding an alternative option 4?
> 
> 4b. We believe that there are indeed circumstances in which
> 1.0-with-diff is the best choice for a particular source package.
> Given that the number of packages for which this is relevant is
> fairly small, we recommend discontinuing use of 1.0-with-diff to
> gain more uniformity.

Hi,

A middle ground between (4) and (4b) could be to discourage the use of
1.0-with-diff in circumstances where it is not justified. Something
like:

4c. We believe that there are indeed circumstances in which
1.0-with-diff is the best choice for a particular source package,
including, but not limited to, git-first packaging workflows.
However, we recommend discontinuing use of 1.0-with-diff in other
circumstances to gain more uniformity.

That opens the path to an archive where the only remaining 1.0 packages
are the ones where there's a reason to use 1.0. (as opposed to
currently, where we have a mix of packages using 1.0 for a good reason,
and packages using 1.0 because nobody cared to update them to modern
practices).

Lucas



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-06-07 Thread Christoph Berg
Re: Lucas Nussbaum
> A middle ground between (4) and (4b) could be to discourage the use of
> 1.0-with-diff in circumstances where it is not justified. Something
> like:
> 
> 4c. We believe that there are indeed circumstances in which
> 1.0-with-diff is the best choice for a particular source package,
> including, but not limited to, git-first packaging workflows.
> However, we recommend discontinuing use of 1.0-with-diff in other
> circumstances to gain more uniformity.
> 
> That opens the path to an archive where the only remaining 1.0 packages
> are the ones where there's a reason to use 1.0. (as opposed to
> currently, where we have a mix of packages using 1.0 for a good reason,
> and packages using 1.0 because nobody cared to update them to modern
> practices).

The bit I was missing is something like "we would welcome changes to
the 3.0 format to make it usable for the remaining cases where 1.0 is
still better today". Did anyone investigate if that would be feasible?

Christoph



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-06-07 Thread Ian Jackson
Helmut Grohne writes ("Re: Bug#1007717: Draft resolution for "Native source 
package format with non-native version""):
> What would you think about adding an alternative option 4?
> 
> 4b. We believe that there are indeed circumstances in which
> 1.0-with-diff is the best choice for a particular source package.
> Given that the number of packages for which this is relevant is
> fairly small, we recommend discontinuing use of 1.0-with-diff to
> gain more uniformity.

It seems to me that the lack of uniformity (and indeed technical
superiority) here is due entirely due to our inability to move forward
with a replacement for 1.0-with-diff that is actually superior for a
wider range of use cases.

I know that the TC has a history of favouring what looks like
"progress" over other factors (such as contributor happiness, software
diversity, and indeed inconvenient details).

In this case I would like to suggest that progress would be better
served by trying to unblock a better source format that (i) has some
kind of delta representation (ii) does not put a
needing-to-be-maintained copy of the delta metadata inside the working
tree.

There are several proposals for how to do that which are obviously
possible to implement.  If the TC wants to unblock that, you could
look at them and pick one.

(And, I quextion whether .dsc format is the right place for Debian to
pursue uniformity.  .dsc is a legacy format we are maintaining because
our git transition is stalled.)

Ian.

-- 
Ian JacksonThese 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.



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-06-07 Thread Matthew Vernon

On 07/06/2022 07:08, Sean Whitton wrote:


I agree, it's not about the benefits of the source format, we do indeed
understand all the trade-offs by now.  It's that certain ideas and
workflows *which are not really about source packages* are made
inconvenient or impossible if we remove this option.  In other words, it
needs to be replaced before it can be deprecated.


Mmm. And I'd be pretty reluctant to talk about deprecation until the 
replacement is good to go.



What would you think about adding an alternative option 4?

4b. We believe that there are indeed circumstances in which
 1.0-with-diff is the best choice for a particular source package.
 Given that the number of packages for which this is relevant is
 fairly small, we recommend discontinuing use of 1.0-with-diff to
 gain more uniformity.


Thanks for coming up with the text.  I'd say that as uniformity is not
good in itself, it would be good to have more concrete reasons for
wanting uniformity in this case documented in this bug (not necessarily
in the resolution text) before we add it to the ballot.


I would certainly vote against 4b as drafted; I would need considerable 
persuasion that "more uniformity" here is a concrete benefit.


Regards,

Matthew



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-06-07 Thread Ian Jackson
Christoph Berg writes ("Re: Bug#1007717: Draft resolution for "Native source 
package format with non-native version""):
> Re: Lucas Nussbaum
> > 4c. We believe that there are indeed circumstances in which
> > 1.0-with-diff is the best choice for a particular source package,
> > including, but not limited to, git-first packaging workflows.
> > However, we recommend discontinuing use of 1.0-with-diff in other
> > circumstances to gain more uniformity.
...
> The bit I was missing is something like "we would welcome changes to
> the 3.0 format to make it usable for the remaining cases where 1.0 is
> still better today". Did anyone investigate if that would be feasible?

A format that solves this problem well is entirely feasible on a
technical level, and not even particularly difficult.

Contenders for the details that have been mentioned in this thread[1]
are 3.0-with-git-diff (#1007781) and Lucas's suggestion for
incremental tarballs in this conversation
(https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1007717#185).

That could certainly fit within "changes to 3.0" since 3.0 already
encompasses a very wide variety of formats.

The real diifficulty isn't technical.  It's that it isn't worth
anyone's time *implementing* it because of the strong possibility that
its support and deployment would be blocked.

Perhaps TC would be willing to say something like this

   We hope for the development of a version of the 3.0 format which is
   usable for the remaining cases where 1.0 is still better today.

   The "3.0 with git diff" proposal in #1007781 seems to us to be a
   good option, and we encourage its implementation.  If the
   implementation quality is good, we feel it should be supported
   within Debian (subject to an appropriate transition plan).

I think 3.0-with-git-diff is the most promising candidate because it
fits into the existing ftpmaster workflow exactly as 1.0-with-diff
does now; this isn't so true of Lucas's incremental tarballs, and it
is even less true of my earlier 3.0-with-rsync-delta.

If the TC wants to give its blessing to one of the other format
proposals then that would be fine too from my point of view, but my
personal feeling is that it would be setting the TC up for a fight
with ftpmaster.  From what I know of the ftpmaster workflow I think
even Lucas's incremental tarball proposal would be a retrograde step
for them.

Ian.

-- 
Ian JacksonThese 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.



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-06-07 Thread Helmut Grohne
Hi Sean,

On Mon, Jun 06, 2022 at 11:08:48PM -0700, Sean Whitton wrote:
> I think this argument needs to be made more precise -- we should be
> clearer about why this particular un-uniformity is bad.  I don't think
> the issue for new contributors is persuasive enough, as new contributors
> can mostly ignore source packages.  It's not like, e.g., debhelper
> vs. cdbs.  I haven't yet seen an argument that the lack of uniformity is
> doing anyone's work any harm comparable to the harm done to things like
> what Ian and Sam want to do.

It seems to me that Ian et al works from the premise that source
packages are an export format and that git is the truth. In a sense,
that is correct as that's what most maintainers work with.
Unfortunately, packaging repositories have very diverse workflows, lack
discoverability and miss a simple trust root. A number of people have
tried to reconcile the various workflows, but that helps only so much.
On the other hand, source packages offer a very simple trust root and
uniform interface. If I am to modify an arbitrary package (with no prior
knowledge about it), I have some options to go about it.

I can use debcheckout. For a few packages, there is no repository
declared. Yet others point to non-existent servers. Still others point
to an obsolete repository that has been moved. After checking it out, I
have a git tree of something. It may come without upstream sources (e.g.
DHG) or with upstream sources. Patches may be applied or may be not. It
may be for the version I'm looking at or including unreleased changes or
pointing at some other suite. The representation of patches in git is
another story. The source repository may provide the ability to create
pull requests. Maybe the maintainer looks at them or maybe I'll have to
send a mail to the bts. I have no chance of figuring out this mess
without investing significant amount of time.

Then I can use dgit. It is way more uniform in a lot of aspects. Its
trust root resides with the CA cartel. The resulting tree may or may not
be representing the version I'm interested in. The history may be useful
or autogenerated for my checkout as initial checkin. The Debian
maintainer may be completely ignoring this representation. Most likely,
I won't be able to send a pull request.

And then, I can apt source the package. This is really simple and has an
easy to understand trust root. It also is reproducible. Unless using a
1.0 source format, debian/source/format tells me what kind of patch
system to expect and gladly there aren't too many options. I can
concentrate on the substance of my change without being distracted by
the packaging workflow details.

Please keep in mind that this is about trade-offs. It is a question of
how we value "package ownership". If we favour the strong ownership
approach that Debian used for a long time, then yes accommodating the
needs of maintainers is paramount. If we want to lessen the concept of
ownership, embrace drive-by contributions and decentralize maintenance,
then we need a stronger focus on uniformity. I suppose that my own
opinion on this matter is fairly obvious at this point.

Annoyingly enough, 3.0 (quilt) can be abused as well by deleting the
series file and managing patch application inside debian/rules. We do
have packages doing just that.

> I agree, it's not about the benefits of the source format, we do indeed
> understand all the trade-offs by now.  It's that certain ideas and
> workflows *which are not really about source packages* are made
> inconvenient or impossible if we remove this option.  In other words, it
> needs to be replaced before it can be deprecated.

I admit being somewhat ignorant towards workflows, because there are
just too many for me to be bothered to learn them all. In any case, I do
take issue with the premise that workflows need to continue to work.
We're deleting packages from unstable and stop supporting unique use
cases all the time. In most cases, we could continue supporting them for
longer, but we choose not to. I hope we all agree that there are too
many competing workflows. How would you go about reducing them to a sane
number?

> Thanks for coming up with the text.  I'd say that as uniformity is not
> good in itself, it would be good to have more concrete reasons for
> wanting uniformity in this case documented in this bug (not necessarily
> in the resolution text) before we add it to the ballot.

You can rephrase it as reducing complexity if that helps. It's not the
one additional source package format that is too much. It's that we
continue using all the failed experiments while adding new ones and when
some Lucas comes around and tries to clean up the mess he gets referred
to us.

I have anecdotal evidence that people find Debian's processes too
complex. Unless you closely work withing a particular packaging team
(with unified processes), onboarding people into Debian takes very long
compared to other projects.

Helmut



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-06-07 Thread Sean Whitton
Hello,

On Tue 07 Jun 2022 at 09:31am +02, Lucas Nussbaum wrote:

> A middle ground between (4) and (4b) could be to discourage the use of
> 1.0-with-diff in circumstances where it is not justified. Something
> like:
>
> 4c. We believe that there are indeed circumstances in which
> 1.0-with-diff is the best choice for a particular source package,
> including, but not limited to, git-first packaging workflows.
> However, we recommend discontinuing use of 1.0-with-diff in other
> circumstances to gain more uniformity.
>
> That opens the path to an archive where the only remaining 1.0 packages
> are the ones where there's a reason to use 1.0. (as opposed to
> currently, where we have a mix of packages using 1.0 for a good reason,
> and packages using 1.0 because nobody cared to update them to modern
> practices).

This would be a good ballot option to include, thank you.

-- 
Sean Whitton



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-06-07 Thread Sean Whitton
Hello,

On Tue 07 Jun 2022 at 08:19pm +02, Helmut Grohne wrote:

> Please keep in mind that this is about trade-offs. It is a question of
> how we value "package ownership". If we favour the strong ownership
> approach that Debian used for a long time, then yes accommodating the
> needs of maintainers is paramount. If we want to lessen the concept of
> ownership, embrace drive-by contributions and decentralize maintenance,
> then we need a stronger focus on uniformity. I suppose that my own
> opinion on this matter is fairly obvious at this point.

I disagree with you that this is primarily about package ownership, and
I think that we agree on more than you realise we do :)

The git-first people are not making a trade-off between the maintainer's
convenience and the convenience of others who want to work with the
package.  The most important reason for wanting both (i) git-first
workflows and (ii) uploads done with dgit, is to make it easier for
people other than the maintainer to work with the package.  So, your
priorities are quite in agreement with those of Ian, Sam, Russ and I.

In other words, I would like to make weaker package ownership more
possible, in a project with Debian's history, by improving our tools for
dealing with packages for which you're not primary maintainer.

What we disagree about is the extent to which the current tooling
amounts to a failed experiment, such that we should give up on it and
fall back to 'apt-get source'.  Many people strongly prefer 'dgit clone'
to 'apt-get source' already, and the number of people switching to
upload with 'dgit [--gbp] push-source' is steadily rising.  Against this
backdrop, some of us are interested in git-first workflows for reducing
the distance between the output of 'debcheckout' and 'dgit clone'.

It's completely reasonable that you're more sceptical about the
prospects of solving the outstanding issues in this programme than
others are, but surely we can agree that this is an ongoing piece of
work rather than something we're sure we can reject?  And if keeping an
old source package format around is needed for that work to continue,
then that's a compelling reason to keep it around.

> How would you go about reducing them to a sane number?

The goal is to attack this problem on two fronts:

1. reduce the need for uniformity by making it possible for people to
   get their cross-archive work done using 'dgit clone'

2. develop git-first workflows that solve all the existing usecases.

> You can rephrase it as reducing complexity if that helps. It's not the
> one additional source package format that is too much. It's that we
> continue using all the failed experiments while adding new ones and when
> some Lucas comes around and tries to clean up the mess he gets referred
> to us.

As I said, I don't think it's fair to characterise the git-first work as
a failed experiment.  It's ongoing work.  And the source package format
is just a way to keep it going, at the present moment.

> I have anecdotal evidence that people find Debian's processes too
> complex. Unless you closely work withing a particular packaging team
> (with unified processes), onboarding people into Debian takes very long
> compared to other projects.

Right, hence why we want 'dgit clone' to be as useful as possible.

-- 
Sean Whitton



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-06-07 Thread Sean Whitton
Hello,

On Tue 07 Jun 2022 at 11:26am +01, Ian Jackson wrote:

> In this case I would like to suggest that progress would be better
> served by trying to unblock a better source format that (i) has some
> kind of delta representation (ii) does not put a
> needing-to-be-maintained copy of the delta metadata inside the working
> tree.
>
> There are several proposals for how to do that which are obviously
> possible to implement.  If the TC wants to unblock that, you could
> look at them and pick one.
>
> (And, I quextion whether .dsc format is the right place for Debian to
> pursue uniformity.  .dsc is a legacy format we are maintaining because
> our git transition is stalled.)

I think that this would be out-of-scope for this bug as presented to us:
we'd need someone to present those options for us to choose between.
Let's stick with the current resolution text for a bug that's probably
been open too long already.

-- 
Sean Whitton



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-06-08 Thread Julian Andres Klode
On Tue, Jun 07, 2022 at 08:19:29PM +0200, Helmut Grohne wrote:
> Please keep in mind that this is about trade-offs. It is a question of
> how we value "package ownership". If we favour the strong ownership
> approach that Debian used for a long time, then yes accommodating the
> needs of maintainers is paramount. If we want to lessen the concept of
> ownership, embrace drive-by contributions and decentralize maintenance,
> then we need a stronger focus on uniformity. I suppose that my own
> opinion on this matter is fairly obvious at this point.

This is also a significant issue for downstreams. With my Ubuntu hat
on, if I have to touch packages downstream, I loathe it everytime I
get a non-descript blob of all the changes.

I suspect this is the same for other downstream distributions that
want to modify packages. We cannot cater to everyone's individual
packaging repository approach, and downstream repositories if they
exist are separate anyhow.

Using 1.0 instead of 3.0 (quilt) is just being a hostile upstream,
like Red Hat is with dumping all their kernel patches together.

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



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-06-08 Thread Sean Whitton
Hello,

On Wed 08 Jun 2022 at 12:06pm +02, Julian Andres Klode wrote:

> On Tue, Jun 07, 2022 at 08:19:29PM +0200, Helmut Grohne wrote:
>> Please keep in mind that this is about trade-offs. It is a question of
>> how we value "package ownership". If we favour the strong ownership
>> approach that Debian used for a long time, then yes accommodating the
>> needs of maintainers is paramount. If we want to lessen the concept of
>> ownership, embrace drive-by contributions and decentralize maintenance,
>> then we need a stronger focus on uniformity. I suppose that my own
>> opinion on this matter is fairly obvious at this point.
>
> This is also a significant issue for downstreams. With my Ubuntu hat
> on, if I have to touch packages downstream, I loathe it everytime I
> get a non-descript blob of all the changes.

This is not inherent to all of the workflows we are discussing here,
just one of them.  Indeed, this is one of the primary motivations for
one of the others.

-- 
Sean Whitton



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-06-08 Thread Helmut Grohne
Hi Sean,

On Tue, Jun 07, 2022 at 04:35:24PM -0700, Sean Whitton wrote:
> I disagree with you that this is primarily about package ownership, and
> I think that we agree on more than you realise we do :)

Hmm. It's not that obvious. While it would be possible to remove the
choice of workflow from strong package ownership, the way we practice
package ownership presently grants that freedom. Therefore I think they
still are closely related.

> The git-first people are not making a trade-off between the maintainer's
> convenience and the convenience of others who want to work with the
> package.  The most important reason for wanting both (i) git-first
> workflows and (ii) uploads done with dgit, is to make it easier for
> people other than the maintainer to work with the package.  So, your
> priorities are quite in agreement with those of Ian, Sam, Russ and I.

I find it interesting that you seem to equate git-first with dgit. My
mental model separated those concepts and considered git-first workflows
on salsa as well. And once you equate them, you can derive a lot of
conclusions. In my previous mail, I stated that dgit provides the sort
of uniformity I was looking for quite many aspects. I'm less sure that
all git-first users are dgit users though.

> In other words, I would like to make weaker package ownership more
> possible, in a project with Debian's history, by improving our tools for
> dealing with packages for which you're not primary maintainer.

I do see how this is a dgit goal. It just seems to me that dgit bolts a
secondary workflow onto packages that maintainers are free to ignore
entirely. Some choose to use that dgit workflow exclusively and others
don't. In a sense, the problem with dgit is that it leaves too much
freedom to maintainers (and in a project like Debian, it really has to
do exactly that or it would run into straight opposition).

> What we disagree about is the extent to which the current tooling
> amounts to a failed experiment, such that we should give up on it and
> fall back to 'apt-get source'.  Many people strongly prefer 'dgit clone'
> to 'apt-get source' already, and the number of people switching to
> upload with 'dgit [--gbp] push-source' is steadily rising.  Against this
> backdrop, some of us are interested in git-first workflows for reducing
> the distance between the output of 'debcheckout' and 'dgit clone'.

Indeed, dgit kinda faces a chicken & egg problem and it seems that it is
quite good at solving it: The usefulness of dgit grows with its
adoption. I have looked into replacing my apt source workflow with dgit
clone a number of times already and will continue trying.

> It's completely reasonable that you're more sceptical about the
> prospects of solving the outstanding issues in this programme than
> others are, but surely we can agree that this is an ongoing piece of
> work rather than something we're sure we can reject?  And if keeping an
> old source package format around is needed for that work to continue,
> then that's a compelling reason to keep it around.

I think I take more issue with non-dgit git-first workflows than with
dgit ones, because dgit is so well documented and is a workflow that is
already shared by a noticeable fraction of the archive.

What is not entirely clear to me is why dgit requires the 1.0-with-diff
format features. It seems to me that it quite happily deals with a
number of 3.0 (quilt) packages already. I suppose that you'll now
explain to me how some git trees are not representable as 3.0 (quilt)
packages, but do those exist in practice or are those mostly
pathological?

> > How would you go about reducing them to a sane number?
> 
> The goal is to attack this problem on two fronts:
> 
> 1. reduce the need for uniformity by making it possible for people to
>get their cross-archive work done using 'dgit clone'

I've seen this argument multiple times already and indeed dgit solves
part of the uniformity issues. However, dgit history often lacks
maintainer history (and in that way is little better than apt source)
and it also lacks a collaboration feature that would save me from
sending a .debdiff to the bts. Possibly, such a collaboration feature is
out-of-scope for dgit, but then maybe it is not the kind of tool solving
the problem of streamlining cross-archive work.

Either way, my understanding is that unless maintainers switch to using
dgit primarily, we just gain a secondary workflow here.

> 2. develop git-first workflows that solve all the existing usecases.

Can i rephrase that as follows? Implement so many features into dgit
that its workflow covers the needs of existing workflows and hope for
maintainers to migrate to dgit.

It feels a bit like https://xkcd.com/927/ (14 competing standards ->
15). On the other hand, dgit is remarkably successful already.

I had hoped that we could kinda trim the available workflows eventually.
It seems like you want to let them all die slowly and concurrently.

> > You can rephrase

Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-06-08 Thread Lucas Nussbaum
On 08/06/22 at 21:07 +0200, Helmut Grohne wrote:
> Now we've turned a discussion about source package formats into a
> discussion about workflows and git. So when I reason about uniformity, I
> effectively want those idiosyncratic workflows to go away. If dgit
> requires 1.0-with-diff for now, then maybe we could phrase it as an
> exception that is specific to dgit and limited until a better solution
> (such as the format proposed by Ian) is mature. If there are more
> git-first workflows beyond dgit that we want to support, maybe we can
> require declaring a working Vcs-Git for 1.0-with-diff uploads?

I think that the workflow used by the Debian X team is such a git-first
workflow that is not using dgit. That workflow combines Debian-specific
patches managed by quilt, and commits cherry-picked from upstream
directly applied to the source in git (outside of quilt).
See 

There are 89 packages maintained by Debian X among the 607 packages in
testing still using 1.0.

Lucas



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-06-08 Thread Lucas Nussbaum
On 08/06/22 at 21:07 +0200, Helmut Grohne wrote:
> I think I take more issue with non-dgit git-first workflows than with
> dgit ones, because dgit is so well documented and is a workflow that is
> already shared by a noticeable fraction of the archive.

I'm curious: how do you measure dgit usage?

You cannot just look at the list of repositories at
https://browse.dgit.debian.org/, since that just says that at some point
in the past, someone used dgit to work on that package, right?
For example, the keepass2 package has a repo there, but it is completely
outdated compared to what is in unstable.

Lucas



Bug#1007717: Draft resolution for "Native source package format with non-native version"

2022-06-08 Thread Sean Whitton
Hello,

On Wed 08 Jun 2022 at 09:07pm +02, Helmut Grohne wrote:

> I find it interesting that you seem to equate git-first with dgit. My
> mental model separated those concepts and considered git-first workflows
> on salsa as well. And once you equate them, you can derive a lot of
> conclusions. In my previous mail, I stated that dgit provides the sort
> of uniformity I was looking for quite many aspects. I'm less sure that
> all git-first users are dgit users though.
>
> I think I take more issue with non-dgit git-first workflows than with
> dgit ones, because dgit is so well documented and is a workflow that is
> already shared by a noticeable fraction of the archive.

Didn't mean to equate them, sorry.  We can state the following:

dgit should have support for all git-first workflows.  I am not sure
whether there are any git-first workflows in use on salsa for which you
can't 'dgit push-source' atm.  If there are, those are dgit bugs.

> What is not entirely clear to me is why dgit requires the 1.0-with-diff
> format features. It seems to me that it quite happily deals with a
> number of 3.0 (quilt) packages already. I suppose that you'll now
> explain to me how some git trees are not representable as 3.0 (quilt)
> packages, but do those exist in practice or are those mostly
> pathological?

Sorry, didn't mean to suggest that dgit requires 1.0-with-diff.  It does not.

>> The goal is to attack this problem on two fronts:
>>
>> 1. reduce the need for uniformity by making it possible for people to
>>get their cross-archive work done using 'dgit clone'
>
> I've seen this argument multiple times already and indeed dgit solves
> part of the uniformity issues. However, dgit history often lacks
> maintainer history (and in that way is little better than apt source)

Right, (1) is about making it easy for people to be using 'dgit
push-source' such that the maintainer history is there when you 'dgit clone'.

> and it also lacks a collaboration feature that would save me from
> sending a .debdiff to the bts. Possibly, such a collaboration feature
> is out-of-scope for dgit, but then maybe it is not the kind of tool
> solving the problem of streamlining cross-archive work.

Not out of scope, we have some notes for 'dgit nmudiff' in the BTS.
Would be cool to collaborate with you on finishing that up.

> Either way, my understanding is that unless maintainers switch to
> using dgit primarily, we just gain a secondary workflow here.

No -- (1) is all about ensuring that maintainers don't have to change
their workflows aside from how they do the actual upload.

>> 2. develop git-first workflows that solve all the existing usecases.
>
> Can i rephrase that as follows? Implement so many features into dgit
> that its workflow covers the needs of existing workflows and hope for
> maintainers to migrate to dgit.
>
> It feels a bit like https://xkcd.com/927/ (14 competing standards ->
> 15). On the other hand, dgit is remarkably successful already.

I don't think it can be rephrased that way.

Firstly, (1) is about dgit, but (2) is about tools like git-debrebase(1)
and workflows such as dgit-maint-merge(7).

More substantially, (1) is about attaching maintainer histories to the
dgit view, and (2) is about developing workflows which enables the
maintainer and dgit views to be identical.  That's what I mean when I
say that (1) and (2) are attacking the problem on two fronts.

(2) is particularly important for submitting NMU changes to the
maintainer -- it enables using salsa merge requests, for example.

> I had hoped that we could kinda trim the available workflows eventually.
> It seems like you want to let them all die slowly and concurrently.
>
> [...]
>
> I don't think there is "the git-first work".  Instead there is lots of
> concurrent git-first workflows that are all somewhat similar and yet
> subtly different. Those subtle differences is what I would like to get
> rid of.
>
> Now we've turned a discussion about source package formats into a
> discussion about workflows and git. So when I reason about uniformity, I
> effectively want those idiosyncratic workflows to go away. If dgit
> requires 1.0-with-diff for now, then maybe we could phrase it as an
> exception that is specific to dgit and limited until a better solution
> (such as the format proposed by Ian) is mature. If there are more
> git-first workflows beyond dgit that we want to support, maybe we can
> require declaring a working Vcs-Git for 1.0-with-diff uploads?

My own appraisal of the situation is that we do not know enough yet to
be thinking about cutting back on features and workflows.  But I
certainly agree that it would be better to have a better solution, like
Ian's sketch.

I think Ian has already suggested adding text to our resolution
recommending the development of such a source format.  To be honest I
don't think it's really necessary as everyone agrees it would be better
to have it, but if you think it should be said explicitly then let's