Is the JCP totally broken?
From what I can tell, the JCP process seems very broken to me. My only involvement has been as an outsider, trying to provide feedback for JSP 2.1. My concern was that the introduction of EL support for "#{ ... }" was going to break WebWork-based applications. This is because OGNL uses the notation "#{ ... }" to construct maps.
I was already quite annoyed that JSP 2.0 stole (and I do mean stole) the use of "${ ... }" in web applications. It forced WebWork to use the syntax "%{ ... }" instead. It is my belief that specifications, especially ones that allow developers to plugin so freely as JSP, should not restrict the types of content without offering options. JSP 2.0 did not, and JSP 2.1 is on track to repeat the same mistake.
Case and point: Mark Roth and Pierre Delisle are both Sun employees are are leading the JSP 2.1 spec. They have both been gracious enough to engage in long threads with me on the public users mailing list. And while they have been generous with their time, nothing has changed and I get this distinct feeling that in this situation, the JCP has merely been a public-facing mask for Sun to force their choices upon the community.
My gripes are:
- The introduction of #{ ... } is a foolish move in the first place. While I understand the motivation (JSF uses this notation), I don't approve of "patches" on specs to correct the mistake of other specs, namely JSF.
- I believe JSP 2.0 made a huge mistake by stealing ${ ... } and not giving tag authors the choice of not processing those JSTL expressions. JSP 2.1 is not correcting this mistake.
Interestingly enough, JSP 2.1 is giving tag authors the ability to ignore #{ ... } notation, but still not allowing ${ ... } notation to be ignored (as per this email). This indicates to me that Pierre and Mark understand the problem, but are either unable to explain their rationale or are just refusing to listen to the needs of tag authors such as myself.
After that thread, Pierre pointed me to this old thread between Mark and myself where Mark rationalized why they wouldn't allow tag authors to ignore ${ ... }:
It is very important, for readability purposes if nothing else, that ${foo} means the same thing in a JSP page, no matter which tag it is used in. In particular, we do not want tag authors to write their own extensions to the expression language or use a different expression language in some tags vs. other tags. Allowing this would very quickly lead to a huge mess of unreadable pages. Also, when we introduce new features to the JSP EL and tag libraries don't keep up, page authors would have to memorize where they can use the new features and where not. I hope you can see why we want to avoid doing this. If not, I can give you some more examples.
I can understand where he is coming from, but I just don't agree. I think if someone is using WebWork, they will know exactly what they are doing with ${} and #{}. Moreover, I think Mark gives the tag author too little credit and gives the tag user far too much credit (how many tag vendors do you use in a single page? One? Three at the most?).
What do you think? Is the JSP 2.1 spec going in the right direction by integrating closely with JSF and JSTL/EL? Is the JCP really just a false-front for large corporations like Sun to have their way? Am I totally on crack?