Some initial comments on The LaTeX3 Programming Language (L3PL for short). Well, the silence is deafening. Someone has to be first, and it might as well be me. (I haven't heard anything, and hope I haven't lost any e-mail. If so, sorry!) First, a short anecdote. In the early days of the TDS (1994) it looked like the font area was going to be supplier/typeface/type, which I thought from my experience with web2c would be very slow (no ls-R at that stage). I thought this issue was settled, so I opted out of the discussion. It was only this year when I was working with betas of web2c 7.2 that I came back to the TDS and discovered that the font area had been changed to type/supplier/typeface, a much better solution (IMHO). I then realized that I could/should have kept following the discussion. So this time I'm sticking around and I'm going to try to make a positive contribution. But as I'm going first (AFAIK), I'm sure I will have misunderstood some of the ideas and motivations, so please bear with me as I stumble around and ask a few basic questions. Also, please forgive me if I sound a little negative in places; I am trying to promote (provoke!) a healthy discussion. I read: `Variations of this language have been in use by The LaTeX3 Project Team since around 1990 . . .'. Well, this is news to me! I do understand that the Team wanted to get it to a certain stage of maturity before releasing it, but they don't win any friends for keeping the whole thing such a well-guarded secret (even if only by default - most LaTeX users don't attend TUG meetings to hear the latest gossip, and we haven't heard anything about it in `LaTeX News' until the current release). `Gut feelings' When the beta release of 2e came out I read through the documentation and got really excited by all of the new features that supported writing-in-the-large, proper package encapsulation, the improved font-selection scheme, etc. etc. I think this excitement was part of the reason why 2e has been so successful. Anything that follows (e.g. LaTeX3) has to be exciting too. If it isn't fun, why bother? Warm fuzzy feelings should not be underestimated. Having read carefully through the introductory documentation for L3PL and most of the separate packages, I feel only luke-warm. Some features are long overdue: the naming system (if only it were more consistently applied) and the different types of arguments (n, o, x, etc.). But `fake' integers? I like hacking TeX too, but I realize its limitations. There seems to have been a considerable amount of effort put into overcoming limitations of TeX which are better overcome by changing TeX - as has already been done. If I need more counters I will use Omega. I'm not normally the paranoid type (although I like watching The X Files as much as the next person . . .) but features such as removeoldnames are positively subversive! The packages give tantalizing hints about the future and raise more questions than they answer. Surely `fake' integers can not be here to stay? On the one hand it looks like the Team want to drop TeX, but at the same time it looks as though they are trying to hold on tightly. I would appreciate a little more clarity on this issue. Clearly at this stage we are not all going to agree on whether we go with Omega or e-TeX, or a merger of the two projects (ideal), but what about dropping TeX per se? From all that I have read, LaTeX3 might well have an historical link to the original conception and implementation of LaTeX, but it is going to be very different. Reading the L3PL documentation it becomes painfully obvious (to me, anyway) that it's time to cut the cord officially and (a) adopt a new base platform (Omega, e-TeX, whatever) and (b) change the name to something other than LaTeX. The fine details I like the \<module>_<description>:<arg-spec> format. But I do have a few niggling doubts. First, I have to remember the <arg-spec> each time I use a macro. I imagine myself writing a package and thinking to myself as follows: `OK, I want to do an \immediate\write16{blah}. What's the new version? Ah, \iow_expanded. Now what's its arg-spec? Umm . . . er, :nn, :wn? No, wait . . . <fumble, fumble> . . . it has to be :Nn. Huh? How do I say \immediate\write16{blah} then? Oh, I'm not supposed to do that . . .' My point is that this is an attempt to add the concept of overloaded functions to a language that does not support it. TeX doesn't even have a proper concept of `type'. Adding a suffix that indicates the type of a macro's arguments or their expansion (or lack of) is a hack, pure and simple. The fact that it `works' is neither here nor there. And AUC TeX will only help a little bit. Second, TeX does not have a well-developed concept of encapsulation. Even a low-level language such as C allows the definition of `static' functions, which can not be `seen' in other compilation units. In TeX, all macros must be unique across all input files for a job, to avoid unintended conflicts. To be true to L3PL, this means using the <module> component on practically everything. While I do not object to this in principle, it is yet another burden for package writers. Third, it isn't possible to abstract away from TeX completely. The fact that there are so many `TeXhackers notes' hints at this, as well as `w' in arg-specs. I suspect that using many of the new macros properly requires an understanding of what's happening at the TeX level. (And what are error messages going to look like?) Fourth, a more basic objection can be expressed thus: `why should I start writing \exp_after:NN when I have been writing \expandafter for so many years?'. Is it planned to make the removeoldnames feature the default for LaTeX3? Fifth, an even more basic objection is `so what?'. It isn't clear that using L3PL will yield a significant payoff. Is it really worth the enormous effort of rewriting LaTeX in L3PL when (a) it already works, and (b) the underlying system is still TeX? The maxim `if it ain't broke, don't fix it' surely applies here. The bottom line (so far) I need more convincing. Let the Team show us why the L3PL is so great, by releasing some of their prototype re-implementations of some of the functionality of LaTeX. Let the debate begin! Richard. -- Richard Walker [log in to unmask] Department of Computer Science The Australian National University Canberra, ACT 0200, Australia Fax: +61 2 6249 0010