follow the code @manicasteroid

Project Uweni – A developers UI.

Posted on November 26, 2007

Welcome to the first post for Uweni. Currently a research project for advanced UI generation in the ASP.NET space.

So before I try explain what the project does let me explain the problem – that will help you to understand what I’m trying to do and very importantly, are there other projects like this already? am I getting it all wrong? Feel free to leave me comments on either question! Thanks.

The problem is that developers just plain suck at graphical design and often at user interfaces in general. I write tons of code and I’ve built up some groovy frameworks over the many years I’ve been doing this. Recently due to work load I realized that I spend probably close to 80% of my development time working on the UI and that is just too unproductive. It’s ok when you’re working for a decent size development firm as they can absorb the inefficiencies but smaller teams or single developers definately cannot. The worst part is, even after spending so much time on layout, css and divs! and even with part of my masters in HCI the end site looked bad, at least to me. It may be acceptable but it just takes too much time.

Developers write code and that is all we should be doing. Let real designers do the rest. So you’re probably asking, why not use theming or templates? Good question but if you’ve done any of that work before you know you still have to create the aspx pages the server controls or client side html controls and so on. Even with perfect CSS design you can only change so much before the developer has to get involved in the design. Some systems do a good job of mixing code snippets (user controls) with CSS to allow a site to be 80% re-designed without the coder but I want 100%.

Imagine writing an application, web based in this initial work, where you as the developer never touch the UI. You create your code, give it rules and the system generates everything else – in real time, not code generation. I’m pushing for a model in which the generator itself can accept “designer friendly” templates to change everything UI related and if you don’t have access to a designer then the internal generation is clean and professional in appearance. Every time you create a new page, well you don’t – it may exist for the system to function but it simply kicks off UI generation.

I’m thinking along two lines for this. The first I don’t like because it would mean building your UI rules in markup. The second is more for the coder and stays clear of every thing else.

  1. So in this case we create the aspx page and add advanced server controls to the page. Let’s use the example of needing to generate some CRUD code for a database table. Our control would have attributes that define how to get the data (data binding) and what columns we’d like to bind coupled with rules for what happens to the controls on the UI side. Your page would look a lot like the usual aspx but I still think its a bit messy.
  2. Now in this case I need to figure out the details but lets for now just say the aspx page inherits from a base that accepts a new object during load to generate the UI. You create an object and using attributes you give it rules for the UI system, when you’re done just pass off this object and presto – the UI happens.

Of course I need to figure out the specifics of how this works – making sure of course that the usual page events still work. The rules I’ve set in place also dictate that 3rd party controls should also work – let’s take advantage of the great work done by companies like Telerik, ComponentArt and Devexpress.

Please feel free to contribute your ideas to this project. All comments are reviewed and you will be able to get builds of the generators from the Uweni page. I’ll post some code ideas later on this month to better explain my thinking. I’m also hoping for a release of the new MVC project from Microsoft soon – it would allow for easier integration of the generators into the view.

Tags: