% language=us runpath=texruns:manuals/musings \environment musings-style \startcomponent musings-stability \startchapter[title={Stability}] \startsubject[title=Introduction] How stable is \CONTEXT ? This question is hard to answer. For instance \MKII\ hasn't changed for years and seems to work quite well: no changes equals stability. Those who use it can do with what it offers. The potentially sensitive dependencies on for instance fonts are probably absent because there is not much development in the 8 bit fonts arena. As long as these are available we're okay, in fact, \OPENTYPE\ fonts are more a moving target and therefore less stable. What do we mean by stable? The fundamental differences between an 8 bit engine (and fonts) and an \UNICODE\ aware engine able to handle \OPENTYPE\ fonts is substantial which is why we dropped some functionality and added some relevant new. One can consider that a problem but in practice using fonts has become easier so no one is hurt by it. Here we need to keep in mind that \PDFTEX\ is really stable: it uses fonts and technology that doesn't change. On the other hand \XETEX\ and \LUATEX\ follow new trends. Thereby \XETEX\ uses libraries, which introduces a dependency and instability, while \LUATEX\ assumes solutions in \LUA\ which means that users and macro writers can tweak and thereby also introduce instability (but at least one can adapt that code). Due to the way the user interface is set up, it is unlikely that \CONTEXT\ will change. But the fact that we now have \LUA\ available means that many commands have been touched. Most behave compatible, some have more functionality, and of course we have a \LUA\ interface. We include a lot of support code which also lessens dependencies. The user input is normally \TEX\ but when you use \XML\ the move to \MKIV\ meant that we dropped the \MKII\ way of dealing with it in favour of a completely new mechanism. I get the impression that those using \XML\ don't regret that change. Talking of stability the \MKIV\ \XML\ interface is typically a mechanism that is stable and might change little. We can add new trickery but the old stays as it is. If we look at the output, there is \DVI\ and \PDF. In \MKII\ the \DVI\ could become \POSTSCRIPT. As there are different \DVI\ post|-|processors the backend code was using a plug|-|in model. Contrary to other macro packages there was only one so called format that could adapt itself to the required (engine specific) output. A \CONTEXT\ run has always been managed by a wrapper so users were not bothered much by what \TEX\ engine they used and|/|or what backend was triggered. This changed with \MKIV\ where we use just \LUATEX, always produce \PDF\ and optionally can export \XML. But again the run is managed by a wrapper, which incidentally is written in \LUA\ and thereby avoids dependencies on for instance \PERL, \RUBY\ or \PYTHON, which are moving targets, use libraries and additional user code, and thereby are potentially instable too. The \PDF\ code that is produced is a mix of what the engine spits out and what the macro package injects. The code is normally rather simple. This means that it's no big deal to support the so called standards. It also means that we can support advanced interactivity and other features but these also depends on the viewers used. So, stability here is more fluent, for instance because the \PDF\ standard evolves and|/|or we need to adapt to viewers. Special demands like tagged \PDF\ have been supported right from the start but how that evolves depends mostly on input from users who need it. Again, that is less important (and crucial) for stability than the rendering capabilities. The fact that we use \LUA\ creates a dependency on that language but the reason that we use it is {\em because} it is so stable. We follow the updates and so far that worked out well. Now, say that we had a frozen version of \CONTEXT\ 2010 and \LUATEX\ 1.09 that uses \LUA\ 5.3, would that work? First of all, in 2010 \LUATEX\ itself was evolving so the answer is probably \quotation {no}, unless one adds a few compatibility patches. I'm not going to try it. The change from 5.1 to 5.2 to 5.3 was not really a problem I think and the few issues could be dealt with easily. If you want long term stability and use a lot of \LUA\ code you can take it into account when coding. Avoiding external libraries is a good start. Fonts are more than before moving targets. So, if you want stability there you should save them with your document source. The processing of them has evolved and has been improved over time. By now it's rather stable. More recent code can catch more issues and fixes are relatively easy. But it's an area that you always need to check when you update an old distribution. The same is true for language related hyphenation patterns and script specific support. The community is no longer leading in the math department either (\OPENTYPE\ math is a \MICROSOFT\ invention). But, the good news is that the \TEX\ ecosystem is always fast to adapt and can also often provide more functionality. Vertical spacing, in fact spacing in general is an aera that can always be improved, so there is where you can expect changed. The same is true for side floats or mechanisms where content is somehow attached to other moving content, for instance marginal notes. But code dealing with fonts, color, scripts, structure, and specific features that once written don't need more, will not change that much. As mentioned for fonts, like any resource, we also depend on third parties. Colors can relate to standards, but their main properties are unchanged. Support for specific scripts can (and will) be improved due to user input and demands so there the users also influence stability. Structure doesn't really influence the overall rendering, but the way you set it up does, but that's user styling. Of course during the transition from \MKII\ to \MKIV\ and the evolution of \LUATEX\ things could be broken, but fixing something structural seldom relates to rendering. If for instance we improve the interpretation of \BIBTEX\ input , which can be real messy, that involves data processing, nor rendering. When we improve support for the \APA\ standard, which is complex, it might involve rendering but then that's asked for and expected. One cannot do better than the input permits. \stopsubject \startsubject[title=Publishers] When discussing stability and especially stability as requirement we need to look at the way \CONTEXT\ is used. So let's look at a few scenarios. Say that a publisher gets a camera ready book from an author in \PDF\ format. In that case the author can do all tweaks needed. Now say that the publisher also wants the source code in a format that makes reuse possible. But let's face reality. Will that publisher really reformat the document in \PDF\ again? It's very unlikely. First of all the original \PDF\ can be kept, and second, a reformat only makes sense after updating the content or going for a completely different layout. It's basically a new book then. In that case literal similarity of output is irrelevant. It is a cheap demand without much substance. When the source is used for a different purpose the tool used to make the \PDF\ is irrelevant. In that case the coding of the source can matter. If it is in some dialect of \TEX, fine, one has to convert it anyway (to suit the other usage). If there is an \XML\ export available, fine too as it can be transformed, given that the structure is rich enough, something that is unlikely to have been checked when the original was archived. Then there could have been the demand for a document in some other format and who can guarantee stability of the tools used there? Just look at how \MICROSOFT\ Word evolved, or for that matter, its competitors. On the average \TEX\ is more stable as one can snapshot a \TEX\ tree and run binaries for years, if needed, in a virtual machine. So, I don't think that a publisher is of any relevance in the discussion about stability. Even if we can clearly define what a publisher is, I doubt if publishers themselves can be considered long term stable organizations. Not today. I'm not sure if (especially the large) publishers really deserve a place in the discussion about stability but I'm willing to discuss that when I run into one. The main problem that an author can face when being confronted with the stability issue this way is that the times are long gone that publishers have a clue about what \TEX\ is, how it evolved and how it always had to and did adapt to changing requirements. If you're lucky you will run into someone who does know all this. They're normally a bit older and have seen the organization from any angles and therefore are fun to work with. But even then, rendering issues are often not high on their agenda. Outsourcing often has become the modus operandi which basically brings us to the second group involved in this discussion: suppliers. \stopsubject \startsubject[title=Suppliers] I don't know many suppliers other than the ones we ran into over a few decades. At least where I live the departments that are responsible for outsourcing typesetting like to deal with only a few large suppliers, interestingly because they assume that they are stable. However, in my experience hardly any of those seem to have survived. (Of course one can wonder if long term commitment really is that important in a world where companies change so fast.) This is somewhat obscured by the fact that publishers themselves merge, reorganize, move people around, etc. so who can check on the stability of suppliers. It is definitely a fact that at least recently hardly any of them played a rol of any relevance in the development of stable tools. In the past the membership of \TEX\ user groups contained people working at publishers and suppliers but that has changed. Let's focus on the suppliers that somehow use \TEX\ and let's consider two kind of suppliers: small ones, one were only a few people work, and large ones. The small ones depend on stable \TEX\ distributions, like \TEX Live where they can get the resources from: styles, fonts, patterns, binaries. If they get the authors \TEX\ files they need to have that access. They have to rework that input into what the customer demands and that likely involves tweaks. So, maybe they have developed their own additional code. For that code, stability is their own responsibility. Did they tweak core code of a macro package? Fine, but you might have it coming when you update. You cannot expect the evolving free meal world to stick to your commercial needs. A supplier can play safe and somehow involve the developers of macro packages or consult them occasionally, but does that really happen often? Interesting is that a few times that I was asked for input it was also wrapped in obscurity, as if some holy grail of styling was involved, while it's quite likely that the developer of a macro package can write such a style (or extra code) easily and probably also better. There really is not that much unique code around. Small suppliers can be on mailing lists where they can contribute, get feedback, provide testing, etc. They are part of a process and as such have some influence on stability. If they charge by the page, then a change in their tools can be reflected in what they charge. Basically redoing a book (or so) after a decade is doing a new job. And adapting to some new options in a package, as part of a typesetting job is probably no big deal. Is commercial really more stable than open source free software? Probably not, except from open source software developers whose real objective is to eventually sell their stuff to some company (and cash) and even accept it to be ditched. Small suppliers are more flexible. The large suppliers are a different group. They often guard their secrets and stay in the dark. They probably seldom share (fundamental) code and information. If they are present in a community it can be for marketing reasons. If at some point a large supplier would demand stability, then my first response would be: sure I can make you a stable setup and maybe even provide intermediate patches but put your money where your mouth is. But that never happened and I've come to the conclusion that we can safely ignore that group. The \TEX\ user groups create distributions and have for instance funded font development and it are the common users who paid for that, not the scale ones. To some extent this is actually good because large (software related) organizations often have special agendas that can contradict what we aim at in the long term. From the authors perspective there is a dilemma here. When you submit to a publisher who outsources, it can be a demand to deliver in a specific \TEX\ format. Often a \PDF\ comes with the source then, so that the intended rendering is known. Then that source goes to a supplier who then (quite likely) redoes a lot of the coding in some stable subset, maybe even in a very old version of the macro package. If I were such an author I'd render the document in \quote {as stupid as possible mode} because you gain nothing by spending time on the looks. So, stability within the package that you use is easy and translation from one to another probably also. It's best to check beforehand what will happen with your source and let stability, if mentioned, be their problem. After all they get paid for it. Suppliers seldom know \CONTEXT. An interesting question is if they really know the alternatives well, apart from the bit they use. A well structured \CONTEXT\ source (or probably any source) is often easy to convert to another format. You can assume that a supplier has tools for that (although we're often surprised about the poor quality of tools used). Often the strict demand for some kind of format is an excuse for lack of knowledge. Unfortunately you need a large author base to change that attitude. \stopsubject \startsubject[title=Authors] Before we move to some variants of the above, first I will look at stability from the authors perspective. When a book is being written the typesetting more or less happens as part of the process. The way it looks can influence the way you write and vise versa. Once the book is done it can go in print and, unless you were using beta versions of \CONTEXT\ and updated frequently. Normally you will try to work in a stable setup. Of course when a user asks for additional features while working on a project, he or she should also accept other beta features and side effects. After a few years an author might decide to update the book. The worst that can happen is that the code doesn't run with the latest \CONTEXT. This is not so likely because commands are upward compatible. However, the text might come out a bit different, for instance because different fonts or patterns are used. But on the average paragraphs will come out the same in \TEX. You can encounter differences in the vertical spacing and page breaks, because that is where improvements are still possible. If you use conceptually and implementation wise complex mechanism like side floats, you can also run into compatibility issues. But all these don't really matter much because the text will be updated anyway and fine|-|tuning of page breaks (if at all) happens at the end. The more you try to compete with desk top publishing, and the more tweaks you apply, the greater is the risk that you introduce instability. It is okay for a one|-|time job, but when you come back to it after a decade, be prepared for surprises. Even if you stick to the original coding, it makes sense to sacrifice some of that stability if new mechanisms have become available. For instance, if you use \METAPOST, better ways to solve your problem might have become available. Or if you document is 15 years old, a move from \MKII\ to \MKIV\ is a valid option, in which case you might also consider using the latest fonts. Of course, when you made a style where you patched core code, you can expect problems, because anything not explicitly mentioned in the interface definition files is subjected to change. But you probably see that coming anyway. So, is an author (or stand alone user) really dependent on stability? Probably less than thought. In fact, the operating system, internet and browsers, additional tools: all change over time and one adapts. It's something one can live with. Just see how people adapt to phones, tablets, social media, electric cars, etc. As long as the document processes and reasonable output is generated it's fine. And that is always what we aim at! After all we need to be able to use it ourselves, don't we? \stopsubject \startsubject[title=Projects] Although it is often overlooked as valid alternative in rendering in large scale projects, \CONTEXT\ is perfect as component in a larger whole. Something goes in, something comes out. In a long term project one can just install a minimal distribution, write styles, and run it for ages. Use a virtual machine and we're talking decades without any change. And, when one updates, it's easy to check if all still works. Often the demands and styles are simple and predictable. It's way more likely that a hard coded solution in some large programming environment has stability issues than that the \CONTEXT\ bit has. If \CONTEXT\ is used in for instance documentation of (say) software, again there is no real issue. Such documents are simple, evolve and therefore have no stable page flow, and updating \CONTEXT\ is not needed if the once decided upon coding is stable. You don't need the latest features. We've written styles and setups for such tasks and indeed they run for ages. It can make me smile to see how much effort sometimes goes in low quality rendering where \CONTEXT\ could do a way better job with far less investment in time and money but where using some presumed stable toolkit is used instead, one that comes with expensive licensing, from companies that come and go but shine in marketing. (A valid question is to what extent the quality of and care for documentation reflects the core products that a company produces, at least under the hood.) The biggest hurdle in setting up a decent efficient workflow is that it has to be seen as a project: proper analysis, proper planning, prototyping and testing, etc. You invest first and gain later. When dealing with paper many publishers still think in price per page and have problems seeing that a stable mostly automated flow in the end can result in a ridiculous low price per page, especially in typesetting on demand. \stopsubsubject \startsubject[title=Hybrids] Last I will mention a setup that we sometimes are involved in. An author writes books and uses \TEX. The publisher is okay with that and adds some quality assurance but in the end the product comes from the author. Maybe images are oursourced (not always for the better) but these can be handled easily. It can be that a copy|-|editor is involved and that person also then has to use \TEX\ of course, or feedback to the author. Publishers, and this really depends on knowledgeable persons, which as said can be fun to work with, can look beyond paper and also decide for additional materials, for instance web pages, interactive exercises, etc. In that case either \CONTEXT\ input has to be available as \XML\ (an export) or (often better) \XML\ is the starting point for multiple output. Contrary to what is believed, there are authors out there who have no problem coding in \XML\ directly. They think in structured content and reuse! The fact that they can hit a button in the editor and see the result in \PDF\ helps a lot. It just works. Here stability is either achieved by simply not updating during a project. There are however cases where an update is needed, for instance because demands changed. An example is a project where \ASCIIMATH\ is used which is a moving target. Of course one can update just that module, and often that works, but not when a module uses some new improved core helpers. Another example is additional proofing options. The budget of such projects seldom permit patching an existing distribution, so we then just update to the latest but not after checking if the used style works okay. There is no author involvement in this. Depending on the workflow, it can even be that the final rendering which involves fine tuning (side) float placement or page breaks (often educational documents have special demands) is done by us using special directives. Such hybrid workflows are quite convenient for all parties. The publisher works with the author who likes using these tools, the author can do her or his thing in the preferred way, and we do what we're best in: supporting this. And it scales up pretty well too if needed, without much costs for the publishers. \stopsubject \startsubject[title=Conclusion] So what can we conclude with respect to the demand for stability? First of course that it's important that our files keep running well. So, functionality should be stable. Freezing a distribution will make sure that during project you don't run into issues. Many \CONTEXT\ users update frequently in order to benefit from the latest additions. Most will not be harmed by this, but when something really breaks it's users like those on the \CONTEXT\ support list (who often also contribute in helping out other users) that are listened to first. Publishers demands play no role in this, if only because they also play no role in typesetting, and if they want to they should also contribute. The same is true for large suppliers. We're talking of free software often written without any compensation so these parties have no say in the matter unless they pay for it. It's small suppliers, authors and general users that matter most. If \CONTEXT\ is part of a workflow that we support, of course stability is guaranteed quite well, and those paying for that never have an issue with better solutions popping up. In fact, \CONTEXT\ is often just a tool then, one that does the job and questions about stability don't matter much in practice, as long as it does the job well. The main engine we use, \LUATEX, will be quite stable from version 1.10 and we'll try to make sure that newer versions are capable of running an older \CONTEXT, which is easier when no fundamental changes happen in the engine. Maybe a stripped down version of \LUATEX\ for \CONTEXT\ can facilitate that objective even more. Users themselves can try to stick to standard \CONTEXT\ features. The more tricks you apply, the less stable your future might be. Most mechanism are not evolving but some, like those that deal with columns, might become better over time. But typesetting in columns is often a one|-|shot adventure anyway (and who needs columns in the future). Of one thing users can be sure. There will never be a \CONTEXT\ professional or \CONTEXT\ enterprise. There is only one variant. All users get the same functionality and policies don't change suddenly. There will be no lock in to some cloud or web based service either. Of course one can hire us for support of any kind but that's independent of the distributed package. There is support by users for users on mailing lists and other media. That itself can also guard stability. But, always keep in mind that stability and progress, either of not driven by the environment that we operate in, can be in conflict. \stopsubject \stopchapter \stopcomponent