Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-07 Thread Tels
Moin,

On Friday 07 April 2006 02:55, Adam Kennedy wrote:
  I use 5.8.0 as minimum, but for unicode I think it should be 5.8.1 -
  but I am unsure. COuld you give a reason for why specifically 5.8.3?

 Actually, in consultation with Audrey and other $experts,
 Perl::MinimumVersion applies a 5.8.4 minimum whenever it sees any
 mention of Unicode.

Didn't know Perl::MinimumVersion existed :/

 I believe it was that version that fixed the last major Unicode bug.
 Something to do with Cjoin ?

The code never says 5.8.4:

$VERSION = '0.11';

# Export the PMV convenience constant
@EXPORT_OK = 'PMV';

# The primary list of version checks
%CHECKS = (
# Various small things
_bugfix_magic_errno   = version-new('5.008.003'),

# Included in 5.6. Broken until 5.8
_pragma_utf8  = version-new('5.008'),

_perl_5006_pragmas= version-new('5.006'),
_any_our_variables= version-new('5.006'),
_any_binary_literals  = version-new('5.006'),
_magic_version= version-new('5.006'),
_any_attributes   = version-new('5.006'),

_perl_5005_pragmas= version-new('5.005'),
_perl_5005_modules= version-new('5.005'),
_any_tied_arrays  = version-new('5.005'),
_any_quotelike_regexp = version-new('5.005'),
_any_INIT_blocks  = version-new('5.005'),
);

Would be good to find this out. ALso, the changelog mentions ignore 
perlvar, could you please fix it?

Best wishes,

Tels

-- 
 Signed on Fri Apr  7 10:35:40 2006 with key 0x93B84C15.
 Visit my photo gallery at http://bloodgate.com/photos/
 PGP key on http://bloodgate.com/tels.asc or per email.

 Let's say there are a thousand. But there are 284 million people in
 this country. You can't have public policy that is aimed at 100,000
 people when the other multi-multi-millions are also involved. You can't
 do it that way. - Jack Valenty in http://tinyurl.com/2y65n



pgp0i48Wc8YF9.pgp
Description: PGP signature


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-06 Thread Adam Kennedy
I use 5.8.0 as minimum, but for unicode I think it should be 5.8.1 - but I 
am unsure. COuld you give a reason for why specifically 5.8.3?


Actually, in consultation with Audrey and other $experts, 
Perl::MinimumVersion applies a 5.8.4 minimum whenever it sees any 
mention of Unicode.


I believe it was that version that fixed the last major Unicode bug. 
Something to do with Cjoin ?


Adam K


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-06 Thread chromatic
On Thursday 06 April 2006 17:53, Adam Kennedy wrote:

 UNIVERSAL::isa/can when called as a function does a very specific thing,
 and one that is often misunderstood.

... and never correct, in the face of proxy objects, blessed objects, 
overloading, and ties.

 And if you were able to distinguish between good and bad uses, then fine.

 The problem comes that under UNIVERSAL::isa/can there is NO way to
 UNIVERSAL::isa/can in the documented way.

From the documentation in bleadperl:

  =head1 EXPORTS

  None by default.

  You may request the import of all three functions (Cisa, Ccan, and
  CVERSION), however it is usually harmful to do so.  Please don't do this   
  in new code.

-- c


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-05 Thread Nicholas Clark
On Tue, Apr 04, 2006 at 11:27:07AM +0200, Sébastien Aperghis-Tramoni wrote:

 I don't think that the problem of core is too big is a matter of disk
 size, but more a matter of number of modules. P5Porters time is a scarce
 ressource, and they already lack the time to do all the work they'd
 like to do just on the interpreter. Making core modules dual-life is
 a way to handle these to someone else who has spare time and who doesn't
 need to have deep XS or Perl guts knowledge. At least I think that's
 the reason, otherwise why was I accepted as the maintainer of two
 such modules (XSLoader and Sys::Syslog)?

Well, I think it's that reason too. :-)

Yes, to me, size is maintainance liability, not disk space or bandwidth.
Putting things in core is a pain. Keeping them there is a pain. I remember
the fun of getting Storable sufficiently portable that it could go into
the core. Trying to work around strange issues thrown up by certain AIX
compilers in certain configurations...

Nicholas Clark


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-05 Thread H.Merijn Brand
On Wed, 5 Apr 2006 14:20:15 +0100, Nicholas Clark [EMAIL PROTECTED] wrote:

 On Tue, Apr 04, 2006 at 11:27:07AM +0200, Sébastien Aperghis-Tramoni wrote:
 
  I don't think that the problem of core is too big is a matter of disk
  size, but more a matter of number of modules. P5Porters time is a scarce
  ressource, and they already lack the time to do all the work they'd
  like to do just on the interpreter. Making core modules dual-life is
  a way to handle these to someone else who has spare time and who doesn't
  need to have deep XS or Perl guts knowledge. At least I think that's
  the reason, otherwise why was I accepted as the maintainer of two
  such modules (XSLoader and Sys::Syslog)?
 
 Well, I think it's that reason too. :-)
 
 Yes, to me, size is maintainance liability, not disk space or bandwidth.
 Putting things in core is a pain. Keeping them there is a pain. I remember
 the fun of getting Storable sufficiently portable that it could go into
 the core. Trying to work around strange issues thrown up by certain AIX
 compilers in certain configurations...

Which reminds me ...

Will the new volunteer to maintain README.aix please stand up?

It's almost no time involved, but fun in working with AIX is a pre, which
rules the current maintainer (me) out.

-- 
H.Merijn BrandAmsterdam Perl Mongers (http://amsterdam.pm.org/)
using  porting perl 5.6.2, 5.8.x, 5.9.x  on HP-UX 10.20, 11.00, 11.11,
 11.23, SuSE 10.0, AIX 4.3  5.2, and Cygwin.   http://qa.perl.org
http://mirrors.develooper.com/hpux/   http://www.test-smoke.org
   http://www.goldmark.org/jeff/stupid-disclaimers/


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-05 Thread Ricardo SIGNES
* H.Merijn Brand [EMAIL PROTECTED] [2006-04-05T02:39:20]
 I'll just mention two things, both very different
 
 A. CORE modules are tested on all supported architectures, while CPAN modules
do not give that guarantee. The smoke system still causes all possible
combinations to be tested on various architectures in various
configurations.

Absolutely; this, I cede.

 B. Let's just name YAML. Up until 0.38 it was not to difficult to install a
module that is very useful, but now in 0.58, it uses a different test
suite, that needs Spiffy, that needs ..

Ugh, yeah, but you're picking a very specific and specifically troubled
distribution.  You also didn't mention (maybe you've been spared learning) that
YAML used to export :all but now doesn't.

That said, I don't dispute the point that it can be wildly obnoxious when
Something::Trivial requires DBD::MySQL and Data::Dump::Streamer when it could
use neither -- or at least rely on AnyDBM and Data::Dumper.  It will just meant
that fewer people want to use that trivial module because it takes longer to
install and is less well-tested by virtue of its dependencies.

