(This originally appeared December 8, 2008 as a comment in Howard’s blog on a posting about reimplementing some functionalitity that is (partly) also implemented by OGNL. I saved the comment here so it can be referenced. The move was triggered by this post on the tapestry-user mailing list on the subject of T4 being dead. That particular post uses the F word as an argument why T4 is not dead and how to revive it. In reality, free as in beer is never an argument and the revivement recipe does not work anymore for T4, as explained below.)
May I use this opportunity to explain why OGNL is dead?
- The compiler is broken. It evaluates expressions during compilation, except if the expression refers to Iterator.next(). As if that is the only kind of method with a side effect.
- The compiler compiles an OGNL expression into a Java expression. This approach is not correct. It translates “a || b” to “booleanValue (a) ? a : b”, which is incorrect if a has side effects.
- The web site ognl.org is dead. The latest news is from 2006 and the latest OGNL version is not announced there.
- The current site seems to be http://www.opensymphony.com/ognl/. The download page is empty. The source repository does not contain the sources to the 2.7.3 version that is available in maven.
- There is a user forum. There are 63 messages in 29 threads. The best read ones have >800 reads. That sounds like a lot of people looking for information. Yet they do not participate and presumably turn away (disappointedly). The developer forum has similar numbers.
- There are 151 issues in the issue tracker. 16 are open. Only 4 have been touched the last 3 months.
Despite that it is being maintained, as you say, it looks pretty dead.
I switched a big application from T3 to T4 this summer and I am utterly disappointed. The reason to switch was the portlet support in T4. Yet, out of the box, Tapestry 4 can not run portlets, as I reported in TAPESTRY-2548 on August 1 this year [2008]. That issue is still unresolved.
One of the best things of open source is that one can fork. I have forked Tapestry-4 and OGNL for my own use since I can no longer be bothered to report issues to a project that is not maintained. Yes, my T4 runs portlets smoothly and, yes, my T4 does not compile any OGNL expression and, yes, my T4 runs without swamping exceptions on the console output.
Drop me a note if you’re interested in the patches.
Regards,
T
PS Howard, please adjust http://tapestry.apache.org. It says that T4.1 is active. Which it isn’t. T4 is broken + unmaintained == dead too.