There is a distinct line between web application and desktop applications. But over the last few years, this line is becoming thinner. Due to faster internet connection and technologies like ajax, web applications are becoming much faster and more responsive. And, if you have a local web server installed, a ‘web’ application can become desktop application.
I have a web server(Apache), and a database server(MySQL) running at all times on my local system. Since LAMP is my preferred platform of development, if I need a new software, I will create it on LAMP. A good example of this is Nexty. Over time, I have discovered that web application can be used as desktop applications. All you need is a web server, a database server and a browser.
There must be some changes to the current model to make this system work. These are a few I could think of…
- Web Server must run as the current user. That way, you can read/write to any file using PHP(or equivalent).
- The application must not be available over the network. Or, the web server must only accept connections from 127.0.0.1
- An installer for these kind of applications must be made.
- Familiarity: People are already used to web applications – so it will be easy to switch.
- User Customizable: Users can change the appearance of the application(user stylesheets), and to a limited extent, the functionality(GreaseMonkey).
- Open Source: If the code is in PHP or Ruby on Rails, or anything similar, the code will be available for study or even modification.
- Cross Platform: The same program can be installed in Windows or Linux or whatever – as long as it has a Web server.
- Imaginary: As of yet no such system exists.
- High Level: The system will not be able to do low level system operations.
- Limited: There will be some very serious limitation to the application unless the current systems are modified. For example, the browser cannot read or write to the filesystem.
I have been using some web applications as desktop applications for a while now – these include WordPress(for keeping notes), activeCollab(project management), Nexty(to do list), and Tiker(time tracker).