I’ve been thinking about more advanced layouts possible with Ajax technology. Specifically, ‘web-desktops’.
I saw a demo with Ext-JS:
http://extjs.com/deploy/dev/examples/desktop/desktop.html .
At first I dismissed it as a gimmick, but then I came across projects like EyeOS:
While using the Ext-JS demo for a few minutes and I get the feeling that it’s a good idea, althoutg I’m not sure that the best possible use of the concept is just to mimic a windows (or OSX) desktop.
So I thought I’d start this topic in the hope of getting a discussion going about the subject. Specifically I am wondering:
-
What is the strength of the ‘web-desktop’ approach. What sort of applications would benefit from it and what aspects of the approach are the core useful elements (assuming we’re not going to be just mimicking windows)
-
What would be required for the ITMILL Toolkit to support this style of development.
Some initial thoughts.
*** Strengths of Approach
It strikes me initially that application designed with this ‘web-desktop’ paradigm bear the most similarity to MDI applications. An application like this has possibly many open views over the application at once. In fact, it feels natural like a natural way to navigate very complex apps which may benefit from having many views open to aid in decision making. I worked on a very complex web-based risk-management system once which would have benefited from this approach.
As a lesser advantage of this approach, it seems like a good way to achieve a consistent use of the ‘z-order’. By that I mean this. In a traditional web-app the pages all layer on top of one another. Some sort of breadcrumbs are required to visualize the implicit ‘stack’ of pages navigated through. On a desktop app, we have successive (modal or otherwise) windows which layer on top of each other. Web2.0 apps tend to be a bit inconsistent in their use of pop-ups. Sometimes the search dialog will pop-up and change the location of the main page, and sometimes the main page will be a ‘list-view’ with the pop-ups being the CRUD editing of the data in the list. Following Web2.0 to it’s logical conclusion results in the desktop style. It may not be ideal for some, but it’s consistent.
*** ITMILL Toolkit support
Firstly I have to say that a framework like ITMILL is exactly what is required to manage the increased complexity of an application designed like this.
So what elements would be required?
I think it’s likely that some sort of absolute positioning would be required - where windows are placed with calls like thisWindow.setX(viewPort.getMaxWidth() + thisWindow.length / 2). Layout is already difficult with all the Ajax frameworks - ITMILL’s being the easiest I’ve seen yet (big difference to the GWT widgets it is based on!) however there may end up being tradeoffs for that.
Remember windows 3.1? It had a window manager but no ‘desktop’. It was just a space for the windows to float over. Windows 95 included a desktop that could hold files and folders that had been dragged to it. Very useful. In a ‘web-desktop’ that concept is going to be a bit more complex to use. Ok, so drag and drop of elements is going to be required. But what are you dragging to the desktop? Bookmarked application states and resources (perhaps as URI’s)? What about fragments of data? It’s an interesting idea to think of establishing a one-to-many link with a drag and drops to and from the desktop to fields in CRUD windows. Also, once those links are on the desktop - what would a right click context menu display?
So for this we’d need drag-and-drop support, iconification, perhaps book-markable application states and/or resources, and the desktop being on a layer ‘below’ the windows (existing pop-up window support adequate?).
There was a push a few years back to desktop widgets like clocks and cpu monitors that were ‘embedded’ into your desktop. That would come for free with these desktops - perhaps useful for application health monitoring.
Not everything would be required at once of course - drag and drop could be added later. Lets think what would be required to get a basic structure up.
- Absolute positioning of windows.
- Maximize, minimize and close controls as windows decorators.
- Some sort of ‘top-menu’ component. A simple top-menu could give us a look like OSX or Gnome, while a Windows ‘start-menu’ would be harder.
- A grid based ‘layout’ for icons on the main window (the desktop) which would idealy support drag and drop of the icons (minimized windows) from one position to another. Can the floating windows easily slide over desktop elements like icons?
Hey, I may sound crazed But if any toolkit out there is going to make these sorts of applications practical it’ll be ITMILL. We may as well at least start thinking about it now!
Thoughts?