First things first: Welcome!
REEF is a community driven project and we always welcome new people joining us. We are inviting contributions in many forms to all parts of the project, including:
- Bug reports regarding the software, the documentation, the website, guides like this, etc
- Graphics (for instance, we don't have a logo yet)
- Documentation updates, tutorials, examples
- Code: Patches, new features, etc
The majority of this guide will discuss the contribution of code
This page should get you started if you decide to do so.
...
Code Block | ||
---|---|---|
| ||
$ git clone https://github.com/{your_alias}/incubator-reef.git |
Then, add the apache GitHub repository as upstream:
Code Block | ||
---|---|---|
| ||
$ git remote add upstream https://github.com/apache/incubator-reef |
A correct git configuration should look similar to the following, with an origin and upstream:
Code Block | ||
---|---|---|
| ||
$ git remote -v origin https://github.com/{your_alias}/incubator-reef.git (fetch) origin https://github.com/{your_alias}/incubator-reef.git (push) upstream https://github.com/apache/incubator-reef.git (fetch) upstream https://github.com/apache/incubator-reef.git (push) |
If you have an `apache.org` email address, now is the time to configure git to use it:
Code Block | ||
---|---|---|
| ||
$ git config user.name "My Name Here" $ git config user.email myusername@apache.org |
...
Before making changes, you have to make sure the issue to resolve (e.g. fix a bug, implement a new feature, etc) is registered in the REEF JIRA. Create a branch to address the issue on your own. The name of the branch should reference the issue, e.g., REEF-{issue_number}. You can take a look how others name their branches.
3. Make changes in your local machine
...
Code Block | ||
---|---|---|
| ||
$ git fetch upstream $ git checkout {your_branch} # Skip this step if you are already on your branch. $ git merge upstream/master |
Resolve the conflicts if exist. Test with the merged code so that it does not break the system. Then, check that Apache headers are in place where needed, by running RAT:
Code Block | ||
---|---|---|
| ||
$ mvn apache-rat:check |
...
When you create a pull request, you choose the branches to compare and merge. Choose the base as apache:master and the head {your_alias}:{branch_name
}. Fill out the description with what you have done. It is a good practice to start the description with "This addresses https://issues.apache.org/jira/browse/REEF-{issue_number}"
You can push additional commits to address the feedback from the reviewer. When the status is good enough to be merged in the master branch, one of Committers will merge your work into the REEF codebase. Good job!
...