Distributed Apps

From Jonathan Gardner's Tech Wiki
Jump to: navigation, search

Introduction

I don't think web apps will ever become the lingua franca of applications. Sure, Google is doing some pretty amazing things, but it is all a bear dancing. (We admire it because it is dancing at all, not because it dances well.)

A far better solution is distributing the applications to the clients and running them locally.

How it Works

The developers write the client application. They write server architecture to support the apps. When everything is working, they begin distributing the client apps.

Clients download and install the client apps. Today, this is a big and dangerous step. In the future, hopefully this will become safer and more reliable. (See some notes below on how to do this.)

When the client runs the app, it has some access to local data, and access to the server architecture. The server architecture may, from time to time, support the upgrade process by automatically notifying the app that it is time to upgrade.

Why it Isn't Working Today

The principal reasons distributed apps are not totally shutting out web apps is because:

  1. It is not safe to download software from strangers.
  2. It is not easy to download, install, and configure software.
  3. It is not easy to learn a new desktop app.

These are all problems that are easily solvable if priorities are readjusted.

Safety

Any decent OS will have sufficient controls in place to limit the actions a program can take. For instance, on a Linux system, you can create a user for each app, and limit what that user is allowed to do with SE/Linux and Unix permissions. On windows, this is all but impossible. This is because Windows Sucks.

There is the problem of setting up an environment to make this all easy for the user to do. However, I don't believe it is really that complicated. Once there is enough demand for it, I am sure the major OS's will do something like this.

Ease of Installation and Configuration

The reason why installation and configuration is difficult is because developers are lazy. If they spent as much time thinking about how people are going to install the software as they do thinking about how the users will use it, this will become solved.

There is the possibility of creating a program that will assist users in finding and installing distributed apps. However, I don't believe this is the way to go. Instead, we should focus our energies on making secure environments for the apps to run in, and let the developers make their software easily installed.

Learning a New App

User interfaces on the desktop are notoriously complicated. This is not because they need to be or should be---it is simply because they can be. Developers need to really think hard about simplifying the user's lives. They need to trim the interface as much as they trim the codebase. It needs to be a priority to make the software completely intuitive and easy to use.

The Future

One day, more and more people are going to stop developing web apps in disgust. They are naturally going to turn back to the desktop. These same people are going to bring some of the ideas that made the WWW so successful--things like consistency, simplicity, ease of use, etc...---to the desktop. About that time, distributed apps will take off.