How To Contribute

Contributions are welcome to all Apache Fluo repositories. All repositories follow a review-then-commit process. This means all contributions must pass any integration tests and be reviewed before being committed. Code reviews are done by commenting on a GitHub pull request. If you would like to contribute, but are not sure where to start then contact us and/or look at issues marked helpwanted. Fluo committers will follow the Apache Code of Conduct when corresponding with a contributor. We respectfully ask all contributors to follow this code of conduct also.

Repositories

Contributions can be made to the following repositories. This page contains general instructions for all repositories. Each repository also has a CONTRIBUTING.md file containing instructions specifically for it. For the links columns below, I is for issues and C is for CONTRIBUTING.md.

Repository Links Description
Fluo I C Core Project
Fluo Recipes I C Recipes that build on core. Code for interoperating with other projects.
Website I C Source for this website.
Fluo Yarn I C Enables launching Fluo using YARN
Fluo Docker I C Support for running Fluo in Docker. Enables launching Fluo in Mesos and Kubernetes.
Fluo Bytes I C An immutable Byte wrapper for Java suitable for use in APIs.

Contribution workflow

  1. Fork and clone the repository you want to contribute to.
  2. If needed, create an issue that describes the work.
  3. Create a branch in the local clone of your fork. An example branch name is fluo-301 which describes the repo and issue number.

    git checkout -b fluo-301
    
  4. Do work and commit to your branch.
  5. Ensure you works satisfies the guidelines laid out in the CONTRIBUTING.md file.
  6. If needed, squash to the minimum number of commits. For help on squashing commits, see this tutorial or StackOverflow answer.
  7. Push your branch to your fork.

    # Push work in local branch fluo-301 to fork
    git push origin fluo-301
    
  8. Create a Pull Request in the appropriate repository. If the work is not complete and the Pull Request is for feedback, please put [WIP] in the subject.
  9. At least one committer (and others in the community) will review your pull request and add any comments to your code.
  10. Push any changes from the review to the branch as new commits so the reviewer only needs to review new changes. Please avoid squashing commits after the review starts. Squashing makes it hard for the reviewer to follow the changes.
  11. Repeat this process until a reviewer approves the pull request.
  12. When the review process is finished, all commits on the pull request may be squashed by a committer. Please avoid squashing as it makes it difficult for the committer to know if they are merging what was reviewed.

Coding guidelines

All Fluo projects have configured Maven to do automatic code formatting and import organizing. So in projects with pom.xml files, running mvn compile should format all modified code. Please run this before committing. The instructions below explain how to set this formatting up in your IDE.

To properly organize imports, make sure your imports look like the block below:

java.
javax.
<blank line>
<all other non-static imports in alphabetical order>
<blank line>
<static imports in alphabetical order>

This can be configured by common IDEs:

  • Eclipse: Window -> Preferences -> Java -> Code Style -> Organize Imports
  • Intelli-J: Preferences -> Code Style -> Java -> Imports

To properly format code in Eclipse :

  • Go to Window -> Preferences -> Java -> Code Style -> Formatter
  • Click Import and import <local Fluo source dir>/contrib/fluo-eclipse-style.xml
  • Either configure all projects in eclipse to use this style or just the Fluo projects.