One of my current interests is in AJAX programming. To that end, I’ve decided to develop the basics of a lightweight web “operating system.” I’m calling it MetaDesktop mostly because it’s goal is to be a quite literally a meta desktop that is able to run on a number of different servers and platforms. It’s almost entirely client-based, with as little server-side communication as possible. The server-side portion of the system could theoretically be implemented in any scripting language that is capable of accepting URL-based (“query string”) parameters and can produce HTML/XML output. It is my eventual goal to maintain two separate server-side implementations in ASP.NET or ASP and in PHP.

To put it succinctly, MetaDesktop has the following goals:

Platform Availability. Work in all major browsers, and on all major server/scripting platforms. There will eventually be separately maintained server portions of the program in PHP, ASP/ASP.NET, and maybe even other languages if I decide to learn them (or someone contributes them!).

Speed. A lot of server communication can lead to a very slow user experience. I aim to put as much of MetaDesktop on the client-side as possible. This raises a whole host of interesting problems (and in problems are learning opportunities!) such as dealing with concurrency in a language that has practically no support for it.

Compatibility. I want the system to be completely compatible with applications that run under other web desktop systems such as eyeOS. Many of these systems use a mainly server-side approach to write applications. That is, the server-side scripting languages produce the necessary JavaScript to show on the client. Since MetaDesktop is client-centric, this provides an interesting opportunity to learn how the technologies would interact. This is quite possibly the most lofty goal I have for this project and won’t be tackled for a long, long time if ever.

See the links to the right if you want to preview MetaDesktop. If you would like to download the code, see the links below. This program is licensed under GPLv3.

Download Links:
Gzipped Tarball
Zip file