December 2, 1996

This is the 3.101 beta release of GNATS.  This is probably NOT the last beta
release.  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 file gnats/PROBLEMS has a list of known problems with GNATS; folks are
encouraged to fix any of them they might want to.  Even investigating a bug
further is helpful.

Changes in this beta release were:

* A new program `getclose' will find you any PRs that were modified between
  a set of three dates: between two which qualify it as definitely "applied"
  during that time, and a third date, which will point out those that may or
  may not be fully resolved in that time.
* contrib/scripts has a few handy scripts (two in Korn shell) from
  Brian Abernathy.
* contrib/elisp has the new `gnats-admin.el' from Roger Hayes.
* A few bug-fixes in terms of string length have been fixed, to avoid
  memory errors.
* The GNATS daemon has been adjusted to do case-insensitive checks for
  hostnames trying to access the server.
* npr-edit now supports the locking and unlocking of the GNATS
  database with `--lockdb' and `--unlockdb'.  Add LKDB and UNDB
  commands to the server.
* If you're already editing a PR, we now go immediately to that buffer
  rather than wait for an error to tell us we have it.
* Make sure GNATS:RUN-IN-BACKGROUND is null before we do the forced
  unlocking of remaining buffers.
* Indentation of changed fields via GNATS::INDENT has been changed to
  be in line with the other fields.  We'd originally forced it to be
  one off so it's obvious which fields have changed; let's see how
  helpful it really was.

Changes included in the 3.100 beta were:

* Bug fixed in the creation of indexes, causing possible memory corruption.
* Configure adjusted for finding the Kerberos library.
* Add more portable solution for finding out the hostname.
* This beta includes the 2.8 release of texinfo.

The other changes 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
* 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.
* 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.
* Argument parsing for gnatsd has been adjusted to properly check the various
  arguments it can get, including multi-word arguments.
* The GNATS:KEEP-EDITED-BUFFERS variable in emacs is now used correctly.
* The elisp code is now mostly functional with emacs 18.
* file-pr will now find the PR properly in a message that happens to use
  the Subject: style of `Re[2]: foo/1234: ...'.
* Skipping closed PRs is no longer case-sensitive for matching.
* The date_required field is now set modify_pr---this used to cause the
  tools to crash when they were built --with-release-based.
* The send-pr elisp code now uses CALL-PROCESS rather than SHELL-COMMAND
  to get the template PR.  It's also been fixed to properly use
  the MAIL-DEFAULT-REPLY-TO variable.
* Minor mistakes in the docs were fixed.
* The configure scripts have been fixed to not use the default prefix
  value of `NONE' if --prefix wasn't specified.
* contrib/wwwgnats/wwwgnats.shar is the new version by Karl Berry of the Web
  interface to GNATS.

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
