= Welcome to the Apache Shiro Community!
:jbake-date: 2010-03-18 00:00:00
:jbake-type: page
:jbake-status: published
:jbake-tags: community
:idprefix:

We have a great user and developer community and hope that you become an active participant.

Our community is here to help you learn about Shiro, figure out how to do what you need, identify and fix any bugs, and improve Shiro so that it continues to be a powerful and useful software project.

* *link:forums.html[Community Forums]* - Need help? For users that prefer to use forums over mailing lists, we use Nabble

* *link:mailing-lists.html[Mailing Lists]* - Need help, but hate forums? Lists for Users, Developers and Committers!

* *link:articles.html[Articles]* - Read up on the latest discussions, guides, and how-tos created by members of our community

* *link:news.html[News]* - Stay up to date on the latest Shiro news

* *link:events.html[Events]* - Check out the next Shiro events and see if there's something near you to attend

== Contribute and Commit!

Apache Shiro is a non-profit project and relies on your help and contributions in order to evolve and improve.

At the Shiro project we make it easy for anyone to join our great community and lend a hand. We welcome any help you can offer inlcuding help with documentation, identifying bugs, providing answers on the user mailing list, and providing helpful code improvements.

* *link:how-to-contribute.html[How to Contribute]* - Join our community and help make Apache Shiro even better

* *link:developer-resources.html[Developer Resources]* - Helpful information for anyone providing project help as a committer or contributor

* *https://issues.apache.org/jira/issues/?jql=project%20%3D%20SHIRO%20AND%20status%20%3D%20Open%20ORDER%20BY%20priority%20DESC[Issue Tracker]* - Once you're ready to contribute, this is a good place to see what needs to get done

* *http://www.apache.org/foundation/sponsorship.html[Donate to ASF]* - Shiro is a project under the Apache Software Foundation, a non-profit that relies on donations and community support
