The Netlib repository is organized
on a logical ordering of packages
and software into various libraries. Generally, most new contributions
can be placed into a pre-existing library (e.g., linalg, c++).
Larger contributions, especially those with several seperable modules,
can be placed into a sub-library within a top-level library. If the
new package is large enough (or doesn't logically fit into a top level library)
a new top level library will be created.
The depth of nesting of libraries is limited only by what makes sense.
The repository is organized on disk as a UNIX directory tree,
hereafter called the ``Netlib tree''. Assume for purposes of this
explanation that the root of the Netlib tree is /netlib.
Underneath this root are subdirectories for the various libraries.
(For example, the EISPACK library is in /netlib/eispack).
The library
subdirectories contain either further subdirectories or files.
Although
the Netlib tree can be accessed via anonymous FTP and anonymous RCP
and can also be browsed via the Xnetlib client, additional
searching capabilities were thought to be desirable.
Thus, the Netlib tree has been augmented by the inclusion of
index, or description, files.
The file /netlib/master/index, created nightly by
concatenating the .master files in each top-level
directory,
contains a listing of all the libraries with descriptions.
An index file in the subdirectory for each library lists and
describes the library contents.
The index files are in a format that is intended to be easily
parsed by searching tools. Both the Netlib and the Xnetlib servers
use the index files as the basis for their searching mechanisms.
A site may wish to
replicate
its repository contents, in order to achieve greater reliability
and take advantage of load balancing.
This replication has
been carried out at UT/ORNL, where the Netlib tree is duplicated
on two machines, one at UT and the other at ORNL. The copy at
UT is the master, and the copy at ORNL is the slave. Whenever
someone updates the master copy, that person manually forces
propagation of the update to the slave copy using a program that
runs the rdist command.
Autonomous sites that maintain copies of the same files need
a mechanism to keep those copies consistent. Each file has one
master copy and some number of slave copies. The site holding
the master copy may be different for different files.
Netlib has adopted a low overhead repository mirroring scheme,
based on checksum files and ftp, that keeps slave copies of
files consistent with the master copies. For more information
on this repository mirroring
mechanism, see [8].