% language=uk

\usemodule[abbreviations-smallcaps]
\usemodule[present-luatex]

\logo [LUAMETATEX] {LuaMeta\TeX}

\setupbodyfont[12pt]

\setupalign[verytolerant]

\setupdocument
  [title={The follow up},
   subtitle={\LUAMETATEX},
   location={Bacho\TeX\ May 2019},
   author={Hans & Alan},
   mp:title={\LUAMETATEX}]

\startdocument

\page \setupdocument[mp:subtitle={From lead to gold}]

\startitemize
    \startitem
        This talk is {\bf not} about how we can use \LUATEX\ to control domotica
        applications. We already discussed that.
    \stopitem
    \startitem
        This talk is {\bf not} about how we can use \CONTEXT\ in advanced
        rendering, for instance as part of web|-|based workflows. That's old
        news.
    \stopitem
    \startitem
        This talk is {\bf not} about how much fun it would be to have a
        \MICROSOFT\ HoloLens and see what \CONTEXT\ and \LUATEX\ could do with
        it. We just can't afford it.
    \stopitem
    \startitem
        This talk is {\bf not} about more complexity, but it is about keeping
        things simple. It's about turning a burden into a pleasure.
    \stopitem
    \startitem
        To quote the Riverside \footnote {A Polish progrock band I recently saw
        live in the Netherlands. A band related to Lunatic Soul.} frontman: I
        hope you all leave here a bit younger than you felt when you came here.
        This talk is about turning lead into gold.
    \stopitem
\stopitemize

\page \setupdocument[mp:subtitle={Where do we stand}]

\startitemize
    \startitem
        We have the weight and experience of about 40 years of \TEX\ and its
        usage on our shoulders.
    \stopitem
    \startitem
        Good old \TEX\ got extended: \ETEX, \OMEGA\ (\ALEPH), \PDFTEX, \XETEX,
        [e][u][p]\TEX\ and \LUATEX\ (& \LUAJITTEX) showed up.
    \stopitem
    \startitem
        The \DVI\ output got complemented by \PDF.
    \stopitem
    \startitem
        Bitmap fonts were replaced by \TYPEONE\ that itself got replaced by the
        container formats \OPENTYPE\ and \TRUETYPE. Variable fonts were
        introduced.
    \stopitem
    \startitem
        Math got upgraded to \OPENTYPE\ math, thanks to \MICROSOFT.
    \stopitem
    \startitem
        \UNICODE\ got accepted and \UTF\ is nowadays the preferred input
        encoding.
    \stopitem
    \startitem
        The community supported the development of many fonts that found their
        place in distributions.
    \stopitem
    \startitem
        Alongside plain \TEX\ the macro packages \LATEX\ and \CONTEXT\ both
        evolved into large collections of resources.
    \stopitem
\stopitemize

\page \setupdocument[mp:subtitle={Are we good?}]

\startitemize
    \startitem
        There is no doubt that \TEX\ is a success. We can find nice examples but
        also some   horrible looking documents.
    \stopitem
    \startitem
        A large distribution is no guarantee for quality and continuous success,
        nor is the number of incidental (forced) users.
    \stopitem
    \startitem
        A \CONTEXT\ user doesn't need that much: just the \LUATEX\ binary will
        do, plus a bunch of \MKIV\ macros, completed by a reasonable set of
        fonts.
    \stopitem
    \startitem
        Currently all that is embedded in a large ecosystem, although we always
        use only a small, reasonable subset.
    \stopitem
    \startitem
        Getting the whole machinery up and running from scratch (source code) is
        not trivial.
    \stopitem
    \startitem
        The source code base is rather large and compilation is complex: it builds on
        decades of being nice for all platforms and fulfilling all demands.
    \stopitem
    \startitem
        What we consider gold could also be seen as lead in disguise. Some
        alchemy might be needed to go back to where we came from.
    \stopitem
\stopitemize

\page \setupdocument[mp:subtitle={The Status Quo}]

\startitemize
    \startitem
        At some point you need to stabilize and for \LUATEX, version 1.10 is that
        moment.
    \stopitem
    \startitem
        But some ideas and experiments have been delayed because the engine was
        already in use, also outside of \CONTEXT.
    \stopitem
    \startitem
        Compatibility is a {\bf big} issue in the \TEX\ community (which is good)
        so we're in a sort of a deadlock (which is bad).
    \stopitem
    \startitem
        And we wanted to take a next step in \CONTEXT\ development. It's not
        strictly necessary to make drastic changes, but we need to adapt.
    \stopitem
    \startitem
        The question is how we can guarantee users a long|-|term stability of
        the both macro package as well as the engine it runs on.
    \stopitem
\stopitemize

\page \setupdocument[mp:subtitle={What Is Needed}]

