On Mar 23, 2008, at 8:00 AM, Peter da Silva wrote:
Twenty years ago I was appalled by the emerging model of GUI programming, the unwonted intimacies between application and display. For me, X11's modest attempt at establishing an arm's length distance between the application and the display should have been only the beginning, and yet rather than proceeding towards a situation where the communications channel was more abstract, more "terminal-like",
Funny you should mention that...
everything went back the other way until now the whole crufty user interface lives in the application, with every detail of the windows and widgets and graphics and gadgets handled in the application's context.
I see this from the angle of the 'engine' and the user interface being fused together, so you can't, for example, use Apple Mail with a spam filter that actually works.
I have had ideas about what a cleaner model might look like. I've hoped that somewhere in Plan 9 or Layers or NeWS would be a new metaphor that would save us from the horrors of the GUI event loop.
I'm working on such a system. In it, a window is a terminal device, and clicking the close box sends SIGHUP to the foreground process group.
But nothing ever seems to arise, except in the most remote sense maybe the complementary hate that is "Web 2.0".
Web applications are even worse. Not only is the engine tied to the user interface, but so is the content and the community -- if you want to communicate with a site's users, you're stuck with the site's interface. And not only do you lose your session if the Web browser crashes (which is far more likely than for a normal GUI app), but without Web access the app is useless because it relies on a remote host to provide the user interface. A desktop application can download mail or news batch-wise for offline viewing, but a Web app can't, except for what it can cram into the browser session -- it can't automatically save anything to disk.
Most Web applications offer no API or protocol except for 'be a Web browser with an attached human'. Since everyone has a Web browser, it's considered acceptable to write Web services (i.e. applications) that *require* a Web browser, making automation difficult and brittle.
Josh
