Re: Maintainers, porters, and burden of porting [and 1 more messages]

2011-08-31 Thread Ian Jackson
Lucas Nussbaum writes (Maintainers, porters, and burden of porting):
 However, issues such as miscompilation or broken syscall or libc
 semantics are largely undetected. To illustrate this, you can have a
 look at #635126 (miscompilation on armel and sparc) and #639658
 (forks+threads fun on kFreeBSD, derived from #593139).

To be honest I think it's unreasonable to expect to be able to provide
a full Debian system on an architecture with significant bugs in this
pthreads (much as I personally hate multithreaded code ...).

Our problem is that we have only these three choices:

 * Leave affected packages blocked from testing propagation until the
   bug is fixed.  This is the right answer before the bug has been
   properly identified, or if the bug is reasonably tractable and
   should simply be fixed (and can thus be expected to be fixed by
   anyone who cares in a reasonable timeframe).

 * Drop the arch from testing propagation.  This is a global change
   and will quickly make the architecture a wreck in our archive.
   It's a very unpalatable choice and one that obviously porter teams
   will strongly resist.

 * Change each individual source package affected by a per-arch bug
   (perhaps a bug in one of the dependencies) to exclude the affected
   architecture.  This is a lot of faff and is recording the
   information about the bug in the wrong place (and when the bug is
   fixed a lot of work needs to be undone).  Understandably
   maintainers resist that.

 * The RMs could manually override testing propagation for certain
   bugs.  I don't know if this is already done but as a general
   solution it obviously doesn't scale - the RMs don't have the time
   to research and deal with this kind of thing retail.

Let me make an alternative proposal:

 * The root cause bug in the BTS would be given a special tag
   (arch-blocker:arch or something).  I will call such a bug which
   is open and has existed in this state for 30 days a ripe arch
   blocker for arch.

   Bugs in other affected packages are marked as blocked by the root
   cause bug.  These bugs, and the arch blocker itself, may be RC, or
   not, as appropriate.  Let us say ripe arch bug to mean ripe arch
   blocker, or bug blocked by a ripe arch blocker.

   The effects would be:

1. Any ripe arch bug is ignored for the purposes of testing
   propagation.

2. For a package with an RC ripe arch bug for arch:
  (i) arch will be ignored for testing propagation
  (ii) no builds will be attempted by arch buildds,
   automatic tests may be skipped on arch, etc.

The workflow would be as follows:

 * If a package has an arch-specific bug, the root cause needs to be
   identified, by collaboration between porters and maintainers.  This
   process should be driven by the maintainer.

 * Once the cause has been identified:

- If the root cause is elsewhere, a bug needs to be filed bug
  against that other package.  If such a bug already exists, the
  maintainer of the first package can simply mark their bug as
  blocked by the arch blocker.  This will allow their package to
  migrate unless the arch blocker is new enough.

  If no such bug already exists, the maintainer should file a bug
  against the appropriate package (toolchain or libc, perhaps),
  and immediately tag it as an arch blocker.

- If the root cause is in the package itself, the maintainer or a
  porter may tag the bug with arch-blocker:arch.  This is
  appropriate if the fact that the package isn't portable is a
  bug, with which the maintainer wants help from porters, rather
  than an inherent property of the package.

  If the bug is RC this will effectively allow the maintainer to
  drop support for that arch if help is not forthcoming, without
  having to modify the source package. 

  A porter should only remove the arch-blocker tag if the cause
  has been clearly identified, and the steps necessary to fix it
  are simple and straightforward bugfixes to the package, and
  these steps have been set out in the bug report.

 * If the cause cannot be determined, whether because sufficient
   support from porters isn't available, or for any other reason, the
   maintainer should proceed on the assumption that the bug is in
   their own package.

The intended result would be that architectures with persistent
problems would become partial.  But things wouldn't get worse on those
architectures for packages not affected by persistent arch-specific
bugs.

The approach I describe will hopefully also avoid the necessity for
arguments between maintainers and porters about whose fault a bug is.

When an arch blocker is fixed, all the packages which were affected
are now fully considered for testing propagation.  I guess it may be
necessary to force through some transitions which the arch has
missed.  I'm not sure how feasible this would be and I would welcome
comments from RMs.

Ian.


Re: Maintainers, porters, and burden of porting [and 1 more messages]

2011-08-31 Thread Kurt Roeckx
On Wed, Aug 31, 2011 at 02:52:53PM +0100, Ian Jackson wrote:
 Let me make an alternative proposal:
 
  * The root cause bug in the BTS would be given a special tag
(arch-blocker:arch or something).  I will call such a bug which
is open and has existed in this state for 30 days a ripe arch
blocker for arch.
 
Bugs in other affected packages are marked as blocked by the root
cause bug.  These bugs, and the arch blocker itself, may be RC, or
not, as appropriate.  Let us say ripe arch bug to mean ripe arch
blocker, or bug blocked by a ripe arch blocker.

If there is a bug in say eglibc on only arch, and considered to be
RC on that arch, would you then lower the severity of that bug,
and use this new tag to indicate it's RC only on that arch?

This could be useful for arches that are not being considered for
a release, but I don't see the point in doing the same for if it's
currently still considered for a release.  If the bug already
affects testing it will migrate anyway.

But tracking bugs that way might also be useful to see if we
should consider that the arch should be part of the next release
or not.

The effects would be:
 
 1. Any ripe arch bug is ignored for the purposes of testing
propagation.

If they already affect testing, it will already be ignored
anyway.

 2. For a package with an RC ripe arch bug for arch:
   (i) arch will be ignored for testing propagation

So such bugs would automaticly have an effect on release
migration, while this is not something the release team
decides itself.  Or do you only mean that package will
be ignored and can move testing anyway?  Or they can't
move to testing?

   (ii) no builds will be attempted by arch buildds,

You mean we completly stop building anything for $arch?  Or
only the packages that are affected by it?  Other than wasting
some buildd time, I don't see the harm in building things most
of the time.

automatic tests may be skipped on arch, etc.
 
 The workflow would be as follows:
 
  * If a package has an arch-specific bug, the root cause needs to be
identified, by collaboration between porters and maintainers.  This
process should be driven by the maintainer.
 
  * Once the cause has been identified:
 
 - If the root cause is elsewhere, a bug needs to be filed bug
   against that other package.  If such a bug already exists, the
   maintainer of the first package can simply mark their bug as
   blocked by the arch blocker.  This will allow their package to
   migrate unless the arch blocker is new enough.
 
   If no such bug already exists, the maintainer should file a bug
   against the appropriate package (toolchain or libc, perhaps),
   and immediately tag it as an arch blocker.

You can just reassign the bug and mark it as affecting an other
package.  There is no need to have 2 bugs open for the same
problem.


Kurt


-- 
To UNSUBSCRIBE, email to debian-release-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20110831200319.gb25...@roeckx.be