Contributing
============

The dbprocessing team welcomes contributions. Bug reports, feature
requests, and other feedback are welcome via
<https://github.com/spacepy/dbprocessing/issues>. When creating an
issue, a template is provided to assist in capturing all the
information needed.

If you are unsure whether something is a bug, would like support with
your use case, or just for general less-structured help, open a
conversation at
<https://github.com/spacepy/dbprocessing/discussions>. From these
discussions the dbprocessing team can assist in formalizing issues.

To submit changes to code or documentation, open a pull request at
<https://github.com/spacepy/dbprocessing/pulls>. Pull requests also
have templates to help with the structure. If you are planning a
particularly major change, please first open an issue for scoping and design
at <https://github.com/spacepy/dbprocessing/issues>. Label with
``enhancement`` and, if you have questions about implementation, also
with ``question``.

Reviews and comments on others' pull requests and issues are also
invited.

The dbprocessing documentation contains extensive guidance on
development, including standards for code formatting, testing, and
commit messages. The documentation is available in this repository at
:doc:`developer/index` and on the web at
<https://spacepy.github.io/dbprocessing/developer/>. Developers are
happy to assist in developing code to these standards; please do not
be offended if changes to your PR are requested. These standards are
also updated via pull request.

Becoming a developer
--------------------
Developers must have at least three accepted pull requests (two in the
previous twelve months) and at least two reviews of pull requests
submitted by others (two in the previous twelve months.)

PRs and reviews must be substantive, as determined at the discretion
of current developers. Documentation enhancements may count as
substantive: developers may contribute primarily through
documentation.

These technical standards are minimums; developers must show
consistent technical quality and adherence to project policies,
including the Code of Conduct.

To request developer access, open an issue using the developer request
template. Existing developers will review the application; this will
take a minimum of one week to allow all developers to contribute, but
we aim to provide feedback shortly after this week. As much as
possible feedback will be provided in public via the issue; concerns
that seem particularly sensitive in nature may result in private
contact from existing developers.

An application succeeds only with no sustained objections from
existing developers: if after debate any developer is unconvinced, the
application will not be accepted.

Developers have "write" access to the repository.

All developers must maintain this standard of two PRs and two reviews
within a continuously-rolling twelve month window or have developer
access revoked.

You can search for pull requests by author and reviewer at
<https://github.com/spacepy/dbprocessing/pulls>. In the ``Filters`` box,
enter ``is:pr author:USERNAME`` or ``is:pr reviewed-by:USERNAME``. Further
search options are described at
<https://docs.github.com/en/search-github/searching-on-github/searching-issues-and-pull-requests>.

Becoming an administrator
-------------------------
Developers with a consistent pattern of high-quality contribution may
be asked to become administrators ("admin" access). This is solely at
the discretion of existing administrators.

All administrators must meet the requirements of active developers.

These requirements in no way relate to administration of the SpacePy
organization and of SpacePy repositories other than dbprocessing.

Policies
--------
Policy changes are implemented via issues and pull requests that change
the documentation describing the policy. Please use the ``admin``
label as well.
