APIs, in general, are immutable. If you claim that method x
with parameters y
does z
-- your code should continue to do that regardless of the implementation. To be fair, things change, methods are deprecated, and disappear usually after a major revision.
I don't think i realized how true Alias' post on the subject was until today.
Some background: I'm running a web-based list archiver which uses Catalyst
and Email::Store
under the hood. All seemed well until one day it magically stopped working -- at least under mod_perl; vanilla CGI, though slow, was able to make things go.
After a day or so of sporatic debugging I was able to trace it down to this: (from Net::Domain::TLD's Changes file)
1.63 Wed Jan 25 12:00:00 2006 - Dropped OO code ( There are previous versions of module if anyone needs it )
The problem can be described as this: Email::Store::List
needs Mail::ListDetector
, which needs Email::Valid
, which tries to do Net::Domain::TLD->new
if it finds Net::Domain::TLD
on the filesystem. Hence, bustage.
Downgrading to 1.62 made the problem go away, but, seriously, don't screw with your API, people. Sheesh