VCL 2.5.1

I. Intro and Description

VCL, Virtual Computing Lab. The VCL can be many things, first and foremost it is
an open-source system used to dynamically provision and broker remote access to
a dedicated compute environment for an end-user. The provisioned computers are
typically housed in a data center and may be physical blade servers, traditional
rack mounted servers, or virtual machines. VCL can also broker access to
standalone machines such as a lab computers on a university campus.

One of the primary goals of VCL is to deliver a dedicated compute environment to
a user for a limited time through a web interface. This compute environment can
range from something as simple as a virtual machine running productivity
software to a machine room blade running high end software (i.e. a CAD, GIS,
statistical package or an Enterprise level application) to a cluster of
interconnected physical (bare metal) compute nodes.

Also using the scheduling API, it can be used to automate the provisioning of
servers in a server farm or HPC cluster.

II. Notable Changes

This is primarily a bug fix release. However, the following are some 
changes worth highlighting.

* PHP code updated to work with PHP 7.x.
* Rudimentary NFS file share mounting extended to work with Windows
* Added method for using HTML in user emails through external script

=================================

III. Getting Involved in the ASF VCL Community

There are five ways to become involved in the ASF VCL community.

* Join the mailing lists and participate in discussion
  There are two mailing lists: user@vcl.apache.org and dev@vcl.apache.org.
  To join user, send an empty message to user-subscribe@vcl.apache.org.
  To join dev, send an empty message to dev-subscribe@vcl.apache.org.

* Submit bug reports and feature requests to our JIRA bug tracking system.
  See section IV below for more information on doing this.

* Create documentation on our Confluence site. Create an account at
  http://cwiki.apache.org/confluence/display/VCL/Index and just start adding
  content. (Note to current community: We should create a page explaining
  the layout so new people will know where to add content better.)

* Submit patches through the dev mailing list and via the JIRA bug
  tracking system. Once you have become familiar with VCL, you can begin
  assisting with the development of it by picking a JIRA issue to fix or by
  adding a feature needed at your site. Then, contribute a patch of your
  changes through the JIRA tracking system and send a message to the dev
  list explaining what you have done.

* Become an official committer to the project. Once you have shown that you have
  a good grasp of the project by submitting patches, you can further join the
  development work by submitting a contributor license agreement (CLA) to ASF
  and having a committer account created to directly contribute code to the
  project.

* If you are interested in contributing something to the project, please discuss
  it on the dev list BEFORE starting work on it. This allows the community
  to be involved in decisions and allows current developers to provide some
  guidance.

IV. How to Submit Bugs and Feature Requests

If you find a bug, please submit a bug report to our JIRA bug tracking system at
http://issues.apache.org/jira/browse/VCL (you will need to set up an account
there if you haven't already done so - it's free to anyone). If it is a security
bug, do not open a JIRA issue. Instead report it in an email to
security@apache.org.

If you would like to requrest a new feature, you can also submit that in the
same way through JIRA (just select "New Feature" or "Improvement" as the Issue
Type).

After you have created a JIRA issue, you have the option to vote on it to help
us know how to prioritize issues. You can also "watch" the issue to see when
activity related to it is submitted.
