\title{One by one the guests arrive} \author[Kees van der Laan]{Kees van der Laan\\ \texttt{cgl@rc.service.rug.nl}} %\blueabstract A plea is made for writing macros % in plain \TeX{} sufficiently documented % to be used with all flavours of \TeX. \begin{Article} This note emerged from a request of Sebastian Rahtz triggered by my message which I passed along with my public appraisal for the 100 \AllTeX{} FAQs. This plea, this shout, hopes to awake the notion that we are all better off if we write macro {\it software\/} in the lowest common set of all \TeX{} flavours. At least it might initiate a discussion because I'm realistic enough that not all involved share my views :-))). Of course I know that reality is more complicated, and that a right balance is the best we can opt for, so let us go for that. \section{Why,} would a \LaTeX{} devotee ask? Do you have concrete arguments? Well, from my own experience I can say that there was a time I needed to typeset number ranges. Only the \LaTeX{} style of Donald Arseneau was available. But, what I needed was a few macros to cooperate with plain, so I had to write one of my own,\footnote{Who cares? It is estimated that 80\% or more of the software is continuously rewritten, that is a fact. My reply is that we can do much better, and we should if we opt for the best.} which by the way emerged as a much, much more compact suite. After all the need has faded away because I tackled the handling of bibliography references more fundamentally. The point is that it would have been better if there had been a kernel independent from the higher layer which I could have taken over. The interface towards the higher level, or let us say the user interface, should better be built on top. The paradigm is this example is the awareness of CISO, as analogy of FIFO, meaning Collective In and Smallest Out, which solves the problem. That this approach is beneficial in software engineering in general is proven by the various numerical software program libraries, which have the basic material written in the lowest language feasible, FORTRAN, allowing stability, optimization of the code, and confidence in use. Similarly, I remember the PDE (partial differential equation) packages which use common basic algorithms, but differ in the jargon at the user level. I hope that the macro/package/module writers have a feeling for the savings of the costs which can be gained over time, by this attitude. As a volunteer organization one could shrug it off and say I don't care, costs are not relevant. Then there is still another nasty guy lurking around the counter that the (All)\TeX{} community like various sects will fall apart, will fragment. To continue the tune \begin{center} And no one knows where the night is going\\ And no one knows why the wine is flowing\\ O love, I need you, I need you, I need you\\ I need you now\\ \end{center} Another example to the point is how to provide for headings? The answer is that I don't care so much about heading macros because the common part is so negligible, while it is highly intertwined with the user interface. But --- there is always a but --- I for one am strongly in favour of starting from two-part macros, which should perform the essential functionalities whatever you may wish, and build all the ornamentation --- i.e., the user-interfaces, eventually with less functionality --- on top. This approach obeys the {\it separations of concerns\/} principle, and pays off in maintenance, if not that it spreads more easily.\footnote{Forgive me this joke, with \LaTeX{} widespread.} To give you an idea of how I did it basically in \texttt{blue.tex}: \begin{verbatim} \def\beginghead{} \def\endhead{} %with as one-part on top \def\head#{\bgroup\beginhead \aftergroup\endhead \afterassignment\ignorewhitespace \let\dummy= } %or the tribute to manmac \def\bluehead#1\par{\beginhead#1\endhead} \end{verbatim} The last tribute lost the processing on-the-fly functionality, but most of the time I don't need that, at the expense of simpler markup. But the latter is a matter of taste. If people like a \LaTeX-flavoured header, just go ahead and add it. The fundamental functionalities have been provided already, just a user interface has to be provided as variant. \section{Conclusion} The point I'm trying to make is that we are all better off if complex fundamental parts are programmed in `plain', perhaps after all it has proven to be a fundamental point. To end Cohen's song: \begin{center} The guests are coming through\\ The open-hearted many\\ The broken-hearted few\\ \end{center} \end{Article}