I am giving a short talk on the subject from a programmer's perspective. I was thinking about talking about UI design along 3 axes:
- Proximity: How close the code you write is to the UI
- Interactivity: How flexible and powerful the UI can be
- Complexity: How difficult it is to build a user interface (technical/implementation)
I was then going to discuss the following UIs:
- Command Line: - High on proximity, somewhat high on complexity, low on interactivity 
- VB / MFC / Windows Forms - Low on proximity (deal with a big API/controls/UI Model), medium interactivity - you can build it in but with a high penalty in proximity (3rd party libraries/controls), bigger range on complexity; simple applications are easy to build. 
- Web - Low on proximity (browser does the legwork, different browsers behave differently), high on interactivity (DOM/CSS/Javascript/Browser), high on complexity (lots of moving parts) 
- Silverlight (perhaps other RIAs) - Higher proximity than RAD/MFC/VB style interfaces as well as Web, high on interactivity, lower on complexity (e.g. animation in this environment versus OpenGL etc) 
Questions
- Do these 3 axes make sense? I know there are some generalizations one could make such as a tradeoff of interactivity and complexity that apply in every environment but I see strengths and weaknesses inherent to each. 
- Is there another axis or trait in UIs that makes sense to discuss? 
- Future implications on how we develop (RIAs become dominant, etc...) 
- Any other feedback (+/-)