\startitemize
    \startitem
        For \CONTEXT\ we want just one binary. We don't really need \LUAJITTEX\
        for \LUAJIT\ is not following \LUA\ anyway.
    \stopitem
    \startitem
        We don't want (for windows) a special stub binary. After all we already
        have the \type {context} job manager and \type {mtxrun} script manager.
        All platforms should be treated alike.
    \stopitem
    \startitem
        Performance should be stable and not influenced by code added to the
        binary. In fact, performance should constantly improve!
    \stopitem
    \startitem
        The engine should not depend on libraries that are floating, get updated
        frequently, and can come from places out of our control (versions).
    \stopitem
    \startitem
        The memory footprint should be acceptable for running in containers (or
        small virtual machines). Energy consumption matters too.
    \stopitem
    \startitem
        The binary should be kept small because it also serves as the \LUA\
        interpreter.
    \stopitem
\stopitemize

\page \setupdocument[mp:subtitle={How It Went}]

\startitemize
    \startitem
        Around the \CONTEXT\ meeting I took \LUATEX\ 1.09.0 experimental as
        starting point and began stripping.
    \stopitem
    \startitem
        Before that, I already had written some test code to see what could be
        replaced.
    \stopitem
    \startitem
        Stepwise redundant components were removed. This took time because each
        (small) step was tested on real documents, the test suite, etc.
    \stopitem
    \blank[2*big]
    \startitem
        \unknown\ maybe some examples & \type {/install-lmtx/*} \unknown
    \stopitem
    \blank[2*big]
    \startitem
        I played with some ideas that were put on hold, some were accepted and
        some were rejected and more and more got in the mood.
    \stopitem
    \startitem
        Also \LUAJIT\ was dropped, but its removal was compensated by large
        performance boosts in other areas.
    \stopitem
    \startitem
        The build was simplified (it took some time to find what was irrelevant)
        and compilation now is about half a minute, or less!
    \stopitem
\stopitemize

% we found out the hard way in the past (generalizing, other use, backfire)

\page \setupdocument[mp:subtitle={Where are we}]

\startitemize
    \startitem
        We have an experimental new installer for \CONTEXT\ \LMTX\ (the new
        name). It uses \HTTP: and just the engine for fetching data. Updating
        goes fast.
    \stopitem
    \startitem
        The \LMTX\ distribution is \MKIV\ only and much smaller than the full
        installation.
    \stopitem
    \startitem
        Eventually (soon) the source code of the used engine will be in the
        distribution so that we have a self contained package. Users on
        new or unique systems can compile.
    \stopitem
    \startitem
        The development of the engine is under control of the \CONTEXT\
        developers: that way there is no danger that things break. We like to
        have a playground.
    \stopitem
    \startitem
        Extensions can make it into \LUATEX\ once found useful and stable as
        long as they don't break \LUATEX\ upward compatibility (unlikely on the
        short term).
    \stopitem
\stopitemize

\page \setupdocument[mp:subtitle={Some highlights}]

\startitemize
    \startitem
        There is no backend code. We generate the \PDF\ output in \LUA\ (this was
        already the case for much of it.)
    \stopitem
    \startitem
        There is no bitmap image inclusion code present. All is done in \LUA.
    \stopitem
    \startitem
        There is no font loading code present. This already happened mostly in
        \LUA\ anyway.
    \stopitem
    \startitem
        Some libraries have been removed and some have been simplified. A few
        experimental helper libraries were added (like math). The dependencies
        are minimal.
    \stopitem
    \startitem
        The code is undergoing some restructuring but it might take some years
        before I've reached the (informal) goals.
    \stopitem
    \startitem
        Alan and I are exploring new possibilities that this setup gives
        (especially in combining \TEX, \METAPOST\ and \LUA. Stay tuned.
    \stopitem
\stopitemize

\page \setupdocument[mp:subtitle={The agenda}]

\startitemize
    \startitem
        As of April 1, 2019, users can test the experimental distribution. A few
        were already in the loop.
    \stopitem
    \startitem
        It looks like there are no big issues, and speed gains can be impressive.
    \stopitem
    \startitem
        As a consequence we can start dropping in replacement code in regular \MKIV\
        some day soon too.
    \stopitem
    \startitem
        Around the next \CONTEXT\ meeting the source code will become part of the
        regular distribution (given that I'm satisfied with it).
    \stopitem
    \startitem
        Before that we hope to have the compile farm up and running for \LUAMETATEX.
    \stopitem
    \startitem
        From that moment on, the \CONTEXT\ users will have a self contained, archival,
        independent, lean and mean installation available, which will become the
        default.
    \stopitem
    \startitem
        Because \LUAMETATEX\ is a subset of \LUATEX, there are no plans right now
        for supporting plain \TEX. We'll see. (I might come up with generic
        backend code some day.)
    \stopitem
\stopitemize

\stopdocument
