On 31 October 2017 at 05:39, Kent Fredric <kentfred...@gmail.com> wrote:
>
> On 31 October 2017 at 15:54, David Golden <x...@xdg.me> wrote:
> > On Mon, Oct 30, 2017 at 3:11 AM, Aristotle Pagaltzis <pagalt...@gmx.de>
> > wrote:
> >>
> >> >    - Per the "explicit user confirmation", I think an explicit opt-in
> >> >      must be present, not merely checking for overwriting via hashing.
> >>
> >> I don’t think so, and think it’s fine to not require it. But you didn’t
> >> state a reason why you think that so I don’t know whether I disagree
> >> with you.
> >
> >
> > Even if Peter's mechanism is in the spirit of the operating model, I would
> > prefer the higher standard of "explicit confirmation" as the operating model
> > call for.
> >
> > If you need a rationale -- practically speaking -- consider this scenario:
> >
> > 1. User without DBIC or DBIC::Boring installs some module Foo that depends
> > on DBIC::Boring; DBIC::Boring gets silently installed.
> > 2. User installs some module Bar that depends on DBIC; because DBIC doesn't
> > check for conflicts with DBIC::Boring, it silently overwrites it.
> > 3. Foo is now broken.  User doesn't know why.
> >
> > Whereas if in #1, the user had to opt into DBIC::Boring, then they would be
> > accepting the risk of future breakage from DBIC conflicts.
>
> I would expect based on the stability goals of DBIC::Boring, that this
> would mean the same kinds of breakages would be present for anyone who
> simply upgraded from an older version of DBIC to a newer version of
> DBIC
>
> And subsequently, that module Foo is broken with new version of DBIC *anyway*
>
> Which means there is a logical problem in the ecosystem entirely
> independent of the existence of DBIC::Boring


I disagree for several reasons.

Firstly, you *assume* that due to DBIC::Boring's goals, DBIC will
break by upgrading. DBIC might break future versions and might not.
This is an assumption on your behalf and ignored the problem itself.

Additionally, this assumes that DBIC::Boring's goals (even if pursued
wholeheartedly and contain absolutely zero mistakes) would be the aim
(and success) of any other Alt::*, thus dismissing David's general
point, beyond DBIC::Boring.

David gave a plausible situation in which package Foo could break due
to unknowingly depending on Alt::Bar instead of Bar, wherein Bar might
overwrite Alt::Bar. If you keep your position and assumptions on DBIC
or DBIC::Boring aside, this problem is quite clear. There is an
inherent problem for a user that does not explicitly know every
distribution in their application's chain of dependencies.

Honestly, the only ways I can think of (off-hand) is either 1)
explicitly indicating "Yup, I know this. I'm okay with it. I'll take
care of it if it breaks," or 2) A mechanism that detects it and
reinstates Alt::Bar at the end; or 3) Bar knowing about Alt::Bar (and
Alt::Bar::ButBetter) and not overwrite them. The last is unlikely, the
first is more straightforward, and the second a long-term (but perhaps
fragile) possibility.

You cannot dismiss this case, only figure out how to ease it.

Reply via email to