followingup-introduction.tex /size: 5782 b    last modification: 2021-10-28 13:50
1% language=us runpath=texruns:manuals/followingup
2
3\startcomponent followingup-introduction
4
5\environment followingup-style
6
7\startchapter[title={Introduction}]
8
9This document, the fifth in a series, describes the follow up project on
10\CONTEXT\ \MKIV\ & \LUATEX\ which carries the working title \CONTEXT\ \LMTX. This
11four letter acronym represents \LUA, \METAPOST\ and \TEX, and if you want you can
12see the last character representing \XML, as that has been an integral part of
13\CONTEXT\ for a long time. But the \quote {x} can also be found in \quote
14{experimental}, \quote {extreme}, \quote {experience} and \quote {extravagant},
15so take your choice.
16
17Of course \CONTEXT\ is and will be a typesetting system using the \TEX\ language
18and typesetting core, but a rather substantial amount of the functionality is a
19hybrid of \TEX\ macros and \LUA\ code. The built|-|in graphic support is driven
20by \METAPOST, but there we also use \LUA\ as an extension language. The \LUA\
21machinery is used for alternative input and handling data too. The same is true
22for \XML, \SQL, \CSV, \JSON, etc.
23
24The output from \CONTEXT\ is normally \PDF\ and \MKIV\ doesn't even enable \DVI\
25output. Mid 2018 I started experimenting with a backend that no longer used the
26one provided by the engine. After all, we only used page stream building, font
27embedding and bitmap inclusion and all other features were always done in \LUA.
28The experiments also concerned a \METAPOST\ and \LUA\ backend. Those familiar
29with \CONTEXT\ know that there is already an export feature which till now runs
30in parallel with the \CONTEXT\ \PDF\ backend (it started as a kind of joke but in
31the end was seen as relevant and kept and maybe so some point I will rewrite that
32code).
33
34The idea behind \CONTEXT\ \LMTX\ is that we will use a minimalist engine. Being
35minimalist also means that probably only \CONTEXT\ will use it and therefore no
36other package will be affected by further experiments, although at some point a
37sort of general low level layer might be provided. The frontend is mostly the
38same as \LUATEX\ 1.1 but the backend and related code is gone and|/|or different.
39Libraries have (and are) being cleaned up and reorganized too. At least for a
40while, \CONTEXT\ will work on \LUATEX\ 1.1 (stable) as well as its (experimental)
41follow up, where the follow up will evolve over a few years and be tested in the
42usual \CONTEXT\ (garden) beta setting. The next chapters will explain this in
43more detail.
44
45Just to be clear I repeat: \LUATEX\ 1.1 will be supported by \CONTEXT\ and
46maintained as usual, including binaries generated on the \CONTEXT\ garden. We've
47invested many years in it and it serves its purpose well, but our experiments
48will happen in its follow up, so that it doesn't affect stable workflows. Of
49course there have been (and probably are) bugs in \LUATEX\ but the engine could
50be used pretty well right from the start with \CONTEXT. The same will be true for
51the follow up.
52
53One of the ideas of the follow up is to provide a combination of a stable engine
54independent of libraries with a relative simple compilation setup and a macro
55package that has proven to exploit a mix of \TEX, \METAPOST\ and \LUA. As a side
56effect I can explore some postponed ideas. Of course there can be valid reasons
57to move to the successor sooner. In that case we might create a stable snapshot
58of \MKIV\ as was done with \MKII. As to be expected in \CONTEXT, the user
59interfaces won't change nor will the functionality, but there will be two code
60paths, one for \MKIV\ and one for \LMTX. There will also be new functionality in
61\CONTEXT\ that is only available in \LMTX. So, eventually we expect all users to
62migrate.
63
64In the beginning of december 2018 most of the work was done and users involved in
65development could start testing. By the end of the year a reasonable stable state
66was reached. In 2019 the code base was further overhauled and libraries got
67upgraded. The code base became smaller and compilation easier, smoother and much
68faster. Eventually the source code (now some 11MB uncompressed and 3MB
69compressed) will be part of the \CONTEXT\ distribution, so that we have a
70complete package (also in the archival sense).
71
72The next chapters discuss the process and choices that were made. The chapters
73were written in order so later chapters can amend earlier ones. Consider it a
74history, and one cannot cheat by patching history. In some cases footnotes were
75added to earlier chapters when writing later ones. It's not a manual! Reported
76typos (for sure there are many) will be fixed but changes in later versions of
77the follow discussed here will not end up in this document.
78
79This document is dedicated to Wolfgang Schuster, who has been instrumental in the
80transition from \MKII\ to \MKIV, and often baffles me with his knowledge of the
81(even obscure bits) of the \CONTEXT\ internals. Without him checking the code
82base, fundamental changes like those that are and might get introduced in this
83follow up are impossible.
84
85I want to thank Alan Braslau who accompanies me on this journey and patiently
86compiles the lot for some platforms. He, Thomas Schmitz and Aditya Mahajan are
87examples of power users who also are early adopters of something new like this
88and are willing to take the risks. And of course there is Mojca Miklavec without
89whose enthusiasm and optimism developments like this would never take place. In
90the meantime Luigi Scarso made sure that the (frozen) \LUATEX\ code base served
91existing users. It is hard to tell how users experience the transition: there are
92no that many issues reported which can be a good or bad sign. We will see.
93
94\blank[2*big]
95
96\startlines
97Hans Hagen
98PRAGMA ADE, Hasselt NL
99August 2018\enspace\endash\enspace May 2019
100\stoplines
101
102\stopchapter
103
104\stopcomponent
105