******************************* Apache Trafodion *******************************

Apache Trafodion is a webscale SQL-on-Hadoop solution enabling transactional or 
operational workloads on Hadoop.  The name "Trafodion" (the Welsh word for 
transactions, pronounced "Tra-vod-eee-on") was chosen specifically to emphasize 
the differentiation that Trafodion provides in closing a critical gap in the 
Hadoop ecosystem. Trafodion builds on the scalability, elasticity, and 
flexibility of Hadoop. Trafodion extends Hadoop to provide guaranteed 
transactional integrity, enabling new kinds of big data applications to run on 
Hadoop.

To get started using Apache Trafodion: 

  - documentation for this release can be viewed on the Apache Trafodion 
    wiki page: 
      http://trafodion.incubator.apache.org/documentation.html

  - release notes describing changes for particular releases can be viewed:
      http://trafodion.apache.org/release-notes.html

  - the latest Apache Trafodion can be downloaded from Apache incubator
    distribution site or accessed from git

    - download site:
      https://dist.apache.org/repos/dist/release/incubator/trafodion

    - git site:
      git@github.com:apache/incubator-trafodion  

  - To build and try out Apache Trafodion, please following our build 
    instructions as described:
      https://cwiki.apache.org/confluence/display/TRAFODION/Trafodion+Contributor+Guide

=============================
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:

The product includes OpenSSL libraries which can be used by the product to 
encode and decode passwords through the connectivity interface.

Apache Trafodion is distributed under the terms of the Apache License, Version 2.0.
