Reference Developer Tutorial 1 Introduction 2 Macros 3 Typesetting 4 Example 5 Hints 6 Examples 7 Webmaking SEARCH

1.2 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 (see below).

                       +-----------+
                       | sloth.fw  |
                       +-----------+
                             |
                             v
                   o-------------------o
                   | FUNNELWEB Program |
                   o-------------------o
                             |
                 +-----------+-----------+
                 |                       |
                 v                       v
         +----------------+    +--------------------+
         |  Product File  |    | Documentation File |
         | (e.g. sloth.c) |    | (e.g. sloth.html)  |
         |                |    | (e.g. sloth.tex)   |
         +----------------+    +--------------------+

Architecture of FunnelWeb.

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:

> 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.

> 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.

> Language and Typesetter Independence: Unlike Knuth's original Web system which was specific to the Pascal programming language[BSI82] and the TeX typesetting language[Knuth84], FunnelWeb strives to be language and typesetter independent. FunnelWeb is completely language independent. FunnelWeb input files can be typesetter independent too, and FunnelWeb can generate documentation in TeX and HTML formats.

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

> 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 a GNU General Public License (GPL). This means that it will always be available to everyone. Furthermore, license has been granted for the FunnelWeb User's Manual to be copied freely so long as they are not modified. All this means that FunnelWeb is not going to disappear suddenly.

> 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.

Webmaster Copyright © Ross N. Williams 1992,1999. All rights reserved.