Taverna 2.5.0 Server Release Notes
==================================

This is the first release of Taverna 2.5 Server. We welcome feedback
on both the things that are there and the things that are not.

Key Features
------------
 * Runs arbitrary Taverna 2 workflows
   * Based on Taverna 2.4 Workflow Engine
   * Includes support for Components and Interaction processors
 * REST and SOAP interfaces
   * All functionality available through both interfaces
 * Manages files for workflows
   * Make files, read files, delete files
   * Create subdirectories, list directory contents
   * Can download a whole directory structure as a ZIP
 * Tidies up when workflow runs expire
   * Expiry time fully configurable
   * Can force immediate deletion of a workflow run
 * Security
   * Encrypted communication supported
   * Multiple users
     * Users isolated from each other (via sudo)
     * Workflows isolated from server
     * Users may grant access to other users
   * Specify credentials for workflows to access back-end services
 * Notification framework
   * Inform users when workflows terminate
     * Many protocols: Atom feed, email, SMS, Twitter, Jabber
 * Management interface
   * Administrative access to all server's tunable parameters
     * Authenticated web interface, JMX
   * Usage monitoring/accounting
 * General quality improvements
   * Improved robustness
     * State can persist over (limited) server restarts
   * Improved installation
     * Self-contained server package
   * Support for transfer of large data files

Significant Changes
-------------------
 * Now requires Java 7

Planned Future Features
-----------------------
 * Support for Cluster Deployment
 * Full WebDAV access to run working directory
 * Access to Provenance

Specific Issues Addressed in This Release
-----------------------------------------
See http://www.mygrid.org.uk/dev/issues/browse/TAVSERV

TAVSERV-5 Need to detect interactive localworkers
TAVSERV-76 Support user-supplied functionality
TAVSERV-283	Invocation is spelt as invokation in the admin interface
TAVSERV-293	A HEAD or OPTIONS to the wsdl address returns a 500 error
TAVSERV-301 Interaction feed address is not a full URI
TAVSERV-309 Failure in getRunOutputDescription SOAP operation
TAVSERV-310	Support OPTIONS in main interface
---- 2.5.0 release ----
