What is FunnelWeb?

FunnelWeb is a particular literate programming system that is implemented by a single C program. FunnelWeb takes as input a single .fw input file and writes one or more product files and a documentation file (Figure 2).

\begin{figure}\begin{verbatim}+-----------+
\vert sloth.fw \vert
+---------...
...centerline{{\bf Figure~2}{}: Architecture of FunnelWeb.}
\smallskip
\end{figure}

In literate programming systems, it is usual to refer to the product file as a ``program file''. However, as FunnelWeb is a general tool that can be used to prepare all sorts of text files that are not computer programs, the more generic term ``product file'' was chosen. Product files should be carefully distinguished from the term output files which refers to all of the output files produced by FunnelWeb.

FunnelWeb is distinguished by the following characteristics:

1cm 1cm Simplicity: A governing design goal of FunnelWeb is to provide a simple tool that could be easily learnt and completely mastered. This manual is thick because it is comprehensive and lingers on the ways in which FunnelWeb can be used. The tool itself is quite simple.

1cm 1cm Reliability: Another design goal is to provide a tool that will protect the user as much as possible from silly errors. Macro preprocessors are notorious for causing obscure errors. Every attempt has been made in FunnelWeb to keep the syntax robust. For example, in FunnelWeb the syntax of macro calls has been purposely designed to be highly visible so that the reader is always aware when the macro facility is being invoked.

1cm 1cm Language and Typesetter Independence: Unlike Knuth's original Web system which was specific to the Pascal programming language[BSI82]
[1] and the TEX typesetting language[Knuth84]
[1], FunnelWeb strives to be language and typesetter independent. The current version of FunnelWeb is completely language independent, but is still somewhat dependent on the TEX typesetter language.

1cm 1cm Portability: FunnelWeb has been written in the C programming language with great emphasis on portability. FunnelWeb currently runs on the Sun, VAX, IBM PC, and Mac.

1cm 1cm Controllable: FunnelWeb is an extremely controllable tool. To protect users' investment in source files constructed in the FunnelWeb macro language, the C source code to FunnelWeb has been released under GNU license. This means that it will always be available to everyone. Furthermore, license has been granted for the FunnelWeb User's Manual and FunnelWeb Hacker's Manual to be copied freely so long as they are not modified. All this means that FunnelWeb is not going to disappear suddenly.

1cm 1cm A Production Tool: Above all, FunnelWeb has been designed to be a production tool and every effort has been made to ensure that it will operate effectively in a professional environment. FunnelWeb is ``open'' and portable. There is a comprehensive user manual. Its error messages are comprehensive. It is fast. Finally, it has been designed with the experience of three years of using FunnelWeb V1.

For more information on the history and design of FunnelWeb, see the FunnelWeb Hacker's Manual.