I just had a look at the play framework, and I thought I share my impressions.
Play makes it easy to create webapps, clerezza aims to make it asy to create semantic webapps. A similar goal but play has chosen quite a different approach from clerezza. The framework doesn't seem to care about adopting standards like jax-rs, osgi or maven. I think we can learn from it in terms of usability and I don't think that the technology choices we made for clerezza prevent us from being similarly user friendly. What's missing in clerezza for being able to show an equally nice intro video as the one on http://www.playframework.org/? - There's a python start script for play, clerezza should be a double-clickabel jar but the facto needs to be started with memory parameters - Play start much faster than clerezza - The difference that clerezza has to be started first and the one create an app (using: Dev create 'scala_with_activator in "/tmp/test" ). We could consider adding the possibility to start clerezza with an existing or newly created webapp to be activated as sourcebundle - In clerezza after saving a file it takes usually more than a second for the changes to be active, in play I couldn't notice any delay. (In clerezza changes to ssp are reflected without delay but this is not the pattern used in the default skeleton where scala renderlets are used) - Standard play framework uses a groovy like syntax for the templates. Play scala uses scala based templates, their statement that they "consciously chose not to create a new language" raises questions on the boundary of languages. Certainly the clerezza approach of having renderlets as full scala classes adds boiler plate code which is against usability, on the other hand not introducing a new syntax increase usability by allowing the user to benefit from his IDE. - Error messages: Compile errors are shown in the browser highlighting the position in the code. In clerezza you find the error messages on the standard output. I've created CLEREZZA-639 for some improvements, having the same functionality as with play seems impossible as there is no uri-path associated to classes that could not compile, we don't know which component would be invoked if these components couldn't compile. - The model classes correspond roughly to the ontology in a clerezza skeleton project, getting instances of a certain type is a similar one liner as in play, creating an rdf:list out of it to return it as graphnode does however make things more complicated (we could simplify this). In clerezza we would have to sort the results in scala (not allowing optimization by the triple store), do a sparql query (complicated and easily gets slow unless you know what you're doing) or have a service maintaining an index (which would definitively be less easy). - Not sure if using jquery and rdfquery we could show a similarly easy way to implement an ajax app. - Play has a default editing application for editing the model (getting a list and editing instances), in Clerezza there is nothing similar yet. There is certainly more that clerezza should be improved in clerezza to offer a similarly easy first-webapp experience as play but I think this are the main points. Cheers, Reto