Web desktops

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:

http://eyeos.org/en/

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:

  1. 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)

  2. 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.

  1. Absolute positioning of windows.
  2. Maximize, minimize and close controls as windows decorators.
  3. 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.
  4. 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 :wink: 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?

Whoops, that previous post was mine. I forgot to log in :slight_smile:

I must admit that I am not a fan fitting windows-like desktop concept inside a browser-window. In my opinion there are better ways to improve usability.

That said, I think that achieving desktop-like concept with Toolkit should be quite easy. The first approach that comes into my mind is developing a “Desktop” -component that would manage absolutely positioned icons, start-menu and task-bar.

Windowing could be achieved with normal Toolkit Window-components and “applications” could be any components inside those windows. I think that Window-component already implements the most of the functionality needed for desktop-like interface. Some additions like maximize and minimize buttons could be added by extending Window -component.

I know what you mean. I’ve got the feeling that there is something interesting there but just mimicking the desktop isn’t the answer. I think something in between web pages and the desktop might be the future. Generally, I like web stuff to look like web stuff. I think libraries like Ext-JS are way to ‘desktopy’. One thing I like about ITMILL is that fact that the components on the page look like web page - not like a screenshot of a windows application :slight_smile:

However, using the ‘web-desktop’ demo does seem quite natural also (i recommend others to try it out). So thats why I’m wondering what is the core aspects of the ‘web-desktop’ that feel right - what are the problems that a more desktop-like approach could solve better - rather than just doing the same thing as Ext-JS.

Hmm…

Perhaps it comes down to modularity? Having many components without the interface getting to busy because they all appear to be separate ‘applets’ rather than being mashed into one massively complex application view?

When I saw Facebook, I got addicted straight away. I have never been interested in similar ‘social-networking’ sites before. I started wondering why it was so interesting and found the data model online (it’s not pretty) and examined in to see what was interesting about it. I think that it was (a) That you were compositing a view yourself with these mini-apps which were connected in to your data records and a those of other users. and (b) the interaction of the mini-apps with the message bus shared between your network.

After pondering it I have come to the conclusion that it’s not too hard to implement something similar in an enterprise application. ‘Portals’ are commonplace in enterprise apps - so the only new element is the ‘message bus’ aspect that application events are posted across the network of friends. Theres obviously an API that is used to post to and respond from clicks on these messages that the mini apps implement.

However, facebook pages get insanely busy and eventually you go through and delete all the little applications. Perhaps a web-desktop approach would allow for a similar level of composition - yet stay clean because it would seem as though you are invoking and dismissing the apps. So when you installed the ‘What Religion Am I?’ app it would go into your desktop menu under ‘Quizes’ to be only seen when invoked.

This is assuming that you want to build enterprise web applications with lots of status updates and views over the back end processes. I do. I would like to have little statuses coming up on the application screens for the events happening in the application. So for a contract management system I wrote I’d like to see events like: ‘The payment manager is starting… (click for more info)’. The payment manager has finished - there were 5 failures (click to view failures)… and stuff like : ‘You have been assigned a new task by your workgroup manager… (click to view)’

It would also make adding new modules to the application pretty straightforward!

Anyway, these are just ponderings, I hope no one minds (perhaps it’s in the wrong forum area?). I just recognize that ITMILL’s developers and their users are likely to be the sort of open minded early adopters whose opinions on these matters is going to be interesting. These are early days of the Web2.0 era as we are transitioning out from the ‘proof of concept’ stage (which has largely been driven by young hip javascript programmers with l33t mad-railz-skillz ).

Lets face it, most IT shops are still churning out JSF apps (when not maintaining Struts ones) and looking disapprovingly at Seam for being too radical :wink:

Cheers

Common trend seems to be to a Portal to be the “background platform” and using Toolkit as embedded “mini applications”. We just added Portal support to Toolkit (already in nightly builds and will be in 5.2.0). This automates the process of embedding IT Mill Toolkit apps to Liferay.

Still - in many cases portals are just added unnecessary bulk. Custom built “mashup desktop” might be better in many cases.

I’m trialling a small app in Ext-JS.

Advantages seem to come from the fact that it is MDI without any other “desktop” elements.

I create a top menu, fill the background with a ‘wallpaper’ to give the idea that it’s just a background space, and invoke pop-up windows via the menu clicks.

It is possible to have many records open at once on the screen. Feedback is currently very positive from my boss, although the performance seems a bit sluggish in firefox (i think the transparent window movement over the background maybe?)

I think some sort of minimize (whether to an icon or a window titlebar like Win3.1) will be advantageous. I’ll think about it.

So this level of ‘web-desktop’ is almost possible in ITMILL now except the “top-menu” component. Can I request that this be a priority?

Also, a more “dialog” looking LAF would be good - but not too “dialog” like. Can you give us an idea of when the other theme mentioned in here (http://forum.itmill.com/posts/list/391.page) will be available?

Regards

Hi!

We are bit busy atm to concentrate on new features ( trying to stabilize code base for 5.2 release). But it should be quite straightforward process to make the new component. Are you are interested to build it by yourself?

Server side component should basically wrap HierarchicalContainer, bit like in Tree (except for not extending Select). ClientSide component is almost ready with MenuBar widget from GWT.

Do you have trac account so you can make a ticket for the issue?

cheers,
matti

llaith, if you do not have Trac account, pass me private message and I’ll provide one…

If you are in a hurry, please consider coding / prototyping this feature yourself. With Matti backing you up, you’ll get all the answer you need asap through the forums :slight_smile:

Ha!

I should have known better than to start requesting stuff on an open source project :wink:

I considered having a look at the code before, but creating components in GWT strikes me as requiring a large commitment as GWT seems a very complex framework requiring a certain knowledge of JavaScript through it’s JSNI.

As you said though, the menubar already exists in GWT, so surely this is a good example for getting the feet wet as it were… (a look can’t hurt right? :slight_smile:

However, I tried to check out from your svn repository using both eclipse plugins and then the command line and there seemed to be some problem with the certificate. I thought it might be me because I (a) stopped using eclipse and went to intellij and (b) stopped using svn because I despise it with a passion that cannot be contained, and (c) I am a bit forgetful and my memory tends to garbage collect a bit aggressively when it thinks information is no longer referenced, but I think the command line client should rule out any problems with eclipse and the svn plugins.

I tried connecting to the repository via Mozilla and accepted the certificate (issued by yourselves?) but get the following error:

Which is similar to the error I get via other methods (handshake failure).

I then looked through the site for additional steps I may be missing and found this entry in the FAQ:

When I do install svn I find it preferable myself to use the svn+ssh rather than playing with apache configs so I’m not really sure what to expect.

I’m on Ubuntu and OSX (this mornings test on Ubuntu).

So am I doing something wrong?

Cheers

:lol: Well, you can count on our help too, just ask and you’ll get answers here!

I’m sure Matti or someone else will get you started with this. If you are willing, GWT is an interesting field to work with.

This is not yet done from our part, I’ll ask from Mikael what is the status of public SVN access and get back to this issue. The goal here is to provide as simple as possible public access for anyone.

SVN commit access will require some sort of password (or perhaps even certificate?). Still, even this will be simple to configure and it wont have to do anything with Apache…

BTW Magi provides you dev.itmill.com (Trac) access today.

Magi checks this now, it should work as any other open sourced project’s SVN access. As simple as possible through command line svn / eclipse plugin…

It’s done, see http://dev.itmill.com/wiki/Subversion

Sure. Top menu is currently under construction as an exercise project:
http://dev.itmill.com/browser/incubator/widgets/menubar

Is there any task bar in vaadin to minimize the popup vaadin windows?