sábado, 13 de septiembre de 2008

IWebMvc2 on the way

So, I've started what I said I wouldn't do, that is, a new version of IWebMvc. In fact, IWebMvc2 won't be a new version but a complete rewrite, from scratch. And why did I take this decision? There were many reasons but the most important is that I wasn't happy with the result and I knew I could do better. I don't want to be harsh on myself but IWebMvc was rushed because I was starting a new job and the quality suffered. In addition, it was a one man project which means that all the ideas and code came from the same source and, heck, it was my first try!

So here's a list of things that are going to change for the next release:
  • Project organization
    This was my main area of dissatisfaction. The code structure was a mess. The demo application was so entangled with the core of IWebMvc that it was difficult for me and impossible for others to separate them cleanly. The new release will clearly separate IWebMvc in three parts (sub-projects/jars), core, model & UI. The demo application will be stripped and available as a fourth project.
  • CSS
    I've never been a good designer and given that I was in a rush I wasn't worried in the least about presentation but, honestly, you cannot have faith in a framework that positions the labels using <br/> tags, can you? All widgets will, from now on, have cssClass and cssStyle attributes per inner component (label, input, button...) making the look&feel work bearable. I'll put some extra effort to generate good markup.
  • Extensibility
    Framework and application contexts will be independent. Framework services will be available to the lower layers but won't pollute the configuration files of the applications.
  • Better third party integration
    When I started IWebMvc Spring Webflow & Spring Security were not even in beta. JAWR was a last minute addition. And DWR3 was just beginning to get shape. Today, I've worked extensively with both SWF and SS2 in several other projects. I'm talking to JAWR lead developer to cover some IWebMvc needs (like dynamically generated JS files or double configuration for framework and application). I'll be using his i18n JS support as well. Finally, DWR3 today includes many many features that were detected while developing IWebMvc like wildcarding, annotations, multiple context support, remoting of lazy init beans or the included JSP tag or dojo datastore. Hibernate validators come to my mind as well..
  • Help is welcome!
    Last but not least, right now the project is in its infancy. There's a lot of room for improvement in many many areas (I don't want to name documentation but that's an obvious one). If you want to help now is the moment! Ideas, design considerations, code..whatever! Just let me know.
There's not much more that I can say for now. The task has just started. But be sure that IWebMvc2 will improve the existent version in every aspect. The goal is to compete with each of the other popular framework out there :-)