KeenType: Pure Java typesetting system
For some history&#x2F;context on what this is based on:<p>• During 1977–78, Knuth wrote the first version of TeX (now called TeX78) in SAIL and gave a talk[1] about it. Everyone was excited, and lots of people at other universities&#x2F;labs starting writing their own ports of TeX.<p>• During 1980–82, Knuth set out to rewrite a “portable” TeX using Pascal, the most widely available language at that time (actually he wrote his own macros&#x2F;wrapper on top of Pascal; the resulting language is called WEB). This (TeX82 aka TeX) is the program still in use today if you invoke &quot;tex&quot;. (Continues to be updated once every few years, but basically stable.)<p>• During 1998–2000, there was a Java rewrite of TeX called the New Typesetting System (NTS)[2], which had an alpha release and then was basically abandoned: it had all the problems of TeX and was several times slower, so it was regarded by many as a failure. Meanwhile extensions of TeX like pdfTeX came into existence, which are the programs most people use today.<p>• The code still exists though, and I imagine people must have tried it on and off. But since I can&#x27;t find any earlier record, I&#x27;ll provisionally take credit for the idea of resurrecting&#x2F;resurfacing it, when I tried it in 2017: [3]<p>• Recently (in the last few months), Dave Jarvis (user `thangalin` here) has forked&#x2F;modernized this Java implementation and is trying it out. (I noticed when he left his comment on my TeX.SE question; I guess his post <a href="https:&#x2F;&#x2F;tex.stackexchange.com&#x2F;a&#x2F;672614" rel="nofollow">https:&#x2F;&#x2F;tex.stackexchange.com&#x2F;a&#x2F;672614</a> on another question is what led to it being posted here.) I&#x27;m excited about this; looking forward to see how it gets used.<p>(Apologies if this long comment potentially takes attention away from the current state and future possibilities, but felt like the history is useful context…)<p>————<p>I&#x27;ll also add some history about the license, as I see another thread about it. When Knuth wrote TeX, it was to solve a specific problem he had encountered in publishing: the second edition of TAOCP Vol 2 was turning out worse in appearance than the first, because the publisher was moving from hot-metal typesetting (with Monotype machines) to phototypesetting, and could not achieve exactly the same appearance. While being bothered by this, Knuth discovered that digital typesetting machines were starting to come into existence: now it was just 0s and 1s, and as a programmer he felt he could handle it. That was his motivation for creating TeX and METAFONT: the appearance of each page would remain reproducible forever into the future.<p>Except: when he publicized TeX and various clones sprung up, the situation was heading towards merely re-introducing the problem: if different computer systems had different programs all called “tex” that made even subtly different choices about line-breaking or whatever, then someone could write a paper&#x2F;book on one computer, fine-tune the typesetting, then send the .tex file to their colleague &#x2F; editor &#x2F; publisher who used another computer, and no longer be confident that they would get the same result. This was one of the reasons he used the rewrite to create a portable TeX, going to great pains to use only a common subset of Pascal (Pascal had widely diverging compiler and language features), wrote a very demanding conformance test suite called the TRIP test[4] and insisted that any program would need to pass this test to be called &quot;tex&quot; — that way, everyone using &quot;tex&quot; could be sure they were writing something that would always produce the same result everywhere. If you wanted to make different choices in the program you could, as long as you changed the name.<p>When he announced in 1990[5] that TeX would be stable (no more features), this is what he wrote:<p>&gt; <i>My work on developing TeX, METAFONT, and Computer Modern has come to an end. I will make no further changes except to correct extremely serious bugs. I have put these systems into the public domain so that people everywhere can use the ideas freely if they wish. I have also spent thousands of hours trying to ensure that the systems produce essentially identical results on all computers. […]</i><p>&gt; <i>[…] anybody can make use of my programs in whatever way they wish, as long as they do not use the names TeX, METAFONT, or Computer Modern. In particular, any person or group who wants to produce a program superior to mine is free to do so. However, nobody is allowed to call a system TeX or METAFONT unless that system conforms 100% to my own programs […]</i><p>&gt; <i>I welcome continued research that will lead to alternative systems that can typeset documents better than TeX is able to do. But the authors of such systems must think of another name. That is all I ask, after devoting a substantial portion of my life to the creation of these systems and making them available to everybody in the world. I sincerely hope that the members of TUG will help me to enforce these wishes…</i><p>etc. And NTS derives a similar licence, and this project (being forked from NTS) simply carries over the license.<p>Of course such a license is unusual today, and thousands of pages&#x27; worth of ink have been spilled over whether or not this counts as “free software” (predating GPL &#x2F; MIT license etc), and (finally) grudgingly accepted to be. You can read about the history of the LaTeX project&#x27;s similar license (LPPL) and all the debates on Debian&#x2F;FSF mailing lists etc if you&#x27;re morbidly interested[6]; the discussion usually proceeds on similar lines and I hope it doesn&#x27;t get repeated here. :-)<p>[1]: Gibbs lecture, “Mathematical Typography”: <a href="https:&#x2F;&#x2F;doi.org&#x2F;10.1090&#x2F;S0273-0979-1979-14598-1" rel="nofollow">https:&#x2F;&#x2F;doi.org&#x2F;10.1090&#x2F;S0273-0979-1979-14598-1</a><p>[2]: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;w&#x2F;index.php?title=New_Typesetting_System&amp;oldid=1088610456" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;w&#x2F;index.php?title=New_Typesetting_S...</a><p>[3]: <a href="https:&#x2F;&#x2F;tex.stackexchange.com&#x2F;questions&#x2F;385645&#x2F;is-nts-new-typesetting-system-the-java-implementation-of-tex-usable-today" rel="nofollow">https:&#x2F;&#x2F;tex.stackexchange.com&#x2F;questions&#x2F;385645&#x2F;is-nts-new-ty...</a><p>[4]: <a href="http:&#x2F;&#x2F;mirrors.ctan.org&#x2F;info&#x2F;knuth-pdf&#x2F;tex&#x2F;tripman.pdf" rel="nofollow">http:&#x2F;&#x2F;mirrors.ctan.org&#x2F;info&#x2F;knuth-pdf&#x2F;tex&#x2F;tripman.pdf</a><p>[5]: <a href="https:&#x2F;&#x2F;www.tug.org&#x2F;TUGboat&#x2F;tb11-4&#x2F;tb30knut.pdf" rel="nofollow">https:&#x2F;&#x2F;www.tug.org&#x2F;TUGboat&#x2F;tb11-4&#x2F;tb30knut.pdf</a><p>[6]: <a href="https:&#x2F;&#x2F;www.tug.org&#x2F;TUGboat&#x2F;tb32-1&#x2F;tb100mitt.pdf" rel="nofollow">https:&#x2F;&#x2F;www.tug.org&#x2F;TUGboat&#x2F;tb32-1&#x2F;tb100mitt.pdf</a>