Check out the code from the Apache repository via Git. Instructions are on the Getting Started page.
Join the dev, issues, reviews and builds mailing lists by sending emails to dev-subscribe@mesos.apache.org, issues-subscribe@mesos.apache.org, reviews-subscribe@mesos.apache.org and builds-subscribe@mesos.apache.org respectively.
Find a JIRA issue that is currently unassigned that you want to work on at JIRA issue tracker, or create your own (you'll need a JIRA account for this, see below)!
Assign the JIRA to yourself. To do this, you will need:
Formulate a plan for resolving the issue. Propose your plan via comments in the JIRA.
Find a shepherd to collaborate on your patch. A shepherd is a Mesos committer that will work with you to give you feedback on your proposed design, and to eventually commit your change into the Mesos source tree.
Create one or more test cases to exercise the bug or the feature (the Mesos team uses test-driven development). Before you start coding, make sure these test cases all fail.
Make your changes to the code (using whatever IDE/editor you choose) to actually fix the bug or implement the feature.
support/hooks/pre-commit
) to automatically check for style errors. See the hook script for instructions to enable it.BASE_MESOS_DIR
./bootstrap
(Only required if building from git repository).mkdir build && cd build
../configure
make
configure
and make
. I.e. You can reset your build process without risking changes you made in the src directory, by simply deleting the build directory, and creating a new one.Make sure that all of the unit tests pass, including the new test cases you have added: make check
.
make tests
.make check GTEST_FILTER="HTTPTest.Delete"
.Divide your change into one or more Git commits. Each commit should represent a single logical (atomic) change to the Mesos source code: this makes your changes easier to review. For more information, see the reviewer guidelines.
git rebase -i
) to create a clean set of commits once the change is ready to be reviewed.Make sure to pull in any changes that have been committed to master branch. Using Git, do this via something like:
git checkout master
git pull
git checkout my_branch
git diff master
and make sure it lists only your changes. If other changes you did not make are listed, try git rebase master
to bring your branch up to date with master.You're ready to submit your patch for review!
post-reviews.py
a wrapper around post-review.ln -s support/reviewboardrc .reviewboardrc
.rbt status
.support/post-reviews.py
.post-reviews.py
creates a new review for every commit on your branch that is different from the master
.Wait for a code review from another Mesos developer via Review Board, address their feedback and upload updated patches until you receive a “Ship It” from a Mesos committer.
post-reviews.py
will create a new review (git rebase -i
is your friend).After consensus is reached on your JIRA/patch, you're review request will receive a “Ship It!” from a committer, and then a committer will commit your patch to the git repository. Congratulations and thanks for participating in our community!
The last step is to ensure that the necessary documentation gets created or updated so the whole world knows about your new feature or bug fix.