My opinion only.

I don't think your opinion, as stated, is insane.  I think it's better to vote
with your installer, though, and avoid using those modules that have more
dependencies than you think is right.  I think that Kwalitee is an over-rated
concept, but not useless -- but weirder things keep getting proposed to make it
even less useful.  I think too many non-core deps would be a nail in its
coffin as a global metric.

-- 
rjbs


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-05 Thread demerphq
On 4/5/06, Ricardo SIGNES [EMAIL PROTECTED] wrote:
 That said, I don't dispute the point that it can be wildly obnoxious when
 Something::Trivial requires DBD::MySQL and Data::Dump::Streamer when it 
 could
 use neither -- or at least rely on AnyDBM and Data::Dumper.  It will just 
 meant
 that fewer people want to use that trivial module because it takes longer to
 install and is less well-tested by virtue of its dependencies.

Interesting example. What module do you mean? I wasnt aware that there
were very many modules that have dependencies on DDS. OTOH, if it has
to do with proper serilization (of closures, or cyclic data
structures) then Data::Dumper just wont cut it.

Cheers,
Yves

--
perl -Mre=debug -e /just|another|perl|hacker/


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-05 Thread chromatic
On Wednesday 05 April 2006 02:02, Adam Kennedy wrote:

 But it's also why UNIVERSAL::isa/can and people adding higher-version
 dependencies below their existing lower-dependency modules is bad.

 The code used to work just fine, and now it doesn't.

This is a strange definition of work just fine, as before UNIVERSAL::isa and 
UNIVERSAL::can, I had to deal with way too many bug reports of other people's 
code breaking mine.  In other words, it didn't work.

For example, Template::Toolkit may *never* work with Test::MockObject because 
the author refuses to ask the author of CGI.pm to fix a bug in the latter 
module, despite apparently knowing about it for several years and apparently 
preferring to break my code instead.

I'm not going to release knowingly broken code, just so my broken code can run 
brokenly on really old versions of Perl.  What good is that?

-- c


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-05 Thread Ricardo SIGNES
* demerphq [EMAIL PROTECTED] [2006-04-05T10:23:45]
 On 4/5/06, Ricardo SIGNES [EMAIL PROTECTED] wrote:
  That said, I don't dispute the point that it can be wildly obnoxious when
  Something::Trivial requires DBD::MySQL and Data::Dump::Streamer when it
  could use neither -- or at least rely on AnyDBM and Data::Dumper.  It will
  just meant that fewer people want to use that trivial module because it
  takes longer to install and is less well-tested by virtue of its
  dependencies.
 
 Interesting example. What module do you mean? I wasnt aware that there
 were very many modules that have dependencies on DDS. OTOH, if it has
 to do with proper serilization (of closures, or cyclic data
 structures) then Data::Dumper just wont cut it.

I was making a random example of something that used something it probably
didn't need, and that used something that might be emulable by core modules.

-- 
rjbs


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-05 Thread Tels
Moin,

On Wednesday 05 April 2006 06:43, Adam Kennedy wrote:
 Ricardo SIGNES wrote:
  * H.Merijn Brand [EMAIL PROTECTED] [2006-04-04T10:40:39]
 
[sniplots]
 But there's very little point in using Exporter::Lite because 100 other
 modules use Exporter in any given program.

 So even though Exporter::Lite is lite'r than Exporter, the use of
 Exporter is zero, while Exporter::Lite means loading another module,
 and adds another dependency.

 And because dependencies are recursive, you inherit it's baggage.

 If one dep doesn't work on VMS, now your program doesn't.

 And the more dependencies, especially if you are using more than one
 module that does the same thing just because of stylistic differences,
 then it means more problems.

 It's not till you hit something like Ricardo's exporter, which does
 some very novel and interesting extra things, that you reach the
 threshold.

 It's mostly the same, but if you need the extra parts, then it might be
 worth the extra dependency.

Which is why Graph::Easy will include about 50 lines reinventing 
Heap::Binary - it removes the last dependency, uses less memory, is 
faster, and it avoids with me dealing with the only other option, 
Heap::Simple, because Heap::Simple comes in two flavours, Perl and XS and 
_you_ have to choose which to make the dependency, meaning the user 
doesn't get a choise other than needs suddenly a compiler, but is 
faster or needs still no compiler, but is not much faster than 
Heap::Binary.

Anyway, I think that we all agree in principle, but everyone has different 
thresholds.

best wishes,

Tels

-- 
 Signed on Wed Apr  5 18:31:08 2006 with key 0x93B84C15.
 Visit my photo gallery at http://bloodgate.com/photos/
 PGP key on http://bloodgate.com/tels.asc or per email.

 My wife is just a slow brain, running up the bill.. -- Often misheard
 song lyrics #149



pgpWBojwpqe9N.pgp
Description: PGP signature


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-05 Thread Tels
Moin,

On Wednesday 05 April 2006 06:57, Adam Kennedy wrote:
 chromatic wrote:
  On Tuesday 04 April 2006 10:32, Tels wrote:
 There is also the point that supporting ancient Perls means you
 can't use all the new, wonderfull features that were added to later
 versions of Perl, like our, warnings etc.
 
  This to me is the biggest problem.  After 6 years, is it finally okay
  for me to use such exotic features as lexical warnings and lexical
  filehandles, just to satisfy someone who refuses to upgrade an eight
  year old installation of Perl?
[snip]
  I'm trying to figure out why I've been sending patches to p5p for
  about five years now if people complain when I take advantage of the
  bugs they fix.  At some point, it would be nice if people were to use
  software released this millennium.

 Ever written software for government?

Yes. And I don't know which parts of the mystical government you speak 
off, but people everywhere are pretty pissed of when they have to work 
with 10 year old software.

Hell, there are problems getting hardware that still runs that old stuff.

 It's routine to be required to offer a 10 year support period.

Yes, but that does not mean that you need to upgrade the installation with 
the-latest-foo-bar-from-cpan-which-just-breaks-on-5.004. You just keep 
the system as it is and patch when breakage really occurs. :)

 This comes up more often that you might think.

 And so as my gold standard for back-compatability, I use 10 years. A
 decade is a nice round number.

Ugh - but at least we don't have 16 fingers :)

 If it's something that isn't very core'y, I use a secondary support
 period of 5 years.

 Seeing as the worst support cases are about 10 years in a variety of
 countries and situations, I think that is what we should be aiming for
 for highly used CPAN modules.

 Which last time I checked is now 5.005.something

 So I aim there.

I wont :)

best wishes,

Tels

-- 
 Signed on Wed Apr  5 18:21:33 2006 with key 0x93B84C15.
 Visit my photo gallery at http://bloodgate.com/photos/
 PGP key on http://bloodgate.com/tels.asc or per email.

 My glasses, my glasses. I cannot see without my glasses. - My
 glasses, my glasses. I cannot be seen without my glasses.



pgpmeg0FZETKZ.pgp
Description: PGP signature


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-05 Thread Adam Kennedy

chromatic wrote:

