APIs, in general, are immutable. If you claim that method
x with parameters
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
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:
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