@make(report) @style(pagenumber="Page @1") @style(date="March 8, 1952") @style(widowaction force) @style(doublesided) @style(hyphenation off) @style(topmargin 6) @device(Sanders) @modify(titlepage,sink=3.0inches) @modify(itemize, below 0) @define(group=group, above 2, below 2) @comment(text=text, columns 2, columnwidth 2.5 inches, columnmargin 0.5 inches, linewidth 3 inches, boxed) @pageheading(odd, left "An Evaluation of Text Processors",right "@value(page)") @pageheading(even, left "@value(page)",right "An Evaluation of Text Processors") @pagefooting(odd, left "@value(date)") @pagefooting(even, right "@value(date)") @use(bibliography="report.bib") @begin(titlepage) @begin(majorheading) an evaluation of mainframe text processors @end(majorheading) @begin(heading) r j hare november 1982 @end(heading) @begin(text) This report describes the evaluation of the mainframe text processors SCRIBE and NROFF/TROFF on DECsystem-10 and VAX machines at Edinburgh University and the MRC Population and Clinical Cytogenetics Unit, Edinburgh. The mathematical typesetting program T@-(E)X has also been evaluated, but from the documentation only. @end(text) @end(titlepage) @newpage @section(PREAMBLE) @subsection(Text Processors) Text processing and document formatting systems are available at various levels of sophistication, the range covering simple interactive word processors for office microcomputers; directive driven mainframe processors (eg RUNOFF, LAYOUT); context driven processors (eg NROFF/TROFF, SCRIBE) and fully integrated printing systems capable of producing output in many different alphabets, fonts and point sizes on dedicated printers of various types (eg LASERCOMP@cite[lasercomp],@cite[lasercheck]). @subsection(Scope of this Report) This report describes the evaluation of two text processing programs carried out by ERCC. The reasons for carrying out the evaluation are given in full in@cite(anne) but, briefly, it is considered desirable that a common text processor be used for the production of all computer generated documentation within the Unversity, either on a dedicated machine or dispersed on several machines. The two programs evaluated are: @begin(itemize, below 0) SCRIBE Version 3C running on a VAX780 running VMS Version V2.5 (Dept of Computer Science, University of Edinburgh), and on a DECsystem-10 running TOPS10 (ERCC, University of Edinburgh) @end(itemize) @begin(itemize, above 0) NROFF/TROFF running on a VAX750 running Berkely UNIX Version 4.1 (MRC Clinical and Population Cytogenetics Unit, Western General Hospital, Edinburgh). @end(itemize) Both programs were evaluated from the point of view of functionality, resource consumption, and ease of use within their operating environments. The quality and usefulness of the documentation provided for both programs was also considered. In addition the functionality of the mathematical typesetting program T@-(E)X was evaluated. This was done by culling the aspects of T@-(E)X's functionality from the documentation only, as there is no machine in the Edinburgh area running T@-(E)X. @begin(group) The report is divided into several further sections covering: @begin(itemize) description, availability, cost etc. @end(itemize) @begin(itemize, above 0) documentation @end(itemize) @begin(itemize, above 0) functionality @end(itemize) @begin(itemize, above 0) performance analysis @end(itemize) @begin(itemize, above 0) conclusions @end(itemize) @end(group) @subsection(Summary of Findings) In this section the major advantages and disadvantages of SCRIBE and TROFF/NROFF are presented. All of these points are discussed in more detail in the remainder of the report. The advantages of SCRIBE are: @begin(itemize) SCRIBE is easy to learn and easy to use, the use of English language words as formatting directives helps here. The documentation is good, comprising two manuals only - one for the non-expert user and one for the 'wizards'. Both of these manuals are well written and easy to read. SCRIBE has a wide range of functionality, not that much wider than TROFF/NROFF but in general easier to achieve, particularly for the new user. In particular a wide range of document and environment types are built in to SCRIBE. SCRIBE is available over a wide range of machine/operating system configurations. SCRIBE is a developing product and its scope may be expected to improve in the future, both from the point of view of function and the range of machines/operating systems/devices which it can handle. SCRIBE is fully supported by the distributors. @end(itemize) The disadvantages of SCRIBE include: @begin (itemize) Cost - SCRIBE is relatively expensive. If a single SCRIBE system were purchased to provide a documentation facility, a minimum cost of $2,000 plus maintenance plus the cost of any additional drivers would be incurred if VAX/VMS were the chosen system. Usage of system resources - SCRIBE consumes a relatively large amount of system resources. @end(itemize) @begin(group) The advantages of NROFF/TROFF are: @begin (itemize) Cost - NROFF and TROFF come effectively free with the UNIX package. Functionality - NROFF and TROFF largely fulfil the requirements for a text processor specified in @cite(anne). This functionality is in general not as easy to achieve as with SCRIBE. @end(itemize) The disadvantages of NROFF/TROFF are: @begin (itemize) It is difficult to learn because the 2 character formatting directives are somewhat cryptic. The documentation is poor. The available documents were fragmented and seemed incomplete in the sense that there was no one document which I feel could be given to a new user in the reasonable expectation that the user would be able to learn the rudiments of NROFF/TROFF easily. The obligatory use of preprocessors and macro libraries to achieve the full range of functionality is inconvenient. This is a personal point of view - other people seem to regard this multiplicity of pre- and post- processors and macro libraries as a big plus in favour of NROFF/TROFF - personally I disagree. NROFF/TROFF are effectively frozen as far as development is concerned. Any development (and bug fixing) would have to be done 'in-house'. The range of document types available is limited and some development work to extend this range would be necessary. NROFF/TROFF are not supported by the distributor. (This situation may be about to change in that A.T.&T. are supporting the latest release of UNIX - it is not clear that such support will include support and development for NROFF/TROFF - if it does, it may well cost real money - so one of the advantages of NROFF/TROFF, namely the effective zero cost would be demolished - certainly as far as maintenance were concerned.) NROFF and TROFF are not available over as wide a range of operating systems as SCRIBE, although the fact that UNIX is itself available for a wide range of machines means that this is not a real problem. @end(itemize) @end(group) So, ultimately, the choice of system seems to lie between a fully supported commercially available system which is in a continuing state of development but which costs real money, and one which although free, is 'frozen' as far as development is concerned and which is unsupported by the suppliers. @newpage On these grounds I would suggest that SCRIBE is probably the best choice of software on which to base a campus wide document preparation facility. @section(SCRIBE, NROFF/TROFF & T@-(E)X - Description, Availability, Cost etc.) @subsection(SCRIBE) SCRIBE is described by its distributors as a 'Document Preparation System'. It is in fact a sophisticated program for the preparation of documents in many forms. Thirteen standard document types are built into the SCRIBE system, and sophisticated users may set up their own document types, either from scratch or, by modifying existing types as required. Among the document types supplied as standard are Text (the default), Report, Manual, Thesis, and Letter. Within each document type there exist standard 'environments' which are formatted automatically by SCRIBE according to both the type of document being processed and the output device requested. These standard environments include for example, Equations, Tables, Quotations, Theorems, etc. SCRIBE also includes a fully automatic sub-system for setting up pagination, table and figure numbering, lists of references, etc. SCRIBE is oriented to the idea that within the text file to be processed to produce a finished document file, directives should not consist of actual formatting commands as in (say) RUNOFF, but should instead specify the end format required in some general way. SCRIBE itself will then interpret these general statements according to the document type specified and the output device being used. The necessary detailed information about formatting and output devices is held in a SCRIBE database and the casual user need never know of the existance of this database. SCRIBE was developed by Brian K Reid in the Computer Science Department of Carnegie-Mellon University and was in its early (1979) incarnations available free, but unsupported, to whoever requested a copy from the author. @begin(group, above 2, below 2) The marketing, distribution and support of SCRIBE is now handled by: @begin(verbatim, leftmargin 1 inch) U@c(nilogic) Ltd., 605 Devonshire St., Pittsburgh, PA 15213 USA @end(verbatim) @end(group) @begin(group, above 2, below 2) To give an idea of the cost of the system, the following are the costs of the system acquired earlier this year for the SERC DECsystem-10 at ERCC: @begin(text, indent 0) @begin(text, leftmargin 0.5 inch, spacing 1, above 1, below 2) @tabclear @tabset(5.0 inch, 5.5 inch) SCRIBE program with standard device drivers@\@>$10,@\000@* Device driver for Omnitech 2000 phototypesetter@\@>$ 3,@\000@* One years maintenance (including updates)@\@>$ 2,@\400@* Documentation (User guides - $15.00 each)@\@>@ux($ 0,@\785)@* Total@\@>$16,@\185@* @end(text) @end(text) making at the rate of exchange then prevailing (April 1982) a total sterling cost of approximately #8900. @end(group) Further complete systems may be purchased at a cost of 20% of the cost of the original system, an additional charge of $1,000 being made if the machine range is to be extended. Thus, the Department of Computer Science were charged $3,000 for their system ($2,000 = 20% of $10,000 plus $1,000 for the extension of the local machine range to include the VAX). A standard range of device drivers is provided for the initial $10,000 outlay, this includes drivers for the Line Printer, Diablo and ReGIS classes of terminal and the driver for the GSI phototypesetter. Other drivers are extra, eg: $9,500 for Xerox 9700, $2,500 for Xerox Dover or Penguin. Maintenance for these drivers is also an extra charge. There are two forms of multi-machine license. These are a site license costing $20,000 and a campus license costing $40,000. Both of these forms of license in principle allow the user to install as many copies of SCRIBE as required but there are complications in the case where a multi-site campus or a multi-institute site are concerned. It is not clear at the time of writing which of these licenses would be applicable to the University though obviously on the grounds of cost, the site license is the most attractive. Maintenance for a site license is between $1,800 and $6,000 per year. Again this figure depends upon the number of SCRIBE systems being run by the purchaser. @begin(group, above 2, below 2) @begin(text, above 2) The range of machines and operating systems available is: @begin(text, leftmargin 1 inch, spacing 1, above 1, indent 0) @tabclear @tabset(3 inch) DECsystem-10@\TOPS10, TENEX@* DECsystem-20@\TOPS20, TENEX@* VAX range@\VMS, UNIX@* IBM370 range@\MVS@* PRIME 250/850@\PRIMOS@* Apollo@* @end(text) @end(text) @end(group) In addition, SCRIBE is in the process of being adapted to run on the PERQ and Sun machines and a version is being written which will run on UNIX systems with at least a 20 bit address space. @begin(group, above 2, below 2) SCRIBE will drive a wide range of output devices, these are listed below: @begin(text) @begin(text, leftmargin 2.5 inch, above 1, spacing 1, indent -2.5 inch) @tabclear @tabset(0.0 inch) @label(scribedevicelist) Line printer class:@\LPT, Printronix, LA36, Tl700, Tl725, CRT@* @begin(text, above 0, below 0) Diablo Class:@\Diablo 1620, Diablo 1650, Spinwriter 5515/5525, Qume, AJ832, Sanders S700, Phillips GP300, etc.@* @end(text) @begin(text, above 0, below 0) Photocomposer class:@\WANG/GS1, CAT-4, CAT-8, Omnitech 2000, Mergenthaler, Mergenthaler VIP, Compugraphic 8600@* @end(text) @begin(text, above 0, below 0) Laser printers:@\Xerox Penguin, Xerox Dover, Xerox 9700, Imagen, Imprint-10,@* @end(text) @begin(text, above 0, below 1) ReGIS class:@\DEC VK100 (GIGI)@* @end(text) @end(text) @end(text) @end(group) @begin(group, below 1) As SCRIBE is a proprietary product and is supplied in executable form only, it is not possible to adapt the device driver source code for other devices. However, Unilogic will consider the provision of drivers for additional devices on request. This was done in the case of the Sanders S700 dot-matrix printer on the DECsystem-10 at ERCC. No charge was made for this (though it must be expected that this is the exception rather than the rule), and the mutually agreed delivery date for this software was met by Unilogic. @end(group) @begin(group) Note however that the SCRIBE databases are accessible to the user thus allowing maintenance and updating as new fonts, document types etc. are introduced and developed locally. @end(group) @subsection(NROFF/TROFF) NROFF and TROFF are text processors which run on UNIX systems. They are intended for different classes of output device - NROFF for typewriter like devices and TROFF for phototypesetters and devices such as the Versatec printer/plotter. Despite this the two programs are compatible with one another, and output for one will usually be successfully processed by the other. In addition, conditional input is possible, ensuring that the full capabilities of either program are exploited according to the device for which any input is being processed. The programs are largely directive driven in the same way as RUNOFF (say), and only limited document types are built in (Thesis and Paper formats only). The full functionality is most easily achieved by the use of various macro libraries which are supplied with the program. There are at least three of these libraries (-ms, -me and -mt). In addition to the supplied macro libraries users may set up their own macros using the macro definition directive common to both NROFF and TROFF. There are also several pre and post processors which may be used in conjunction with NROFF and TROFF. These are; NEQN and TEQN@cite(eqnone), @cite(eqntwo), equation preprocessors for use with NROFF and TROFF respectively; TBL@cite(tbl), a table preprocessor for use with both NROFF and TROFF; COL, a postprocessor for reformatting NROFF files for terminals without reverse line printing capabilities; TK, a post processor which reformats NROFF output for display on a Tektronix 4014 and TCAT which does the same for phototypesetter output from TROFF. NROFF and TROFF were developed at the Bell Laboratories by Joseph F Ossanna and are supplied free as an integral part of the software package provided by the suppliers of UNIX systems. The pre- and post- processors and the macro libraries described above are also supplied free with the UNIX system. The documentation comprises part of the documentation for the whole UNIX system and is thus effectively free. (The University of Edinburgh are licensed as distributors of UNIX systems supplied by A.T. & T. and the cost of a full system which includes NROFF and TROFF will vary between approximately #1,300 and #9,000 depending upon a number of factors such as the size of the system and whether or not it is to be used outwith the University of Edinburgh. The cost for the smallest VAX system is approximately #2,300. These prices will vary from day to day depending upon fluctuations in the exchange rate, the figures above assume an exchange rate of #1.00 = $1.75. Currently no support is provided by A,T. & T. for the UNIX systems provided. however, this may change with the release of UNIX System 5. For further details of the licensing arangements for the UNIX system within the University of Edinburgh, the reader is referred to@cite(erccnewsletter).) @begin(group) NROFF and TROFF will run on any machine for which a UNIX operating system is available, these include: @begin(group, above 2, below 2) @begin(verbatim, spacing 1, leftmargin 1 inch) VAX range PDP11 68000 type machines Z8000 type machines etc. @end(verbatim) @end(group) @end(group) Versions of NROFF and TROFF are also available to run on systems using the GCOS operating system. @begin(group, above 2, below 2) @begin(text) The output devices supported include: @begin(text, leftmargin 1 inch, flushleft, spacing 1, above 1) Bantam (NROFF) Anderson-Jacobson (NROFF) Teletype37 (NROFF) Terminet300 (NROFF) DASI300, 300S, 450 (NROFF) Versatec printer/plotter (TROFF) Graphics System phototypesetter (TROFF) @end(text) @end(text) @end(group) NROFF and TROFF are supplied in source form with the UNIX system, so the possibility of local modification of the software to extend the range of document types and output devices available is a possibility. @subsection(T@-(E)X) T@-(E)X is described by its author as 'A System for Technical Text', and provides the user with a powerful tool for the setting of mathematically oriented text. The philosophy underlying the design of T@-(E)X (and its associated font design system METAFONT) is fully described in@cite(knuthtex). It should perhaps be stressed at the outset that T@-(E)X does not seem to be suitable for use with typewriter like output devices. It is really a mathematical typesetting utility which requires that sophisticated output devices be available to fully exploit its potential. T@-(E)X does not include 'built in' document types in the same way as SCRIBE but the built in macro facility should enable a user to specify any frequently used format. The original version of T@-(E)X was developed by Donald E Knuth at the Artificial Intelligence Laboratory & Computer Science Departments of Stanford University. This version of T@-(E)X is described in@cite(stanfordtex). A second version of T@-(E)X, known as AMS-T@-(E)X, utilising the macro facility to provide a more friendly user interface while at the same time retaining the full functionality of T@-(E)X if required has been developed and distributed by the American Mathematical Society (AMS). This version of T@-(E)X is described fully in@cite(amstex) and it is this version which is discussed in this report. @begin(group, above 2, below 2) The program and manual are available from: @begin(text, leftmargin 1 inch) @begin(verbatim) American Mathematical Society, PO Box 1571, Annex Station, Providence, RI 02901, USA @end(verbatim) @end(text) @end(group) @begin(group) The charge for the system is $10.00 if the intending user provides a magnetic tape, $15.00 if a tape is to be supplied by the AMS. The manual@cite(amstex) costs $7.50. @end(group) @begin(group) Both versions of T@-(E)X described above are written in SAIL, so any extension of the machine range beyond that stated in@cite(stanfordtex) &@cite(amstex) (that is, DECsystem-10's and 20's) would require that the machine concerned was able to support SAIL. @end(group) However, an erratum notice@cite(errortex) to@cite(amstex) mentions a PASCAL version of T@-(E)X known as T@-(E)X82. If this is the version upon which AMS-T@-(E)X is now based (and it is not clear that it is), extension of the machine range beyond that stated would be a more practical proposition. In its early form, T@-(E)X was able to support only two devices; the XGP (only a few of which were manufactured - all apparently in the USA), and the Alphatype. The AMS version appears to support in addition, the Versatec, and the versions of T@-(E)X running at Stanford University and MIT use a Xerox-Dover printer. The PASCAL version is also capable of writing a device independant output file. The user must then provide software to process this file through the locally available devices to produce the final output. The University of Kent are at present implementing the PASCAL version of T@-(E)X on the PERQ. @newpage @section(DOCUMENTATION) @subsection(Introduction) Documentation is of paramount importance for the comparitively large, complex programs being studied here. It is important particulary for the non-expert that some form of simple introductory manual be available. Equally, for the expert user, comprehensive documentation should be available. Accordingly a fairly comprehensive set of documentation has been perused for all the programs discussed. The comments relating to the documentation are based upon the necessarily somewhat brief study possible during the course of this evaluation but it is hoped that a fair summary has been given. The documents consulted are listed with other references at the end of this report. @subsection(SCRIBE) The documentation provided with SCRIBE is more than adequate. It consists of a user guide@cite(scribeusers) which should enable users ranging from 'occasional' to 'everyday' to produce output according to their requirements. The style is light and the manual is on the whole easy to read although the nature of its content may mean that several readings of some passages are required before full understanding is achieved. In addition to the user guide, Unilogic also provide a formatters guide@cite(scribewizards). This document is intended for expert users, that is those who are using SCRIBE to such an extent that they require to modify existing document types heavily and even set up their own document types. This manual would probably be used only occasionally by most SCRIBE users, even fairly sophisticated ones. Two supplements@cite(scribewizards3b),@cite(scribewizards3c) have also been released by Unilogic. In addition to the two manuals discussed above, a reference 'card' is also available@cite(scribecard). This card, consisting in fact of a small pocket size booklet is intended as an aide-memoire for the experienced user and would seem to fulfil this purpose quite well. As has been stated elsewhere, error messages are fully described in the user manual@cite(scribeusers). @subsection(NROFF/TROFF) The documentation for NROFF/TROFF is somewhat more fragmented than either the SCRIBE or T@-(E)X documentation. The documentation available for this evaluation comprised several documents. These included, the NROFF/TROFF User's Manual@cite(nroffref) and a TROFF tutor@cite(trofftut); several documents describing the use of the -ms and -me macro libraries,@cite(nroffme), @cite(meref),@cite(nroffms) and@cite(msref); documents covering the use of EQN and TBL,@cite(eqnone),@cite(eqntwo),@cite(tbl) and a reference card for the whole UNIX system which included a section on NROFF/TROFF@cite(nroffcard). All in all, the standard of the documentation for NROFF and TROFF is not as satisfactory as that for either SCRIBE or T@-(E)X. Neither of the two documents@cite(nroffms) or@cite(msref) relating to the use of the -ms library are suitable introductions to the use of NROFF and TROFF, although@cite(nroffms) seems to come closest to realising this end. The documents describing the use of NROFF/TROFF with the -me library@cite(nroffme),@cite(meref) seem to be more suitable for this purpose. The main fault of the first two of these documents is that they both seem to rely heavily upon the user being already familiar with at least the philosophy if not the detail of the design of NROFF and TROFF. This knowledge would only be gained by the study of the main NROFF/TROFF manual @cite(nroffref) which is in its turn not easy to read. An additional criticism of@cite(nroffme),@cite(meref),@cite(nroffms) and @cite(msref) is their extreme terseness of style. Also, none of the documents appear to have an index - this is not a problem in a short document, but in the relatively large User's Guide this is a serious omission. Much information is also unecessarily duplicated because of the large number of documents over which the information is spread. Errors @label(nrofferror) are dealt with only cursorily in@cite(nroffref) and are not covered at all elsewhere. However the presence of a user controllable abort command opens up the possibility of the creation of sets of locally defined macros with their own built in error messages. This feature could usefully be employed as there seem to be few built in error messages other than those dealing with gross errors such as missing files etc. Errors in the use of NROFF/TROFF directives do not in general produce messages, and the recommended method of debugging, namely the study of faultily processed output would be tedious and in a few cases impossible as errors in the input occasionally cause the output to disappear. @subsection(T@-(E)X) T@-(E)X is fully described in references@cite(knuthtex),@cite(stanfordtex) and @cite(amstex). As@cite(amstex) is the user guide for the AMS version of T@-(E)X, it is this document which is largely discussed here although some reference has been made to @cite(knuthtex) and@cite(stanfordtex) for information on more complex functions. The user guide@cite(amstex) has the same light stylistic approach as the SCRIBE user guide. It is not as comprehensive a document as@cite(stanfordtex) but would serve for most purposes most of the time. More demanding users would probably be forced to turn to the more complete documentation@cite(knuthtex) and@cite(stanfordtex) to be able to fulfil their requirements. Even within the user guide however, the material is graded to a certain extent in that 'difficult' passages are flagged and the occasional or undemanding user may skip these passages without losing too much of the available functionality. Some people might find this 'optional' text intermingled intimately with the 'required' text somewhat annoying. Given these slight criticisms, the prospective user should with the aid of the user guide be in a position to set simple mathematical type and text within a few hours of starting to study the documentation althoughI feel that T@-(E)X is potentially the most difficult of the programs considered here to learn fully. Error messages produced by T@-(E)X are listed in their entirety in@cite(knuthtex) and@cite(stanfordtex) and their meaning is explained. Some attempt is also made to give advice in a general way on how to correct errors which may occur. @newpage @section(FUNCTIONALITY) @subsection(Introduction) The functionality of each of the programs was evaluated by following fairly closely the schema laid down in@cite(anne). The question of whether a given program was capable of performing a basic function was decided by studying the documentation and then by creating files which exercised these functions in a simple way. This method was found to be generally satisfactory as a basic knowledge of the program was acquired relatively quickly which then gave an insight into how the more complex functions could be achieved. The results of the evaluation are presented as: @begin(itemize, below 0) A qualitative discussion of some of the major features of the programs. @end(itemize) @begin(itemize, above 0) A tabular presentation of the functions available with each program @end(itemize) @subsection(SCRIBE) Once the initial basic functions had been learned, SCRIBE was found to be easily learned, in the sense that the knowledge of the basic functions gave a foundation on which to build. The exploitation of some of the more complex functions was in fact easy to achieve in a general sense, although the exact setting up of the correct spacings for line separation and tabbing, and generally formatting the output was a little difficult at first. (It was considered that this was due to the difficulty in discarding preconcieved notions as to how such a program should work which had been inherited from experience with RUNOFF, rather than to any inherent deficiency in SCRIBE.) Turning to specifics, SCRIBE satisfied all the requirements of the simple subset of functions specified in@cite(anne), and, as has been stated these functions were quickly and easily learnt (within two days). If this simple subset of functions were used, the general appearance of text entered, and formatted with a screen editor would not be changed to any great extent. Of course, some minimal entry of processing directives is required, these would consist usually of no more than instructions to SCRIBE to use a certain device or to format the text in a certain way. Any reasonable number of files may be input to SCRIBE. This is achieved by naming the files to be processed within a 'master input file' rather than by specifying the files one at a time at the terminal. Thus, the author of a book or paper may set up one file for each chapter or section, one file for references etc. SCRIBE performs particularly well in this respect in the sense that, as part of its housekeeping, SCRIBE writes several files to the user's area which contain amongst other things pagination information, citation tables etc. Thus if say, a chapter of a book were to be modified in such a way that a changed number of pages or number of figures resulted for that chapter, all necessary updating of page and figure numbers for that and for subsequent chapters is handled automatically by SCRIBE. Users do not have to concern themselves with matters of this sort. In the event of a non existant filename being input either at command level or as a file specified in a 'master' file, SCRIBE will prompt the user for an alternative file name and the choice is either to input the correct file name or to proceed without the file concerned. In this latter case SCRIBE will do the best it can with the information available to it, and will produce a processed file as output, albeit with some text missing or incorrectly formatted. Execution time errors are well reported with error messages being displayed on the terminal at the time the errors are encountered and stored for subsequent inspection in an error file created by SCRIBE. The messages are illustrated and their meanings explained in a section of the user guide@cite(scribeusers). If errors do occur, SCRIBE will behave in the same way as it does if non-existant files are specified, that is it will do the best it can with the information available to it. In the case of simple, ephemeral documents this may well be good enough for the intended purpose. @begin(group) The processed output from SCRIBE is directed to files and cannot be displayed on the terminal or sent straight to a printer at execution time. However, the format of the processed output may be specified according to the eventual device on which the output is to be produced, and the options available allow the output to be formatted as a simple text file suitable for display at a terminal or printing on a line printer. The other formats are specific to the other device types available to SCRIBE which are listed at @ref(scribedevicelist) above. @end(group) Note that the purely functional evaluation of SCRIBE was carried out on the SERC DECsystem-10 at ERCC. The performance measurements were carried out on the VAX 780 situated in the Department of Computer Science at Edinburgh University. The files concerned were ported from the DECsystem-10 to the VAX and no difficulties were experienced in processing these files through SCRIBE on the VAX. This may be considered a useful practical illustration of the portability of SCRIBE. It should be noted that in the course of the evaluation, a few program 'bugs' became apparent. None of these were serious and in fact some of them were not bugs but undocumented 'features' or arose from unjustified assumptions about what SCRIBE was capable of doing. Thus, for example, tabbing did not work as might be expected in filled environments. This sort of problem could usually be programmed around. An example of one which could not is the tendency of SCRIBE to produce an occasional spurious blank page (see page ii of this report). Bug reports are accepted and dealt with by Unilogic and as is stated elsewhere in this report the response is good. Functionality available with SCRIBE but not required by@cite(anne) includes the ability to process documents on a 'frame by frame' basis for slide preparation, and the ability to handle colour on suitable devices. @subsection(NROFF/TROFF) NROFF and TROFF were not as easily learned as SCRIBE as the user is expected to excercise a much greater degree of control over the fine detail of output formatting. This was not made easier by the heavy use of printing terminology in the documentation. As a rough guide it is estimated that the degree of fluency achieved with SCRIBE in a period of a couple of days would take about one week with NROFF and TROFF. For the same level of functionality to be realised, it is almost essential that one or other of the macro libraries be used in conjunction with the main program. In this report it is use of NROFF and TROFF in conjunction with the -me library which is considered and it is this combination which is reported in the tables below. Specifically, NROFF and TROFF are capable of providing all of the desired simple functions required by@cite(anne) and most of those which 'must be present'. If the simple subset of functions is used, the appearance of a document entered and to some extent formatted with a screen editor would not be greatly changed - in fact NROFF and TROFF seem to be better in this respect than SCRIBE. More of the complex functions would require setting up by the user than with SCRIBE, but use of the macro definition directive is fairly simple and this was not considered to be a major disadvantage as presumably demanding users would set their own standards for layout of text whether they were using SCRIBE or NROFF/TROFF. Other files may be called from within an NROFF or TROFF input file by the insertion of a suitable directive, and, no indication was found in the documentation that there was any limit to the number of times this could be done. Thus, chapters of books or sections of manuals etc could be processed one at a time or as a group as required by the user. While NROFF and TROFF are capable of paginating input files and producing page numbers on the output, it is important to realise that they do not have the sophisticated housekeeping facilities which are available with SCRIBE. This means that the @b(updating) of pagination, text and figure references etc has to be done manually by the user in the case where editing a chapter or section of a book results in changes in page numbering and text and figure references in the files which may comprise the remainder of the document. @begin(group) If a nonexistant file is referred to, either at monitor level, or from within a file being processed, processing either does not start in the former case or stops in the latter case. A suitable error message is displayed in both cases. @end(group) In general execution time errors although poorly documented@cite(nroffref) are simple English language messages which are easily understood. They are however rudimentary in their scope, that is only gross errors, such as attempting to use non-existant files seem to produce error messages. Messages pointing out errors in NROFF/TROFF formatting are rare and the user is expected to use the erroneous output from incorrectly formatted input files as a guide to debugging the input. Occasionally this is rendered impossible by errors which cause the disappearance of the processed output. This matter is briefly discussed at @ref(nrofferror) above. The UNIX operating system allows the user to direct output from NROFF to the terminal or to a file, however it is formatted. Presumably this would also be possible with TROFF output but this would probably not serve any useful purpose unless the output had been post-processed with TCAT, and a suitable output device was available. Some compound functions could not be properly excercised because of program bugs. For example, the underlining of 'outdented' headings used in pp 5-11 of @cite(anne) could not be carried out. @subsection(T@-(E)X) This section and the entries for T@-(E)X in the following tables are based wholly upon a study of the documentation for T@-(E)X as no implementation of the program is available to test in Edinburgh. By and large T@-(E)X seems to fulfil most of the requirements for a text processor as laid down in@cite(anne). It should perhaps be stressed that T@-(E)X is a system for the typesetting of mathematical text and this fact is made clear in the documentation. T@-(E)X is designed for the handling of equations and mathematical symbols and is not as versatile at setting true text as SCRIBE and possibly not as good as NROFF or TROFF. @subsection(Tabular Presentation of Functionality) This section presents in tabular form the functionality of NROFF/TROFF, SCRIBE and T@-(E)X. The layout closely corresponds to that in@cite(anne). Functions marked with a superior * may be considered as members of the subset of simple functions specified in@cite(anne). Those marked with a superior + are considered in@cite(anne) to be members of a subset of features which must be present. @begin(group) The entries in the body of the tables have the following significance: @begin(text, leftmargin 1 inch, spacing 1, indent -0.5 inch, above 2) @tabclear @tabset(-0.5 inch, 0 inch) @begin(text, above 0, below 0) Y@\Yes, the function exists or can be created by a simple combination of two or more functions. This function has been exercised. @end(text) @begin(text, above 0, below 0) y@\As for "Y" above, but has not been exercised. This is usually because suitable output devices were not available or because time did not allow. @end(text) @begin(text, above 0, below 0) n@\No, the function does not exist in its own right, but it could possibly be simulated by a simple combination of other functions. @end(text) @begin(text, above 0, below 0) N@\No, the function does not exist - sometimes stated explicitly in the documentation. It is unlikely that the function could be simulated by combinations of other functions. @end(text) @begin(text, above 0, below 1) ?@\It is not clear that the function exists in its own right, but it could possibly be simulated by non-trivial combinations of other functions. @end(text) @end(text) @end(group) In the case of NROFF and TROFF, two entries separated by a slash (/) are sometimes shown. In such cases, the entry to the left of the slash refers to NROFF and that to the right of the slash to TROFF. No attempt has been made to assign numeric scores according to the presence or absence of functions. This was felt to be too subjective an approach, and in any case, a given user may well be looking for a small but specialised range of functionality whose presence or absence would not be indicated by the presentation of a global score for a particular program. @newpage @begin(table, spacing 1.25) @caption(NROFF/TROFF, SCRIBE & T@-(E)X - Basic Functions) @tabclear @tabset(4 inch, 5 inch, 6 inch) FUNCTION@\@=SCRIBE@\@=N/TROFF@\@=T@-(E)X Underline a character within a word @+(+)@\@=Y@\@=Y@\@=y Underline a word @+(+)@\@=Y@\@=Y@\@=y Underline words but not spaces @+(+) @+(*)@\@=Y@\@=Y@\@=y Underline words & spaces @+(+)@\@=Y@\@=Y@\@=y Boldfacing @+(+) @+(*)@\@=Y@\@=Y@\@=y Superscripts @+(+) @+(*)@\@=Y@\@=Y@\@=y Subscripts @+(+) @+(*)@\@=Y@\@=Y@\@=y Super and subscripts combined@\@=Y@\@=Y@\@=y Fonts@\@=Y@\@=Y@\@=y Italics@\@=Y@\@=Y@\@=y Size@\@=Y@\@=N/Y@\@=y Ligatures @foot(Ligatures are considered to be combinations such as fi, ffi, ff, fl, ffl, '', ``. Combinations such as AE, oe are termed 'kerned pairs' in@cite(knuthtex) and are treated separately in T@-(E)X. )@\@=N@\@=Y@\@=y Greek@\@=Y@\@=N/Y@\@=y Maths symbols@\@=y@\@=n/Y@\@=y @foot( Remember, this is part of the major design goal of T@-(E)X. It is better at this than it is at anything else. It is also better at this than SCRIBE or NROFF/TROFF.) Overprint@\@=Y@\@=Y@\@=y Invent new characters@\@=y@\@=N/Y@\@=? @end(table) @newpage @begin(table, spacing 1.25) @caption(NROFF/TROFF, SCRIBE & T@-(E)X - Text Layout Facilities) FUNCTION@\@=SCRIBE@\@=N/TROFF@\@=T@-(E)X Set left margin @+(+) @+(*)@\@=Y@\@=Y@\@=y Set right margin @+(+) @+(*)@\@=Y@\@=Y@\@=y Set tabs @+(+)@\@=Y@\@=Y@\@=y Reformat@\@=Y@\@=Y@\@=? Left justify filled text @+(+) @+(*)@\@=Y@\@=Y@\@=y Right justify filled text @+(*)@\@=n@\@=n@\@=n Justify filled text @+(+) @+(*)@\@=Y @foot( Fixed space and proportional justification are performed automatically by SCRIBE according to whether a fixed or proportional font is selected )@\@=Y@\@=y Proportionally justify filled text@\@=Y@\@=n/Y@\@=y Indent paragraph @+(+)@\@=Y@\@=Y@\@=y Hanging indent@\@=Y@\@=Y@\@=n Right justify hanging indent@\@=Y@\@=n@\@=n Space paragraphs @+(+)@\@=Y@\@=Y@\@=y Centre heading @+(+)@\@=Y@\@=Y@\@=y Centre unfilled text @+(*)@\@=Y@\@=Y@\@=? Centre, left & right justification on one line@\@=n@\@=Y@\@=? Section numbering@\@=Y@\@=Y@\@=n Subsection numbering@\@=Y@\@=Y@\@=n Automatic Hyphenation @foot( SCRIBE and T@-(E)X use largely the same scheme for hyphenation and the algorithms concerned are described in@cite(knuthtex),@cite(stanfordtex) and@cite(scribewizards). SCRIBE and T@-(E)X include as part of their databases a dictionary of words which may be hyphenated with indications of where they may be hyphenated. Users may provide their own hyphenation dictionaries. The hyphenation facilities available with NROFF/TROFF are not so sophisticated. )@\@=Y@\@=Y@\@=y Prompted hyphenation @foot(Prompted that is by the indication of possible break points in the text, not live at the terminal.)@\@=Y@\@=y@\@=y @end(table) @newpage @begin(table, spacing 1.25) @caption(NROFF/TROFF, SCRIBE & T@-(E)X - Tabulation Functions) FUNCTION@\@=SCRIBE@\@=N/TROFF @foot( Used in conjunction with preprocessor TBL which seemed to be very flexible. TBL is fully documented in@cite(tbl). )@\@=T@-(E)X Equal columns @+(+) @+(*)@\@=Y@\@=Y@\@=y Arbitrary columns @+(+) @+(*)@\@=Y@\@=Y@\@=y Right justify data@\@=Y@\@=Y@\@=y Left justify data@\@=Y@\@=Y@\@=y Centre data@\@=Y@\@=Y@\@=y Align decimal points@\@=Y@\@=Y@\@=y Multi-column tables with text entries@\@=N@\@=Y@\@=? @end(table) @newpage @begin(table, spacing 1.25) @caption(NROFF/TROFF, SCRIBE & T@-(E)X - Page Layout Functions) FUNCTION@\@=SCRIBE@\@=N/TROFF@\@=T@-(E)X Page numbering @+(+) @+(*)@\@=Y@\@=Y@\@=y Start at specified page number @+(+)@\@=Y@\@=Y@\@=? Specify numbering style @+(+)@\@=Y@\@=Y@\@=y Specify number position @+(+)@\@=Y@\@=Y@\@=y Specify number increment@\@=n@\@=n@\@=? Turn numbering off@\@=Y@\@=Y@\@=y Specify page headers @+(+)@\@=Y@\@=Y@\@=y Specify page footers @+(+)@\@=Y@\@=Y@\@=y Specify headers/footers which vary across pages@\@=Y @foot(With odd/even page layout only.)@\@=Y@\@=y Separate layout for odd/even pages @+(+)@\@=Y@\@=Y@\@=y Set top and bottom page margins @+(+)@\@=Y@\@=y@\@=? Turn off pagination @foot@\@=Y@\@=Y@\@=? Prevent widows @foot( Widow and orphan prevention are regarded as one function in both SCRIBE and NROFF/TROFF. )@\@=Y@\@=Y@\@=y Prevent orphans@\@=Y@\@=Y@\@=? Footnote placement@\@=Y@\@=Y@\@=y Footnote numbering@\@=Y@\@=Y@\@=N Force a block of space on a page@\@=Y@\@=Y@\@=y Force a block of text on a page@\@=Y@\@=Y@\@=? Force a block of space and text on a page@\@=Y@\@=Y@\@=? Leave a block of space within surrounding text@\@=N@\@=N@\@=? Number figures@\@=Y@\@=N@\@=? Update referencing of figures in text@\@=Y@\@=N@\@=? @end(table) @newpage @begin(table, spacing 1.25) @caption(NROFF/TROFF, SCRIBE & T@-(E)X - Special Applications) FUNCTION@\@=SCRIBE@\@=N/TROFF@\@=T@-(E)X Index@\@=Y @foot(Built in for document type 'Manual' only)@\@=N@\@=N Contents@\@=Y@\@=y @foot( Described in the documentation as an unsorted index - thus corresponding more closely to a table of contents. )@\@=N Mathematical Formulae@\@=Y@\@=Y @foot( Using the EQN preprocessor. This is fully documented in@cite(eqnone) and@cite(eqntwo). )@\@=y @foot( Remember, this is the major design goal of T@-(E)X. It is better at this than it is at anything else. It is also better at this than SCRIBE or NROFF/TROFF.) Molecular Formulae@\@=N@\@=N@\@=N Music@\@=N@\@=N@\@=N Graphics@\@=y @foot( For ReGis type devices and for Xerox 9700 when using Image Research Corporation graphics software. )@\@=N@\@=N Dates@\@=Y@\@=Y@\@=? Date in a specified format@\@=Y@\@=Y@\@=? @end(table) @newpage @begin(table, spacing 1.25) @caption(NROFF/TROFF, SCRIBE & T@-(E)X - Printing) FUNCTION @foot( Several of these are functions of the output devices available and are thus given the value 'N'. If suitable output devices were available, most of these functions would be realisable. )@\@=SCRIBE@\@=N/TROFF@\@=T@-(E)X Print a document created with an editor @+(+) @foot( NROFF and TROFF appear to do this better than SCRIBE - that is with the minimum insertion of formatting commands )@\@=Y@\@=Y@\@=? Print on European A4 paper@\@=y@\@=y@foot( With single sheet feed devices for SCRIBE and NROFF/TROFF. )@\@=? Print on odd sized paper eg A5, 8.5"x11" @+(+)@\@=N@\@=N@\@=? Print envelopes@\@=N@\@=N@\@=? Print a specified number of copies@\@=N@\@=N@\@=? Print only specified pages @+(+)@\@=N@\@=Y@\@=? Print with a specified left offset @+(+)@\@=Y@\@=Y@\@=? Overprint the entire document@\@=N@\@=N@\@=N Have text printed in columns @foot(That is, print two pages side by side for subsequent reduction or binding. )@\@=N@\@=N@\@=? Handle tractor and single/dual sheet feeds@\@=N@\@=N@\@=N @end(table) @newpage @section(PERFORMANCE ANALYSIS) @subsection(Introduction) The first requirement for an excercise of the type being undertaken is that a 'standard document' be available for processing. In the absence of any other suitable document, the paper laying down the remit of this report@cite(anne) was chosen. This seemed to be a reasonable choice of test document on the grounds that it was a 'real' document, of reasonable length (approximately 2,100 words) which was capable of being used to demonstrate the capabilities of SCRIBE and NROFF/TROFF in a meaningful way. This was felt to be considerably more useful than the wholly artificial test documents consisting merely of a line of underlined text, a line of boldfaced text etc. which were used to test the functionality of the programs in detail. This paper is appended to this report in four forms, namely: @tabclear @tabset(3.5 inches) @begin(itemize, above 2, below 0, nofill, rightmargin 0) A SCRIBE input file@\(1st 2 pages for comparison) @end(itemize) @begin(itemize, above 0, below 0, nofill, rightmargin 0) A SCRIBE output file@\(complete for reference) @end(itemize) @begin(itemize, above 0, below 0, nofill, rightmargin 0) A NROFF/TROFF input file@\(1st 2 pages for comparison) @end(itemize) @begin(itemize, above 0, below 2, nofill, rightmargin 0) A NROFF/TROFF output file@\(1st 2 pages for comparison) @end(itemize) This is done in order that an assessment may be made of the extra information required by SCRIBE and NROFF/TROFF in order that the output files be formatted as required. Obviously in order that an exact and objective comparison be made between NROFF/TROFF and SCRIBE, the output from both programs should produce two exactly similar documents. In practice this was not possible, partly due to the presence of a minor bug in NROFF/TROFF but the differences are minimal as can be seen from a comparison of the appendices. @subsection(Performance Measurements) The following, details the performance of SCRIBE and TROFF as regards use of machine resources. A local version of TROFF known as VTROFF was used - this program produces output formatted for a Versatec printer/plotter. The SCRIBE runs on the VAX780 were producing output for a Sanders S700 dot-matrix printer. @begin(group) The figures presented for both SCRIBE and VTROFF are in all cases the mean of 8 test runs performed on the same document file (which is appended to this report). @end(group) The difficulties in making an objective comparison between runs of different programs running on different machine/hardware configurations with different operating systems and output devices are well summarised in@cite(dave) and such difficulties should be borne in mind when such figures are being considered. @begin(table, spacing 1.25, above 2) @caption[SCRIBE and NROFF/TROFF(VTROFF) - Performance Figures] @tabclear @tabset(3 inches, 4.5 inches) SYSTEM RESOURCE@\@=SCRIBE/VMS/VAX780@\@=VTROFF/UNIX/VAX750 User + System CPU (seconds)@\@=87.2@\@=57.8 + 7.2 Elapsed time (seconds)@\@=500 (max)@\@=108 @comment Program + data size (kwords)@\@=72@\@=35 + 47 Disc reads@\@=73@\@=184 + 195 Page faults@\@=2449@\@=111 @comment(Swaps out and in@\@=-@\@=1.25) @end(table) In some cases, the different accounting methods practised by UNIX and VMS have meant that the figures are not directly comparable. For example, in the case of CPU time, the total User and System figure given for VTROFF on the VAX750 should be compared with the single figure given for SCRIBE on the VAX780. If a VAX780 is regarded as having approximately twice the computing power of a VAX750 (The VAX750 model presently available is approximately 20% faster than the one used for the evaluation), it can easily be seen that SCRIBE is roughly three times more demanding on CPU time than NROFF/TROFF. Note however that SCRIBE runs processing the test file for a line printer gave dramatically lower times of 26 seconds for a line printer, and 35 seconds for a GIGI terminal. The long elapsed time for SCRIBE as compared with NROFF/TROFF is regarded as being partially due to the fact that the SCRIBE test runs were carried out while connected to the VAX780across two gateways (DECsystem-10/SERCnet/RCOnet/VAX780). The large number of page faults noted with SCRIBE might be expected as different segments of a large (larger than NROFF/TROFF) program are read in as required. @newpage @section(CONCLUSIONS) @subsection(General Conclusions) @begin(text) It is rather difficult to draw hard and fast conclusions from an evaluation of this sort in which different machine/operating-system/software/output device configurations are being compared. This being said, certain important guidelines may perhaps be stated. Any comments regarding costs which follow relate solely to the software related costs. The cost of purchasing machine(s) for a campus document preparation facility are another matter entirely and are outwith the remit of this report. The same comment applies if the preferred system were SCRIBE/VMS, and the costs of the VMS operating system are not considered here. If a campus wide documentation facility were to consist of common software running on several machines, and financing such a facility were not a major problem, then SCRIBE is a good choice on the grounds of its functionality and availability over a fairly wide range of machines. If a site license were considered necessary and Unilogic were willing to set off the monies already paid for the SCRIBE systems for the DECsystem-10 and Computer Science VAX systems against the purchase of such a license, this argument is rendered even more persuasive. If on the other hand, such a facility is envisaged as existing on one machine available via the network to all users within the University, the costs become quite small anyway ($2,000 for an extra copy of SCRIBE plus $1,000 if the machine/operating system is to be extended, plus maintenance costs, plus the cost of any device drivers over and above the standard range and maintenance for those drivers). If the preferred operating system for such a facility is UNIX, a version of SCRIBE is available. SCRIBE is also a fully supported product (for which a maintenance charge is made of course), and experience on the DECsystem-10 has shown that Unilogic respond quickly and well to support queries, despite the large distances over which they have to operate. SCRIBE is also a developing product in the sense that its functionality is expanding and improving, and as new sophisticated output devices become available, Unilogic are willing to consider extension of the range of devices for which they will provide drivers. It is not to be expected that this will be a free service of course, and no information is available to indicate what charges would be made for a service of this sort. Notwithstanding these favourable comments, SCRIBE is a large, complex system and some local support commitment would be almost essential for any serious campus wide document preparation facility. This support would largely be concerned with maintenance of the large SCRIBE databases and handling user queries. A reasonable 'guesstimate' of the committment would be half a person, full time. This estimate is based on experience to date on the DECsystem-10 where there is a small but active group of SCRIBE users. One disadvantage of SCRIBE is its larger consumption of CPU time than NROFF/TROFF, as evidenced by the processing of the test document used for this report. A logical consequence of this fact is that for large documents (eg books), processing 'live' at the terminal becomes impractical and use of the batch processor becomes necessary. It is perhaps arguable whether this is a disadvantage or not, but in any case, it is probably true that for such large documents, NROFF/TROFF would also need to be used in batch mode. This large consumption of CPU time seems to be associated with the fact that the driver code for the device used in the test is stored with the driver code for all similar devices. All of this code is accessed whenever any one of these devices is used. This argument would seem to be supported by the fact that when a device whose driver code is 'stand alone' is selected, the use of CPU time drops dramatically. @begin(group) Turning to NROFF/TROFF, the question of whether several machines or only one are to be used is not relevant as NROFF/TROFF are effectively free. The costs of purchasing several UNIX systems may be relevant however if this were the solution selected. This comment would of course also apply if SCRIBE/VMS were adopted, the costs of purchasing the VMS operating system(s) would have to be considered as well as the cost of purchasing as many SCRIBE systems as required. @end(group) Edinburgh University is a licensed distributor of UNIX systems supplied by A.T. & T. but see@cite[erccnewsletter] for further details. The functionality of NROFF/TROFF meets most of the stated requirements albeit with not quite the same degree of flexibility as SCRIBE, so on these grounds NROFF/TROFF could be an acceptable choice for such a facility. A disadvantage of NROFF/TROFF would seem to be that the programs are basically 'frozen' in the sense that any developments and enhancements would have to be carried out locally. As there are very few of the built in document types and text environments which are supplied as standard with SCRIBE, either in NROFF/TROFF or in any of the supplied macro packages, some such enhancement would be almost a necessary consequence of adopting NROFF/TROFF. Indeed, this absence is presented in the documentation as a feature, and the user is encouraged to use the macro facilities for this purpose (this is also the case for SCRIBE - where the user is building on a much more versatile base). The programs are at present unsupported by A.T. & T., and therefore, any bug fixing would also have to be carried out locally. If a useable and useful documentation preparation facility is to be provided, and NROFF/TROFF were the chosen software, consideration should be given to the provision of local support. As implied above, this support could involve development work to extend the functionality the programs, and probably to set up a repertoire of common document types. If this were not done, individual users could be forced to format their own documents from scratch - possibly with much wasted time due to duplication of effort in producing largely similar document layouts independantly of one another. Perhaps more importantly program bugs@label(error) would also have to be fixed. It is difficult to estimate what sort of a commitment of time and effort this would involve but it seems likely that it could be considerably greater than that involved in providing an support for SCRIBE. The probable extra cost in staff time and hence salary could effectively wipe out the cost advantage of NROFF/TROFF over SCRIBE. For the above reasons I would recommend that the University choose SCRIBE on which to base its mainframe document preparation facility, despite the costs which although large in terms of the cost of NROFF/TROFF are quite small in absolute terms. @end(text) @subsection(A Personal View) It is arguable that personal feelings are out of place in a report such as this, but I feel very strongly that after using both SCRIBE and NROFF/TROFF in the course of this evaluation, both during simple testing of functionality and in the preparation of a 'real' document, the only real choice of software for a useable and useful document preparation facility must logically be SCRIBE. I base this opinion on the fact that SCRIBE is easy to learn, the documentation is good and complete and most importantly I felt that SCRIBE was 'on my side' and working with me while I was using it. On the other hand NROFF/TROFF were difficult to learn and use, largely due to the documentation, which compared to that provided with SCRIBE was rather poor. The information in a given document was also often duplicated elsewhere - personally I do not consider that too much poor documentation is an acceptable substitute for just enough good documentation. Returning to the matter of using NROFF/TROFF, I never felt that the program was working for me, some of the functions had to be dragged 'kicking and screaming' from the depths of the system. Given the choice therefore between using SCRIBE and NROFF/TROFF I would unhesitatingly choose SCRIBE every time. More importantly, given the choice between using NROFF/TROFF and using nothing (that is formatting a document with no more than a screen editor), I would almost always choose to use nothing, except perhaps in the case of very large documents or very frequently used formats.