On Wednesday 05 April 2006 02:02, Adam Kennedy wrote:


But it's also why UNIVERSAL::isa/can and people adding higher-version
dependencies below their existing lower-dependency modules is bad.

The code used to work just fine, and now it doesn't.


This is a strange definition of work just fine, as before UNIVERSAL::isa and 
UNIVERSAL::can, I had to deal with way too many bug reports of other people's 
code breaking mine.  In other words, it didn't work.


And now in return, we have new modules that changes the way EVERYBODY 
else's code works, and changes the meaning of that code instead, so 
Test::MockObject gets less spurious bug reports.


UNIVERSAL::isa and UNIVERSAL::can remain a good idea implemented without 
sufficient hubris.


As I've mentioned a few times, a much better option would have been 
something like warnings::isacan, to warn about bad calls, but which when 
the few of us that NEED to use as a function, knowing exactly what we 
mean by using it that way, don't have it magically and forcibly and 
mistakenly converted to a method.


And to make matters worse, now there's a warning suppression option, so 
they now just magically change the way the code works, potentially 
breaking it without warning.


For example, Template::Toolkit may *never* work with Test::MockObject because 
the author refuses to ask the author of CGI.pm to fix a bug in the latter 
module, despite apparently knowing about it for several years and apparently 
preferring to break my code instead.


Turnabout is not fair play when it comes to bugs.

I'm not going to release knowingly broken code, just so my broken code can run 
brokenly on really old versions of Perl.  What good is that?


I wasn't aware Test::MockObject was fundamentall broken. As far as I was 
aware it does the right thing. And if someone uses UNIVERSAL::isa the 
wrong way, that's their problem to fix.


And as for the version issue, you should do what you like there, because 
you introduced it as a new module. Just make sure the version dependency 
is explicit.


Adam K


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-05 Thread Tels
Moin,

On Wednesday 05 April 2006 20:46, H.Merijn Brand wrote:
 On Wed, 5 Apr 2006 18:30:33 +0200, Tels [EMAIL PROTECTED] 
wrote:
  Moin,
  On Wednesday 05 April 2006 06:57, Adam Kennedy wrote:
   chromatic wrote:
On Tuesday 04 April 2006 10:32, Tels wrote:
  [snip]
I'm trying to figure out why I've been sending patches to p5p for
about five years now if people complain when I take advantage of
the bugs they fix.  At some point, it would be nice if people
were to use software released this millennium.
   Ever written software for government?
 
  Yes. And I don't know which parts of the mystical government you
  speak off, but people everywhere are pretty pissed of when they have
  to work with 10 year old software.

 We *only* have local government as customers, and they get *my* perl,
 installed in *our* tree. Of course my perl includes defined-or :)

:o)

  Hell, there are problems getting hardware that still runs that old
  stuff.
 
 :)

 One customer ran production on a system so old that they didn't dare to
 reboot it, because they were affraid it was not going to boot again.
 OK, that was 6 years ago, but still, government is a strange customer.

You will laugh, but the most common hardware failure occurs due to 
power-down/power-up cycles. Systems run happy for months, even years, 
shut them down, let them cool, boot them up, and the HD, power supply or 
mainboard is dead.

That's why you use a lot and big UPS.

Government indeed is strange. Some parts of it can't buy ink for the 
printer, let alone a new HD, others blow a million on a new data center. 
Usually, both parts sit in the same building :-P

   It's routine to be required to offer a 10 year support period.

  Yes, but that does not mean that you need to upgrade the installation
  with the-latest-foo-bar-from-cpan-which-just-breaks-on-5.004. You
  just keep the system as it is and patch when breakage really occurs.
  :)

 I don't care if their default perl breaks down. That would be their
 fault. As long as they don't break mine. Perl has the advantage of not
 being tied to this product *must* be installed in /usr (and yes, we
 *do* have a third party that still sets that requirement for their
 product), symlinks to the rescue.

Yeah, but if you install your own Perl, then the modules you use can work 
with it, hence there is no requirement for Foo-Bar to actually run under 
5.004. That was my main point :D

It's like saying that $LatestGame must run under Win95, just because there 
are a few people who insist that they use it.

I hate upgrade cycles as much as everyone else, but even more annoying are 
people stuck in the last decade :D

   This comes up more often that you might think.
  
   And so as my gold standard for back-compatability, I use 10 years.
   A decade is a nice round number.
 
  Ugh - but at least we don't have 16 fingers :)

 5.8.3 is the minimum to accept for me, and it should have defined-or

I use 5.8.0 as minimum, but for unicode I think it should be 5.8.1 - but I 
am unsure. COuld you give a reason for why specifically 5.8.3?

best wishes,

Tels

-- 
 Signed on Wed Apr  5 23:17:38 2006 with key 0x93B84C15.
 Visit my photo gallery at http://bloodgate.com/photos/
 PGP key on http://bloodgate.com/tels.asc or per email.

 helft den armen vögeln  -- gegen kleinschreibung



pgpOZC3IARHEP.pgp
Description: PGP signature


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-05 Thread Randy W. Sims

demerphq wrote:

On 4/4/06, Adam Kennedy [EMAIL PROTECTED] wrote:

