[CiviCRM](https://civicrm.org) is an open-source application. The code can be
[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.
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
It starts with a high level introduction to get you familiar with CiviCRM development. It covers setting up your development environment, checking whether or not you actually need to implement your own custom code (i.e. you can't achieve what you want through configuration or installing an already existing extension), best practice ways to extend CiviCRM (a.k.a. how to write an extension), things you should know before you start hacking on core, and best practice for testing.
with CiviCRM development. It covers setting up your development environment,
checking whether or not you actually need to implement your own custom code (i.e. you can't achieve what you
want through configuration or installing an already existing extension), best
practice ways to extend CiviCRM (a.k.a. how to write an extension), 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
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.
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
## Editing & reading offline
- This documentation is made with mkdocs and
- This documentation is made with mkdocs and [stored in GitHub](https://github.com/civicrm/civicrm-dev-docs).
[stored in GitHub](https://github.com/civicrm/civicrm-dev-docs)
- See the "[Writing Documentation](/documentation/index.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!
- See the "[Writing Documentation](/documentation/index.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!