onandon-decade.tex /size: 5694 b    last modification: 2023-12-21 09:43
1% language=us
2
3\startcomponent onandon-decade
4
5\environment onandon-environment
6
7\startchapter[title=The first decade]
8
9When writing this it's hard to believe that we're already a decade working on
10\LUATEX\ and about the same time on \MKIV. The question is, did we achieve the
11objectives? The answer can easily be \quotation {yes} because we didn't start
12with objectives, just with some experiments with a \LUA\ extension interface.
13However, it quickly became clear that this was the way to go. Already in an early
14stage we took a stand in what direction we had to move.
15
16How did we end up with \LUA\ and not one of the other popular scripting
17languages? The \CONTEXT\ macro package always came with a runner. Not only did
18the runner manage the (often) multiple runs, it also took care of sorting the
19index and other inter|-|job activities. Additional helpers were written for
20installing fonts, managing (and converting) images, job control, etc. First they
21were binaries (written in \MODULA\ 2), but successive implementations used \PERL\
22and \RUBY. When I found out that the \SCITE\ editor I switched to had an
23extension mechanism using \LUA, I immediately liked that language. It's clean,
24not bloated, relatively stable, evolves in an academic environment and is not
25driven by commerce and|/|or short term success, and above all, the syntax makes
26the code look good. So, it was the most natural candidate for extending \TEX.
27
28Already for along time, \TEX\ is a stable program and whatever we do with it, we
29should not break it. There has been frontend extensions, like \ETEX, and backend
30extensions, like \PDFTEX, and experiments like \OMEGA\ and \ALEPH\ and we could
31start from there. So, basically we took \PDFTEX, after all, that was what we used
32for the first experiments, and merged some \ALEPH\ directional code in it. A
33tremendous effort was undertaken (thanks to funding by the Oriental \TEX\
34project) to convert the code base from \PASCAL\ to~\CCODE.
35
36It is hard to get an agreement over what needs to be added and it's a real waste
37of time to enter that route by endless discussions: every \TEX\ user has
38different demands and macro packages differ in philosophy . So, in the spirit of
39the extension language \LUA\ we stuck to concept of \quotation {If you want it
40better, write it in \LUA}. As a consequence we had to provide access to the
41internals with efficient and convenient methods, something that happened
42stepwise. We did extend the engine with a few features that make live easier but
43tried to limit ourselves. On the other hand, due to developments with fonts and
44languages we generalized these concepts so that extending and controlling them is
45easier. And, due to developments in math font technology we also added
46alternative code paths to the math renderer.
47
48All these matters have been presented and discussed at meetings, in user group
49journals and in documents that are part of the \CONTEXT\ suite. And during this
50decade the \CONTEXT\ users have been patient testers of whatever we threw at them
51in the \MKIV\ version of this macro package.
52
53It's kind of interesting to note that in the \TEX\ community it takes a while
54before version 1 of programs becomes available. Some programs never (seem to)
55reach that state. However, for us version 1.0 marks the moment that we consider
56the interfaces to be stable. Of course we move on so a version 2.0 can divert and
57provide more or even less interfaces, provide new functionality or drop obsolete
58features. The intermediate versions (up to version one) were always quite useable
59in production. In 2005 the first prototype of \LUATEX\ was demonstrated at the
60\TUG\ conference, and in 2007 at the \TUG\ conference we had a whole day on
61\LUATEX. At that time \CONTEXT\ \MKIV\ evolved fast and we already had decent
62\OPENTYPE\ support as part of the oriental \TEX\ project. It was in those years
63that the major reorganization of the code base took place but in successive years
64many subsystems were opened and cleaned up. There were some occasions where an
65interface was changed for the better but adapting was not that hard. It might
66have helped that much of \CONTEXT\ \MKIV\ is written in \LUA. What also helped is
67that most \CONTEXT\ users quickly switched to \MKIV, if only because \MKII\ was
68frozen. And, thanks to those users, we were able to root out bugs and
69bottlenecks. It was interesting to see that the approach of mixing \TEX,
70\METAPOST\ and \LUA\ catched on quite well.
71
72By the end of September 2016, at the 10\high{th} \CONTEXT\ meeting we released
73what we call the first long term stable version of \LUATEX. This version performs
74quite well but we might still add a few things here and there and the code will be
75further cleaned up and documented. In the meantime \LUATEX\ is also used in other
76macro packages. It will not replace \PDFTEX\ (at least not soon) because that
77engine does the job for most of the publications done in \TEX: articles. As they
78are mostly in English and use traditional fonts, there is no need to switch to
79the more flexible but somewhat slower \LUATEX. In a similar fashion \XETEX\
80serves those who want the benefits of \PDFTEX, hard|-|coded font support and
81token juggling at the \TEX\ level. We will support those engines with \MKII\ but
82as mentioned, we will not develop new code for. We strongly advice \CONTEXT\ users
83to use \LUATEX\ but there the advertisements stop. Personally I haven't used
84\PDFTEX\ (which made \TEX\ survive in the evolving world of electronic documents)
85for a decade and I never really used \XETEX\ (which opened up the \TEX\ world to
86modern fonts). At least for the coming decade I hope that \LUATEX\ can serve us well.
87
88\stopchapter
89
90\stopcomponent
91