Friday, December 16, 2005

Is Struts Over?

At ApacheCon last week, I finally met some developers for whom I have great respect: Ted Husted, Craig McClanahan, and one of the original authors of WebWork (unfortunately, I didn't get his name). It was nice to finally meet these guys, even if it was during a train wreck. About the wreck in a second, but first why I can talk about said wreck. I have no small insight into the web framework world -- I did after all write a book just over 2 years ago (Art of Java Web Development) featuring Struts (the King of the Castle at that time), Tapestry, and WebWork. I think my crystal ball wasn't bad for those 3 particular frameworks. I've been giving conference talks on framework comparisons since the book came out, as well as conducting some Birds of a Feather sessions on web frameworks. All this credentializes me in the web framework space.

I bring this up for 2 reasons. First, I think the original Struts succeeded in no small part because it was simple. If you knew how request-response worked, and you knew a few design patterns, you could figure out most of Struts in about a day. Meanwhile, the competition (Tapestry, Turbine, WebWork) were a bit more complex. This is back in the day when people weren't even sure you needed a web framework -- most people were just rolling their own. Along came Struts, which managed to hit the sweet spot of solving some problems without being too big or complex. If you spend some time with them, I think that WebWork and Tapestry are better conceived frameworks (with totally opposite approaches). Note that this was a million years before Ruby on Rails was even a glint in DHH's eyes.

The second reason I bring this up was because I found myself in a Birds of a Feather session on Struts at ApacheCon. And my distinct impression was that of moving deck chairs on the Titanic. The big news of late, of course, is the merging of WebWork into Struts. But, at the same time, the Shale extension of Struts is rolling right along. There was a great deal of discussion about how to manage to reconcile these two fundamentally different paths (action framework vs. component framework). And, unfortunately, all these efforts apparently will appear under the Struts name.

I understand the software geek drive to always reach higher and further. But I think you also need objective perspective about what you've created. Based on my observations, the Struts team has completely lost that perspective. My solution? Keep Struts right where it is, a nice simple web framework with very low barrier to entry. Go ahead and enhance WebWork (and call it WebWork), and go ahead and work on Shale (and call it Shale). Trying to make Struts into an integration platform with lots of complex moving parts kills the one thing that Struts truly has going for it: simplicity in the face of ever growing complexity in the web framework space. For the polar opposite of simplicity, see Faces, JavaServer.

No comments: