CiviCRM is an open-source application which can be poked, prodded, twisted,
and hacked. It can be customized (with minimal code skills), extended (for
add-ons and integrations), and collaboratively developed.
CiviCRM is an open-source application. The code can poked, prodded, twisted, and hacked. It can be customized, extended, and collaboratively developed. This documentation tells you how to do that.
<table>
<tbody>
<tr>
<td><ahref="requirements">Requirements</a></td>
<td>Get the tools you need</td>
</tr>
<tr>
<td><ahref="build">Git Install</a></td>
<td>Install the latest code from git</td>
</tr>
<tr>
<td><ahref="customize">Customize</a></td>
<td>Change your site without coding</td>
</tr>
<tr>
<td><ahref="extend">Extend</a></td>
<td>Create an add-on or integration</td>
</tr>
<tr>
<td><ahref="develop">Develop</a></td>
<td>Create a feature or fix for CiviCRM</td>
</tr>
<tr>
<td><ahref="testing">Testing</a></td>
<td>Make it good</td>
</tr>
<tr>
<td><ahref="reference">Reference</a></td>
<td>Dig into the nitty-gritty</td>
</tr>
</tbody>
</table>
It starts with a ***guide*** - a high level introduction to get you familiar with CiviCRM development. It covers setting up your developer environment, ensuring that you really need to start coding (i.e. you can't acheive what you want thought configuration or installing an already existing extension), best practice ways to extend CiviCRM (aka how to write an extensions), things you should know before you start hacking on core, and best practice for testing.
These documents are a work in progress. You may find things in the <ahref="http://wiki.civicrm.org/confluence/display/CRMDOC/Develop"target="_blank">wiki</a> that are not documented here.
The guide is followed by detailed ***references*** for tools and subsystems of CiviCRM. These cover topics like the API and hook system and are intended for use by people that are familiar with CiviCRM development.
<h1>Collaborate</h1>
These documents are a work in progress. You may find things in the [wiki](http://wiki.civicrm.org/confluence/display/CRMDOC/Develop) that are not documented here.
As an open-source project, CiviCRM is managed by an international community
of developers and activists. If you have questions, issues, or want to make
As an open-source project, CiviCRM is managed by an international community of developers and activists. Help from these people can be found in the following ways:
* Our [chat rooms](https://chat.civicrm.org/) and [mailing lists](http://lists.civicrm.org/lists/info/civicrm-dev) are great places to say hello and discuss CiviCRM issues with others.
* If you need help, your best bet is probably our [stack exchange Q+A site](http://civicrm.stackexchange.com/).
* If you've identified a problem, you can file issues on our [issue](http://issues.civicrm.org/) on our issue tracker or fix the issue and submit a pull request on [Github](https://github.com/civicrm/civicrm-core/).
* If you've written an extension, please share it in our [extensions directory](https://civicrm.org).
* Use the [wiki](http://wiki.civicrm.org/confluence/display/CRM/CiviCRM+Wiki) to share drafts, notes, and specs
* And don't forget you are always welcome to come to a [real world event](https://civicrm.org/events) like a conference meet-up or sprint.