This chapter contains notes on the design of FunnelWeb. These notes were not created from scratch, as the original version of FunnelWeb (FunnelWeb V1) was designed and constructed in a hurry late in 1986, and no design notes were ever recorded. These notes are in fact the result of a complete review of the FunnelWeb design that took place in late 1991 as part of the process of upgrading it for public release.
Throughout the design process I tried to stick to the principles of simplicity and clarity. As a rule, it was considered more important that a feature be simple and not allow the user to outsmart himself than it was for the feature to be particularly crisp. For example, the FunnelWeb macro calling syntax is not as crisp as the C syntax, but is more visible.
To some extent the design review was influenced by the requirements of backward compatibility.backwardscompatibility During the review it was hard not to think about all the source files in FunnelWeb V1 format that I have written over the years that would have to be converted were I to significantly deviate from the old input language. Luckily it turned out that there was little clash between these interests, and the resulting design is both clean and does not require much conversion of old source files. The main revision is in the document structuring facility. FunnelWeb V1 had just two levels of heading indicated by @*@* (for major headings) and @* (for minor headings). This scheme (which was copied from Knuth's Web) has been replaced by a hierarchical scheme of five heading levels levels (@A…@E).
This chapter is rather unstructured, acting as it has, mainly as a dumping ground for random ideas about FunnelWeb.