How to Contribute
=================
If you are interested in contributing to this project, either by writing code, correcting a bug, or adding a new feature, we would love your help! Below we provide some guidelines on how to contribute.
``FlowCal`` Installation for Developers
---------------------------------------
Regardless of your OS version, we recommend using ``virtualenv`` for development. A short primer on ``virtualenv`` can be found at http://docs.python-guide.org/en/latest/dev/virtualenvs/.
The recommended way to install ``FlowCal`` for development is to run ``python setup.py develop``. This will install ``FlowCal`` in a special "developer" mode. In this mode, a link pointing to the ``FlowCal`` directory is made in the python installation directory, allowing you to import ``FlowCal`` from any python script, while at the same time being able to modify ``FlowCal``'s code and immediately see the resulting effects.
Version Control
---------------
``FlowCal`` uses ``git`` for version control. We try to follow the `git-flow `_ branching model. Please familiarize yourself with such model before contributing. A quick summary of relevant branches is given below.
* ``master`` is only used for final release versions. **Do not** directly commit to ``master``, ever.
* ``develop`` holds unreleased features, which will eventually be released into ``master``.
* *Feature branches* are branches derived from ``develop``, in which new features are committed. When the feature is completed, a merge request towards ``develop`` should be made.
Recommended Workflow
--------------------
A recommended workflow for contributing to ``FlowCal`` is as follows:
1. Report your intended change in the issue tracker on ``github``. If reporting a bug, please be as detailed as possible and try to include the necessary steps to reproduce the problem. If suggesting a feature, indicate if you're willing to write the code for it.
2. Assuming that you decided to write code, clone the repo in your computer. You can use the command ``git clone https://github.com/taborlab/FlowCal`` if you are using the command-line version of ``git``.
3. Switch to the develop branch, using ``git checkout develop``.
4. Create a new feature branch, using ``git checkout -b ``.
5. Set up your virtual environment, if desired.
6. Install ``FlowCal`` in developer mode, using ``python setup.py develop``.
7. Write/test code, commit. Repeat until feature is fully implemented.
8. Push and submit a merge request towards ``develop``.