On Tue, 23 Jul 2019 at 13:54:10 +0200, Santiago Vila wrote:
> Ethics of FTBFS bug reporting

I don't think framing this as a question of ethics is necessarily
helpful. When people disagree on a technical question, a recurring
problem is that both "sides" end up increasingly defensive, arguing
from an entrenched position, and unwilling to be persuaded. Using terms
that the other "side" is likely to interpret as an accusation of being
unethical seems likely to exacerbate this.

> I reported this bug:
> 
> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=907829
> 
> and it was downgraded on the basis that the official autobuilders
> are multi-core.

Do I understand correctly that you are asking the TC to exercise our
power to overrule developers, in order to overrule the maintainer's
and/or the release team's judgement about the severity of (bugs like)
#907829?

Or are you asking the TC for advice, or are you asking us to use a
different one of the TC's powers?

> * The informal guideline which is being used, "FTBFS are serious if
> and only if they happen on buildd.debian.org", is not written anywhere
> and it's contradictory with Debian Policy, which says "it must be
> possible to build the package when build-essential and the
> build-dependencies are installed".

I had always interpreted the informal guideline as: FTBFS on the official
buildds of release architectures are always serious, because they mean we
can't release the package; FTFBS anywhere else (non-release architectures,
unofficial buildds, pbuilder, etc.) *might* be serious, but might not,
depending on how "reasonable" the build environment is.

There are many aspects of a build environment that might be considered
reasonable and might not, and they are generally evaluated on a
case-by-case basis. A working build environment needs "enough" RAM (a
lot more for gcc or WebKit than for hello); it needs "enough" disk space
(likewise); it needs a writeable /tmp; it needs a correctly-installed
Debian toolchain (I hope you wouldn't argue that it's RC if a package
FTFBS with a patched gcc in /usr/local/bin); it needs to be on a
case-sensitive filesystem (I hope you wouldn't argue that FTBFS on
FAT/NTFS/SMB would be release-critical); it needs to not have weird
LD_PRELOAD hacks subverting its expectations; and so on.

We also have packages that FTBFS (usually as a result of test failures)
when built as uid 0, when built as gid 0, when built with not enough
CPUs, when built with too many CPUs (a lot of race conditions become more
obvious with make -j32), when built in a time zone 13 hours away from UTC,
when built on filesystems that don't provide the FIEMAP ioctl, when built
on filesystems that don't have sub-second timestamp resolution, and many
other failure modes. Clearly these are bugs. However, not all bugs are
equally serious. For example, we've managed to release the glib2.0 package
for years, despite it failing to build when you're uid 0 (a test fails
because it doesn't expect to be able to exercise CAP_DAC_ADMIN), because
we consider building as uid 0 to be at least somewhat unreasonable.

If build-time test failures are always RC, however usual or unusual the
build environment, then one rational response would be for all maintainers
to disable build-time tests (if they are particularly conscientious,
they might open a wishlist bug, "should run tests", at the same time
as closing a RC bug like "FTBFS due to test failure when gid == 0"). I
don't think that is a desirable outcome. We are not building packages for
the sake of building them, but so that they can be used - which means we
should welcome efforts like build-time tests that improve our confidence
that the package is actually usable in practice, and not just buildable,
and try to avoid creating incentives to remove them.

For the specific question of whether a single CPU core is a "reasonable"
build environment, my answer at the moment is "I don't know".

> * Because this is a violation of a Policy "must" directive, I consider
> the downgrade to be a tricky way to modify Debian Policy without
> following the usual Policy decision-making procedure.

The wording of the serious severity is that it is a "severe" violation
of Debian Policy, which is qualified with "(*roughly*, it violates a
"must" or "required" directive)" (my emphasis). This suggests that there
can exist Policy "must" violations that are not RC.

The release team are the authority on what is and isn't RC: the fact that
serious bugs are normally RC is merely convention. However, I suspect
that the release team would not welcome being asked to add -ignore
tags to serious bugs that describe non-severe Policy "must" violations,
and would ask the package's maintainer to downgrade the bug instead.

> To illustrate why I think this guideline can't be universal, let's
> consider the case (as a "thought experiment") where we have a package
> which builds ok with "dpkg-buildpackage -A" and "dpkg-buildpackage -B"
> but FTBFS when built with plain "dpkg-buildpackage".
> 
> Are we truely and honestly saying this package would not deserve a
> serious bug in the BTS just because it builds ok in the buildds?

In this case I think I'd open the bug as serious, but if the maintainer
downgraded it with the justification that a straightforward workaround
exists, I think that would be reasonable. For the end user to be able
to exercise their software freedom, they need to be able to build the
package *somehow*, but I don't think that can imply that every possible
build configuration must be supported - there are innumerable ways to
construct an unreasonable build environment, and we can't support them
all. We have no shortage of bugs already!

> Whenever someone dares to report a bug like this as serious, following
> both Debian Policy and Release Policy (or at least the letter of it),
> we lambast them, we make mock of their building environment, we call
> them a fool, and we quote informal guidelines which are not written
> anywhere.

Developers should not lambast bug reporters or call them fools, but I
think we have to have a sense of priorities. A package failing to build
under some circumstances is not *necessarily* a serious Policy violation:
if it was, every FTBFS on the reproducible-builds infrastructure would
be RC, including those that only happen because the reproducible-builds
infrastructure is specifically trying to cause odd situations.

If a maintainer has a couple of hours to spend on Debian, then I think
it would often be of more benefit to our users and Free Software to
spend that time fixing an important, normal or even wishlist bug (for
example "application crashes when I do foo" or "no way to do foo using
public API") than to spend it fixing a FTBFS that only occurs in unusual
circumstances. If our concept of bug severity doesn't reflect that,
then our concept of bug severity needs to be improved: bug severity,
and the BTS in general, should be a tool to make Debian as good as it
can be, not a mechanism to coerce maintainers.

(If developers are resorting to personal attacks like calling you a
fool, then that is not acceptable, and I would suggest contacting the
anti-harassment team if you feel that it is appropriate. However, that's
orthogonal to whether that developer is prioritizing bugs correctly.)

    smcv

Reply via email to