              Apache Distributed UIMA Cluster Computing (DUCC) Version 2.2.1 README
              

1. Building from the Source Distribution
========================================
     
We use Maven 3.0 for building; download this if needed, 
and set the environment variable MAVEN_OPTS to -Xmx800m -XX:MaxPermSize-256m.
To build UIMA-DUCC, install Java SDK 7.

Maven uses JAVA_HOME to locate the java runtime. Before starting maven build do this:

export JAVA_HOME=<your java dir>


Then build from the directory containing this README by issuing the command
   mvn clean install.
   
This builds everything except the source-release.zip file and DUCC documentation. 
To build the documentation make sure you have LATEX installed and set the
environment variable BUILD_DUCCDOCS=true, or activate the build-duccdocs profile with:

   mvn clean install -Pbuild-duccdocs

To build everything including the source-release.zip and documentation, use:

   mvn clean install -Papache-release,build-duccdocs
   
To setup GPG signing see http://uima.apache.org/one-time-release-setup.html
   
Look for the result in the two artifacts: 
   target/uima-ducc-[version]-source-release.zip (if run with -Papache-release) and
   target/uima-ducc-[version]-bin.tar.gz

For more details, please see http://uima.apache.org/building-uima.html   

   
2. Contents of Apache UIMA DUCC binary distribution
--------------------------------------------------

The Apache UIMA DUCC binary distribution includes
   
  shell scripts:
  --------------

  admin/start_ducc: starts DUCC
  admin/stop_ducc: stops DUCC
  

  documentation:
  --------------
 
  docs/d/duccbok.pdf: UIMA-DUCC documentation (PDF Format)
  docs/d/duccbok.html: UIMA-DUCC documentation (HTML Format)
  
  docs/d/installation.pdf: UIMA-DUCC installation guide (PDF Format)
  docs/d/installation.html: UIMA-DUCC installation guide (HTML Format)

  UIMA DUCC Getting Started can be found online here:
  http://uima.apache.org/doc-uimaducc-whatitam.html
    
 
  examples:
  ---------
 
  examples/ - contains ducc example source code and resources
  
  descriptors:
  ------------
 
  examples/sampleapps/descriptors/ - contains sample descriptor files 

  resources
  -----------
  
  resources/ - contains ducc configuration files
  
  
3. Installation and Setup
=========================

Please refer to the INSTALL document located in the directory containing this README for 
installation instructions.

3.1 Supported Platforms
-----------------------

UIMA-DUCC runtime has been tested with Oracle Java 7 & 8 as well as IBM Java 7 & 8 on Linux. 
The cluster of machines DUCC manages
must all be running a reasonably current level of Linux; other operating systems are not supported.
. 


4. How to Get Involved
======================
The Apache UIMA project really needs and appreciates any contributions, 
including documentation help, source code and feedback.  If you are interested
in contributing, please visit 
http://uima.apache.org/get-involved.html

5. How to Report Issues
=======================
The Apache UIMA project uses JIRA for issue tracking.  Please report any 
issues you find at  http://issues.apache.org/jira/browse/uima
  


Crypto 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:
   
   This distribution includes portions of Apache ActiveMQ, which, in
   turn, is classified as being controlled under ECCN 5D002.
 
