.. _developer-guidelines:

====================
Developer Guidelines
====================

This document provides guidance for individuals contributing to the MARBL project.
The MARBL code is hosted on github at `https://github.com/marbl-ecosys/MARBL <https://github.com/marbl-ecosys/MARBL>`_.

--------------------
Repository Structure
--------------------

Users interested in developing new features should fork the repository into their own github account and make branches off ``development``.
Submit a pull request back to ``development`` when your modifications are complete.
The ``stable`` branch in the MARBL repository contains code from scientifically-vetted releases.

-----------------------------------------
Publishing research with development code
-----------------------------------------

Your contributions to the MARBL project will likely be used by others on the development team.
This section aims to ensure that authors receive appropriate credit for contributions to the MARBL code base.
Publishing work based on MARBL development code is encouraged; however, this project relies on contributions from a broad group and people deserve appropriate recognition for their intellectual efforts.

You are expected to communicate publication plans to other members of the MARBL development team if your work involves their contributions.

You must offer co-authorship (or other mutually agreed upon recognition) on papers or other scientific communications to authors of MARBL development code if that code meets all of the following conditions:

   - The research used the code by invoking it at run time;

   - The code impacted solutions, such that results and/or conclusions would differ without it; and

   - The code was not available on ``stable`` or a release branch.

MARBL code that has been released is not subject to these restrictions.

------------
Mailing List
------------

We recommend signing up for the `MARBL developer's mailing list <https://groups.google.com/forum/#!forum/marbl-dev>`_.
This mailing list is used by the repository administrators to send out announcements about changes to the repository that may effect development.
We also encourage developers to use the list to ask questions about the code or to communicate with each other about projects that could benefit from collaboration.