<?xml version="1.0"?>
<!--
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.
-->
<document>
 <properties>
  <title>Home</title>
  <author email="dev@commons.apache.org">Commons Documentation Team</author>
 </properties>
<body>
<!-- ================================================== -->
<section name="Commons Text">

<p>
Apache Commons Text is a library focused on algorithms working on strings.
</p>

</section>
<!-- ================================================== -->
<section name="Documentation">
<p>
The package descriptions in the <a href="javadocs/api-release/index.html">JavaDoc</a> give an overview of the available features
and various <a href="project-reports.html">project reports</a> are provided.
</p>
<p>
The <a href="source-repository.html">Git repository</a> can be
<a href="https://git-wip-us.apache.org/repos/asf?p=commons-text.git">browsed</a>, or you can browse/contribute via <a href="https://github.com/apache/commons-text">GitHub</a>.
</p>
</section>
<!-- ================================================== -->
<section name="Release Information">
<p>The latest stable release of Text is 1.2. You may: </p>
<ul>
<li>Download <a href="http://commons.apache.org/proper/commons-text/download_text.cgi">1.2</a></li>
<li>Read the <a href="release-notes/RELEASE-NOTES-1.2.txt">1.2 release notes</a></li>
</ul>
<p>
Alternatively you can pull it from the central Maven repositories:
<pre>
&lt;dependency&gt;
   &lt;groupId&gt;org.apache.commons&lt;/groupId&gt;
   &lt;artifactId&gt;commons-text&lt;/artifactId&gt;
   &lt;version&gt;1.2&lt;/version&gt;
&lt;/dependency&gt;
</pre>
</p>

 <p>
  For information on previous releases see the <a href="release-history.html">Release History</a>, and to download previous releases see the <a href="http://archive.apache.org/dist/commons/text/">Commons Text Archive</a>.
 </p>

</section>
<!-- ================================================== -->
<section name="Getting Involved">
<p>
The <a href="mail-lists.html">commons developer mailing list</a> is the main channel of communication for contributors. Please remember that the lists are shared between all commons components, so prefix your email by [text]. </p>
<p>You can also visit the #apache-commons IRC channel on irc.freenode.net or peruse <a href="issue-tracking.html">JIRA</a>. Specific links of interest for JIRA are:</p>
<ul>
<li>Ideas looking for code: <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20TEXT%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%22Patch%20Needed%22%20ORDER%20BY%20priority%20DESC">Patch Needed</a></li>
<li>Issues with patches, looking for reviews: <a href="https://issues.apache.org/jira/issues/?jql=fixVersion%20%3D%20%22Review%20Patch%22%20AND%20project%20%3D%20TEXT%20AND%20resolution%20%3D%20Unresolved%20ORDER%20BY%20priority%20DESC">Review Patch</a></li>
</ul>
<p>Alternatively you can go through the <em>Needs Work</em> tags in the <a href="taglist.html">TagList report</a>.</p>
<p>If you'd like to offer up pull requests via GitHub rather than applying patches to JIRA, we have a <a href="https://github.com/apache/commons-text/">GitHub mirror</a>. </p>
</section>
<!-- ================================================== -->
<section name="Support">
<p>
The <a href="mail-lists.html">commons mailing lists</a> act as the main support forum.
The user list is suitable for most library usage queries.
The dev list is intended for the development discussion.
Please remember that the lists are shared between all commons components,
so prefix your email by [text].
</p>
<p>
Bug reports and enhancements are also welcomed via the <a href="issue-tracking.html">JIRA</a> issue tracker.
Please read the instructions carefully.
</p>
</section>
<!-- ================================================== -->
</body>
</document>
