Hi guys,
since I've been working with spring-surf and freemarker templates for a while now, implementing the activiti-cycle webapp, I thought I'd quickly share my thoughts on this discussion:
1) Data transformation calls for a template engine
I agree that it would be nice to have IDE support for refactorings, i.e. warnings when you rename a class or remove an attribute. However, transforming data is cumbersome in java. Annotations can be a solution, but aren't always flexible enough. So you need to define some kind of mappings, whether these are XML files, freemarker templates like in spring-surf, or custom java code like i.e. in Restlet 2.0. Also, JSON isn't the only format we need to support, we also stream binary content or process plain HTML forms that are posted to the server. Which ever framework you choose, it should support these things in an easy way.
2) "Don't re-invent the wheel"
Spring-surf currently takes care of a whole bunch of things you didn't mention in this discussion so far. Apart from doing data transformation with freeemarker templates, it also handles parameters, dispatches the content-type of HTTP requests and chooses the content representation accordingly, it takes care of session handling, authentication and authorization and provides the basic HTML scaffold for the web applications, which are mainly written in JavaScript/ YUI. Re-implementing all this with the "plain old servlet spec" would mean to be writing a whole new framework.
3) "Innovation is seldom hindered by platform"
I agree that a thorough review of the existing REST API is a good idea and it is essential to make it stable and consistent. However, the existing infrastructure is not the reason this isn't the case yet. The REST API simply grew according to UI requirements. Now that we have a fairly stable java API and know more about what we need in the UIs, we can concentrate on making the existing REST API stable and consistent. Spring-surf certainly won't get in the way!
Cheers,
Nils