Apache Whirr
------------
Whirr is a set of libraries for running cloud services.

Release notes are in src/site/xdoc/release-notes.xml.

Website: http://incubator.apache.org/whirr
Quick start: http://incubator.apache.org/whirr/quick-start-guide.html

Cryptographic Software Notice
-----------------------------
This distribution includes cryptographic software.  The country in 
which you currently reside may have restrictions on the import, 
possession, use, and/or re-export to another country, of 
encryption software.  BEFORE using any encryption software, please 
check your country's laws, regulations and policies concerning the
import, possession, or use, and re-export of encryption software, to 
see if this is permitted.  See <http://www.wassenaar.org/> for more
information.

The U.S. Government Department of Commerce, Bureau of Industry and
Security (BIS), has classified this software as Export Commodity 
Control Number (ECCN) 5D002.C.1, which includes information security
software using or performing cryptographic functions with asymmetric
algorithms.  The form and manner of this Apache Software Foundation
distribution makes it eligible for export under the License Exception
ENC Technology Software Unrestricted (TSU) exception (see the BIS 
Export Administration Regulations, Section 740.13) for both object 
code and source code.

The following provides more details on the included cryptographic
software:

  Whirr requires the JSch library for SSH support:
    http://www.jcraft.com/jsch/index.html

  Whirr requires Not-Yet-Commons-SSL for SSH keypair checking:
    http://juliusdavies.ca/commons-ssl/

  The jclouds enterprise module requires the BouncyCastle Java cryptography APIs:
    http://www.bouncycastle.org/java.html
  
  Export classifications and source links can be found
  at http://www.apache.org/licenses/exports/.

