Re: cpan name spaces (was: Re: Re3: Re: How about class Foo {...} definition for Perl? )

2004-01-21 Thread Terrence Brannon
david nicol wrote:

Here's a controversial assertion:

Just because Damian Conway does something that doesn't make it right.

I reccommend changing the name of the module when the interface
changes, for instance I published Net::SMTP::Server::Client2
instead of hijacking Net::SMTP::Server::Client and producing
incompatible higher-numbred versions. (internally I've got a Client3
as well, but it's not going to get published)
In my opinion as soon as he broke compatability with something that
people were actually using, he should have changed the name. 

http://search.cpan.org/~tbone/Parse-RecDescent-FAQ-3.25/FAQ.pm
does not contain a section on version compatibility, maybe you could
submit one?
 

I am author maintainer of the Parse::RecDescent::FAQ - what happened 
vis-a-vis version compatibility? I have been far away from the mechanics 
of Parse::RecDescent for quite awhile.

And yes, please email me something that you want put in there.




Re: cpan name spaces (was: Re: Re3: Re: How about class Foo {...} definition for Perl? )

2004-01-21 Thread Fergal Daly
On Wed, Jan 21, 2004 at 03:53:34AM -0500, Terrence Brannon wrote:
 I am author maintainer of the Parse::RecDescent::FAQ - what happened 
 vis-a-vis version compatibility? I have been far away from the mechanics 
 of Parse::RecDescent for quite awhile.
 
 And yes, please email me something that you want put in there.

From the Changes file:

1.90Tue Mar 25 01:17:38 2003


- BACKWARDS INCOMPATIBLE CHANGE: The key of an %item entry for
  a repeated subrule now includes the repetition specifier.
  For example, in:

sentence: subject verb word(s)

  the various matched items will be stored in $item{'subject'},
  $item{'verb'}, and $item{'word(s)'} (i.e. *not* in $item{'word'},
  as it would have been in previous versions of the module).
  (thanks Anthony)

F


Re: cpan name spaces (was: Re: Re3: Re: How about class Foo {...} definition for Perl? )

2004-01-21 Thread Fergal Daly
On Tue, Jan 20, 2004 at 11:12:25PM -0600, david nicol wrote:
 Here's a controversial assertion:
 
 Just because Damian Conway does something that doesn't make it right.

It certainly doesn't but he's not alone in doing it.

Just to come clean, I was never really bitten by the Parse::RecDescent
change, it actually hit me very early on in development of my module so I
just switched to using 1.9x style without any hassle but it was over 2 years
between 1.80 and 1.90 so I could have been and I'd guess a lot of people
were bitten.

 I reccommend changing the name of the module when the interface
 changes, for instance I published Net::SMTP::Server::Client2
 instead of hijacking Net::SMTP::Server::Client and producing
 incompatible higher-numbred versions. (internally I've got a Client3
 as well, but it's not going to get published)
 
 In my opinion as soon as he broke compatability with something that
 people were actually using, he should have changed the name. 

That's what's necessary in the current scheme but good names are in short
supply so you end up with Client2, Client3, Client3_5 etc which is not so
nice and especially for things like Net::POP3.

Again, the result of gluing 2 strings together without a delimiter. This
also makes it hard for say search.cpan.org to make you aware that there is a
Client3 when you're looking at the Client2 page.

A better (IMHO) alternative is to make the interface part of the version
number as important as the name. This is equivalent to including it in the
name except you don't lose information like you do when you just glue a
number on the end of the name. You also get to use '.'s in the version
number because you're not try to make a valid Perl module name. Then CPAN
and other tools could understand the relationship between different versions
of modules.

Unfortunately, this is the bit I think will never happen, I don't think it
would be possible to convince people that this is worthwhile, possibly
because it's not worthwhile at this late stage.

So in the absence of the full solution perhaps we should urge people
towards sticking interface version numbers in the names of the modules. I've
done it privately too but I'm not convinced that CPAN should be littered
with My::Module, My::Module2, My::Module3 etc,

F


Re: cpan name spaces (was: Re: Re3: Re: How about class Foo {...} definition for Perl? )

2004-01-20 Thread Martyn J. Pearce
On Mon, Jan 19, 2004 at 11:03:05AM -0600, Chris Josephes wrote:
 Why would that be?  I mean, the odds are if you're dealing with a non-core
 Perl module, you're going to need to know the name if you want to download
 it in the first place.  If you use a module long enough, you'll get used
 to how it's called.

It's not those I use every day that are the issue; it's those I use
bi-monthly.  I can easily remember to look up Net::FTP for an ftp client, but
com::bluesville::smegma:algenon::net::ftp?  It'd take me three goes to type it
right even if i could remember the name.

Mx.


Re: cpan name spaces (was: Re: Re3: Re: How about class Foo {...} definition for Perl? )

2004-01-20 Thread Martyn J. Pearce
On Mon, Jan 19, 2004 at 11:05:31AM -0600, Chris Josephes wrote:
 Version numbering is an authorship issue.  If I took over module Widget
 from author XYZ, I'd probably use higher version numbers than author X
 used to signify a newer release.  To be sure, I'd also include POD
 documentation identifying my version of Widget to be a replacement for the
 version from author XYZ.

If I'm looking for a module to do a job, I use search.cpan, and check by name;
then, for likely candidates, I check out the README.  I don't have time to
read the POD too; I've got a job to do.

Version numbering works great for linear systems, which generally occur only
with single authorship.  If you do your own version of Term::ProgressBar, and
call it 3.00, and someone else does too, they will probably call it... 3.00.
Boom!

Mx.


Re: cpan name spaces (was: Re: Re3: Re: How about class Foo {...} definition for Perl? )

2004-01-20 Thread Chris Josephes
On Mon, 19 Jan 2004, Daniel Staal wrote:

 Basically, adding the author's name into the name of the module just
 trades an illusion of a 'clean' TLD for my headspace.  I would rather
 have a messy TLD: there are tools that can help me search and sort
 that.  Perl is *supposed* to help me clean my headspace, by not
 making me think about the inconsequential and irrelevant.

 Daniel T. Staal

It's not really a perl issue as much as it's a CPAN issue.  In most module
cases, we're only talking about 1 or 2 lines of code.

use au::author::Blah qw(func1 func2);

 ...or...

use au::author::Blah;
$b=au::author::Blah-new();

 ...or if you used perl6...

use au::author::Blah as Blah;

In most cases, you'll only refer to the full name of the module once.

The idea of organizing namespaces is to resolve the issues CPAN
maintainers have had with naming conflicts, or namespace ownership issues.



Christopher Josephes
[EMAIL PROTECTED]


Re: cpan name spaces (was: Re: Re3: Re: How about class Foo {...} definition for Perl? )

2004-01-20 Thread A. Pagaltzis
* Chris Josephes [EMAIL PROTECTED] [2004-01-20 12:02]:
 In most cases, you'll only refer to the full name of the module
 once.

Then why would it even matter that much?

 The idea of organizing namespaces is to resolve the issues CPAN
 maintainers have had with naming conflicts, or namespace
 ownership issues.

I don't understand how changing the naming scheme is going to
help at all with that. The problem you're describing is one of
infrastructure, not a social one. How is a societal solution
supposed to solve technical problems?

-- 
Regards,
Aristotle
 
If you can't laugh at yourself, you don't take life seriously enough.


Re: cpan name spaces (was: Re: Re3: Re: How about class Foo {...} definition for Perl? )

2004-01-20 Thread Peter Haworth
On Mon, 19 Jan 2004 11:03:05 -0600 (CST), Chris Josephes wrote:
 On Mon, 19 Jan 2004, Mark Stosberg wrote:
  And what happens when module author gets married and get a new
  hyphenated last name? /sarcasm
 
 How often do CPAN ids really change?  I doubt that an extablished author
 would extend his given name change to his CPAN id.

Twice that I can remember:

JAPHY - JPINYAN
CTWETEN - CWEST

-- 
Peter Haworth   [EMAIL PROTECTED]
Jarkko suggested throwing out [the unicode directory] (with a caution that
 attempting to use Unicode stuff would make demons fly out of your nose.)
-- Simon Cozens


Re: cpan name spaces (was: Re: Re3: Re: How about class Foo {...} definition for Perl? )

2004-01-20 Thread A. Pagaltzis
* Martyn J. Pearce [EMAIL PROTECTED] [2004-01-20 12:02]:
 Version numbering works great for linear systems, which
 generally occur only with single authorship.  If you do your
 own version of Term::ProgressBar, and call it 3.00, and someone
 else does too, they will probably call it... 3.00.  Boom!

Yes, that's what the module name is for -- one of the two should
call it something other than Term::ProgressBar and if it's only
to add ::NewAndImproved.

Perl does not provide for keeping around same-named modules that
differ in some other way.

-- 
Regards,
Aristotle
 
If you can't laugh at yourself, you don't take life seriously enough.


Re: cpan name spaces (was: Re: Re3: Re: How about class Foo {...} definition for Perl? )

2004-01-20 Thread A. Pagaltzis
* Fergal Daly [EMAIL PROTECTED] [2004-01-20 14:34]:
 On Tue, Jan 20, 2004 at 12:17:51PM +0100, A. Pagaltzis wrote:
  Perl does not provide for keeping around same-named modules
  that differ in some other way.
 
 That's not true. There are many modules where for example
 version 1.xx has one interface and 2.xx has a different
 interface and then 2.xx where xx  37 is a slightly different
 to 2.xx for xx = 37 and so on.

I was unclear. What I am talking about is that there is no
provision to have Foo::Bar 0.11, Foo::Bar 0.42 and Foo::Bar 1.23
all available in the same installation of Perl. There are some
modules like only.pm that impose their own conventions to allow
this, but vanilla Perl does not account for such a situation.

-- 
Regards,
Aristotle
 
If you can't laugh at yourself, you don't take life seriously enough.


Re: cpan name spaces (was: Re: Re3: Re: How about class Foo {...} definition for Perl? )

2004-01-20 Thread david nicol
On Tue, 2004-01-20 at 07:41, A. Pagaltzis wrote:
 
 I was unclear. What I am talking about is that there is no
 provision to have Foo::Bar 0.11, Foo::Bar 0.42 and Foo::Bar 1.23
 all available in the same installation of Perl. There are some
 modules like only.pm that impose their own conventions to allow
 this, but vanilla Perl does not account for such a situation.


Sure there is:  You can edit the include search path.


-- 
david nicol
In order to understand what another person is saying, you must assume that it
is true and try to imagine what it could be true of. (George Miller; 1980.)



Re: cpan name spaces (was: Re: Re3: Re: How about class Foo {...} definition for Perl? )

2004-01-20 Thread david nicol
On Tue, 2004-01-20 at 06:23, Fergal Daly wrote:
 Not that this would ever be agreed upon, the old way is ingrained. Modules
 will continue to do for example
 
 PREREQ_PM = { Parse::RecDescent = 1.80 }
 
 then fall over because 1.90 satisfies this requirement but is not actually
 compatible,
 
 F

Here's a controversial assertion:

Just because Damian Conway does something that doesn't make it right.

I reccommend changing the name of the module when the interface
changes, for instance I published Net::SMTP::Server::Client2
instead of hijacking Net::SMTP::Server::Client and producing
incompatible higher-numbred versions. (internally I've got a Client3
as well, but it's not going to get published)

In my opinion as soon as he broke compatability with something that
people were actually using, he should have changed the name. 

http://search.cpan.org/~tbone/Parse-RecDescent-FAQ-3.25/FAQ.pm
does not contain a section on version compatibility, maybe you could
submit one?

-- 
david nicol
In order to understand what another person is saying, you must assume that it
is true and try to imagine what it could be true of. (George Miller; 1980.)



Re: cpan name spaces (was: Re: Re3: Re: How about class Foo {...} definition for Perl? )

2004-01-19 Thread Mark Stosberg
On Mon, Jan 19, 2004 at 08:42:09AM -0600, Chris Josephes wrote:
 On Mon, 19 Jan 2004, Mark Stosberg wrote:
 
  I would rather CPAN be wide at the top level than have un-intuitive
  names. The author based system will also become more difficult when
  authors change hands, disappear, or there are multiple authors.
 
 There's kind of a trade-off here.  Right now, when module authors
 disappear, it's very difficult for a new author to take over that
 namespace because it's registered to an author/email address that may not
 be active anymore.  With author namespaces, they can just create a new
 namespace under their CPAN id.

And then the 1000 people who use their module can all do a find and
replace on all places where they have referenced the the module name
with the other authors ids. 

And what happens when module author gets married and get a new
hyphenated last name? /sarcasm

I have enough trouble remembering APIs without trying to remember
whether I need to load something in namespace of William, Will, Bill,
Willie, or  Willy.

I can't say I'm a fan of this idea.

Mark