[LWN Logo]

Date: Wed, 17 Mar 1999 17:38:25 -0600 (CST)
From: Jonathan Abbey <jonabbey@arlut.utexas.edu>
To: cool@lwn.net
Subject: Ganymede 0.98 released


Hi, Liz.. new version of Ganymede out for your readers to bang on. ;-)

Ganymede 0.98 is now available for download at

 ftp://ftp.arlut.utexas.edu/pub/ganymede/

as well as at:
 http://www.arlut.utexas.edu/gash2

Ganymede is a GPL'ed network directory management system written in
Java, providing support for team management of NIS, DNS, etc.

--

Wow, it's been over a month since 0.97.  Lots and lots of things
fixed, tweaked, adjusted, stamped, and improved.  A lot of the last
month has gone into gasharl schema fixes and improvements that won't
necessarily be of much benefit to anyone not using GASH, but there
have also been a lot of tweaks and fixes to the server, client, and
admin console.

On the client, there have been lots of GUI fixes and reworkings as
a result of actual user testing.  Lots of long-term annoyances have
been fixed.

On the server, there have been a fair number of changes to make the
server ready for production use, including a reworking of the server's
value-checking logic to provide better feedback when a user enters an
invalid value for a field.

I expect that Ganymede 0.99 will primarily feature work on the NIS/DNS
build integration for the gash and gasharl schemas, as well as some
more documentation for these things.  

For Ganymede 0.99, I may also re-work the commit-time build logic to
allow people to do multiple database commits during a Ganymede session
without actually issuing an NIS/DNS build each time.  This will depend
on how further testing goes with several people running Ganymede
simultaneously.

Documentation is probably still one of the weak points (as well as the
lack of user-contributed schema kits), so please let me know if there
are any aspects of the current documentation that you would
particularly like to see improved.

-------------------- Changes from 0.97 to 0.98 -------------------

RELEASE DATE: March 17, 1999

1. [BUILD] Ganymede build scripts moved out of db/out to db

The Ganymede server now uses a property called
'ganymede.builder.scriptlocation' to locate the builder scripts to be
run by the builder tasks registered in the server.

Previously, the builder tasks ran the build scripts in the out
directory, which wasn't really compatible with the decision in 0.97 to
have the build tasks archive the output files written by the build
tasks.  Now the build scripts are expected to be located by default
in the directory about out, which allows the zip archives to be 
cleanly made.

There is still some confusion here.. in theory, you can have multiple
build tasks registered in the server, each of which will try to zip up
the out directory.  This is not optimal, but what to do about it?

2. [SCHEMA] Added emailListCustom class to gasharl schema kit.

The email list members field is an invid field that can point to
objects of different types.  It is used to allow the email list object
to have members that are users, external email listings, or other
email groups.  Previously, the email list members field couldn't really
be edited after the bulk loading process was complete.

3. [CLIENT] Made windows for newly created objects non-closeable

The client allows the user to close object windows manually as a
convenience, to avoid cluttering up the client when editing lots of
objects.

Unfortunately, if we allow the user to close a newly created object,
there isn't necessarily a good way of getting that window back if it
turns out that the user left some mandatory field unfilled when they
go to click on 'commit'.  Now object creation windows will not be
closeable, so that it's not possible to 'lose' object windows that you
need to do further editing on.

4. [CLIENT] Modified the list editor GUI component

The 'list editor' GUI component used in the client may have a text
field at the bottom to allow the user to simply type in something
to add to the list.  Previously, the 'Add' button connected to the
text field was enabled all the time, confusing users manipulating
the component.  Now the 'Add' button will only be enabled when the
user has entered something into the text button.

5. [SERVER/CLIENT] Modified removal/inactivation handling

The server now by default refuses to allow objects to be removed
that have an inactivation protocol defined.  supergash can go ahead
and remove objects directly, and custom DBEditObject subclasses can
still redefine this behavior by overriding canRemove().

In conjunction with this change, the client has been modified so
that it will always show 'delete' as an option when right-clicking
on an object, even though the object may have an inactivation
protocol defined.  This makes things simpler, since it would be
difficult to handle the delete toolbar icon properly if I just
wanted the client to prevent the user from ever trying to delete
an object that can be inactivated.  And besides, the user might
be operating with supergash privileges.

6. [SCHEMA] Lots of refinements to gasharl schema

Modified the loader code to use BufferedReader, and to take care
of a few deprecation warnings.  Loading files from GASH should
be a good bit faster now.

The GASHARL schema now includes fields in the admin persona and owner
group objects to track information used for more complete GASH
compatibility.  New users and groups will be created with their
uid and gid starting in a numeric range compatible with GASH's
permission model if the owner group has a minimum uid/gid set.

The GASHARL schema now includes support for handling ARL contract
information, which will be of no interest to anyone outside the
lab.

7. [CLIENT] Reworked the persona select handling

The client now prompts users with multiple admin personae with a
persona selection dialog on log-in.

8. [SERVER] Fixed the html schema dump code in DBStore.java

Oops.  DBStore had my home directory path hard-coded when it
should have been using the ganymede.htmldump property.  Fixed.

9. [SERVER] Fixed a bug preventing creating new object types in develop mode

The server's schema editing code had a bug that caused it to reject
the creation of new object types when the server was run with -develop
on the command line, which allowed for the creation of new universal
fields.  Not a bug that anyone else should have run into, but some
aspects of this bug had the server doing some unnecessary extra work.

10. [CLIENT] Changed date representation in the query table

The query table will now use 4 digit years when showing dates.

11. [CLIENT] Fixed Calendar GUI

Previously, viewing an object that had date fields in it was not
handled properly.. the date field in most respects did not act
properly (clear button, calendar popped up in edit mode, etc.).

Fixed bug in JPanelCalendar which caused the calendar's year field not
to be refreshed properly upon rejecting a date as out of range.

12. [CLIENT] Fixed stupid lingering 'working guy' window bug

Fixed the problem with the 'working' internal frame not being properly
disposed of, and with it being hidden behind existing windows when
created.

13. [CLIENT] Redesigned query dialog

The querybox has been redesigned for clarity and user-friendliness.

The querybox now allows the ownerlist field to be searched on.

14. [SERVER] Optimized memory handling for strings

All strings loaded into the database are now interned(), trading
database load time for memory/runtime efficiency.  Not sure that this
makes a noticeable difference, but it will be of some help.

15. [CLIENT] Fixed dialog placement and sizing errors

The JCenterDialog placement code was broken if the dialog was larger
than the frame parenting it.  All Ganymede dialogs should now always
be entirely visible on screen.

The JCenterDialog's pack() method improperly adjusted the size of
centered dialogs, causing the edges of centered dialogs to be too
small.  All dialogs should now be properly sized on NT as well as
UNIX.

16. [SERVER] Empty strings are considered undefined in StringDBField

The server's required fields logic wasn't detecting an empty string (a
string equal to "" rather than null) as an undefined field, which it
should do and now does.

17. [SERVER] Improved error reporting paths in server

Changed the verifyNewValue() methods in DBField and DBEditObject
to return a ReturnVal so that those methods can pass back detailed
error dialogs to the user.

18. [SERVER/ADMIN CONSOLE] Added more information to admin console

Added a column to the active user table to show how many objects each
user is actively editing, to help track actual use.

Added a column to the task table to show when each task was last run.

-------------------------------------------------------------------------------
Jonathan Abbey				              jonabbey@arlut.utexas.edu
Applied Research Laboratories                 The University of Texas at Austin
-------------------------------------------------------------------------------