The frontend/backend distinction has several aspects: why is there a distinction, how was the distinction made, and what is the distinction?
The frontend and backend separation supports multiple users and single users with multiple applications. Supporting multiple users requires either that they all communicate with the same hypertext engine (the backend) or that they exercise some system dependent database locking scheme. Neither the system dependence nor the clumsiness of locking schemes were acceptable. Even the single user will require multiple applications. Imagine creating pictures with one frontend, while annotating the pictures with textual descriptions and background music, all in the same document! No single frontend can cope with all the possibilities of multi-media.
In terms of clients and servers, the backend is a hypertext server and the frontends are clients. This emphasizes the anonymity of the frontends to the backend. We use the term "frontend" rather than "client" to stress the user interaction and data generation supplied by frontends.
Separation of Functionality
The separation between the frontend and backend allows them to run on the same or different machines. Thus, low-end computers can use the full power of the Udanax Green backend over a network. More powerful computers can run both frontend and backend concurrently.
The backend supports as much generality as possible, with as few concepts as possible. For example, because the backend avoids all operations that interpret the stored data, it can store and interconnect any kind of data, from text to PostScript, RenderMan protocol to digital video.
The backend avoids all operations that can be done equally well outside of the backend. Searching operations are an example. The special retrieval operations in the backend which seem like searching operations actually derive their results from the proprietary data-structures, without searching. Since the FeBe Protocol follows a remote procedure call style, a frontend and backend on the same machine can easily transfer massive amounts of data. With the addition of application specific knowledge, frontends can search faster than the backend possibly could.
Avoiding Premature Rules
Finally, the backend encourages the evolution of conventions, rather than entrenching premature rules. Link types, for example are quite general. Most existing hypertext type systems declare a fixed set of link types. The Udanax Green system does not even specify the nature of a link type, let alone the specific set of possible types. No solution by fiat could possibly cope with the newly available and continually evolving media, market needs, etc. The current list of areas for evolution are:
* the nature of link types - will they be constants, pieces of code, etc.?
* specific link types - quote, reference, retraction, refutation?
* document topologies - how will documents typically be structured?
The chapter "Technical Overview" discusses the concepts implemented by the backend. Only operations to support versions, links, multi-user access, and comparison are included in the backend. The current facilities will evolve, both in capability and in generality. Below is a partial list of planned extensions.
* time, timestamps, etc in the versions system
* editable links
* sophisticated access control
* historical trace documents which contain the edit and version history of other documents
* mechanism for charging royalties for access to links or documents.