Info Node: (texinfo)History

texinfo: History
Overview
Short Sample
Back to Software Index
1.14 History
============
Richard M. Stallman invented the Texinfo format, wrote the initial
processors, and created Edition 1.0 of this manual. Robert J. Chassell
greatly revised and extended the manual, starting with Edition 1.1.
Brian Fox was responsible for the standalone Texinfo distribution until
version 3.8, and originally wrote the standalone 'makeinfo' and 'info'
programs. Karl Berry has continued maintenance since Texinfo 3.8
(manual edition 2.22).
Our thanks go out to all who helped improve this work, particularly
the indefatigable Eli Zaretskii and Andreas Schwab, who have provided
patches beyond counting. Franc,ois Pinard and David D. Zuhn, tirelessly
recorded and reported mistakes and obscurities. Zack Weinberg did the
impossible by implementing the macro syntax in 'texinfo.tex'. Thanks to
Melissa Weisshaus for her frequent reviews of nearly similar editions.
Dozens of others have contributed patches and suggestions, they are
gratefully acknowledged in the 'ChangeLog' file. Our mistakes are our
own.
Beginnings
----------
In the 1970's at CMU, Brian Reid developed a program and format named
Scribe to mark up documents for printing. It used the '@' character to
introduce commands, as Texinfo does. Much more consequentially, it
strove to describe document contents rather than formatting, an idea
wholeheartedly adopted by Texinfo.
Meanwhile, people at MIT developed another, not too dissimilar format
called Bolio. This then was converted to using TeX as its typesetting
language: BoTeX. The earliest BoTeX version seems to have been 0.02 on
October 31, 1984.
BoTeX could only be used as a markup language for documents to be
printed, not for online documents. Richard Stallman (RMS) worked on
both Bolio and BoTeX. He also developed a nifty on-line help format
called Info, and then combined BoTeX and Info to create Texinfo, a mark
up language for text that is intended to be read both online and as
printed hard copy.
Moving forward, the original translator to create Info was written
(primarily by RMS and Bob Chassell) in Emacs Lisp, namely the
'texinfo-format-buffer' and other functions. In the early 1990s, Brian
Fox reimplemented the conversion program in C, now called 'makeinfo'.
Reimplementing in Perl
----------------------
In 2012, the C 'makeinfo' was itself replaced by a Perl implementation
generically called 'texi2any'. This version supports the same level of
output customization as 'texi2html', an independent program originally
written by Lionel Cons, later with substantial work by many others. The
many additional features needed to make 'texi2html' a replacement for
'makeinfo' were implemented by Patrice Dumas. The first never-released
version of 'texi2any' was based on the 'texi2html' code. That
implementation, however, was abandoned in favor of the current program,
which parses the Texinfo input into a tree for processing. It still
supports nearly all the features of 'texi2html'.
The new Perl program is much slower than the old C program. We hope
the speed gap will close in the future, but it may not ever be entirely
comparable. So why did we switch? In short, we intend and hope that
the present program will be much easier than the previous C
implementation of 'makeinfo' to extend to different output styles,
back-end output formats, and all other customizations. In more detail:
* HTML customization. Many GNU and other free software packages had
been happily using the HTML customization features in 'texi2html'
for years. Thus, in effect two independent implementations of the
Texinfo language had developed, and keeping them in sync was not
simple. Adding the HTML customization possible in 'texi2html' to a
C program would have been an enormous effort.
* Unicode, and multilingual support generally, especially of east
Asian languages. Although of course it's perfectly plausible to
write such support in C, in the particular case of 'makeinfo', it
would have been tantamount to rewriting the entire program. In
Perl, much of that comes essentially for free.
* Additional back-ends. The 'makeinfo' code had become convoluted to
the point where adding a new back-end was quite complex, requiring
complex interactions with existing back-ends. In contrast, our
Perl implementation provides a clean tree-based representation for
all back-ends to work from. People have requested numerous
different back-ends (LaTeX, the latest (X)HTML, ...), and they will
now be much more feasible to implement. Which leads to the last
item:
* Making contributions easier. In general, due to the cleaner
structure, the Perl program should be considerably easier than the
C for anyone to read and contribute to, with the resulting obvious
benefits.
Note: Reference Implementation, for more on the rationale for and
role of 'texi2any'.
automatically generated by info2www version 1.2