Fog Creek Software
Discussion Board




UI framework design

I'm looking for some information on UI frameworks and paradigms.  Basically, how does one come about a good class structure for constructing a generic user interface framework?

Is there any site or paper that explores what Microsoft did with MFC, what mistakes they recognized and fixed with .NET, and how that compares to Apple's APIs, or Unix GUIs, and so forth.  I guess that these systems were developed with some starting principles, but the details were filled in ad hoc, and there has probably been a lot learned from all these years of using UI frameworks.

I'm looking for stuff related to concepts of input focus, what state you're supposed to maintain between screens and how to do it, communication with the application, the idea of modal/non-modal, input validation, how to make everything as data-driven as possible, automated traversal of the UI for testing, how to make it extensible with custom code (e.g. if you need to all of the sudden play a video that reacts to UI events), etc.

Andy
Friday, September 26, 2003

A bit off target but a useful link anyway:

http://www.atai.org/guitool/

i like i
Friday, September 26, 2003

You may walk into the flames of 'we're not here to do your project assignment' type of thing.

http://citeseer.nj.nec.com/cs is an academic paper search engine, shove in UI HCI and probably widget and you'll come up with pile of papers.

Simon Lucy
Friday, September 26, 2003

This isn't really an answer to your question, but just a different perspective on UI frameworks. May or may not apply to your situation...

To me, "generic" UI frameworks are not really what we need. We've already got a billion of them. What we need are domain-specific UI frameworks that are geared toward families of related products. These should incorporate corporate or project branding conventions as well as the event management, look and feel, operational paradigms, etc. that is all left up to the programmer's discretion with generic toolkits.

I wrote a paper on this called "Branded Toolkits" that was published in Software Practice and Experience a few years ago.

Jeff Kotula
Friday, September 26, 2003

I suspect I won't get any useful UI-related information from this thread, but the link to that search engine was certainly worthwhile.  Thanks, Simon.

I may as well ask, though: is there anything CiteSeer will get that Google (or Teoma, etc.) can't?

Paul Brinkley
Friday, September 26, 2003

I think probably most if not everything will be indexed on Google that CiteSeer will have.  I think  though that they won't be drowned in the noise.

Makes me think of one of my current boil the ocean ideas of categorising Google searches using Bayesian filtering and keeping the category as a look aside search index.

PS if anyone does this don't even think of patenting it.

Simon Lucy
Friday, September 26, 2003

I just want to use your question as a launching point for something related:

The Apple APIs are absolutely horrid. Obvious results of hackers throwing stuff together willy nilly with absolutely no design whatsoever.

The Win32 API, on the other hand, I really liked when I worked with it. Is it true that the Borland guy had a hand in its development?

It seems Microsoft has been doing a much better job at software framework design than Apple for several years now. I suspect it's because they hired that brilliant genius who designed TurboPascal. I suspect he is behind it all.

Unix APIs I've seen are a mixed basket, but some things originating on Unix have been quite good.

No flames please
Friday, September 26, 2003

Simon: this is definitely not a school project.  I work for a game company.  It's not even a project yet, but I'm just trying to gather some ideas.  I guess I should have said that, but the idea was to see some common patterns in existing frameworks that could be learned from.  The ideas I'm looking for should be relevant whether you're using a PC or a game console.

Jeff: interesting comment.  What are some of the pitfalls of generic frameworks in your opinion?  The look and feel, for my purposes, must be completely data-driven.  To me look and feel is definitely not part of the framework -- the system to get art in is.

Also maybe people have some comments about Java UI... if I remember correctly, the first UI toolkit was kind of hard to use, and then they released Swing which was lighter weight.

Academic papers might be useful, but I'm also looking for more practical stuff, comparing real frameworks that have been extensively used.

Andy
Friday, September 26, 2003

Actually, depending on what Apple API you are talking about, they can be "horrid" or great.

Check out the AppKit, it came from NeXT

http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaOverview/index.html

joe
Friday, September 26, 2003

whoops, that link should have been

http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaOverview/Articles/CocoaFrameworks.html#//apple_ref/doc/uid/20001932

joe
Friday, September 26, 2003

Andy,

For a different perspective take a look at http://www.nakedobjects.org .

Ged Byrne
Friday, September 26, 2003

Check out

http://developer.apple.com/documentation/mac/HIGuidelines/HIGuidelines-2.html

Not APIs or technical information, but a document about how an interface SHOULD work from a user's perspective.  From your comments, I think this might be what you really want.

Not sure, though, if this is pre or post OS X.  Many Mac old timers find some of the OS X changes heresy, others just find them pragmatic compromises with the reality of life as a minority OS.

Jim Rankin
Monday, September 29, 2003

Best bet's to look at a few of them.  Look into web app frameworks as well.  "Generic" UI Frameworks usually end up doing one of two things:
- Really implying a specific kind of application.  i.e. an MDI application with a menu, toolbar, and little sub-windows (ick).
- Giving you little more than wrappers around the APIs

So many APIs provide the former I won't get into it (Motif comes to mind).  A good, useful example of the second is libSDL ( http://www.libsdl.org/index.php ).  IMHO, the old PowerPlant framework from MetroWerks was pretty decent.  Here's hoping that PowerPlant X doesn't suck.  Qt From TrollTech's not too bad.  Many of the newer kits work on more compatible inter-component messaging, like Qt's signals & slots (ick).

For a game, look at libSDL for your low-level needs, and evaluate how much of a framework you'd want on top of that.  Maybe some utility classes for standard configuration screens & menus would be all that you need to get the basic job done, with some customizability for the real title-specific stuff.

H. Lally Singh
Wednesday, October 01, 2003

*  Recent Topics

*  Fog Creek Home