IMPORTANT NOTE: BE SURE TO SEE THE SECTION ON 'PASSWORD STORAGE' BELOW,
OTHERWISE YOU MAY BE LOCKED OUT OF THE SYSTEM AFTER THE UPDATE!

This file provides some notes to those performing an upgrade from a v1.x or
v2.x version of Rivendell. It is an attempt to provide some pointers about
things which have changed, but is in no way a substitute for reading the
'INSTALL' file and other documentation!

1) DEPENDENCIES
The set of external packages required to build and run Rivendell has changed
significantly from that required for a 1.x or 2.x system. See 'INSTALL' for
a full list.

2) MPEG SUPPORT
This version of Rivendell includes optional support for MPEG Layer 2 
encoding within the core Rivendell audio library for all classes of audio 
device (JACK and ALSA as well as AudioScience HPI). To make use of this 
feature, it will be necessary to have the appropriate MPEG libraries 
properly installed at both build- and run-time. See 'INSTALL' for the 
specifics.

3) FILE OWNERSHIP AND PERMISSIONS (v1.x only)
Recommended file ownership and permissions for the '/var/snd' directory and 
its contents have changed.  These items should be owned by system user and 
group accounts created specifically for Rivendell; no 'real' user on the 
system should use these accounts.  The Rivendell system user and group 
accounts are specified in the 'AudioOwner=' and 'AudioGroup=' directives in
the '[Identity]' section of rd.conf(5); see 'conf/rd.conf-sample' for an
example.  Permissions for '/var/snd' should be read, write and execute bits
set for User and Group and read, execute for Others (0775), while the contents
should have read, write set for user and group and just read for others (0664).

4) WEB SERVICES
This version of Rivendell makes use of a web services protocol to accomplish
many functions (audio import, export, ripping, etc). These services require
that a CGI-compliant web server be installed and active on the system.  
Any server that complies with CGI-1.1 should work, although as of this writing
only Apache 2.2/2.4 has been well tested. A configuration file snippet for
Apache that will configure the target web services directory (set by the
'--libexecdir=' switch passed to './configure') correctly is generated 
automatically as part of the build process; it can be found in
'conf/rd-bin.conf' after the build is complete.

5) PASSWORD STORAGE (v1.x only)
The method of storing passwords in the database has changed in Rivendell 2.x
and 3.x, requiring that all non-null passwords be reset after performing the
upgrade. This means that it is important that the account used to access
RDAdmin be set to use a null (blank) password *before* applying the update,
otherwise you will not be able to access RDAdmin afterwards!  Once the update
has been applied, passwords should be re-entered for all user accounts in
RDAdmin (including administrative ones) in the usual manner.

6) AUDIO SAMPLE RATE (v1.x only)
The sample rate to be used for the Rivendell audio library is now a single
system-wide setting (found in RDAdmin->SystemSettings); it is no longer
possible to set sample rates individually per module/workstation.  When 
updating the schema, Rivendell will default this to the value previously
configured for RDLibrary on a randomly selected host; since this may or may
not be appropriate for your site, checking this value after the update is 
recommended.

7) RDCATCH CHANGES
Upload and Download events in RDCatch that use the 'file:' protocol now 
require that a username/password for an appropriate shell user account be 
entered.  'Appropriate' here means one with write or read permissions for 
the target file, respectively.

The 'smb:' protocol is no longer supported.

8) Now & Next / PAD Updates
The built-in UDP and RLM PAD transmission subsystems found in previous
Rivendell versions have been replaced with a Python 3 based scripting
system known as 'PyPAD'. Documentation for the full API can be found
by entering the following at a Python 3 interactive prompt:

   import pypad
   help(pypad)

A heavily commented sample script can also be found at
'apis/pypad/tests/now_and_next.py' in the source tree.

The following RLMs that were previously shipped with Rivendell 2.x have
been ported to PyPAD:

--------------------------------------------------------------------------
|  RLM Plug-in        |  PyPAD Script       |  Remarks                   |
--------------------------------------------------------------------------
| rlm_ando            | pypad_ando.py       |                            |
| rlm_filewrite       | pypad_filewrite.py  |                            |
| rlm_icecast2        | pypad_icecast2.py   |                            |
| rlm_inno713         | pypad_inno713.py    |                            |
| rlm_liqcomp         | pypad_liqcomp.py    |                            |
| rlm_live365         | pypad_live365.py    |                            |
| rlm_serial          | pypad_serial.py     |                            |
| rlm_shoutcast1      | pypad_shoutcast1.py |                            |
| rlm_spinitroni_plus | pypad_spinitron.py  | Supports Spinitron v2 only |
| rlm_spottrap        | pypad_spottrap.py   |                            |
| rlm_tunein          | pypad_tunein.py     |                            |
| rlm_udp             | pypad_udp.py        |                            |
| rlm_urlwrite        | pypad_urlwrite.py   |                            |
| rlm_walltime        | pypad_walltime.py   |                            |
|                     | pypad_xcmd.py       | New in Rivendell 3.0       |
| rlm_xds             | pypad_xds.py        |                            |
| rlm_xmpad           | pypad_xmpad.py      |                            |
--------------------------------------------------------------------------

With one exception, the configuration files for all of the above RLMs
are forward compatibile with the successor PyPAD script. To apply the
configuration, simply copy/paste the contents of the RLM configuration file
into the Configuration box when creating the PyPAD instance in rdadmin(1).
(See the Operations Guide for information on creating and modifying PyPAD
instances).

The single exception is the 'pypad_spinitron.py' script. Since this script
supports only v2 of the Spinitron API, configuration parameters that apply
only to the v1 API ('MajorVersion=', 'Station=' and 'Password=') are ignored.
With these execptions, the RLM configuration is fully forward compatible.

9) MULTICAST DATA
This version of Rivendell includes a new system for providing real-time
status updates between Rivendell modules by means of multicast network
packets. The default subscription address for these updates is
239.192.255.72 (administratively scoped), but can be customized in
RDAdmin->SystemsSettings if necessary.

This means that all Rivendell hosts sharing a common database must
be able to communicate via the specified multicast group. For typical
installations (stand-alone, or networked with all hosts residing on a
common TCP/IP subnet), this should 'just work', but those sites employing
hosts on disparate TCP/IP networks (multiple subnets, WAN links, etc) may
need to provision an appropriate multicast routing infrastructure.

10) DATABASE MANAGEMENT
This version of Rivendell splits off database management tasks (creating,
updating, backing up and restoration) from rdadmin(1). Simple management
tasks can be done with the rddbconfig(8) GUI utility (available on the
Rivendell->Configuration desktop menu), while advanced functionality is
available in the rddbmgr(8) command-line utility (do 'man 8 rddbmgr' for
full documentation). The functions of the rdrevert(8) and rddbcheck(8)
utilites have also been subsumed into rddbmgr(8).

11) ARTIST SEPARATION
This version of Rivendell moves artist separation in rdlogmanager(1) from
clocks to events. The artist separation value from Rivendell 2.x is still
visible in the EditClock->SchedulerRules dialog but will not be used
by the "Generate Log" scheduler. New artist separation values will have
to be entered into each event.
