"I have a mind like a steel... uh... thingy." Patrick Logan's weblog.

Search This Blog

Sunday, June 01, 2008

Toward Better UI Programming Models

Every now and then I complain about the browser's programming model. There's just been better models in the past on desktops, and there must be a ways forward that (1) "don't hurt the web" [see below] and (2) provide at least the ease of the popular models of the past. Most of the popular models of the past are based on some variation of Model-View-Controller from Smalltalk-80... frameworks like Swing, MFC, etc.

Those models are still incredibly low level compared to other practical-yet-relatively-unknown models that evolved over the last 30 years or more. Most of these other models that I can recall are all in the ballpark of contraint-based and data-flow-based systems.

Here are some off the top of my head for interested readers, many of whom I suspect may *only* have client-side experience with HTML and AJAX if they are younger than a certain age, maybe 35? I'll fill out links and descriptions as I get time.

  • ThingLab - And subsequent constraint solvers that came out of Alan Borning's groups for Smalltalk, Java, C, etc. (Many developers are familiar with contraints for layout, less familiar with constraints used within domain model and GUI integration. For a recent discussion on contraints in layout see: Michael Lucas-Smith, Vassili Bykov, Andres Valloud)
  • Alternate Reality Kit (ARK) - Smalltalk
  • Morphic - originally influenced by ARK and implemented in Self, then in Squeak Smalltalk, and now Lively Kernel in Javascript.
  • Fabrik
  • Hypercard (on this list for its unique simplicity as opposed to its programming model per se)
  • Garnet - CommonLisp, read the papers and try the system if you can - great stuff.
  • Amulet - Garnet's C++ successor, a bit more clunk but available to more programmers
  • EZDraw - Joel Bartlet's Scheme->C system
  • Figlets - Haskell
  • Functional Reactive Programming (FRP) (data-flow-ish) systems like: FrTime (PLT Scheme), Frappe (Java), Flapjax (Javascript), and various Haskell systems.

Please Don't Hurt The Web

I don't think HTML and AJAX should or could go away any time soon. But I don't think all "clients" have to be entirely (or at all) made of HTML and AJAX. The more RESTful the web becomes the less clients have to consist of HTML and AJAX. That's a big reason I like AIR so much: HTML and AJAX can contain other models like Flex and PDF; and Flex can contain HTML and AJAX; RESTful services can be integrated into any of this; and so on.

4 comments:

Anonymous said...

At Xopus we now also use a FRP based UI model, combined with an XBL like system. That works great and fast.

You don't need constraint solving because that is built-in in CSS.

Anonymous said...

there's also Cells and Cells-Gtk in common lisp world. it seems like it's being used by few people besides kenny tilton right now to produce real world projects.

http://common-lisp.net/project/cells/ and http://common-lisp.net/project/cells-gtk/

Unknown said...

Just thought Sean McDirmid's SuperGlue and posterior experiments with live programming should be mentioned.

Anonymous said...

Speaking of sucky UIs, please make your blog not blow so badly.

Blog Archive

About Me

Portland, Oregon, United States
I'm usually writing from my favorite location on the planet, the pacific northwest of the u.s. I write for myself only and unless otherwise specified my posts here should not be taken as representing an official position of my employer. Contact me at my gee mail account, username patrickdlogan.