Tapestry redux. Ara likes Tapestry but others dislike it. As with anything - YMMV! [rebelutionary]
I do quite like the HTML rendering part of Tapestry; leaving HTML as just HTML then inserting dynamic bits at runtime around the back so to speak. It can help simplify HTML editors lives, especially when you have a clean split between people who edit HTML and people who write Java code.
I was chatting with Geir Magnusson Jr last night over a nice bottle of wine and this subject came up. There's lots of ways to do it. There are so many web app frameworks. Most of them are very similar in what they do and how they work.
For example there are many different templating and rendering engines. Just off the top of my head there's JSP, Velocity, XSLT, Tapestry, WebWork, Cocoon. Tea, XMLC and even Jelly. I'm sure there's lots more too that I just can't think of right now. People like different renderers for different things. Thats fine, choice is good.
Quite a few frameworks support pluggable renderers. Struts for example can use JSP or Velocity. I'm sure most other renderers can be plugged in too. Similarly for Cocoon. I'm sure this could be true of other frameworks.
I wonder if decomposing the 'web app framework' concept into smaller resuable components might help unify the very diverse web app framework community?
From what I've seen of most of the web app frameworks, if we seperate out the View part of MVC and just look at the Model and Controller, things are remarkably similar. (Sure there's a difference of whether a View pulls values or they are pushed in before the view starts but thats fairly minor IMHO).
Even if the Controllers are wildly different, at least if things were componentized, things could be mixed and matched together. For example the Tapestry renderer could work in Cocoon or Struts or WebWork. Using the WebWork renderer inside Cocoon or Struts etc.
This is probably wishful thinking here, but, lets say for sake of argument that all renderers are just Servlets with some kind of variable scopes, how different really are the Controllers? We typically just need pluggable validation, pluggable actions and routing to some view to actually do the rendering.
Could we ever have a single unified web application framework from which all these other technologies could fit? e.g. a common controller framework? Or at least some common Controller components that can be shared across multiple frameworks?
From what I've seen of Jakarta Commons so far, there's been some great reuse of code and ideas across divergent, different projects with different goals and communities. Could this ever happen in the web application framework world?