<?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>
We provide documentation in the form of a <a href="userguide.html">User Guide</a>, 
<a href="javadocs/api-release/index.html">Javadoc</a>, and <a href="project-reports.html">Project Reports</a>.
</p>
<p>
The <a href="scm.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.9. You may: </p>
<ul>
<li>Download the <a href="https://commons.apache.org/proper/commons-text/download_text.cgi">current version</a></li>
<li>Read the <a href="RELEASE-NOTES.txt">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.9&lt;/version&gt;
&lt;/dependency&gt;
</pre>
</p>

 <p>
  For information on previous releases see the <a href="changes-report.html">Release History</a>, and to download previous releases see the <a href="https://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>
