Besides the development of Lucid, for a long while I’ve been working on another application of intensionality, namely intensional web pages – pages whose exact content depends on an implicit context. Unlike with Lucid, the contexts are not lists of natural numbers but rather lists of parameter settings – originally, based on the algebra of contexts John Plaice and I developed back in 1993 in
Plaice, J. and W.W. Wadge, “A new approach to version control,” IEEE Transactions on Software Engineering, pp. 268-276, 1993.
Originally these contexts were intended to specify versions of software systems but we soon realized that they could equally well be used to specify versions of web pages. In its simplest form a context is a list (sum) of parameter settings, for example
My students and I worked on a series of authoring systems where a web designer could specify a whole family of web pages without having to specify each member in full individually. The idea was to break the web page (or site) into parts not all of which are sensitive to all the parameters. For example, the images might be independent of the language parameter so there is no need to clone both English and French versions of the same graphic. The goal was that a relatively small collection of files could be used by a system that automatically generates a requested version of the web page or site.
The basic principle is that of best fit. This means that when selecting a component of the web page we use the file whose version (context) label most closely approximates the requested version. For example, if the value of the language parameter is French and we need a component called banner.jpg we look first to see if the author has provided a French version of the banner (one whose version label includes lang:french). If there is a specifically French version of the banner supplied, we use it, otherwise we use the generic language-independent version that presumably has been supplied. (If there is none, we have an error situation).
The first such authoring system was called Intensional HTML and was developed by myself and then MSc student Gord Brown. A web site was specified by a family of HTML files (as usual) except that each file could be available in in a number of versions each labeled with a context. The IHTML server assembled pages according to the best fit rule described above.
All the links on an IHTML site had a version parameter associated with them, sent along with the http request when the link is followed. This meant that by default the person browsing the site is browsing a fixed particular version of the site (say, the English language summary version with graphics).
One vital feature of IHTML was the transversion link, which was like an ordinary link with an extra attribute which specified a modification to the current context. This allowed the web author to produce an English language page with a link to the French version of the site. Following this link had the effect changing the presentation language to French. Furthermore following links on the French version of the page takes the reader to French versions of the linked pages.
IHTML was unfortunately short lived. The authoring process proved very cumbersome and the system required a specially altered server. A few example sites were posted, including MSc student Taner Yildirim’s bilingual Turkish-English home page and an ambitious site that generated French language sentences. (The idea was to treat them all as versions of a generic sentence).
IHTML was followed by a series of more sophisticated authoring systems, the latest of which is operational. They’ll be described in a future post.