<html>
  <!--
   ***************************************************************
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
   *   http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing,
   * software distributed under the License is distributed on an
   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   * KIND, either express or implied.  See the License for the
   * specific language governing permissions and limitations
   * under the License.
   ***************************************************************
   -->

<head>
  <title>Apache UIMA Ruta v2.3.0 Release Notes</title>
</head>
<body>
<h1>Apache UIMA&#8482; Ruta v2.3.0 Release Notes</h1>

<h2>Contents</h2>
<p>
<a href="#what.is.uima-as">1. What is UIMA Ruta</a><br/>
<a href="#major.changes">2. Major Changes in this Release</a><br/>
<a href="#get.involved">3. How to Get Involved</a><br/>
<a href="#report.issues">4. How to Report Issues</a><br/>
<a href="#list.issues">5. List of JIRA Issues Fixed in this Release</a>
</p>  
   
<h2><a name="what.is.uima-as">1. What is UIMA Ruta?</a></h2>

     <p>
  			Apache UIMA&#8482; Ruta is a rule-based script language supported by Eclipse-based tooling.
      The language is designed to enable rapid development of text processing applications within UIMA. 
      A special focus lies on the intuitive and flexible domain specific language for defining 
      patterns of annotations. The Eclipse-based tooling for Ruta, called the Ruta Workbench,
      was created to support the user and to facilitate every step when writing Ruta rules. Both the 
      Ruta rule language and the Ruta Workbench integrate smoothly with Apache UIMA.
			</p>

<h2><a name="major.changes">2. Major Changes in this Release</a></h2>
<p>
  This release requires an update of script projects and its descriptors, 
  e.g, in the UIMA Ruta Workbench by deleting all descriptors and updating the script project.
  Right-click on a project and select "UIMA Ruta -> Convert to UIMA Ruta project"
</p>
<p>
<h3>UIMA Ruta Language and Analysis Engine:</h3>
<ul>
  <li>
    Requires Java 7
  </li>
  <li>
    Maven Plugin for UIMA Ruta
  </li>
  <li>
    Extensions and simplifications of the language (external resources, null values, more syntactic sugar)
  </li>
  <li>
    Improvements to Analysis Engines (RutaEngine, HtmlConverter)
  </li>
  <li>
    More exemplary script projects
  </li>
  <li>
    Many, many bug fixes
  </li>
 </ul>
<h3>UIMA Ruta Workbench:</h3>
 <ul>
  <li>
    Requires Java 7
  </li>
  <li>
    Works now also in other project structures (Maven projects)
  </li>
  <li>
    Bug fixes
  </li>
 </ul>
</p>
<p>
Please see the <a href="README">README</a> for further information. 
</p> 
  
  
<h2><a name="get.involved">3. How to Get Involved</a></h2>
<p>
The Apache UIMA Ruta project really needs and appreciates any contributions, 
including documentation help, source code and feedback.  If you are interested
in contributing, please visit 
<a href="http://uima.apache.org/get-involved.html">
  http://uima.apache.org/get-involved.html</a>.
</p>
  
<h2><a name="report.issues">4. How to Report Issues</a></h2>
<p>
The Apache UIMA project uses JIRA for issue tracking.  Please report any 
issues you find at 
<a href="http://issues.apache.org/jira/browse/uima">http://issues.apache.org/jira/browse/uima</a>
</p>
  
<h2><a name="list.issues">5. List of JIRA Issues Fixed in this Release</a></h2>

Click <a href="issuesFixed/jira-report.html">issuesFixed/jira-report.html</a> for the list of 
issues fixed in this release.

</body>
</html>