The HTC does for programming what has already been done for information retrieval.

What has the web done for information? In short, the web has made the network invisible when retrieving information. The distance traveled and the technology employed to deliver a request from a browser and the response returned makes no difference to the user’s perspective. That is part of the magic of the web. The web has been designed so that caching can be automated. Information may be transparently moved in response to network conditions and local policy so that requests are satisfied in a way that is optimal for the owner of connected computing systems.

In contrast the situation for programmers is that the network is still very visible. Most computing environments still force programmers to choose in advance where processing is done. Often this choice is implicit in the choice of technology employed. PHP means processing done on the server. Javascript means processing done on the user’s computer. Most computing environments use widely different paradigms for accessing local resources vs remote resources. The computer carries within it implicit information about “here” and “out there on the net”.

The visibility of the network in the programming model means that programmers have to make explicit decisions about “here” and “there”. Just as this distinction has been erased for information retrieval, it is time to erase this distinction from our programming models. One way of achieving this is to explicitly build a model computer on top of HTTP. This is the approach taken by the proposed HyperText Computer (HTC). The HTC accesses all resources across the network. This uniformity in programming model allows the decision about where to execute the HTC’s code to be taken at runtime, similar to the way that caching makes runtime decisions about where to locate information. Depending on factors such as the availability of a local HTC, and the willingness of the owner of the code to allow it to be transported to other HTCs, computing could be done remotely or locally.

With the widely varying amounts of processing and storage available on a rapidly increasing array of devices, is it time to offer to programming the benefits that the web already offers for information retrieval, that is, make the network invisible?