August 8, 1996

This is the 3.98 beta release of GNATS.  It's still in need of documentation
across the board, but I wanted to send this out to get people started on
trying it out.

The changes in this beta release include:

 * with the elisp interface to GNATS, gnats:run-in-background defaults to t
   to make the checking and filing of a PR happen in the background to the
   emacs process; setting gnats:run-in-background to nil keeps it all in
   the foreground, as with previous releases.
 * have new "release based" approach with --with-release-based, adding
   new `quarter' and `keywords' fields to PRs
 * cmds.c, clean up general code layout
 * add checks for netdb.h 
 * default server name now `gnats', not `gnatsserv'
 * new nedit-pr script, to do network-based editing
 * add BFOR and AFTR to daemon, for PRs before/after/between certain dates
 * add VDAT command to daemon, to verify that a date format can be used
 * make gnats-el.in more friendly to emacs 18
 * fix lots of bugs wrt ANSI compliance of the code, clean up array
   use and unfreed memory

Changes included in the 3.97 beta were:

 * the ability to use a username other than `gnats' by configuring with
   `--with-gnats-user=name'.  This will communicate the desired name down
   through all of the programs to be built and used.
 * the server now has a RSET command, to return the daemon to its startup
   state
 * the notify field of the submitters file is correctly added to the `Cc:'
   header of PRs as they're edited.
 * Ken Raeburn has written a new GNATS summary mode for emacs, used by the
   command `summ-pr'.  Give query-pr or nquery-pr the appropriate options
   (like --responsible or --state), and you'll get a nice buffer to view or
   edit those PRs as you choose. 
 * the elisp mode for send-pr fixes a bug about mail-default-reply-to being
   set to t by default starting with emacs 19.29
 * send-pr now takes -s/--severity, to specify the severity on the
   command line.  Also, -c/--cc let you give a Cc: header on the command line.

The other changes include:

* It's now possible to have multiple GNATS databases on one system.  Use
  --with-gnats-service, --with-gnats-port, --with-gnats-server, and
  --with-gnats-root when configuring it.  It'll install the programs
  into separte directories (based on --exec-prefix and --prefix), which you
  can then create symbolic links for somewhere else, or set your PATH
  depending on which one you want to use.
* Modified to use autoconf 2.3 for configuring it.  Major improvement in
  portability combined with this shift.
* Added Kerberos support.
* Added functionality for a network-based GNATS, rather than having to
  NFS-mount the directory.  Includes a GNATS daemon, network-based query-pr,
  and new programs like pr-mail (list who should be sent mail about a given
  PR), and sub-type (give the type of a submitter).  The protocol for the
  server is designed to be versatile and open up future tools.
* The mechanism is in place to do remote PR editing and viewing from within
  emacs.  A script-version of a remote edit-pr isn't done yet.
* Considerable speedups were done.
* Major code cleanup across the board.
* Fixed hundreds of bugs since the last gnats release, including memory
  conflicts, areas that caused crashes, files and directories not being
  closed, etc.
* Cleaned up the GNATS elisp code.
* Improved the errors emitted to be more uniform.
* Speed increase in many things, including the most concentrated parts of the
  system (e.g., setting up the lists of mail headers and PR fields).
* A new ">Last-Modified:" field, to track when a PR was edited.
* Editing a PR will automatically Cc: anyone listed in the notify field of the
  submitters list.
* A few bugs were fixed in file-pr, most notably of which is looking up the PR
  by number given `category/number' in the Subject: field of a reply.  This
  will stop PRs from ending up in pending if the PR has changed category.
  Also, the responsible person is no longer set to include their full name in
  the field, since nothing else keeps it there.
* Looking up the responsible address for a PR has been adjusted when editing
  the PR, so we can let the editor allow names that don't necessarily appear
  in the `responsible' list, but are valid nonetheless.  (You will now only
  need to list folks in the responsible list if they don't have an account on
  the system running the server.)
* The lock for a PR now gives the pid of the process, and what program
  locked it.

The support for remote queries and editing is the most dramatic addition.  The
original approach, requiring the GNATS tree to be exported, will still work.
However, the new release will include a daemon and clients, to make it more
extendable.

Build GNATS as you normally would, configuring it with just:

   ./configure

If you want to install GNATS in a directory other than /usr/local, add the
flag `--prefix=/usr/wherever'.  Likewise, if you want to install all of the
binaries in separate directories, but only maintain one copy of the
host-independent files, add `--exec-prefix=/usr/wherever/H-hosttype'.

To point GNATS at a particular root for your files, use something like

  --with-gnats-root=/usr/local/gnats-db

If you want to build everything, not just the tools to query and edit, add the
flag `--with-full-gnats'.  That will make it build the support files like
`file-pr', and the daemon, `gnatsd'.  By default, the daemon and clients are
set to use port 1529.  Add the line

		support		1529/tcp			# GNATS

to your /etc/services file (or wherever).  If you want a different port,
simply change it there---you shouldn't have to change it within GNATS.

In your inetd.conf file, put something like:

-- cut --
support	stream	tcp	nowait	gnats	/usr/local/etc/gnatsd gnatsd
-- cut --

adjusting the path accordingly.  To make inetd start spawning the GNATS daemon
when connected on that port, send it a HUP signal.

By default, the server for the GNATS daemon is assumed to be one with the
cname of `gnatsserv'.  If you'd like something else, use

	--with-gnats-server=hostname

Please try this on as many hosts as you can, using both the system compiler
and the GNU C compiler.  To force it to use the system's one, you can do

	$ CC=cc ./configure

to make sure it doesn't find gcc.

To build GNATS, just type `make'.  If you are using the GNU compiler (aka, if
you try to type `gcc' you get it), you'll want to do `make CC=gcc'.

In the gnats-adm directory, you'll want to edit `gnatsd.conf'.  It lists the
hosts allowed to access your server.  Or, if you're using Kerberos, it shows
the sites that don't require Kerberos authentication.  The format is open
for revision at the moment; only the first field matters:

	site.com::

The second field may be used for things like controlling what categories,
submitter-id'd PRs, etc can be accessed from that site.  In the file that
logs syslog messages (/var/adm/messages, for example) you'll find the
notification of denied access.

Please note that this is a VERY beta release.  Please try to investigate the
source of problems before you send me mail about it; don't just say, "It
doesn't work!"  One of the main reasons for this release is to check the
portability of the new code.

Please send any comments or questions to `brendan@cygnus.com'.

Thanks!
Brendan
