Will Robertson wrote:
>> I've quickly thrown together a module which does basically this.  I've
>> called t "l3module" for want of a better name.  Source/PDF/ZIP including
>> demo available from
>> http://www.texdev.net/2009/01/02/tex-and-namespaces-continued/
> That's neat!
> I assume you're intended for it to be primarily used for user-space macros?

Yes, the prefix clash problem is, I think, much more unlikely (and
easier to handle using a manually-maintained database of taken values).

> What do you think of the idea to add something like this functionality
> to xparse, so that any instance of \DeclareDocumentCommand will
> automatically populate the list? On the other hand, it's nice to have an
> explicit list.

I'd thought about this, but at this stage was aiming for a quick "proof
of principal" implementation.  I wouldn't want to mess with xparse
without asking (and in any case, I can't!).

Using an explicit list is convenient for checking, but I'd agree that
perhaps a hook in \DeclareDocumentCommand would be a neater solution,
overall.  Doing that, there is a need to think about anything defined
after the end of the module (say \AtBeginDocument).  I think you'd still
want a way to explicitly reserve macro names under those circumstances.

I would imagine that if the team want to provide a "name reservation"
system, you'd probably integrate \module_details:nn with
\ProvidesExplPackage, so that you'd always have some details available.
 As you'd probably guess, I'd prefer an "internal" function name for
this, so perhaps:

\module_details:nn {module} {
  name        = xxx,
  version     = xxx,
  date        = xxx,
  e-mail      = xxx,
  description = xxx

with all of those values compulsory, and then the other details I've
suggested as optional.
Joseph Wright