Draft development guidelines, link from README
authorEvan Shelhamer <shelhamer@imaginarynumber.net>
Fri, 28 Feb 2014 21:01:11 +0000 (13:01 -0800)
committerEvan Shelhamer <shelhamer@imaginarynumber.net>
Fri, 28 Feb 2014 21:03:14 +0000 (13:03 -0800)
README.md
docs/development.md [new file with mode: 0644]
docs/index.md

index 4b5153b..586c412 100644 (file)
--- a/README.md
+++ b/README.md
@@ -74,6 +74,8 @@ Our workflow is this:
   * Code must be accompanied by documentation and tests at all times.
   * Only fast-forward merges will be accepted.
 
+See our [development guidelines](http://caffe.berkeleyvision.org/development.html) for further details–the more closely these are followed, the sooner your work will be merged.
+
 #### [Shelhamer's](https://github.com/shelhamer) “life of a branch in four acts”
 
 Make the `feature` branch off of the latest `bvlc/dev`
diff --git a/docs/development.md b/docs/development.md
new file mode 100644 (file)
index 0000000..459e1d6
--- /dev/null
@@ -0,0 +1,45 @@
+---
+layout: default
+title: Caffe
+---
+
+Developing & Contributing
+=========================
+
+Caffe is developed with active participation of the community by the [Berkeley Vision and Learning Center](http://bvlc.eecs.berkeley.edu/).
+We welcome all contributions!
+
+The [contributing workflow](https://github.com/BVLC/caffe#contributing) is explained in the README. These guidelines cover development practices in Caffe. This is a work-in-progress.
+
+**Development Flow**
+
+- `master` is golden.
+- `dev` is for new development: it is the branching point for features and the base of pull requests.
+  * The history of `dev` is not rewritten.
+  * Contributions are shepherded from `dev` to `master` by BVLC by merge.
+- To err is human. Accidents are fixed by reverts.
+- Releases are marked with tags on merge from `dev` to `master`.
+
+**Issues & Pull Request Protocol**
+
+0. Make issues for [bugs](https://github.com/BVLC/caffe/issues?labels=bug&page=1&state=open), tentative proposals, and [questions](https://github.com/BVLC/caffe/issues?labels=question&page=1&state=open).
+1. Make PRs to signal development:
+  a. Make PRs *as soon as development begins*. Create a feature branch, make your initial commit, push, and PR to let everyone know you are working on it and let discussion guide development instead of review development after-the-fact.
+  b. When a proposal from the first step earns enough interest to warrant development, make a PR, and reference and close the old issue to direct the conversation to the PR.
+2. When a PR is ready, comment to request a maintainer be assigned to review and merge to `dev`.
+
+A PR is only ready for review when the code is committed, documented, linted, and tested!
+
+**Documentation**: the documentation is bundled with Caffe in `docs/`. This includes the site you are reading now. Contributions should be documented both inline in code and through usage examples. New documentation is published by BVLC with each release and between releases as-needed.
+
+We'd appreciate your contribution to the documentation effort!
+
+**Testing**: run `make runtest` to check the project tests. New code requires new tests. Pull requests that fail tests will not be accepted.
+
+**Style**
+
+- Follow [Google C++ style](http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml) and [Google python style](http://google-styleguide.googlecode.com/svn/trunk/pyguide.html) + [PEP 8](http://legacy.python.org/dev/peps/pep-0008/).
+- Wrap lines at 80 chars.
+- Remember that “a foolish consistency is the hobgoblin of little minds,” so use your best judgement to write the clearest code for your particular case.
+
+**Lint**: run `make lint` to check C++ code.
index 5cf2c97..49c3327 100644 (file)
@@ -32,6 +32,7 @@ Quick Links
 
 * [Presentation](https://docs.google.com/presentation/d/1lzyXMRQFlOYE2Jy0lCNaqltpcCIKuRzKJxQ7vCuPRc8/edit?usp=sharing): Presentation on Caffe at the UC Berkeley Vision Group meeting.
 * [Installation](installation.html): Instructions on installing Caffe (tested on Ubuntu 12.04, but works on Red Hat, OS X, etc.).
+* [Development](development.html): Guidelines for development and contributing to Caffe.
 * [MNIST Demo](mnist.html): example of end-to-end training and testing on the MNIST data.
 * [Training ImageNet](imagenet_training.html): tutorial on end-to-end training of an ImageNet classifier.
 * [Running Pretrained ImageNet](imagenet_pretrained.html): simply runs in Python!