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

Reply via email to