Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

First things first: Welcome!

Arriving on this page means that you are interested in helping us out. For that: Welcome and thank you! 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

...

Getting started: Join the community.

The first step is to join the community by joining our mailing list . This is where all discussions regarding the project are happening, where we answer each other's questions and where you will find a friendly bunch to welcome you. 

If you want to work on the REEF code base, it is a good idea to learn how to compile and test REEF

Finding things to work on

At any given time, there is any number of open, unassigned issues on REEF. There is also a shorter list of open issues which are good for beginners. Note that that list doesn't only contain coding tasks, but also documentation, graphics work, the website and so on. We use JIRA to manage all open todos for the project, software or otherwise. However, some of the items on that list might since have become obsolete or such. Hence, it is always a good idea to get in touch with the rest of the community on the mailing list before getting started.

 Code contribution process

...

An important part of the process comes before you start the contribution process. Most issues should first be brought up in the dev@reef.incubator.apache.org mailing list. If you haven't done so yet, subscribe to the list. After discussion, you or one of the other developers will create an Issue on ASF JIRA. Again, create an account if you don't have one. Write a succinct description of the Issue, making sure to incorporate any discussion from the mailing list.

Assign the JIRA you've chosen to yourself. This way you're letting the rest of developers know that you're working on it, so that nobody else will start working on it in parallel.

And once you are ready to make changes, have a look at the coding guidelines to make sure your code agrees with the rest of REEF.

...

First, you need to fork the REEF repository. Go to the Github repository mirrored from ASF, and click "Fork" button. Then you will have your own repository. Clone this repository to your local machine:

Code Block
languagetext
$ git clone https://github.com/{your_alias}/incubator-reef.git

Then, add the apache GitHub repository as upstream:

Code Block
languagetext
$ git remote add upstream https://github.com/apache/incubator-reef.git

A correct git configuration should look similar to the following, with an origin and upstream:

Code Block
languagetext
$ 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:

...

Write the code and make commits as usual. Make sure all new files contain the ASF licensing header.

Make sure to run all tests when you complete your change to avoid any regression

...

  1. at root folder: >mvn clean
  2. >cd lang\cs
  3. >msbuild
  4. >vstest.console.exe Org.Apache.REEF.Tests.dll /Platform:x64

...

. For instructions, see Java build instructions and C# build instructions.

4. Merge the master branch into your branch

...

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
languagetext
$ mvn apache-rat:check

There are several code quality checks executed as part of the build. If any of them fails, you can re-run it manually to clarify where the violation is. Java build instructions have instructions for running checks separately.

Finally, as a courtesy to the merger, you can rebase to master and squash all the commits from your PR into one:

...

Code Block
[REEF-JIRA_ISSUE_NUMBER]: THE_TITLE_OF_THE_JIRA
 
This addressed the issue by 
  * INSERT_DESCRIPTION_OF_SOMETHING
  * INSERT_DESCRIPTION_OF_SOMETHING_ELSE
  * ...
 
JIRA:
  [REEF-JIRA_ISSUE_NUMBER](https://issues.apache.org/jira/browse/REEF-JIRA_ISSUE_NUMBER)

Pull request:
  This closes #

As you can see, we follow Markdown syntax for our commit messages. You can get a good idea how other people write their commit messages by inspecting the output of git log.

...