Newer
Older
CiviCRM Developer Guide
=======================
[CiviCRM](https://civicrm.org) is an open-source application. The code can be
poked, prodded, twisted, and hacked. It can be customized, extended, and
collaboratively developed. This documentation tells you how to do that.
It starts with 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 achieve 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.
The guide also includes 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.
Editing & reading offline
-------------------------
- This documentation is made with mkdocs and
[stored in GitHub](https://github.com/civicrm/civicrm-dev-docs)
- See the "[Writing Documentation](documentation.md)" section in this guide
for specific details on editing this documentation (and others using
mkdocs). You can also learn how to read these docs off-line!
Migration of content is in progress
-----------------------------------
As of early 2017 we are actively working to migrate content from the [wiki] to
this guide. Read more about this [migration process][migration], including how
to help out!
[wiki]: http://wiki.civicrm.org/confluence/display/CRMDOC/Develop
[migration]: https://wiki.civicrm.org/confluence/display/CRMDOC/Content+migration+from+wiki+to+Developer+Guide
Other sources of information
------------------------------
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.