Hi Jonathan, I'm only focussing my comments on two slides: the comparison between LaTeX and Python documentation, and the slide on the LaTeX3 project. * * * I think it's fair to say that tug.org is the place to look for LaTeX documentation: <http://www.tug.org/interest.html#doc> I'm thinking that latex-project would do better simply linking there; in terms of maintenance, it's much better to have a single point of reference. So rather than spending half the slides explaining what latex-project does inadequately, I think you would do better to explain what/how docs.python does and how this would be beneficial for the LaTeX community. And possibly whether there are tools that the LaTeX community could use for this task. The problem, of course, is that Python must have several orders of magnitude more active developers than LaTeX, and man-power for such thankless tasks is extraordinarily thin on the ground for us. * * * Now onto the LaTeX3 slide. Where should I start? :) > ▶ Started in 1993 or so (predates XML, Google, . . . ) > ▶ No-one is using LATEX3 for typesetting LaTeX3 isn't a system to be used for typesetting. At least, not yet. A less contentious way to word this bullet point might be something like "LaTeX3 is a project to continue LaTeX2e past its current status of maintained but not developed." (We've discussed backwards compatibility many times before.) "Current work of the LaTeX3 project is focussing on the transition package authors face in moving from LaTeX2e to the ideas of LaTeX3." (I think that gets the gist across instead of implying that LaTeX3 exists but no-one is using it.) > ▶ Last year, LATEX3 source placed on SVN server, but . . . Actually, it was 2005: <http://www.latex-project.org/site-news.html> > ▶ They say it’s explicitly forbidden to publish LATEX3 code I think you mean "re-distribute the source of the" rather than "publish". You make it sound like we're not allowing people to use the code (which is available on CTAN and through TeX Live/MiKTeX). > ▶ Uses proprietary license (Debian accepted, not OSI-approved) What do you mean by "proprietary" here? The GPL is a proprietary license of the FSF. The Apache Licence is a proprietary license of the Apache Foundation. Neither of those licences are distributed under the terms of themselves. The LPPL solves a real problem in the community: what do we do when authors retire and their packages become no longer maintained but another author wishes to step in? Do you think that Karl, Robin, Jim, Rainer would simply allow me to update someone else's package on CTAN? > ▶ Current activity focused new macro programming interface > > Here’s an example of the old and new interface: > > \def\mymacro #1{\setbox #1\hbox\bgroup} % Old > \cs_new_nopar:Npn \hbox_set_inline_begin:N #1 { % New > \tex_setbox:D #1 \tex_hbox:D \c_group_begin_token } expl3 isn't just about renaming TeX primitives for the sake of it: - toolbox of often-used and otherwise useful functions with consistent (and readable!) names - abstract many expansion control problems with better datatypes As for examples, expl3 has a couple: (from LaTeX2e kernel) From: % \global\expandafter\let % \csname\cf@encoding \string#1\expandafter\endcsname % \csname ?\string#1\endcsname To: % \cs_gset_eq:cc % { \cf@encoding \token_to_str:N #1 } { ? \token_to_str:N #1 } From: % \expandafter % \in@ % \csname sym#3% % \expandafter % \endcsname % \expandafter % {% % \group@list}% % \ifin@ ... \else ... \fi To: % \seq_test_in:cVTF { sym #3 } \l_group_seq {...} {...} Here's another. Consider something completely hypothetical like "if #1 is true and #2 is false, set csname #3 to the value of csname #4" (if you don't think that this is realistic, feel free to come up with another code snippet) \cs_set:Nn \foo_bar:nnnn { \bool_if:nT { #1 && !#2 } { \tl_set:cv {#3} {#4} } } Assuming #1 and #2 are booleans that you'll be able to test with \if, in LaTeX2e you'd end up with something like \def\foo@bar#1#2#3#3{% \if #1 \expandafter \@firstofone \else \expandafter \@gobble \fi {% \if #2 \expandafter \@gobble \else \expandafter \@firstofone \fi {% \expandafter\def \csname #3\expandafter\expandafter\expandafter\endcsname \expandafter\expandafter\expandafter{\csname#4\endcsname}% }% }% } But that's not even quite right, because in the expl3 case you can extract the value from either a toks or a macro without changing the accessor function. Also, sure, you don't need to be so careful about the if-nesting in this case but in expl3 you get it all for free. This is the thing about expl3: we're not really raising the bar on what *can* be written in TeX macros. Rather, we're making it much easier to do so; if you can code a simple algorithm simply, it really doesn't matter if you're using TeX or Lua or Python. In the past, however, it hasn't been as possible to code a simple algorithm simply in TeX macros. > It doesn’t even get named parameters (instead of #1). There's a lot more that qualifies for "doesn't even get" than named parameters. I think it's safe to say that not one macro package has ever failed to be completed because the author had to write ####1 instead of #foobar. As we've previously discussed, I believe that interfaces for keyvals are much more important than whether internal function parameters are named or numbered (since from the *user's* point of view, it doesn't make a shred of difference). Sorry for the lengthy reply, Will