summaryrefslogtreecommitdiff
path: root/CONTRIBUTING.rst
diff options
context:
space:
mode:
authorTin Lam <tl3438@att.com>2016-04-08 18:40:30 -0500
committerTin Lam <tl3438@att.com>2016-04-08 19:18:16 -0500
commita829bd59770681f9d6c1ef02a6e1d5e441587a23 (patch)
tree858e02b361c42cc7237583a5a26389e1f405fb61 /CONTRIBUTING.rst
parenta057c409ec8a23290bc72c4fa45d55a1178f4828 (diff)
downloadswift-a829bd59770681f9d6c1ef02a6e1d5e441587a23.tar.gz
Convert CONTRIBUTING.md to CONTRIBUTING.rst
Change-Id: I64c42c42db35a9f55a1df9d4ab6e97a2506b8c45 Closes-Bug: #1567027
Diffstat (limited to 'CONTRIBUTING.rst')
-rw-r--r--CONTRIBUTING.rst113
1 files changed, 113 insertions, 0 deletions
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
new file mode 100644
index 000000000..0bec89382
--- /dev/null
+++ b/CONTRIBUTING.rst
@@ -0,0 +1,113 @@
+If you would like to contribute to the development of OpenStack, you
+must follow the steps in this page:
+http://docs.openstack.org/infra/manual/developers.html
+
+Once those steps have been completed, changes to OpenStack should be
+submitted for review via the Gerrit tool, following the workflow
+documented at
+http://docs.openstack.org/infra/manual/developers.html#development-workflow.
+
+Gerrit is the review system used in the OpenStack projects. We're sorry,
+but we won't be able to respond to pull requests submitted through
+GitHub.
+
+Bugs should be filed `on
+Launchpad <https://bugs.launchpad.net/swift>`__, not in GitHub's issue
+tracker.
+
+Swift Design Principles
+=======================
+
+- `The Zen of Python <http://legacy.python.org/dev/peps/pep-0020/>`__
+- Simple Scales
+- Minimal dependencies
+- Re-use existing tools and libraries when reasonable
+- Leverage the economies of scale
+- Small, loosely coupled RESTful services
+- No single points of failure
+- Start with the use case
+- ... then design from the cluster operator up
+- If you haven't argued about it, you don't have the right answer yet
+ :)
+- If it is your first implementation, you probably aren't done yet :)
+
+Please don't feel offended by difference of opinion. Be prepared to
+advocate for your change and iterate on it based on feedback. Reach out
+to other people working on the project on
+`IRC <http://eavesdrop.openstack.org/irclogs/%23openstack-swift/>`__ or
+the `mailing
+list <http://lists.openstack.org/pipermail/openstack-dev/>`__ - we want
+to help.
+
+Recommended workflow
+====================
+
+- Set up a `Swift All-In-One
+ VM <http://docs.openstack.org/developer/swift/development_saio.html>`__\ (SAIO).
+
+- Make your changes. Docs and tests for your patch must land before or
+ with your patch.
+
+- Run unit tests, functional tests, probe tests ``./.unittests``
+ ``./.functests`` ``./.probetests``
+
+- Run ``tox`` (no command-line args needed)
+
+- ``git review``
+
+Notes on Testing
+================
+
+Running the tests above against Swift in your development environment
+(ie your SAIO) will catch most issues. Any patch you propose is expected
+to be both tested and documented and all tests should pass.
+
+If you want to run just a subset of the tests while you are developing,
+you can use nosetests:
+
+.. code-block:: console
+
+ cd test/unit/common/middleware/ && nosetests test_healthcheck.py
+
+To check which parts of your code are being exercised by a test, you can
+run tox and then point your browser to swift/cover/index.html:
+
+.. code-block:: console
+
+ tox -e py27 -- test.unit.common.middleware.test_healthcheck:TestHealthCheck.test_healthcheck
+
+Swift's unit tests are designed to test small parts of the code in
+isolation. The functional tests validate that the entire system is
+working from an external perspective (they are "black-box" tests). You
+can even run functional tests against public Swift endpoints. The
+probetests are designed to test much of Swift's internal processes. For
+example, a test may write data, intentionally corrupt it, and then
+ensure that the correct processes detect and repair it.
+
+When your patch is submitted for code review, it will automatically be
+tested on the OpenStack CI infrastructure. In addition to many of the
+tests above, it will also be tested by several other OpenStack test
+jobs.
+
+Once your patch has been reviewed and approved by two core reviewers and
+has passed all automated tests, it will be merged into the Swift source
+tree.
+
+Specs
+=====
+
+.. |swift-specs| replace:: ``swift-specs``
+.. _swift-specs: https://github.com/openstack/swift-specs
+
+The |swift-specs|_ repo
+can be used for collaborative design work before a feature is
+implemented.
+
+OpenStack's gerrit system is used to collaborate on the design spec.
+Once approved OpenStack provides a doc site to easily read these
+`specs <http://specs.openstack.org/openstack/swift-specs/>`__
+
+A spec is needed for more impactful features. Coordinating a feature
+between many devs (especially across companies) is a great example of
+when a spec is needed. If you are unsure if a spec document is needed,
+please feel free to ask in #openstack-swift on freenode IRC.