              Apache Distributed UIMA Cluster Computing (DUCC) Version 1.0.0 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 6 or later.

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 documentation make sure you have LATEX installed and change the command to:

   mvn clean install -Pbuild-duccdocs

To build everything including the ...source-release.zip, change the command to 

   mvn clean install -Papache-release
   
The above also builds DUCC documentation.   
   
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 has been tested with Sun Java 6 as well as IBM Java 6 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.
 
