On Wed, 01 Nov 2017 00:44:12 +0100, Andreas Koenig
<andreas.koenig.7os6v...@franz.ak.mind.de> wrote:

> My reasoning tries to base on previous art first, the letter of the
> Pause Operating Model (POM) second, and the intent of the POM third.
> Since the intent can only be guessed, we would hope that we do not
> need to resort to that. But then there is a fourth thing: reasoning what
> we as a community *need* to achieve.
> 
> Previous art
> 
> One distribution comes to mind that asks the user whether he wants to
> install a secondary namespace:
> 
>  : Installing Data::Dump::Streamer
>  : 
>  : I can install a shortcut so you can use the package 'DDS'
>  : as though it was 'Data::Dump::Streamer'. This is handy for oneliners.
>  : *Note* that if you select 'no' below and you already
>  : have it installed then it will be removed.
>  : 
>  : Would you like me to install the shortcut? (yes/no) [no ]
> 
> So it is a long established practice, that modules may ask for
> permission to be installed under a different name. I haven't ever heard
> complaints about that.

Yes, I also see this as common practice

I only saw these as top-level "namespace", and none with ::

I have CSV.pm available for Text::CSV_XS adding Data::Peek, but the
build does not offer it as shortcut. You have to install it yourself
from the git checkout (it is not included in the release tarball)
https://github.com/Tux/Text-CSV_XS/blob/master/sandbox/CSV.pm

I have DP.pm for Data::Peek, just like DDS for Data::Dump::Streamer.
https://github.com/Tux/Data-Peek/blob/master/Makefile.PL#L35

> Letter of the POM
> 
> The following citation is taken directly from the POM:
> 
>  : * Installing your module(s) should not result in changes to
>  :   someone else's modules that might already be installed,
>  :   either by changing them or removing them.

Hmm, that would mean that DDS and DP should *ONLY* install if DP.pm or
DDS.pm does not exist or exists as the intended wrapper in a previous
version. (/me takes action ...)

>  : * The one exception to the above is where that's the whole raison d'être
>  :   of your module.
>  :   In that case it should be clearly documented as such,
>  :   and the installation process should get explicit user confirmation
>  :   that they wish to proceed with this.
>  :   The documentation and name of your module should be respectful.
> 
> I understand the first paragraph as: if your module is A you must not
> change or remove module B. The second paragraph makes this mandate
> relative: if your module is A you must not change or remove module B
> *under the hood*. But everything's fair if you predeclare. If all you
> want to achieve is changing B, then get explicit permission from the end
> user and do it.
> 
> Intent of the POM
> 
> This is my personal reading of the two written paragraphs I cited above,
> so probably the intent: Perl5 is really bad at dealing with two
> implementations on the same namespace, so if a precious namespace has
> competing interpretations and people cannot come up with a clever way of
> separating code into alternative namespaces, we should not get in the
> way as long as developer and end user agree on what they want to
> achieve.
> 
> What *we* must achieve
> 
> Foremost debuggability: if things go wrong we should be able to find out
> which parties were involved and how. What was intended, what happened,
> which contract or perceived contract was broken. And we need to be able
> to identify a way forward. We need a way to go from A to B and from B to
> A. When B has been overwritten, we need a way to find out whether the
> user has agreed to overwriting B.
> 
> The overwriter is kindly asked to provide clue about what's going on and
> avoid obscuring things. For example, how will cpantesters reports look
> like? They should of course be attributed to the overwriting module, not
> to the overwritten one.
> 
> After installation: in the past we could pretty much rely on paths in
> the filesystem and version numbers. This stops working when a distro
> could overwrite a file with code that declares the same version number.
> But I can imagine plenty of ways to prevent that sort of confusion. Some
> will *just work*, so we probably need not explain the nitty gritty
> details in the POM how this is achieved best. People will have to find
> that out on their own.
> 
> And besides debuggability what we really need to achieve is that such
> approaches about dealing with conflicting goals find a way of
> coexistence. What we cannot allow is that module A's whole raison d'être
> is modifying B and B's whole raison d'être is modifying A. If such a
> circular reference happens, it's probably time to reboot CPAN.
> 
> Yes, it should not be done lightly. It may cause major havoc if done
> wrongly. There are probably plenty of pitfalls before mutually each
> other overwriting CPAN modules.
> 
>  [...]  
> 
>   > Let me be very clear that, to me, the issue at stake is about two (or
>   > more) distributions "fighting" over a particular path on the
>   > filesystem. My position -- consistent with that of the Operating Model
>   > -- is that this is not acceptable unless a user explicitly opts into
>   > such a situation in some way. Period.  
> 
> Agreed. Onus of proof is with the overwriter. Whether the agreement must
> be renewed on every installation is subject to their agreement.
> Overwriter is kindly requested to be clear about the intent and how to
> opt out later.
> 
>   > [...]  
> 
>   > To justify why, recall that the prohibition is stated as "*installing*
>   > an indexed distribution.. should not change post-install module
>   > loading for any package that is not indexed to that distribution"
>   > [emphasis mine]. Merely *installing* Alt::Bar does not change the
>   > loading of Bar. The *use* of Alt::Bar does, but the Operating Model
>   > doesn't speak to that (nor do I think it should).  
> 
> I believe, the paragraph about "The one exception" would justify the one
> exception where developer and end user agree to do something
> *exceptional*. I don't think it is a carte blanche to break CPAN but it
> could be a carte blanche to help CPAN to survive in times of trouble.
> Like all sharp tools, it has potential to be the rope to hang yourself.
> 
>   > I'm curious what other PAUSE admins think, and I'm not telling Peter
>   > what he has to do -- only putting forward my view as one PAUSE admin.
>   > In summary:  
> 
>   > * To qualify for the "safe harbor" protection when overwriting another
>   > indexed distributions files, I think an explicit user action to opt in
>   > is a requirement  
> 
> Agreed.
> 
>   > * I would prefer to see different approaches for Alt-* modules that
>   > don't involve battling over the filesystem in the first place  
> 
> Of course I agree here, but this ship has sailed. And I also think perl
> sometimes does not provide enough rope. At least I understood the
> sentence about "the one exception" as a way to prevent deadlock due to
> all sort of shortcomings in the real world.
> 


-- 
H.Merijn Brand  http://tux.nl   Perl Monger  http://amsterdam.pm.org/
using perl5.00307 .. 5.27   porting perl5 on HP-UX, AIX, and openSUSE
http://mirrors.develooper.com/hpux/        http://www.test-smoke.org/
http://qa.perl.org   http://www.goldmark.org/jeff/stupid-disclaimers/

Attachment: pgp4j8PH933dV.pgp
Description: OpenPGP digital signature

Reply via email to