Perl Elitism ?

barbie on 2004-04-21T11:45:47

Why do several CPAN authors currently insist that I cannot use their code, unless I delete one little line from each of their modules (and occassionally in the Makefile.PL if they've thought about it) ? Why do they assume that I'm not good enough to use their code out of the box?

And the offending line?

use 5.008;
I'm running a 5.6.1 version of Perl. That isn't likely change anytime soon, and there are several other people quite happily running 5.6.1 around the world too. So why discriminate unnecessarily? There have been two modules recently, that I thought looked interesting and investigated further, to discover (not unsurprisingly) that there was no need for the line at all. The one author I have contacted so far, was thankfully very friendly. It was his first module, so was quite happy to listen to suggestions. That module has now been uploaded without the 5.8 dependency.

In the reverse, it is quite useful to testers, as well others, that if your module depends on 5.8 features (or depends on another module which depends on 5.8 features), that you include the 'use 5.008' line in your Makefile.PL. It saves a lot of grief and bogus test reports as CPANPLUS doesn't always pick it up if it's just in the module.

I'll try and take a little extra time in future, to see if other 5.8 modules are really 5.8 modules.


use 5.8

drhyde on 2004-04-21T12:15:58

I don't put that in mine, but I probably should. Not because I use 5.8-specific features, but because I haven't tested it on anything lower. It's not sufficient to put that in the Makefile.PL, because you don't always make on the same machine as you use.

Re:use 5.8

barbie on 2004-04-21T13:36:46

The CPAN testers would soon tell you if it didn't work on 5.8 :)

I can see it might make a difference if you make on a 5.6 (or other) machine, but in the long run it helps the user if it bombs before getting any further than 'perl Makefile.PL'.

Re:use 5.8

Ovid on 2004-04-21T14:51:21

Well, as you've noticed by now, this is probably from people running h2xs blindly using the generated module stub. As for the "CPAN testers" idea, I would be mortified if I uploaded a CPAN module and it failed tests. I gots me a reputation to maintain :)

Re:use 5.8

barbie on 2004-04-21T15:25:49

A fair point.

Perhaps mailing the cpan-testers list or the code review list (which has gone quiet these days) with a request to test on other Perls and/or other boxes might be an idea, then sending test reports to the author only. I have certainly attempted it when asked, and similar requests in the past seem to have been met with favourable responses from others. Providing it didn't get overwhelmed of course.

In the end it comes down to knowing what's out there and how to use it. Whether thats h2xs, the cpan-testers or any other resource. Several new authors have actually been quite shocked when I send them a test report that doesn't merit sending to the cpan-testers list. They're often amazed that people will take time out to actually test their modules on all the different variations.

Same problems as 5.6

ajt on 2004-04-21T12:29:35

When 5.6.x came out, some people put:

use 5.6.0;
in their Makefiles/module, again often for no reason. I think that the "our" keyword was often the only valid reason why they specified 5.6.x, and that's often avoidable.

I know my modules have only been tested with a limited subset of Perl versions, I say use 5.006; because I do use "our" and I don't have any older Perls to test it with. I think things have moved on enough for me to say this, but accept patches, whereas use 5.008; by default seems a little premature.

Re:Same problems as 5.6

link on 2004-04-21T13:14:15

Its been a while since I looked into creating a CPAN module so I can't recall the recommended way to do it. I think if use use h2xs it automatically inserts a use for the version of perl you happen to be using.

Re:Same problems as 5.6

barbie on 2004-04-21T13:33:36

Drat, just checked and you're right :(

IMO it would have been nicer if there was a commandline option that allowed you to specify a specific version, rather than always assuming the current version onwards. I haven't used h2xs in a very long time, so never realised it did that.

Oh well, at least I know why now.

Re:Same problems as 5.6

TeeJay on 2004-04-21T14:06:00

there is a -b option iirc, just authors don't use it.

I would sooner remove the version line and wait for cpan-testers to notify if it fails on a particular version or platform.

I try not to use non perl 5.5 syntax in any CPAN code. Writing for CPAN is different to writing work projects where you know what modules will be installed and which version.

This is why releasing work code to CPAN is nontrivial - first you have to check its not going to lose your employer (or yourself) competitive advantage, then you have to ensure that any IP you have licensed or signed agreements about is removed, then any references to that IP, then you want to remove company-specific code and stuff, finally you try and ensure it runs outside of the office/datacenter.