Friday, May 13, 2005

Why do minor versions have to have radical changes?

Lateley I got mail from a reader of my book saying "I did follow all steps, but the example you provided just doesn't work. Whenever I try to add or search it will bomb." The guy appended the stacktrace saying that this is on JBoss 4.0.2 (which was out a few days earlier) and JDK 5. I asked him to try on JBoss 4.0.1(sp1) and he confirmed that it worked there. Actually it worked from 3.2.3 over 4.0.0 to 4.0.1.

In 4.0.2 the classloading defaults of the web container changed from UseJBossWebloader=true to false, which leads to a class cast exception if the war has the stub classes of the enterprise beans in it, which are also in the ejb.jar.

There are good exmplanations for this change. But still this does not follow the principle of least surprise. End users will be pissed, saying that if they have a bigger app, they can't afford chasing those surprises for weeks until migrating an application to a newer version, which even has valuable fixes for them.

A plea (actually to every developer, not only JBoss-ones): if such radical changes are made in the future, not only mention the issue-tracking number in the change log, but also write two or three sentences about it.

No comments: