Take up of expl3 as a programming language raises new issues both in the
code itself and in the wider structures.
One area which deserves attention is namespacing: management of module
prefixes (and related information). In LaTeX2e, this is handled in a
broadly successful but somewhat ad hoc manner, relying on searching
released material to find what prefixes are in use. As expl3 formalises
the idea of using a namespace prefix for each module, it seems
appropriate to consider a more formal approach to managing these.
Looking outside of the TeX world, it is notable that similar concerns
come up for example in the Perl community:http://www.cpan.org/modules/04pause.html#namespace
. Clearly, our
requirements are different as expl3 code is a subset of (La)TeX code,
and so management at the CTAN level is inappropriate.
I think we can see namespace management in two parts:
- 'Outside LaTeX': having a system available for consultation
before any code is written.
- 'Inside LaTeX': making module information available from within a
At this stage, I want to focus on the 'outside' part of the question.
many approaches that one can imagine, varying from the very
simple to the very complex. An approach I'd like to raise here is at the
low-tech end of the spectrum. I envisage a simple list of module
prefixes with associated information: the module name, developer(s),
contact details, web site, bug tracker, etc. This would be available in
public (CTAN/LaTeX3 SVN), but updates would rely on a simple process:
contacting the team and making a request. This could then be made more
'high tech' in the future if necessary.
An 'open' list of prefixes offers advantages, for example begin able to
'reserve' prefixes in advance of code release (for the team) and making
clear that some prefixes are 'free for all' (perhaps "tmp" and "foo",
for example). At the same time, there will be some issues, for example
how to handle conflicts and how to make sure information remains up to date.
Clearly, any such approach requires
agreement within the expl3 developer
community. Thus what I am seeking here is in the first instance feedback
on this idea. Does this seem sensible, workable and useful?