The V in MVC
Juten Tach,
lately i was discussing a design with colleagues of mine for a specific project, they are working on. We talked about various principles and methodologies, actually the discussion wandered a bit from the actual topic. We talked about MVC and Domain Driven Design and in the end were confused, because we were uncertain as to what would be the best approach to design the application.
The application in question is one, that has a very rich user interface with animations, video, sophisticated controls and so on. The domain model that lies behind all that is rather simple though. It is one of those applications in the advertising industry, that is more about the show than about utility.
I would roughly estimate, that 60% of the code that my colleagues will write is related to the UI and the rest goes for the model and the general application logic. Actually most of the applications we develop are partitioned that way. That’s nothing to get excited about, after all we’re building thin clients and of course a thin client is mostly made up of ui code.
But knowing that, i come to ask myself, why we are actually so excited about MVC, Domain Driven Design, architectrual frameworks, IoC and stuff. For the particular type of flash applications that we build, we should be more concerned about how to structure the V in MVC than about the whole MVC in general. That’s not to say, we should not care about general architectural matters, but being a flash developer, who is building rich user interfaces, we should rather think about structuring our views than about structuring our model, since in many cases, our model is not the core of our problem, but the view is.
Screenshot of the eco zoo campaign.
However, i do see too little articles covering this topic in particular. I also do not see enough design frameworks trying to deliver support in that area. Of course, we have frameworks, that aim at simplifying building UIs, such as the Flex framework. But for me, these frameworks rather try to look at the UI to be something, that should be made easy, so you don’t have to think about it to deeply, so that you can concentrate on the application itself. But what, if the presentation is the thing, you want to concentrate on? That’s why i’m so sceptical about tools like Adobe Catalyst, because i have the feeling, this tool tries to hide away the problem of developing complex UIs, suggesting that the act of architecting and developing a rich UI is something, that can be somehow automated and hidden behind a clickable tool. I strongly believe, this is not possible. It takes experienced UI developers to build stunning presentation layers and these experienced developers should start thinking about effective ways of building those UIs.
Screenshot of the ikea wardrobe solutions campaign.
I think it is time, that we think more about the underlying patterns in the development of rich and animated UIs. A discussion about those should not only be about components, because really rich UIs are not solely made out of classic components. Of course, in a sense you can define everything to be some sort of button, but i feel that doesn’t live up with what we really need. Especially as we are heading to UIs, that are try to go away from classic form style in favor of more integrated, chromeless UIs. Also we need to incorporate timing in a more fluent way. We already have some very good state patterns yet, but my feeling is, that todays UIs go beyond simple state, our concern is not so much the state, but the transitions. And sometimes UIs are constantly transitioning, so that one might start to doubt, if it is even useful to talk about states anymore.
To make a long story short, i think with the advent of rich, interactive and animated UIs we need a deeper discussion about how we can build those in an effective way, that allows for the basic principles like extendability, maintainability and reusability.

