This project upgrades the xscreensaver code base from the open source upstream
from 4.05 to 5.0.   The increment in major version number is not due to major
incompatibilities but to the major feature addition of native MacOS X support.

It also includes a couple of other updates that have been accumulating.

Sun's xscreensaver uses the display modes from the open source xscreensaver
mostly unmodified (a bit of censorship is applied for some things that users
may find offensive or which our lawyers may find risky), but modifies the core
driver program quite a bit to add support for accessibility via a GTK+ UI, to
correct the PAM implementation, and make several other changes not accepted by
the upstream maintainer.

This ARC review also converts xscreensaver stability statements to the new
Taxonomy and incorporates several additional changes being made to xscreensaver
as well.   This case requests a minor release binding for all portions except
the few noted as applying to a patch release.

  ---------------------------------------------------------------------------

Changes from upstream:

The xscreensaver-command CLI has been modified to remove the commands
-throttle and -unthrottle.

The man page description of these commands was:

     -throttle
             Temporarily switch to  ``blank  screen''  mode,  and
             don't  run  any  display  modes  at  all,  until the
             screensaver is next de-activated.  This is useful if
             you're  using  a machine remotely, and you find that
             some display modes are using too much CPU.

             (If you want to do this permanently,  that  is,  you
             want  the  screen saver to only blank the screen and
             not run demos at all, then set the programs resource
             to an empty list:  See xscreensaver(1) for details.)

     -unthrottle
             Turn  `-throttle'  mode  off   and   resume   normal
             behavior.

The replacement functionality listed in the new man page is:

     If xscreensaver is running, but you want it to stop  running
     screen  hacks  (e.g., if you are logged in remotely, and you
     want the console to remain locked but just be black, with no
     graphics  processes running) you can accomplish that by sim-
     ply powering down the monitor remotely.  In a minute or  so,
     xscreensaver  will  notice that the monitor is off, and will
     stop running screen hacks.  You can power  off  the  monitor
     like so:

          xset dpms force off

     See the xset(1) manual for more info.

xscreensaver-demo no longer supports the --crapplet flag for embedding in
the GNOME 1.x Control Center.   Use as a GNOME 2.x preference panel continues
to work unchanged.

A number of new display "hacks" have been added - since those are 
architectually uninteresting and Project Private, they are not detailed here.

  ---------------------------------------------------------------------------

Installation location:

This case follows the precedent set in PSARC 2004/187 and migrates xscreensaver
from /usr/openwin to /usr/X11.   Symbolic links will be left in 
/usr/openwin/bin for the xscreensaver commands and from 
/usr/openwin/lib/xscreensaver to /usr/X11/lib/xscreensaver (though nothing
outside the xscreensaver project should be using the private interfaces in
that directory).

  ---------------------------------------------------------------------------

Smartcard support:

xscreensaver currently uses the SCF API to detect smartcard removal and perform
a screen lock at that time.   PSARC 2004/678 has EOF'ed the SCF API so this
functionality will be removed from xscreensaver.   By agreement with the 
smartcard development team, the SCF replacement project will be responsible 
for calling xscreensaver-command -lock to lock the screen when needed,
instead of modifying xscreensaver to monitor the smartcard.   (The Sun Ray
smartcard framework already does this.)

This case declares the smartcard support Obsolete in a Patch Release, and 
allows removal in a Minor Release.   (Under the new taxonomy, I am calling
this "Obsolete Uncommitted" though there was no specific stability given to
the smartcard functionality in past cases.)

Since the proposed replacement and a number of other consumers use or will 
use xscreensaver-command -lock to lock the screen, but none have requested 
contracts, this case accepts the obvious conclusion that this functionality
is an interface that needs to be provided at a higher stability level than
External/Volatile and raises it to Uncommitted.

  ---------------------------------------------------------------------------

Auditing:

Xscreensaver will audit screen lock and unlock in the same manner as xlock
already does.   A contract will be signed with the audit group using the
same terms as the xlock/audit contract PSARC/2000/517/contract-03.

Addition of auditing support will have a patch release binding.

  ---------------------------------------------------------------------------

Root ability to unlock:

Xscreensaver has previously hardcoded allowing the user named "root" to 
unlock the system.   A resource will be added to the xscreensaver
configuration file named "allowRoot" which takes a value of True to allow
this, or False to only allow the logged-in user to unlock.   If running in
a Trusted Extensions desktop, this resource will be ignored and root will
never be allowed to unlock the session.   (Since there have been no releases
of Trusted Extensions or Trusted JDS so far, there is no compatibility to 
preserve.)

Addition of this resource will have a patch release binding.

The default value of this resource in any patch release will be set to True,
preserving current behaviour when installing patches.

The default value of this resource in any minor releases it is delivered in
will be set to False, requiring users who need the current behaviour to 
change the default setting.   

  ---------------------------------------------------------------------------

Future direction:

Long term, the stated goal of the Desktop C-Team is to move from xscreensaver
to gnome-screensaver for the JDS screen lock functionality.   However, since
gnome-screensaver does not yet work on Solaris, xscreensaver remains the JDS
desktop screen lock provider for the near-term.

  ---------------------------------------------------------------------------

Imported interfaces:

Interface                               Stability	Comments
----------                              ---------	--------
xscreensaver CLI (see man page)         External	LSARC 2001/121
xscreensaver-command CLI (see man page) External	LSARC 2001/121
xscreensaver-demo CLI (see man page)    External	LSARC 2001/121
xscreensaver graphics applications      External	LSARC 2001/121
/usr/openwin/lib/xscreensaver           Stable		LSARC 2001/121

Auditing interfaces			Contracted
					 Proj. Private	PSARC 2000/517

/usr/X11 hierarchy			Stable		PSARC 2004/187

GTK+, Glib, Pango, ATK			Evolving	LSARC 2004/713
at-spi, login-helper			External	LSARC 2004/713

Exported interfaces:
--------------------
xscreensaver CLI		        Volatile	was External
xscreensaver-command -lock		Uncommitted	was External
rest of xscreensaver-command CLI	Volatile	was External
xscreensaver-demo CLI			Volatile	was External
xscreensaver graphics applications      Project Private	was External

/usr/openwin/bin/xscreensaver*          Obsolete External  Replaced by symlink
/usr/X11/bin/xscreensaver*           	Stable		Pathnames only

/usr/openwin/lib/xscreensaver           Obsolete Stable	Replaced by symlink
/usr/X11/lib/xscreensaver           	Stable		Pathname only
/usr/X11/lib/xscreensaver           	Project Private	Contents

SCF smartcard support in xscreensaver	Obsolete 
					 Uncommitted	Patch Release binding
SCF smartcard support in xscreensaver	Removed		Minor Release binding

allowRoot				Uncomitted
