17th
The Web: Services and Applications
I’ve been working on this thing called TiddlyWeb. It’s elevator pitch (from Jeremy Ruston, author of TiddlyWiki) goes like this:
TiddlyWeb is a practical, readable, reference implementation of a rigorously designed headless wiki server that may use TiddlyWiki as a user interface. The combination of TiddlyWeb and TiddlyWiki allows a complete separation of server and UI concerns.
One of the important things to keep clear in working on this, and perhaps more importantly when talking about this with others is the difference between a web-application and a web-service.
We can come up with many different definitions for these terms, but for the sake of this discussion let’s try:
In a web-application the end user interface is constructed by and presented with the same logical web server system. That is, the web-application controls the UI.
In a web-service the end user interface is created outside the web-services’s logical web server. This could be done by a web-application (logically elsewhere), a desktop application or perhaps some javascript in a browser building the UI from one or more services.
TiddlyWeb is being built to act as a web-service for TiddlyWiki. TiddlyWiki gains its awesomneness by being a UI that is customizable on the edge of the network (or even without the network). UI customization in the hands of individuals.
TiddlyWeb extends the data of TiddlyWiki out to a collaborative opportunity for multiple people (by getting content onto the internet) while leaving UI on the edge.
(This reminds a lot of Fluency. There’s also a lot to say here about REST and decoupling of concerns. Some other time.)
The implication of all this is that if TiddlyWeb wants to excel as a web service it should eschew, as possible, those features which require a complex UI on the server; such things cloud the server side system, limiting its applicability to unexpected or unplanned situations. I have no proof of this assertion other than experience and intuition. Take my word for it?
A well designed web-service supports a diversity of UIs rather than, as applications do, enforcing one or more than one UIs. This is especially true of REST-based services. These only say “here is some stuff, have at!”
Note: The term end user interface is important here because of course any system as an interface of some kind. TiddlyWeb’s REST API has an interface, has users, and needs to be usable. What’s different is the users of the API are a step in a chain between the resources and their final presentation for some purposes. That final presentation is the end user interface and is outside the circle of control of the web-service.