Cool Code - Ugly Dependencies
Have you ever seen a piece of code that someone put up on a web site, like SourceForge, with an Open Source or Free Software license and you say to yourself, "This is so cool! I'll just use it." So you add a jar file to your CLASSPATH.
A few months later, you discover that everyone else also adopted the same jar file. Your J2EE server provider, your O/R mapping provider, your MVC framework provider, are all distributing incompatible versions of the jar file within their product.
And you are left with the unpleasant task of integrating all of these into a running instance of JVM. And it can't be done elegantly. You basically have to beg each and every vendor to release a version of their product that uses the same version of the jar file.
Yes, I'm talking about log4j.jar and Apache Commons jars and friends. And I have a modest proposal for a solution to the problem: Simply modify the code and make it an internal package. That way your software will have less ad doc external dependencies and less potential for conflicts.
After all, the authors of those Open Source/Free Software packages gave you the right to modify their code. Why not use it to solve an ugly problem?