<?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="apidocs/index.html">JavaDoc (latest)</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>
<p>
The code base is monitored by a Sonar instance running on <a href="https://analysis.apache.org/dashboard/index/72046">analysis.apache.org</a>.
</p>
</section>
<!-- ================================================== -->
<section name="Release Information">
<p>There have not been any official releases yet.</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>
