[Tex/LaTex] Why are ConTeXt and LaTeX two different typesetting systems instead of joining forces


I've spent quite a bit of time over the last few days getting up to speed with current developments in the TeX world. Like all of us here I sometimes get frustrated with the clunky and outdated nature of LaTeX 2e, so I'll save my complaining for another time, but here are my observations:

  • Tagging, accessibility and the separation of form from content are key areas of development. It looks like there is general consensus that future versions of LaTeX should follow a paradigm similar to HTML/CSS.
  • The ConTeXt project has already implemented this. The ConTeXt project is largely lead by Hans Hagen. The LuaTeX project is closely linked to ConTeXt. ConTeXt is closely linked to Pragma ADE, a commercial company in the Netherlands
  • There are current efforts to modernize LaTeX via the L3 programming interface. A big part of this new plumbing is geared towards enabling an HTML/CSS-like paradigm.

The glaring question which I can't really avoid is the following:

Why on earth are ConTeXt and LaTeX two different things if everyone is trying to go in similar directions?

I can think of a few explanations:

  • Pragma ADE is a commercial company, so being as "open" as LaTeX would hurt their ability to earn a living. If so, I would disagree with this attitude, but not all share my point of view of course.
  • The ConTeXt developers decided they didn't care about backwards compatibility or breaking packages, viewing this as a necessary step for progress and a hamper to LaTeX's development. So they went off and did their own thing. One result of course is that ConTeXt's module ecosystem is far inferior to LaTeX's. It shines in other areas, but that's not my point.
  • Personality mismatch between lead developers

Does anyone know the real reason? Is it a combination of all the above?

Best Answer

There are elements of history and philosophy here. LaTeX was first written by Leslie Lamport to provide a 'user' interface to TeX that abstracted away some of the 'bare metal' of the typesetting. Lamport handed over the the current team in the late 1980s, by which time LaTeX was already popular in some academic circles. The integration of ideas from AMS-TeX into amsmath, and the (N)FSS font selection scheme, both occurred in the mid-to-late 1990s. These developments helped LaTeX to attract a significant audience in academia. It also means that 'LaTeX' ~ 'TeX' is used as a way to describe math mode markup well outside typesetting, e.g. MathJaX.

ConTeXt is as the question states also the original product of one person, here Hans Hagen. Hans started with in some ways less desire to abstract from TeX. For example, ConTeXt does not try to have any 'required' approach to defining document design, in contrast to LaTeX's document class concept. ConTeXt also started with a much richer interface setup, of course at the time with performance implications: these are no longer anything to worry about. ConTeXt was first developed long after LaTeX, and has not had significant take-up for academic publications.

LaTeX has attracted a large number of third-part package authors. In part this is arguably as the kernel was and still is very small in terms of functionality. ConTeXt by contrast has a lot of modules written by Hans and others at Pragma, but relatively few third-party extensions.

The two formats have historically different approaches to stability. Whilst LaTeX does change, there is a lot of work done by the team to try to keep existing documents unchanged. Also, the large number of third-party packages means that there are (internal) interfaces that are very difficult to adjust. This means there is a tendencies to avoid change, or at least to manage it very carefully. ConTeXt, with a small team responsible for most of the code, can be freer in terms of change. At the same time, ConTeXt users do know that the core is in active development and can require more active document management. That is not to say that ConTeXt deliberately breaks documents - the basic syntax for ConTeXt is the same in Mark II, Mark IV and Mark XL. But for example ConTeXt has moved from pdfTeX to LuaTeX to LuaMetaTeX, and that means that a user who used some primitives directly in their source will have had to update it: a LaTeX user might complain loudly if the same happened to them.

The LaTeX team had a rather fallow period in terms of kernel development for various reasons. One was that after the launch of LaTeX2e, the thinking was to freeze the kernel code entirely (for stability), and to aim to write a new LaTeX ('LaTeX3') to address long term desires. However, the large number of both users and particularly packages makes that a very challenging proposition. There is no doubt that ideas developed in ConTeXt over that period could and should be picked up by LaTeX: one can only though work on the situation now, not what hindsight suggests. (The LaTeX team had for example something a bit like CSS before CSS was invented, but it was not workable when developed and now has to work in a world that does have CSS.)

Work by the LaTeX team at present is focussed on adding things like tagging, which as the question notes is achievable using ConTeXt today. The constraint for LaTeX is of course in a sense self-imposed: that users do not have to update their documents at all. There is also the question of detailed engine outcomes. ConTeXt uses LuaMetaTeX, which like LuaTeX deliberately breaks some outcomes predictable for TeX90/pdfTeX/XeTeX/... For example, hyphenation is not tied to font, which may change line breaking and therefore typeset output. Similarly, using 8-bit fonts is non-trivial with LuaMetaTeX/LuaTeX, while for existing pdfTeX documents, keeping the font identical may be very important.

As noted at the start, there are some differences in philosophy between LaTeX and ConTeXt. For example, even if the 'LaTeX3' plans had been fully implemented, LaTeX would still pre-define design in classes or similar. ConTeXt does not do that, and that is a reasonable but contrasting position. As such, there are places that 'marrying the two' would be hard.