GJT Design Overview
In terms of giving an overview of the GJT project, it
may be easiest to start with a list of the services that
are provided by the system, along with the server or
programs that implement those services. We will attempt
to do that here.
- Source Code Version Control
CVS server, jCVS client, and CVSWeb
The Concurrent Versioning System (CVS) is a free version control
system, including a server and several clients. The server runs
on the GJT server 'cvs.gjt.org'. The recommended client is jCVS.
The critical features of CVS are its ability to be distributed
across the internet, its ability to support low bandwidth clients,
and its strong support. The CVSWeb software is used to present
the source code repository on the web for browsing purposes.
- Package Database
website, javadoc, doclet
To facilitate the management, presentation, and searching
of the multitude of packages that can accumulate on a GJT,
a Package Database is defined along with Package Documenation.
The new javadoc facilitates a great deal of this in two ways.
It provides for a new "package documentation" file named
'package.html' to provide documentation about a package.
It also provides the ability to customize the output of
the documentation by allowing for the writing of custom
'doclets' that produce the documentation files. The GJT
implements just such a doclet, which is combined with
custom tags, to produce a linked series of package pages
known as the package database. These web pages facilitate
the searching, browsing, and management of packages and
their inter-dependencies. The package database is also
leveraged to ensure that all dependencies are resolved
at compile time.
- JavaDoc Database
The GJT project uses the latest javadoc to produce complete
online documentation of all of the packages on the tree. We
utilize a custom doclet to modify the standard javadoc output
to add a GJT logo and several links, as well as to provide
links back to CVSWeb to view the source code or version history.
- Automated Package Release
servlet, package server
The GJT automates the process of releasing packages by
the AutoRad system.
AutoRad uses a simple servlet that presents a web page on which
the developer enters the package name and release tag. The
servlet then communicates this request to the Package Server,
which in turn performs all of the processing involved in
releasing a package.
- Release Distribution
The GJT project attempts to distribute as much of its
operation and processing as possible. This is to prepare
for the inevitable
Giant Java Network,
as well as accomodate distributed services. For example,
one might wish to place the web server, ftp server, and
release processing on entirely different hosts or networks,
based on load, bandwidth, and reliability considerations.
- Mailing List Support
slist, procmail, mhonarc, servlet
The GJT provides mailing lists related to the implementation,
maintenance, and support of the GJT project, as well as mailing
lists for any developer or development projects that require
such forums. Slist and procmail are used to implement the
mailing lists, and MHonArc is used to convert the mailing
list archives for presentation on the website. Finally, a
servlet is used to present the mailing lists to the user
with forms for subscribing and unsubscribing.
- Backup and Archival Services
rsync, FTPSynchronize, mkisofs, CD
The GJT project uses rsync and FTPSynchronize to automate
backups of the source code, website, and all related data.
Periodic archives are built using mkisofs, allowing them
to be written to CD.