Things we don't understand
Over the years, I have observed a curious phenomenon in my programmer friends circles. We are attracted to things that we don't understand. And we ignore things that's already at our disposal.
Take Struts, for example. I heard it from smart people. Struts is MVC, they say. Struts is Model-2, they say. Struts is Open Source, they say. Struts In Action's a cool book, they say. Struts is patterns, they say. Struts decouples, they say. Struts is flexible, they say.
I don't know what got into me, but I caved in to my curiosity. I bought two Struts books. I downloaded the Struts binary distribution. I checked out Struts CVS. I cvsup everyday. I built Struts from CVS. All fine and dandy.
Then, then, ... then I fell into XML hell. For days, I sit there trying to figure out which XML file I have to edit to tie all of my decoupled components together.
And then, then, ... then I fell into the Jar hell. There's struts.jar. There's commons-lang.jar. And there's jakarta-oro.jar, etc., etc. You are supposed to put them into your WEB-INF/lib directory of your war file. Don't put it in your container's lib directory. Great, now my trivial HelloWorld servlet is 4MB big.
And then, then, ... then I fell into the Debug hell. I typed in my URL, and out come a 7 page stacktrace, the same chuck repeated again and again under the guise of "Caused By" or "Root Cause", and cut off right where it gets interesting with "... 42 more lines".
I learned yesterday in a conversation that I'm not alone in my opinion about Struts. I even heard people say that the servlet container itself is already an MVC framework for writing web applications.
Why didn't I look there? After all, I've had a servlet container running on my system since the Jakarta project was announced, what, five years ago. Maybe because it's already there.