eyeOS (demo) is a web-based operating system, or webtop. Though strictly speaking it is not an OS, it provides the user with a window-based GUI and a set of applications (e.g. word processor, web browser, mail/FTP client, games...) similar to those of a conventional OS.
We selected this application because of its high interactivity. Its main appeal is to let users have access to their own desktop, files and applications regardless of their physical location. If browser technology and network infrastructure improve sufficiently, webtops could even substitute current local OS installations.
eyeOS makes use of several technologies on the client (browser) side:
Though it is not the focus of the project, we briefly comment on the server side of the architecture. eyeOS is written in PHP on the server side, and provides multiple high-level abstractions (e.g. file system, user management, window services, ...). The goal of these is to make it easy to write new applications, and avoid dealing with low-level primitives. In this sense, eyeOS is also a web application development framework.
Interaction case studiesEdit
The eyeOS desktop features application icons that, as in conventional OSes, can be moved around and clicked on to launch applications. Dragging an icon is initiated by left-clicking it, and is mostly a client-side interaction. Icons consist of a labeled div element with and icon and some text. They use the onmouseup/down events to register the icon as it is clicked upon, and a global onmousemove event handler redraws the icon as we drag it around. When the icon is dropped, the client sends the new position of the icon to the server. This way, the server can remember the arrangement of the icons for future sessions. Since the message is processed asynchronously, the user is oblivious to this client-server interaction.
Overall, we think that many of the interactions are gracefully handled with the AJAX-based infrastructure, leading to a good and responsive user interface. However, we see three key issues with eyeOS (and similar systems) that may limit its usability and adoption:
- The server can't initiate communication with the client. This requires to periodically poll the server for pending events (e.g. the mail client received a new message). This increases latency and imposes a high server load. It could be solved by reverse AJAX.
- The inherent network latency and bandwidth limitations are going to make it hard to support applications with low latency tolerance and/or high bandwidth requirements (e.g. a real-time 3D game).