summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/l3kernel/l3news01.tex
blob: b4841ac24bf05ae4ecddd4fd9dd7debd07555539 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
% Copyright 2009 The LaTeX Project
\documentclass{ltnews}
\PassOptionsToPackage{colorlinks}{hyperref}

\usepackage{metalogo,ragged2e}

\AtBeginDocument{
  \renewcommand{\LaTeXNews}{\LaTeX3~News}
  \RaggedRight
}

\publicationmonth{February}
\publicationyear{2009}
\publicationissue{1}

\begin{document}
\maketitle

\section{Welcome to \LaTeX3}

Momentum is again starting to build behind The \LaTeX{} Project. For the
last few releases of \TeX~Live, the experimental programming foundation for
\LaTeX3 has been available under the name \package{expl3}. Despite large
warnings that the code would probably change in the future, we wanted to show
that there was progress being made, no matter how slowly. Since then, some
people have looked at the code, provided feedback, and~--- most
importantly~--- actually tried using it. Although it is yet early days, we
believe that the ideas behind the code are sound and there are only `cosmetic
improvements' that need to be made before \package{expl3} is ready for the
\LaTeX~package author masses.

\section{What currently exists}

The current \LaTeX3 code consists of two main branches: the
\package{expl3} modules that define the underlying programming environment,
and the `\package{xpackage}s', which are a suite of packages that are written
with the \package{expl3} programming interface and provide some higher-level
functionality for what will one day become \LaTeX3 proper. Both \package{expl3} and
parts of the \package{xpackages} are designed to be used \emph{on top} of
\LaTeXe, so new packages can take advantage of the new features while still
allowing to be used alongside many of the vast number of \LaTeXe\ packages on
\textsc{ctan}.

\section{What's happening now}

In preparation for a minor overhaul of the \package{expl3} code, we are
writing a comprehensive test suite for each module. These tests allow us to
make implementation changes and then test if the code still works as before.
They are also highlighting any minor shortcomings or omissions in the code.
As the tests are being written, our assumptions about what should be called
what and the underlying naming conventions for the functions and datatypes are
being questioned, challenged, and noted for further rumination.

At the time of writing, we are approximately half-way through writing the test
suite. Once this task is complete, which we plan for the first
half of 2009, we will be ready to make changes without worrying about breaking
anything.

\section{What's happening soon}

So what do we want to change? The current \package{expl3} codebase has
portions that date to the pre-\LaTeXe\ days, while other modules have been
more recently conceived. It is quite apparent when reading through the sources
that some unification and tidying up would improve the simplicity and
consistency of the code. In many cases, such changes will mean nothing more
than a tweak or a rename.

Beyond these minor changes, we are also re-thinking the exact notation behind
the way functions are defined. There are currently a handful of different
types of arguments that functions may be passed (from an untouched single
token to a complete expansion of a token list) and we're not entirely happy
with how the original choices have evolved now that the system has grown
somewhat. We have received good feedback from several people on ways that we
could improve the argument syntax, and as part of the upcoming changes to the
\package{expl3} packages we hope to address the problems that we currently
perceive in the present syntax.

\section{What's happening later}

After the changes discussed above are finished, we will begin freezing the core
interface of the \package{expl3} modules, and we hope that more package
authors will be interested in using the new ideas to write their own code.
While the core functions will then remain unchanged, more features and new
modules will be added as \LaTeX3 starts to grow.

Some new and/or experimental packages will be changing to use the
\package{expl3} programming interface, including \package{breqn},
\package{mathtools}, \package{empheq}, \package{fontspec}, and
\package{unicode-math}. (Which is one reason for the lack of progress in
these latter two in recent times.) There will also be a version of the
\package{siunitx} package written in \package{expl3}, in parallel to the
current \LaTeXe\ version. These developments will provide improvements to
everyday \LaTeX\ users who haven't even heard of The \LaTeX{} Project.

Looking towards the long term, \LaTeX3 as a document preparation system needs
to be written almost from scratch. A high-level user syntax needs to be
designed and scores of packages will be used as inspiration for the
`out-of-the-box' default document templates. \LaTeXe\ has stood up to the test
of time~--- some fifteen years and still going strong~--- and it is now time
to write a successor that will survive another score.

\end{document}