Vlad Dumitrescu (EAW)
Thu Mar 6 10:39:22 CET 2003
> It was mostly intended to inspire
> him to forget everything he had seen and think with a
> clean slate, or just to shake him up a little.
And it was mostly appreciated, and it also had the intended effect. It seems on more people than only me :-)
To try to expose my opinions on this, I think the ideal solution would be something like this:
* the core application is completely unaware of any UI, but it has to interact with the outside world in a way or another. It can receive commands/messages/notifications and send notifications to registered observers. This is more or less the ModelView pattern.
* between the core and the rest of the world a Mediator should sit and translate the application-relevant messages into something relevant to the external world.
* a generic UI layer may then be one of these external observer and will then handle messages it understands and convert them to visible changes and from user interaction. It will also have to interface the generic UI to specific toolkits.
Just the regular 3-layered model, it seems! :-)
All is well, and I think it is a great architecture. My interest right now is concentrating at the third part: how to design a generic UI layer that is easy to plug in, that is extensible and flexible, that is easy to use by both application writer and UI designer and also how will it map onto some existing graphics API. Not easy to fullfill all this!
It would be a plus if it was possible to define or change the UI dynamically. The mediator must then be also extensible and easy to extend, even at run-time.
It is also important to remember that we must also have a framework to write applications in, and the middle layer too.
My first choice for a graphic back-end would be OpenGL. It is standard, powerful enough for advanced use, available almost everywhere, and if only simple features are used it is not complicated. If only SDL would let one open several windows at one time! :-) I turned to X11 for basically the same reasons, and also because the GLX extension is available for XFree86 4.3. Using an existing widget toolkit (or designing one after existing models) might help use the time for the really interesting problems, but might also introduce unwanted effects.
More information about the erlang-questions