New UI Module

Introduction

There are other known problems around the presentation layer that will have to be dealt with:

Smart UI versus Layered Architecture.

Currently mifos has a kind of mix of 'smart ui' approach and LayeredArchitecture. As a result domain logic has leaked up into presentation and we don't have clean separation of concerns with layers that are loosely coupled with design dependencies in one direction.

The way mifos codebase is evolving is towards a LayeredArchitecture.

Spikes

We plan to move away from struts to spring MVC/Webflow. Spring is more flexible and allows us to choose whatever view techonology we want with good out of the box support for jsp/jstl, freemarker, velocity etc.

It might be worthwhile to do some timeboxed spikes as to what combination should be used:
JSP/JSTL with Spring MVC, WebflowFreemarker with Spring MVC, WebflowGrails (which leverages SpringMVC, Webflow)

A Whole new UI Module

There is so much noise around the current jsp/html/javascript/css + Tags approach within our UI that trying to incrementally refactor it would be an enormous amount of work and would most likely mean it getting done in piecemeal way what would not offer advantages to anyone.

I think there is value in create a completely new UI model and letting one/two developers work on recreating the web client ui in isolation from the rest of the code modules out as far as the 'service facade' layer.

There would be no risk to the project per se as current UI implementation would stay in place.

What the module would need to achieve is to improve upon the areas of the current UI that are not desirable and these would fall under the following:

  1. MVC implementation
  2. HTML + CSS
  3. JSP/JSTL verus template
    • Dependendent on outcome of timeboxed spikes.
  4. Javascript
  5. Localisation (ResourceBundles)
  6. Security
  7. acceptance tests through UI