Development Processes
===========================
Bug Tracker
----------------
You can find our bug tracker at: ``_.
Mailing List
------------------
We do not have a public developer mailing list (yet).
You can reach the ChildCount+ developers on our internal
mailing list at dev at mvpafrica dot org.
Repo and Branches
------------------------
**Repositories**
The ChildCount+ code repository is online here:
``_
The installation and server configuration files for
ChildCount+ installations are online here:
``_
**Stages and Versions**
Different versions of the ChildCount+ code often require different
server configurations.
We refer to each successive server configuration as a "stage"
while each release of the source code is a "version."
We use letters (A, B, C, ...) to refer to stages,
and numbers (0, 1, 2, ...) to refer to versions.
The version numbers reset with each stage.
So, if the latest code is ``stageE-v1`` and a developer
creates a release that does not require changes to the
server configuration, the next release will be ``stageE-v2``.
Afterwards, if the next release does require changes to
the configuration files, the release tag will be ``stageF-v0``.
**Branches**
The ChildCount+ code repository has two
two main branches: `ccdev `_ and
`ccstable `_.
If a software developer wants to create a new ChildCount+ feature, the process
generally goes like this:
#. Developer creates a new branch from ``ccdev``, let's call
this branch
``twitter`` and pretend that it adds some `Twitter `_
functionality to ChildCount+.
#. Developer does the work on the ``twitter`` branch, merging
changes from ``ccdev`` into ``twitter`` to make sure that
``twitter`` stays current.
#. When the developer is satisfied that the Twitter feature works
as hoped, she merges ``twitter`` into the ``ccdev`` branch.
#. Every few months, the release developer merges all of the changes
from ``ccdev`` into ``ccstable``.
The release developer tests all of these features and makes sure
that the translations and localization works properly for
French- and Tigrinya-speaking sites.
#. The release developer adds a git tag of the format ``stageX-vY``
(where ``X`` is the stage code and ``Y`` is the version number)
to the ``ccstable`` branch.
#. If a new stage is being created:
The release developer writes up a textual description of how to
update the server to accommodate the new code and posts it
on ``_.
#. The release developer pushes the ``ccstable`` code out to the
sites. In MVP lingo, this is a "stage".
Documentation
-------------------
This documentation is hosted on `GitHub `_
and is created using `Sphinx `_.
We develop the documentation on the ``ccdev`` branch, then
built HTML documentation files into the root of the
``gh-pages`` branch.
The ``gh-pages`` branch
is a special branch for the `GitHub Pages `_
feature. Files pushed there end up being served at
``_.
The documentation mirror at ``_
should copy the documentation from ``_
after every commit to the GitHub repository.
Who to Contact
-------------------
The best way to get in touch with the ChildCount+ Developers
is to look for the contact information
listed on ``_.
Those contacts are the most likely to be up to date.
You can also catch us at `@childcount `_.