Package: pkg-perl-tools
Version: 0.60
Severity: normal

Hi,

in 2012, mst documented¹ why the design of Any::Moose was problematic,
and why Moo solved the same class of problems in a better way.
In 2015, the upstream maintainers of Any::Moose² marked it as
deprecated and filed bug reports upstream against tons of reverse
dependencies. The next year, they added a runtime deprecation warning
at runtime, which made Niko notice this problem: it made autopkgtests
fail³ out-of-the-box. Then, we started tracking Any::Moose reverse
dependencies⁴ via the any-moose usertag.

I argue that the more reverse-dependencies of Any::Moose we include in
Debian,

 - the less nice we are to Any::Moose upstream, who have been trying
   since 5 years to discourage folks from using it;

 - the less nice we are to our end-users, who can easily get stuck in
   solutions that are technical dead-ends (lots of the code I've seen
   use Any::Moose is effectively abandoned upstream since 2-10 years);

 - the more complicated we make life for Debian-using Perl developers
   who need to pick an OO toolkit and have to choose between so many
   options, including current best practices, deprecated tools
   (Any::Moose), and some that are essentially on life support
   (Mouse ← I may come after this one later);

 - the more we're increasing technical debt that we, the Debian Perl
   group, will have to repay some day. I'd rather see our efforts
   focused on packaging stuff that has a future.

I propose a two-fold strategy. This bug report is only about (a) but
I believe the big picture can help understand how a Lintian fits into
it:

a) Avoid things getting any worse than they currently are

   To do so, decrease the risk we upload NEW packages that depend on
   Any::Moose; and make it more obvious that something fishy is going
   on, if a new upstream release introduces a dependency on
   Any::Moose.

   → Add a Lintian check. That's what this bug report is about.

   A rebuttal could be that in the current state of things, if the
   maintainer does not take any action, the autopkgtests will fail,
   which already provides a somewhat loud warning. However, that
   warning does not provide any insight about the context, so I expect
   than instead of serving educational purposes, it yields "meh, let's
   just add this to use-whitelist and ignore the noise" reactions.
   A Lintian check could explain things better.

b) Significantly decrease the number of Any::Moose reverse
   dependencies in Debian; at this point I'm not aiming at reaching
   0 reverse dependencies (yet?).

   → Each of these reverse dependencies now has a bug report in our
   BTS⁴, with a proposed course of action most of the time, and
   a corresponding upstream bug report. In many cases it sounds
   reasonable to remove the package (low popcon, no reverse dependency
   or they're themselves obsolete, abandoned upstream). In some cases
   it feels it's too early (somewhat more important module, or no
   upstream bug report filed until yesterday so I'd like to give
   upstream some time to react.

[1] https://shadow.cat/blog/matt-s-trout/moo-versus-any-moose/
[2] https://metacpan.org/release/Any-Moose
[3] For example, #845772. I believe we added workarounds
    to make all affected autopkgtests ignore this warning.
[4] 
https://udd.debian.org/cgi-bin/bts-usertags.cgi?tag=any-moose&user=debian-perl%40lists.debian.org

Cheers!

Reply via email to