[tex-live] abstract.bst: two different versions, and a file collision problem

Nelson H. F. Beebe beebe at math.utah.edu
Fri May 2 08:34:24 CEST 2003

A correspondent today pointed out that one of our Web-accessible
copies of abstract.bst was several years out of date.  A check with
our CTAN mirror turned up two versions there:

-r--r--r--    1 mirror   mirror      23805 Jul 20  1992 tex-archive/biblio/bibtex/contrib/abstract.bst

-r--r--r--    1 mirror   mirror      24061 Oct  4  2000 tex-archive/biblio/bibtex/utils/bibtools/abstract.bst

Unfortunately, this inconsistency is only a tiny drop in the bucket.
I ran a small awk program that looks for duplicates in a list of
files, and turned up 8099 instances among the 79,590 files in the CTAN
tree this morning.  Some, of course, will be files like 00readme.txt,
AUTHORS, BUGS, etc., that are common to many packages.

I realize that this problem may be insurmountable, but perhaps we can
prevent it from growing worse.

What about a small utility that is run on each new file added to the
archive, checking whether a file of that name is already present in
the archive, with an exception list for the types of files noted
above?  On a collision, the contributor would then be asked to resolve
the conflict: either by updating an older version, or renaming the new
file.  I can easily provide such a tool, but would/could it be used

The reason that this is relevant is that, as far as I understand, the
hash-table lookup in the kpathsea library cannot guarantee a directory
search order, so that the TeX user has no easy way to prevent an
out-of-date file being used.  [I would be happy to be corrected on
this point.]

Even if it did, the problem today is that there 6493 directories in
the CTAN tree, and 3346 in the TeXLive7 tree, far too many for humans
to reliably control a search order for.

Back in the early days, TEXFONTS and TEXINPUTS were just a tiny
handful of directories, filenames tended to be unique, and directory
search order was rarely an issue.  There have been a lot of glyphs
typeset by TeX since then.

C++ introduced namespaces to try to control the external-name
collision problem, and designers of other programming languages are
wrestling with the same problem.  The Lisp folks simply dealt with it
by using package prefixes on function names.  Maybe we should be doing
something similar: once a package or file name has been chosen, remove
its name from the pool of available public names, and require new
versions, even of the same package, to be given new names:
article.cls, article-2.cls, mittelbach-article.cls,
carlisle-improved-article.cls, and so on.

- Nelson H. F. Beebe                    Tel: +1 801 581 5254                  -
- Center for Scientific Computing       FAX: +1 801 581 4148                  -
- University of Utah                    Internet e-mail: beebe at math.utah.edu  -
- Department of Mathematics, 110 LCB        beebe at acm.org  beebe at computer.org -
- 155 S 1400 E RM 233                       beebe at ieee.org                    -
- Salt Lake City, UT 84112-0090, USA    URL: http://www.math.utah.edu/~beebe  -

More information about the tex-live mailing list