Title: GettingInvolved

+++<a name="GettingInvolved-GettingInvolved">++++++</a>+++

== Getting Involved

Getting involved with Aries is easy.
First, any help is welcome and we welcome you on board.
Here are some suggestions for how you can get involved in Aries:

* Take a look at the existing modules   to identify what areas you are interested in.
* Take a look at the http://wiki.apache.org/incubator/AriesProposal[Aries proposal]  to see if there are things there that you are interested in but we haven't created subprojects for yet.
If you're not sure whether something is in scope for Aries or not, send a mail to the developers [mailing list|MailingLists]  and ask.
* Try out the link:/documentation/tutorials/blueprinthelloworldtutorial.html[tutorials]  to get a feel for what Aries is about.
* Subscribe to one (or more) of the link:mailinglists.html[mailing lists] . If you want to get involved as a _user_, subscribe to user mailing list.
If you want to get involved as a _contributer_, in the development of Aries, subscribe to the developer list.
* Help answer questions posted to the user mailing list for areas that you are familiar with.
Your real usage experience can be very valuable to other users as well as developers on the project.
* Would like to get involved in development?
Have new ideas?
Start with the mailing list and share your thoughts.
* Contribute to feature development.
Just let the community know what you'd like to work on.
It is as easy as that.
* Identify https://issues.apache.org/jira/browse/ARIES[JIRA] s and browse the https://svn.apache.org/repos/asf/aries/trunk[source]  in the area that you are interested in and provide patches.
* If in doubt about where to start, send a note to the mailing list and mention your area of interest.
Any question is welcomed.
We'd like you to be involved!
