Updated: May 17, 2019

This document describes the general policies and procedures that
are followed by the libfabric development community.  It is best
viewed as a guideline, and is not a formal or legal document.

Code contributions
------------------
Any developers wishing to contribute to libfabric may do so,
provided that they adhere to the CONTRIBUTORS agreement in the root
of the source tree.  There are no separate membership requirements
or documents that must be signed prior to submitting code.  Developers
need the rights to submit the code being introduced, and the code
must meet the license requirements of the project.

Git Repository Admin
--------------------
The number of people with administrative access to the github repo
will be limited.  Traditionally, this has been around three developers who
are active in the project, and are from different companies.  Admins
will typically have the same limitations as those with write access to
the repo, such as no forced updates.

Git Write Access
----------------
Because of the scope of the project, there may be several people (more
than 10) with write access.  Most writers are maintainers for a
specific provider in the project.  As a general rule, writers should only
commit changes to the subdirectory that corresponds with the provider
that they are maintaining.  Changes made to other providers or the
libfabric core must be approved prior by the relevant owners prior to
being merged.

Core Changes
------------
Updates to the libfabric core should be reviewed by at least one other
developer.  Changes to the API should be brought to the attention of
the OFIWG mailing list, with significant changes discussed prior to
being implemented.

Patch Submission
----------------
Patches should be submitted directly to github as part of a pull request.
For patches that touch the external API or introduce or modify core
functionality significantly, an email should be sent to the ofiwg mail
list with a link to the pull request.

Pull Requests
-------------
A number of continuous integration tests run against all pull requests.
Some CI testing involves access to special hardware, so is hosted
directly by various vendors.  Pull requests should not be merged until
after all CI completes.  In some cases, CI may fail, either because of
known issues, CI test node problems, or as a result of race conditions.
For CI failures that are unrelated to the pull request, the failures
may be ignored, and the pull request merged.  It is the responsibility
of the person committing the request to the repo to confirm that any
CI failures are unrelated to the changes in the pull request.

Releases
--------
A wiki page maintained on github with the repo provides a full checklist
of the release process.