Module::Build wants to go in, but because they use YAML for the data
file, we add Ingy's YAML.pm, who then decides he wants to use Test::Base
for everything he does, so that slips in undernearth, and of course
Test::Base is based on Spiffy, so Spiffy needs to go in the core (which
isn't what actually happened, but could have)


Actually I thought the decision was that YAML wasnt going in and that
the MB team would roll their own writer?


Already done by Stephen Adkins, from Changes for 0.27_10:

 - We now include our own YAML.pm work-alike that we can use when the
   real YAML isn't installed.  We might soon even start using it when
   YAML is installed, because the YAML API and dependency chain have
   been changing in unfavorable ways lately. [Stephen Adkins]

This is the version that is currently in blead perl, so this dependency 
problem is resolved.


Randy.


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-04 Thread Sébastien Aperghis-Tramoni
demerphq wrote:

 On 4/4/06, Sébastien Aperghis-Tramoni [EMAIL PROTECTED] wrote:
  (*) Yes, I know that the core Perl distribution includes many modules,
  but ask any P5Porter and he'll answer you that the core is over-crowed
  and that all core modules that can be made dual-life should be released
  on the CPAN.

 I dont agree with this. Or rather, I dont agree that the core is
 over-crowded. I do agree that as many modules should be dual-lifed as
 possible however, but that is just so you can upgrade without
 upgrading perl.

Yes, and if some of these modules can be made to work on older Perl as
well with one- or two-lines patches, isn't it even better? :-)

 Personally i think the core is too big argument is a red-herring
 given that bandwidth is as cheap as it is these days. Adding a couple
 of modules to core would increase the rsynch time by what a second or
 two? It would suck up a couple of extra K, something like 1% of what
 most of use for our web-browser cache. So the size argument IMO doesnt
 hold water.

I don't think that the problem of core is too big is a matter of disk
size, but more a matter of number of modules. P5Porters time is a scarce
ressource, and they already lack the time to do all the work they'd
like to do just on the interpreter. Making core modules dual-life is
a way to handle these to someone else who has spare time and who doesn't
need to have deep XS or Perl guts knowledge. At least I think that's
the reason, otherwise why was I accepted as the maintainer of two
such modules (XSLoader and Sys::Syslog)?

 Also, there is a tension in the community relating to this issue that
 i dont think we will see any resolution of soon.

 Many module authors set a design objective of making their modules
 dependent only on core modules.  This is a comment that I see on a
 regular basis.

When I hear or read that, I always wonder if the author realised that
core modules is something dependant on the Perl distribution version.
For example a module as important as Test::More was included in the
core in 5.7, which really means 5.8.

Maybe the problem is that, like Abigail pointed it in P5P, there were
fewer Perl releases in the past years, and more precisely we're at the
same branches (5.8 / 5.9) since a long time, therefore reducing the cycle
of potential inclusion of new modules.

 IMO this objecitve is in direct contradiction of the purported P5P
 objective of not adding stuff to the core and just makes omissions
 from the core even more critical.

 Anyway, i just wanted to add this because I dont think that you can
 take it for granted that all perl5porters believe the core module set
 should be as restricted as possible. I dont. I believe that the core
 should contain out of the box enough support for the various platforms
 that perl runs on that when people write code based only on core
 modules they can do a good job without reinventing wheels or code
 duplication.

In a sense, my opinion does not really matter here: the facts are that
many P5Porters in general, and the Pumpkings in particular, dislike
adding new modules to the core, on the basis that installing modules
from the CPAN is easy. You're more active on P5P than I am, so I don't
have to recall you all the discussions that preceded the inclusion of
CPANPLUS and Module::Build, and how making them work everywhere doesn't
look an easy task.

But note that I don't necessarily disagree with you: I would welcome
a Perl distribution that offer more modules, but when I need to write
a portable program, that must run on older Perl, the new features in
the core can't be used anyway.


--
Sébastien Aperghis-Tramoni

Close the world, txEn eht nepO.


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-04 Thread Adam Kennedy



Many module authors set a design objective of making their modules
dependent only on core modules.  This is a comment that I see on a
regular basis.



When I hear or read that, I always wonder if the author realised that
core modules is something dependant on the Perl distribution version.
For example a module as important as Test::More was included in the
core in 5.7, which really means 5.8.


This isn't an issue.

Any distribution is going to have a Perl version dependency.

So for any given distribution $d with Perl version dependency 
$d-minver, it needs to keep $d-deps as a subset of 
$perl[$d-minver]-modules.


This is what 99% of authors mean by that phrase.

And generally the bugs only occur when they misread their minimum 
version, or don't put an explicit minimum (and so never bother to check).


Adam K


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-04 Thread David Landgren

demerphq wrote:

On 4/4/06, Sébastien Aperghis-Tramoni [EMAIL PROTECTED] wrote:

(*) Yes, I know that the core Perl distribution includes many modules,
but ask any P5Porter and he'll answer you that the core is over-crowed
and that all core modules that can be made dual-life should be released
on the CPAN.


I dont agree with this. Or rather, I dont agree that the core is
over-crowded. I do agree that as many modules should be dual-lifed as
possible however, but that is just so you can upgrade without
upgrading perl.


There are some crappy modules in the core, though. I mean, look at 
CSearch::Dict. I'm never likely to use that in a million years. 
(partly because the documentation doesn't help me understand what it 
buys me).


Or CText::Soundex. I know what it does, but its purpose is so 
specialised (and in this international age, woefully parochial) that it 
hardly deserves core status. It's just that it's been in there forever. 
In another universe it would be on CPAN only. Possibly with some sort of 
plug-in architecture to let you switch in Metaphone and other 
algorithms. Then it might be a bit more useful.


There are also some mistakes, like Switch, but once a module goes in, it 
can never be removed. That's the main reason why people are so leery 
these days of adding new stuff to the core, in case they get it wrong.



Personally i think the core is too big argument is a red-herring
given that bandwidth is as cheap as it is these days. Adding a couple


I don't think bandwidth is the argument.


of modules to core would increase the rsynch time by what a second or
two? It would suck up a couple of extra K, something like 1% of what
most of use for our web-browser cache. So the size argument IMO doesnt
hold water.


There is the multiplier effect of having that new K stored on all the 
mirrors to keep in mind.



Also, there is a tension in the community relating to this issue that
i dont think we will see any resolution of soon.

Many module authors set a design objective of making their modules
dependent only on core modules.  This is a comment that I see on a 
regular basis.


As long as the core modules are there on the basis that they serve as 
building blocks to build other modules, I don't see any problem with 
that. The trouble is that all the cool tools are evolving so rapidly 
that putting them into core would really cramp their style.



IMO this objecitve is in direct contradiction of the purported P5P
objective of not adding stuff to the core and just makes omissions
from the core even more critical.


I'm curious, what's critically lacking?


Anyway, i just wanted to add this because I dont think that you can
take it for granted that all perl5porters believe the core module set
should be as restricted as possible. I dont. I believe that the core
should contain out of the box enough support for the various platforms
that perl runs on that when people write code based only on core
modules they can do a good job without reinventing wheels or code
duplication.


What wheels are being reinvented, or what code is being duplicated? I 
think the core problem-space isn't too bad.


I'm not sure that there are many intermediate level modules left out 
there that can be applied to generic module development. I'm not sure 
that I want to drink the Class::* kool-aid.



Long term i think the community needs to sort out this problem because
I dont think there is consensus on it, and I think that a lot of
people only look at the issue from their own individual point of view.
If somebody is concerned about the overall quality of perl and CPAN I
think a more holisitic point of view is required.


Who was it who was working on the global CPAN dependency graph, to 
figure out what module was dependent on what? Whatever became of that? I 
think hard numbers that stand on their own merits are about the only way 
to get new stuff into core. Let the early adopters try out non-CPAN 
low-level modules. Then after a while, see what floats to the top.


David

--
It's overkill of course, but you can never have too much overkill.




Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-04 Thread Adam Kennedy


Who was it who was working on the global CPAN dependency graph, to 
figure out what module was dependent on what? Whatever became of that? I 
think hard numbers that stand on their own merits are about the only way 
to get new stuff into core. Let the early adopters try out non-CPAN 
low-level modules. Then after a while, see what floats to the top.


There's a couple of people working on this in dribs and drabs, me included.

With the new DBIx::Loader module coming out soon, and having SQLite 
support, I'm planning on merging Data::Package::SQLite with DBIx::Class 
so you can point a class at a SQLite URI and it will just sort of 
download and unfold itself into a full CDBI-like interface to the data.


And with that, we get much much easier access to the datasets generated 
by CPANTs, CPAN Testers, and a few other things.


Which makes dependency graphs and such much much more trivial, and more 
likely to be available from something you just grab from CPAN.


(and once I get my CPAN SQLite index, you get CDBI-like access to the 
index too, like JSAN has)


Adam K


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-04 Thread Tels
Moin,

On Tuesday 04 April 2006 01:50, Tyler MacDonald wrote:
 Sébastien Aperghis-Tramoni [EMAIL PROTECTED] wrote:
  OTOH, who still runs pre-5.8.x code deserves what they get.
  
  There are horrible bugs in older Perls, and I don't know why people
  still
  insist using insecure, buggy and feature-lacking code like 5.6. or
   even gasp 5.004. Just think Unicode support, hash
   randomization, memory leaks.

   FWIW I've heard at least one valid argument for sticking with 5.6,
 and that actually is unicode support. :-)

   Apparently, in 5.6 regular expressions don't have full unicode
 support. But in 5.8 the regexp unicode stuff is expensive. And to make
 matters worse, if anything in any package that you import uses unicode,
 the new, slower unicode regular expression algorithm is applied to
 *everything* and there's no easy way to turn that off.

   This is just a nasty rumour I'm sure, but I've heard it multiple
 times from multiple people. I like to stay on the cutting edge and if
 my regexps are too slow, I'll find some other way to do it. :-)

