*[Developer Guide](https://docs.civicrm.org/dev/en/master/)*(which you are reading now!)*
The content for each of these guides is written in markdown, stored in text files, and hosted on GitHub.
### How to edit
1. Obtain the source files for the guide you want to edit
1. Find the repository on GitHub (e.g. here is [the repo for this guide](https://github.com/civicrm/civicrm-dev-docs))
1. Fork and clone locally. (For more help with Git and GitHub see [Git](git))
1. Install mkdocs on your machine.
1. For Ubuntu
sudo apt-get install python-pip python-wheel
sudo pip install mkdocs
1. For other platforms, follow instructions on [mkdocs.org](http://www.mkdocs.org)
1. Launch a local copy of the guide
1. Run:
cd civicrm-dev-docs
mkdocs serve
* If you get `[Errno 98] Address already in use` then try something like
`mkdocs serve -a localhost:8001`
1. Go to `http://localhost:8000` to view
1. Edit, commit, push, submit pull request
### Formatting
See [Markdown](markdownrules) for formatting syntax within mkdocs.
## Documentation in the wiki
The [CiviCRM wiki](https://wiki.civicrm.org/confluence/display/CRMDOC/CiviCRM+Documentation) has lots of great info but is slowly falling out of use in favor of mkdocs.
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.
## Overview
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.
[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 ***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 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 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.
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.
## 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!
## Caveats
* 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.
<h1>Other sources of information</h1>
# 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:
In order for your CiviCRM extension to be compliant, you must provide a minimal extension documentation, written in [Markdown](https://guides.github.com/features/mastering-markdown/) language.