• An interview with David Fuchs: TeX pioneer and designer of the DVI file format

    Posted by Chris on December 20, 2017

    In addition to publishing technical articles and tutorials, here at Overleaf and ShareLaTeX we like to share some of the interesting work and innovative research people in our community are involved with, including interviews with leading members of the TeX community and those who played a pivotal role in TeX’s creation and development.

    TeX has a rich history and it’s our pleasure to publish this interview with David Fuchs—a name that will be a familiar name to anyone who is aware of the origins of TeX. David worked with Donald Knuth for almost 8 years to develop the first versions of TeX and MetaFont.

    David got in touch with us earlier this year and I wanted to share some of our conversation with you. David took me through a brief look at how TeX came to be and we talked about what might be coming next in TeX development.

    Could you tell me a little about your background and how you first became involved with TeX?

    I was a first-year grad student in Stanford’s Computer Science Department. At the time, there was an early version of TeX, written in Sail for 36-bit computers, and the only output device it supported was an early, experimental XGP laser printer (which was about 200dpi in the center of the page, but 180dpi toward the edges).

    Prof. Knuth had posted an announcement that the TeX project was looking for another helper, and I thought it would be cool to work for him, and on a project that was so broadly useful. My first big task was to work on an interface to our new Alphatype CRS typesetter, nominally 5333dpi, that would be used to produce the new edition of The Art of Computer Programming, Volume 2 (which was the whole reason TeX got started in the first place).

    If I may toot my own horn a bit: At the time, the XGP-language output was generated by code that was directly built into TeX. Prof. Knuth wanted me to write a new Sail module that would be linked into a separate compilation of TeX to produce CRS output.

    I suggested that this was the wrong way to go; that we’d be better off with having only a single TeX that produced device-independent output, so that as more and more devices came to be supported, nobody had to monkey with TeX itself. Thus was DVI born.

    How clear a sense of what you were trying to achieve did you have in those early days?

    Well, Prof. Knuth always says that at the start, TeX was intended only for him and his secretary Phyllis Winkler (who typed all his papers on a special electric typewriter that came with all the extra mathematical symbols on separate little paddles that she had to manually insert, one-by-one, as needed).

    But even very early on, there were lots of requests from others, and Prof. Knuth decided to create a new, portable, stable version. We didn't really think in terms of competition, but if you’d had asked us then, I think we’d generally have said that TeX should out-shine the troff/neqn/tbl combination.

    But nobody would have thought that TeX would ultimately have over a million users, just as we didn’t really expect everyone to be carrying around a computer in their pocket that was a thousand times faster than our mainframe was.

    What was the day-to-day development like?

    The development environment was, in retrospect, rather unusual. Because Prof. Knuth had decided to make TeX (and Metafont) a showcase for Literate Programming, he wrote all of the ultimate core source code himself. In fact, I remember the day he came in with a stack of yellow legal paper on which he had written TeX in its entirety, and proceeded to key it in over a few days, and then start debugging.

    Of course, the line-breaking algorithm had been created by Michael Plass, and the hyphenation algorithm by Frank Liang (and John Hobby's work affected Metafont greatly) but their code wasn’t incorporated directly, I believe. And on the occasions where I had tracked down a user-reported bug in TeX et. al., and forwarded my diagnosis and suggested fix to Prof. Knuth, he always chose a different approach.

    So, all the code I (or Tom Rokicki, Oren Patashnik, Howard Trickey, etc.) wrote is actually in the ancillary pieces, and pretty much un-reviewed by Knuth. Since many end-users don’t realize, let me point out that the gargantuan effort of Leslie Lamport in creating LaTeX was strictly a matter of writing macros in the TeX language, to be used with a standard TeX installation (though there were some features put into TeX at his behest, I believe.)

    So, while we were surprised at the overwhelming popularity of LaTeX (we expected there to be many more stand-alone macro sets, rather than one central one with many plugins), it’s exactly the sort of thing that TeX was intended for.

    What were the biggest constraints/limitations you faced and how did they shape your work?

    The biggest constraint was the nature of the computers of the day. The PDP-10 had a process address space of about 1 megabyte, and ran a few million instructions per second. The entire design of the language was centered around what could be implemented on such a machine, and be able to run in a finite amount of time.

    Consider the interactive command line for handling syntax errors, where the user has the option to, say, add a missing right bracket or some other token in the middle of a running TeX job. Back when running The TeXbook took many minutes, it was worth it to be able to nurse along a run to find subsequent problems, rather than bail out at the first error.

    Now that it takes a fraction of a second to compose the whole thing, this feature seems silly. But at a deeper level, the answer to questions like “Why do macros work like they do? Why isn’t the language different? Why can’t the page-breaking be more globally-optimal, like the line-breaking?” is usually “Because TeX is right on the edge of not having enough address space to fit the program, plus macros, plus one full page of content.”

    The other limitation was just how much time and effort Prof. Knuth put into it; all in all, it spanned a decade of work for him. He also wanted to stop when the core was stable and could be relied upon for complete compatibility into the future; and indeed, documents from 30 years ago still compose exactly the same.

    What were some of your highlights of the first 8 years of TeX and MetaFont development?

    For me, personally, the highlights include:

    • Sitting with Prof. Knuth in the basement room that housed the Alphatype typesetter, working on getting the interface between his rewritten microcode for it (naturally) and my driver software. (And coming in one morning just in time to witness him dropping off a hand-written paper for Phyllis to type, which I still can’t figure out when he could possibly have written, as we were working 12-hour days together.)
    • Coming up with a cool hack for collecting basic-block execution counts over all runs of TeX over all users for weeks at a time on Sail’s DEC KL-10 mainframe, which involved modifying the Pascal compiler as well as cute tricks with the operating system. And then helping the guys who wrote the OS work around a bug that this uncovered in the CPU. (Knuth used the execution count data to decide where extra optimization efforts were appropriate; and also to check that the TRIP test covered virtually all the lines of source code in TeX.) [Oddly, when I subsequently went to work at Frame Technology, I found a very similar hardware bug in the Sun 3/50 workstation; my work-around saved the company.]
    • Being the point man for the TeX Project, and getting all the random phone calls for a number of years. Eventually, I realized that there were only 4 or 5 questions that people would ask, so I got to the point where I could interrupt a caller mid-question and give them the correct answer, and even predict the next question they were going to ask, and answer it, too. They thought I was brilliant, which was fun.
    • The dedication of Computers and Typesetting, Volume B (which, alas, doesn’t appear in the TeX.WEB source file). Plus my three index entries there (the last of which is an inside joke). And Appendix J of The TeXbook—I had suggested adding a reference to TUG at the last minute, and Prof. Knuth said he’d do it as long as I could come up with a name for the appendix that began with the letter J.
    • Being able to leverage my software skill to increase the productivity of countless mathematicians and scientists world-wide.

    What do you see as the future for TeX?

    It’s pretty amazing that TeX is still the clear choice for mathematical texts after three decades, and that TeX documents written way back then not only work fine with current TeX, but even compose identically. The portability and stability of TeX’s core, as hoped, means there's no end in sight to TeX’s general availability on popular platforms.

    That said, the ongoing revolution in devices and form-factors, not to mention rapidly changing internet technologies, presents a real challenge to remaining relevant, I think.

    Consider the great HTML vs. PDF divide: TeX is very page-of-paper oriented, which is a match for the latter; but perhaps there will be such need for the reformat-for-my-screen capability of the former that users will gravitate to other tools that provide that sort of capability, while trading away other advantages of TeX.

    What are you working on now?

    I’ve been thinking about these issues, and have been working independently on evolving TeX’s core to add the ability to dynamically re-compose documents in real-time.

    It’s very liberating (and fun!) to be able to reconsider many implementation details in light of the bigger, faster machines we have today. Results thus far are quite encouraging, but I'm still in the proof-of-concept stage, so no promises.

    On the personal side, my wife, Cynthia Dwork, has recently become a professor of Computer Science at Harvard, and we’ve been splitting our time between Silicon Valley and Boston.

    Our thanks to David

    I’d like to thank David for his time in talking to me and sharing some of his insights into the early years of TeX.

    We’re keen to highlight other interesting work from anyone using our platforms over the coming months. Please get in touch if you have a story to share. If you're interested in reading more about the history of TeX, you might like to check out this introduction and guide to the many flavours of TeX.