Which is fine if you live in ASCII land. Herr Müller paying € 150 to Mr. ☺
唐鳳☻ might not share your view. :)

OTOH, since the introduction of 5.6, hardware has gotten faster and 
cheaper, so the slower, but actually working Unicode processing in 5.8 
might something you actually want :D

Best wishes,

Tels

-- 
 Signed on Tue Apr  4 19:33:08 2006 with key 0x93B84C15.
 Visit my photo gallery at http://bloodgate.com/photos/
 PGP key on http://bloodgate.com/tels.asc or per email.

 Ivonna Humpalot



pgp7hTifO3azx.pgp
Description: PGP signature


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-04 Thread Tels
Moin,

On Tuesday 04 April 2006 18:30, Adam Kennedy wrote:
  Who was it who was working on the global CPAN dependency graph, to
  figure out what module was dependent on what? Whatever became of
  that? I think hard numbers that stand on their own merits are about
  the only way to get new stuff into core. Let the early adopters try
  out non-CPAN low-level modules. Then after a while, see what floats
  to the top.

I was, but it is atm very hard to get simple things queried from the 
CPANTS (or CPAN or whatever) database.

There is a package list, but it only includes author/file info, no 
dependencies, license etc.

There is also CPANTS database, which includes the stuff, but is outdated 
(e.g. from 2005-12-05)

I thought about writing my own stuff, but I am completely overloaded with 
other work atm.

It would be cool to generated whatever graphs/stats from CPAN easily, 
though. And if you have easily dependency information, you could even 
easily build an auto-bundler, that throws you a .tar.gz containing the 
module and every nec. dependency in one go.

best wishes,

tels

-- 
 Signed on Tue Apr  4 18:54:00 2006 with key 0x93B84C15.
 Visit my photo gallery at http://bloodgate.com/photos/
 PGP key on http://bloodgate.com/tels.asc or per email.

 A Thaum is the basic unit of magical strength. It has been universally
 established as the amount of magic needed to create one small white
 pigeon or three normal-sized billiard balls. -- Terry Pratchett



pgp1HneGlmNHF.pgp
Description: PGP signature


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-04 Thread Tels
Moin,

On Tuesday 04 April 2006 01:35, Sébastien Aperghis-Tramoni wrote:
 Tels wrote:
  Moin,

 Hello Tels,

  OTOH, who still runs pre-5.8.x code deserves what they get.
 
  There are horrible bugs in older Perls, and I don't know why people
  still
  insist using insecure, buggy and feature-lacking code like 5.6. or
  even gasp 5.004. Just think Unicode support, hash randomization,
  memory leaks.

 You forget that there's more than one way to use Perl :-)

