This is what I did for my PhD work. The idea is that programming languages should not treat interface widgets as just another object type. Instead I argue that if one looks at the semantics of interface widgets, you discover that widgets are just a 'view' (in the MVC sense) of first class data types.
In the thesis, I look at how one can design a language based on these principles. One of the things I implemented as a proof of concept is an interface users can screw apart. The interface has a screw in the bottom corner. Clicking on it unscrews the screw and reveals screws on individual widgets as well as a tray of new widgets that can be added to the interface.
If you want to see this in action, you can download the HyperCard stack below or buy Mac OS 10.4 The mechanism they use to add and modify dashboard widgets is almost identical to what I describe in my thesis. I am not suggesting that anyone at Apple read my work, but that, 10 years later, they realised that this is a good solution to the problem of supporting user customisation of interfaces.
My work in this area has drifted into end-user authoring systems for virtual reality.
PhD Supervisor - Harold Thimbleby
Grad students - Zayd Hendricks, Jak Tangkuampien and Shih-Min Yang
Marsden, G. & Yang, S. (2004) "Eliminating Design and Execute Modes from Virtual Environment Editors" Presence 2004, full paper. (Electronic proceedings) (PDF)
Marsden, G. (1998). Designing Graphical User Interface Programming Languages for the End User. PhD Thesis.
Marsden, G. and Thimbleby, H. (2002) "Holistic Programming Environments" South African Computer Journal, November (2000) pp 237-241 (Postscript 2.6 Mb)
Hendricks Z., Marsden G. & Blake E.H. (2003) "A Meta-Authoring Tool for Specifying Interactions in Virtual Reality Environments", Proceedings of Afrigraph 2003, ACM Press, pp 171–180 (PDF 284k)
HyperCard screw stack
Instructions for the stack