Hi,
Ralph, I'm sorry to see you go! Thanks for all your contributions, they have kept the torch burning.
ToscaWidgets has been an interesting ride for me and I've learned a lot. It has become less of a priority for me in recent years. There are two main problems: ToscaWidgets is no longer innovative (back in 2007 it was quite cutting-edge), and we have failed to build a critical mass of community around the project.
There are now a number of widget libraries with a broadly similar design to ToscaWidgets, including Django forms. But worse than that, ToscaWidgets has not kept pace with the massive innovations in client-side frameworks (AngularJS and the like). tw2 doesn't even support client-side validation, which makes it feel pre-historic.
Looking back, I think we did three main things wrong:
1) Focus on technical work, not project management. There was a lot of work from Ralph, Percious and me, but it wasn't always co-ordinated. And we didn't really mobilise a broader pool contributors, who may have contributed documentation, bug fixes, and minor fixes - if they had been encouraged more.
2) Kept the alpha status far too long. What we've got now I should have said was release quality back in 2010 (maybe even earlier). I'd kept the alpha badge because I know some parts of the API need a compatibility-breaking refactor. But that would have done for a 2.2 release.
3) Tried to support too many use cases. Trying to support multiple template engines, JavaScript libraries, ORMs, etc. We just spread our effort too thinly. We should have just said: Chameleon, jQuery, SqlAlchemy - that's the ToscaWidgets stack. TurboGears has a similar problem here, but it actually affects ToscaWidgets much worse.
Something else I'm conscious of is the whole idea of a "form builder library" is dubious. Ian Bicking said this years ago and I'm coming round to his point of view. You end up adding an extra layer of abstraction, and this limits your flexibility. I also think I've had a bit of an obsession with DRY (don't repeat yourself) which maybe isn't so important. It doesn't seem to kill development to type a few things twice, and doing so often gives you more flexibility.
So where to go now? For me, SPA (single page app) seems clearly the way to go. I realise SPA isn't for everyone, but for the kind of apps ToscaWidgets works well for, most of these will work well as an SPA. Gmail had been released as an SPA some years before I started hacking on ToscaWidgets; I should have seen the future then. There are a few frameworks in this space; I am going with AngularJS. A major consideration is the large and active community. I intend to be a framework user, not a framework developer.
As a stop-gap measure I am adding some JSON support to my experimental tw2 branch (
https://github.com/paj28/). This looks at the Accept: header and returns JSON as appropriate. The JSON is generated based on the widget definition. This lets the widgets function as the back-end for an SPA, letting me migrate my applications gradually. I will also be adding support for JSON data in POST requests. However, this is just a temporary measure. In the medium term I will be migrating the back-ends to some kind of REST framework. I intend to have a good look at what's available, and pick something that is actively developed (suggestions welcome).
I still think SQLAlchemy and a relational database (usually Postgres) are an excellent data store. But I am keeping my eye on the NoSQL space. It does seem redundant to have both the application and the data store know the schema of your data, so maybe there will be big changes here too.
I'll still be on the list and will keep
toscawidgets.org registered for the foreseeable future.
Paul