:)

 When Perl is used for sysadmin tasks, most of the features you listed
 (and I could add threads support, new IO implementation, signals
 handling, subroutines attributes) are of no to little use because
 such Perl scripts are run for executing tasks that do not require
 advanced Perl features like those just listed. Remember that on Unix
 systems, Perl is like Bash, Sed and Awk, only more powerful (even if
 it's by one or two orders). Do you replace your /bin/sh on your Solaris
 with the latest Bash just because it has very new and cool features?
 Usually you can't. Mainly because it could break things, and has little
 to no added value.

On workstations, poeple (e.g me, collegues, family etc) tend to install a 
new system every 2..3 years because the old(er) linux versions are 
usually lacking in feature (like, say, no unicode support, no support for 
modern hardware, buggy software, etc etc).

OTOH, I have server systems running for like 3 years (or until the 
hardware burns down) because it works. (Usually, after a few years you 
upgrade the system anyway, because the definition of works changed 
sufficiently, or the environment causes the machine to no longer work 
with others).

In the former case I am not interested in running older perls, in the 
latter case I am not updating any module or software on the server unless 
its definitely broken, because updating lets say File::Temp would risk 
breaking the system, and users of the machine in question don't like 
downtimes.

Now, there is definitely a difference between very basic modules that 
should run on 5.004, like File::Temp or whatever, and fancy stuff you 
don't want to run on such old systems, like say Graph::Easy, though. 

But for instance, I am totally at a loss why Version.pm needs to support 
5.004 - I mean, if you are running such an ancient machine, why put a new 
Version.pm on it and risk breaking stuff?

Likewise, why using BigInt on 5.004? The bugs in overload.pm alone would 
probably make your head spin.

I think the worst case is that the testsuite runs ok, so you think it 
works, but it then breaks in many and subtle ways, exactly when you need 
it most.

More below:

  Using these older Perls means you basically show the hard-working
  Perl5-Porters that you don't care for their work in improving Perl.

 But the Perl interpreter (which is what the P5Porters are working on)
 and the Perl modules are mostly disconnected (*). Where would be the
 interest to use an interpreted language if it were tied to a specific
 version of the interpreter? Most Perl code out there don't require
 recent features.

 To continue with my previous analogy, there are also many people that
 work hard on the Linux kernel, the GNU system, and all the different
 parts that compose a GNU/Linux distribution, but when a server is in
 production, you can't upgrade it at your wish.

 (*) Yes, I know that the core Perl distribution includes many modules,
 but ask any P5Porter and he'll answer you that the core is over-crowed
 and that all core modules that can be made dual-life should be released
 on the CPAN.

  I know, now people will come out of the wood and say that they have
  that
  old system, and no, they can't upgrade Perl etc, never touch a
  running system etc yadda yadda. But what the heck do you then try to
  upgrade modules on said system when you didn't want to touch the
  system?

 My current $work is to write a Perl program that must execute on about
 1200 Linux servers, with Perl versions ranging from 5.004 to 5.8. I
 can't upgrade Perl on these because they have different kernel / glibc
 / gcc versions. But that's not a problem because I don't need to
 upgrade Perl or the modules on said systems, just to put the modules I
 need in a directory and use lib /that/directory. Of course I need to
 use modules that work with 5.004, or patch them so they work with
 5.004, but you could be surprised to see how little some of the patches
 are. Can be as simple as removing require 5.6 (as for File::Temp).
 Most of the patches I've sent were less than 10 lines of differences.

You $work is what I call a special case. It is certainly not the generic 
case (at least for my userbase), and I don't think that authors should 
have to care for such special needs (unless they want :-D.

The biggest problem you face IMHO is that the module might work in 
testing, but not in praxis. Dont think CPAN testers even do 5.6 anymore, 
and I do not havy anything older than 5.8.3 at my disposal. This means 

Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-04 Thread chromatic
On Tuesday 04 April 2006 10:32, Tels wrote:

 There is also the point that supporting ancient Perls means you
 can't use all the new, wonderfull features that were added to later
 versions of Perl, like our, warnings etc.

This to me is the biggest problem.  After 6 years, is it finally okay for me 
to use such exotic features as lexical warnings and lexical filehandles, just 
to satisfy someone who refuses to upgrade an eight year old installation of 
Perl?

Are there such people who absolutely want to use the latest code I wrote 
without actually upgrading their systems?

I'm trying to figure out why I've been sending patches to p5p for about five 
years now if people complain when I take advantage of the bugs they fix.  At 
some point, it would be nice if people were to use software released this 
millennium.

-- c


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-04 Thread Ricardo SIGNES
* H.Merijn Brand [EMAIL PROTECTED] [2006-04-04T10:40:39]
 And then still people make more of the same. Take Getopt::Long. A perfect and
 very functional module. Full of features, matured, and actively maintained.
 Now go look at CPAN, and see how many people either do not like it or find
 other reasons to write their own.
 
 The problems arise when authors of big modules start prefering non-core
 versions of good core modules. IMHO something like that should give you a
 (very) negative score on CPANTS.

Could you elaborate on this?  As stated, it seems pretty ludicrous to me.  It
reads like this:

  You should not use module B that is like module A, if A is in the core
  distribution.  This is true regardless of the fact that B may be better
  optimized for your current needs, planned needs, programming style.

This can be further distilled to:

  There's more than one way to do it, but most of them will get you dirty
  looks.

-- 
rjbs


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-04 Thread Adam Kennedy

chromatic wrote:

On Tuesday 04 April 2006 10:32, Tels wrote:



There is also the point that supporting ancient Perls means you
can't use all the new, wonderfull features that were added to later
versions of Perl, like our, warnings etc.



This to me is the biggest problem.  After 6 years, is it finally okay for me 
to use such exotic features as lexical warnings and lexical filehandles, just 
to satisfy someone who refuses to upgrade an eight year old installation of 
Perl?


The answer is it depends.

I'll have a more definative answer once we get the dependency graph 
stuff sorted out.


But as a stopgap answer, I offer the following.

Yes you can, as long as nobody else uses your module.

If you write something for 5.8.4, and then over time dozens of other 
modules that use yours are all 5.005, then it might be worth looking at 
doing some back-porting, because you've become the weakest link.


That said, to some degree they made that situation themself.

On the other hand, if YOU were adding a module as a new dependency of 
something you already have that needs 5.005, and 100 other 5.005 things 
already use, then you just broke 5.005 support on them all.


So I'd say on CPAN 5.005 is it's something you expect others to use, 5.6 
for general things if you want, 5.8.4 is you need unicode (or whatever 
other special cases apply) and if people start using you and you are 
getting in the way, consider dropping.


And once we get CPAN and CPANTs graph modules set up, I have an 
algorithm in mind that should be able to give us a list of the 
Backcompatibility Weakest Links, the modules that are prevent other 
modules below them from working on the versions they say they can.


Are there such people who absolutely want to use the latest code I wrote 
without actually upgrading their systems?


I'm trying to figure out why I've been sending patches to p5p for about five 
years now if people complain when I take advantage of the bugs they fix.  At 
some point, it would be nice if people were to use software released this 
millennium.


Ever written software for government?

It's routine to be required to offer a 10 year support period.

This comes up more often that you might think.

And so as my gold standard for back-compatability, I use 10 years. A 
decade is a nice round number.


If it's something that isn't very core'y, I use a secondary support 
period of 5 years.


Seeing as the worst support cases are about 10 years in a variety of 
countries and situations, I think that is what we should be aiming for 
for highly used CPAN modules.


Which last time I checked is now 5.005.something

So I aim there.

Adam K


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-04 Thread chromatic
On Tuesday 04 April 2006 21:57, Adam Kennedy wrote:

 Seeing as the worst support cases are about 10 years in a variety of
 countries and situations, I think that is what we should be aiming for
 for highly used CPAN modules.

 Which last time I checked is now 5.005.something

 So I aim there.

Should is nice and all, but until you start paying my invoices for the 
special $40 an hour for free software support (and not a one-time fee, 'cuz 
maintenance costs, but it's a much better deal than my usual consulting 
rate), it's just an opinion out there in the luminous aether somewhere and 
I'll go on quite happily giving people useful software because I enjoy it 
until I stop enjoying it.  You're totally welcome to file bugs based on your 
dependency graph about what I should and shouldn't do.

I'll cheerfully file them under Not fun.  Don't care.  You get both pieces if 
it breaks.  I get paid directly for approximately exactly zero of my CPAN 
coding.  Thus if it's not fun, I don't do it.

Supporting ancient software from the last millennium and coding with both 
hands tied behind my back to support Perl 5.005 and to work around all of its 
infelicities and bugs that I've helped to fix isn't fun... unless there's 
cash involved or someone else doing the work in such a way that I don't have 
to deal with the un-fun.

I write software to make my life easier.  If I can't use that software to make 
my life easier because people who are using that work I've done for free 
complain, well then what's my motivation?

Could I write a test suite without Test::More?  Yep.  I've done it before.  
Could I write my own mock objects by hand without Test::MockObject or 
Test::MockObject extends?  Absolutely.  Do I know how to deal without lexical 
warnings or lexical filehandles or to use signals safely?  Yep.  Doesn't mean 
I want to go back to the bad old days.

There have been what, a dozen stable releases of Perl since the last 5.005 
release?  If someone can't update to a newer release less than 8% of the 
time, that's all sorts of auto-face-stabby badness and not so much fun for 
me, and frankly TV and video games seem like more fun hobbies with less 
frustration, 'cuz I'm pretty sure I'm absolutely NOT getting any decent 
feedback from such a situation.

Is there a business in supporting classic software in certain situations?  
Perhaps.  That baby's not cute enough for anyone but its mother to love it 
though, in my opinion.

Now if I've mistakenly claimed that a distribution requires Perl 5.6 as a 
minimum (which most of mine do, I believe) and it works further back, that's 
fine -- I'm happy to loosen that requirement.  I have no desire to rule out 
the utility of my code in situations where it works without increasing my 
blood pressure.

(Now if someone were to make warnings.pm a dual-lived module and put in a 
pre-5.6 compatibility mode, great!  I don't mind marking a dependency on that 
so that my code works in more places.  It's just when backwards compatibility 
become a millstone around my neck that I want to smash things and generally 
not spend time around my computer.)

I don't think I'm so odd a developer in all this.

-- c


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-03 Thread Tels
Moin,

On Sunday 02 April 2006 16:37, Sébastien Aperghis-Tramoni wrote:
 Adam Kennedy wrote:
[snip]
 This is a little harder with Module::Build as it has a few dependencies
 that ask 5.005 or 5.6, although in some cases incorrectly. I send
 patches so modules like File::Temp or ExtUtils::Constant work with
 5.004 (and maybe earlier) but their author haven't yet released updated
 versions. With these patches (and if the test suites of some of these
 are fixed), several modules can probably work on 5.004 or earlier with
 little to no changes.

OTOH, who still runs pre-5.8.x code deserves what they get.

There are horrible bugs in older Perls, and I don't know why people still 
insist using insecure, buggy and feature-lacking code like 5.6. or even 
gasp 5.004. Just think Unicode support, hash randomization, memory 
leaks.

Using these older Perls means you basically show the hard-working 
Perl5-Porters that you don't care for their work in improving Perl.

I know, now people will come out of the wood and say that they have that 
old system, and no, they can't upgrade Perl etc, never touch a running 
system etc yadda yadda. But what the heck do you then try to upgrade 
modules on said system when you didn't want to touch the system?

Best wishes,

Tels

-- 
 Signed on Mon Apr  3 18:28:11 2006 with key 0x93B84C15.
 Visit my photo gallery at http://bloodgate.com/photos/
 PGP key on http://bloodgate.com/tels.asc or per email.

 I'm not a vegetarian, but I eat animals who are -- Groucho Marx



pgp2O2qldS6MZ.pgp
Description: PGP signature


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-03 Thread Adam Kennedy


I know, now people will come out of the wood and say that they have that 
old system, and no, they can't upgrade Perl etc, never touch a running 
system etc yadda yadda. But what the heck do you then try to upgrade 
modules on said system when you didn't want to touch the system?


To quote possibly the smartest thing I've ever heard Donald Rumsfeld say 
(although he put it somewhat confusingly)


There are known knowns. These are things we know that we know. There 
are known unknowns. That is to say, there are things that we know we 
don't know. But there are also unknown unknowns. There are things we 
don't know we don't know.


While you might not see why, let me tell you from the number of bug 
emails I've received about these sorts of issues, I _know_ there are 
scenarios we don't know about where this stuff is important.


I just don't know what they are :)

Adam K


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-03 Thread Sébastien Aperghis-Tramoni

Tels wrote:


Moin,


Hello Tels,


OTOH, who still runs pre-5.8.x code deserves what they get.

There are horrible bugs in older Perls, and I don't know why people 
still

insist using insecure, buggy and feature-lacking code like 5.6. or even
gasp 5.004. Just think Unicode support, hash randomization, memory
leaks.


You forget that there's more than one way to use Perl :-)

When Perl is used for sysadmin tasks, most of the features you listed 
(and I could add threads support, new IO implementation, signals 
handling, subroutines attributes) are of no to little use because 
such Perl scripts are run for executing tasks that do not require 
advanced Perl features like those just listed. Remember that on Unix 
systems, Perl is like Bash, Sed and Awk, only more powerful (even if 
it's by one or two orders). Do you replace your /bin/sh on your Solaris 
with the latest Bash just because it has very new and cool features? 
Usually you can't. Mainly because it could break things, and has little 
to no added value.



Using these older Perls means you basically show the hard-working
Perl5-Porters that you don't care for their work in improving Perl.


But the Perl interpreter (which is what the P5Porters are working on) 
and the Perl modules are mostly disconnected (*). Where would be the 
interest to use an interpreted language if it were tied to a specific 
version of the interpreter? Most Perl code out there don't require 
recent features.


To continue with my previous analogy, there are also many people that 
work hard on the Linux kernel, the GNU system, and all the different 
parts that compose a GNU/Linux distribution, but when a server is in 
production, you can't upgrade it at your wish.


(*) Yes, I know that the core Perl distribution includes many modules, 
but ask any P5Porter and he'll answer you that the core is over-crowed 
and that all core modules that can be made dual-life should be released 
on the CPAN.


I know, now people will come out of the wood and say that they have 
that

old system, and no, they can't upgrade Perl etc, never touch a running
system etc yadda yadda. But what the heck do you then try to upgrade
modules on said system when you didn't want to touch the system?


My current $work is to write a Perl program that must execute on about 
1200 Linux servers, with Perl versions ranging from 5.004 to 5.8. I 
can't upgrade Perl on these because they have different kernel / glibc 
/ gcc versions. But that's not a problem because I don't need to 
upgrade Perl or the modules on said systems, just to put the modules I 
need in a directory and use lib /that/directory. Of course I need to 
use modules that work with 5.004, or patch them so they work with 
5.004, but you could be surprised to see how little some of the patches 
are. Can be as simple as removing require 5.6 (as for File::Temp). 
Most of the patches I've sent were less than 10 lines of differences.



Sébastien Aperghis-Tramoni
 -- - --- -- - -- - --- -- - --- -- - --[ http://maddingue.org ]
Close the world, txEn eht nepO


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-03 Thread Tyler MacDonald
Sébastien Aperghis-Tramoni [EMAIL PROTECTED] wrote:
 OTOH, who still runs pre-5.8.x code deserves what they get.
 
 There are horrible bugs in older Perls, and I don't know why people 
 still
 insist using insecure, buggy and feature-lacking code like 5.6. or even
 gasp 5.004. Just think Unicode support, hash randomization, memory
 leaks.

FWIW I've heard at least one valid argument for sticking with 5.6,
and that actually is unicode support. :-)

Apparently, in 5.6 regular expressions don't have full unicode
support. But in 5.8 the regexp unicode stuff is expensive. And to make
matters worse, if anything in any package that you import uses unicode, the
new, slower unicode regular expression algorithm is applied to *everything*
and there's no easy way to turn that off.

This is just a nasty rumour I'm sure, but I've heard it multiple
times from multiple people. I like to stay on the cutting edge and if my
regexps are too slow, I'll find some other way to do it. :-)

Cheers,
Tyler


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-03 Thread demerphq
On 4/4/06, Tyler MacDonald [EMAIL PROTECTED] wrote:
 Sébastien Aperghis-Tramoni [EMAIL PROTECTED] wrote:
  OTOH, who still runs pre-5.8.x code deserves what they get.
  
  There are horrible bugs in older Perls, and I don't know why people
  still
  insist using insecure, buggy and feature-lacking code like 5.6. or even
  gasp 5.004. Just think Unicode support, hash randomization, memory
  leaks.

 FWIW I've heard at least one valid argument for sticking with 5.6,
 and that actually is unicode support. :-)

 Apparently, in 5.6 regular expressions don't have full unicode
 support. But in 5.8 the regexp unicode stuff is expensive. And to make
 matters worse, if anything in any package that you import uses unicode, the
 new, slower unicode regular expression algorithm is applied to *everything*
 and there's no easy way to turn that off.

 This is just a nasty rumour I'm sure, but I've heard it multiple
 times from multiple people. I like to stay on the cutting edge and if my
 regexps are too slow, I'll find some other way to do it. :-)

I dont believe that this is correct.

The regex engine uses UTF8 logic if the pattern is UTF8 or if the
string is UTF8.

If both are ascii then it uses ascii logic only.

Yves


--
perl -Mre=debug -e /just|another|perl|hacker/


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-01 Thread demerphq
On 4/1/06, Adam Kennedy [EMAIL PROTECTED] wrote:
   Similarly
  if somebody has an error in their Build.PL or Makefile.PL are you
  going to say that the installer doesnt work?

 Yes, absolutely.

So you would file a bug with ExtUtils::MakeMaker or Module::Build when
the pre-build script that accompanies a script has a syntax error in
it?

Lets hope you wouldnt be surprised when they file said bug report in
/dev/nul

Yves



--
perl -Mre=debug -e /just|another|perl|hacker/


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-01 Thread chromatic
On Saturday 01 April 2006 03:41, demerphq wrote:

 So you would file a bug with ExtUtils::MakeMaker or Module::Build when
 the pre-build script that accompanies a script has a syntax error in
 it?

Don't forget with every distribution that marked that distribution as a 
dependency.

-- c


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-01 Thread Matisse Enzer


On Mar 31, 2006, at 11:02 AM, Adam Kennedy wrote:



Most end users don't see the build stage as being somehow  
distinct, all they want to do is install a module.


I agree 100% with that, and urge others to keep that in mind.

---
Matisse Enzer [EMAIL PROTECTED]
http://www.matisse.net/  - http://www.eigenstate.net/





Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-04-01 Thread Adam Kennedy

demerphq wrote:

On 4/1/06, Adam Kennedy [EMAIL PROTECTED] wrote:

  Similarly

if somebody has an error in their Build.PL or Makefile.PL are you
going to say that the installer doesnt work?

Yes, absolutely.


So you would file a bug with ExtUtils::MakeMaker or Module::Build when
the pre-build script that accompanies a script has a syntax error in
it?


No, you'd file it against the distribution that contained the 
Makefile.PL or Build.PL.


Just because they implement the installer using a particular library, 
doesn't mean you blame the library for their mistakes.


Adam K


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-03-31 Thread Adam Kennedy

demerphq wrote:

On 3/31/06, Adam Kennedy [EMAIL PROTECTED] wrote:

If an installer can't INSTALL under battle conditions, it is failing
it's primary missing.


Personally I think its worth being a touch more specific with your language.

I dont see Module::Build's job to be to install. I see its job as
being to build. It should, and does leave the job of installing to
ExtUtils::Install. And that makes sense to me.

So it seems to be that you have four (five?) phases:

 Pre-Build
 Build
 Test
 Install
 (Post Install Test?)

Something like dieing on a use warnings statement in the makefile or
whatever to me constitutes a pre-build failure, not an install
failure.


I'd consider that to be just a case of semantics.

I could well argue it doesn't build either, it $smaller_divisions_again.

From a top level tasks perspective, Module::Build has two primary roles.

1. Package the module into a distribution.
2. Install the distribution onto a system

Those 4(5) steps are all part of the install task.

Most end users don't see the build stage as being somehow distinct, 
all they want to do is install a module.


Adam K


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-03-30 Thread Adam Kennedy

Randy W. Sims wrote:

Adam Kennedy wrote:
  There are a number of ways to do this. The most simple is:
 
  use strict;
  use warnings;
 
  use File::HomeDir;
  my $conf_dir = File::Spec-catdir( File::HomeDir-my_home, '.Foo' );
 
 
  Not that I wish to be a pedant about this, but only so people keep it in
  mind...
 
  This installer will crash with a non-useful error message if someone
  tries to install of  5.006, and has an implicit undeclared (still
  unresolvable I believe) dependency on File::HomeDir.

How is this different from a Makefile.PL or any other perl script with a 
Cuse statement. If the Cused module can't be found, it says it can't 
be found. It doesn't crash.


There is no difference at all when it comes to Makefile.PL.

The problem is specific to installers. In an installer, you don't yet 
know if any piece of code is SUPPOSED to run, as well as not know if it 
will run.


While the code for the distribution might be able to die like this, the 
INSTALLER should fail in a way that is detectable and automatable.


If the Cused warnings.pm module can't be found, it crashes 
(specifically, dies) and say it can't find warnings. But the problem 
isn't that it doesn't have warnings. The problem is that it doesn't have 
Perl 5.006.


If the installer needs a module in order to run, it has nothing to fall 
back on to supply that module for it. Any surrounding client doing a 
recursive installation can't fix it, unless what it can do when the 
installer runs and says that the distribution itself needs dependencies.


If the installer doesn't look after itself, then we are back to the 
situation where you are installing RT, and half way though 3000 lines of 
output something goes BLART NO WARNINGS.PM, INSTALL FAILED and then 
prints another 1000 lines of output, and no reasonable end users has any 
idea whatsoever what caused the problem, or how to fix it.


If an installer can't INSTALL under battle conditions, it is failing 
it's primary missing.


Adam K

Sure, the dependency should be listed in META.yml. And, there is a way 
to that so that CPAN.pm and other tools can see the dependency before 
running the Build.PL: You simply list it in Crequres argument to the 
constructor. But this was just a simplified example to illustrate a 
different point...


  (I'll shut up about the whole implicit undeclared unresolvable
  dependency on Module::Build for a while, given it's now in the core and
  I've had a good long chat about the issue with Tony.)

Again, how is this different from MakeMaker's Makefile.PL which, strange 
enough, requires MakeMaker to be present?


  So if you use warnings in your Build.PL you should always do it as
 
  use 5.006;
  use strict;
  use warnings;

I agree, this is true of any script, not just Build.PL.

  As for how to ensure File::HomeDir is installed before you actually know
  what you dependencies are, well I dunno, but this problem is going to
  keep coming back and haunting us till MB supports bundling of some kind.

Bundling is *a* solution to *some* problems *some* of the time. From 
what I understand there's a pretty good module out there that helps with 
that ;). But I'm not yet convinced that it should be the default method 
for every distribution. Authors should have a choice. For people who 
want to bundle Module::Build it's simple to do by hand, and it's been 
done by authors who decided that was best for their distribution.


Regards,
Randy.


Re: Module requirements (was: Module::Build and installing in non-standardlocations)

2006-03-30 Thread Adam Kennedy

ugh, sorry, WAY too early in the morning.

If the installer needs a module in order to run, it has nothing to fall 
back on to supply that module for it. Any surrounding client doing a 
recursive installation can't fix it, unless what it can do when the 
installer runs and says that the distribution itself needs dependencies.


This should be

Any surrounding client doing a recursive installation can't fix it, 
UNLIKE the way it can when the installer completes and tells the client 
what needs to be installed.


If an installer can't INSTALL under battle conditions, it is failing 
it's primary missing.


missing - mission.

Adam K