title: How To Contribute permalink: /how-to-contribute/ redirect_from: /contributor/

Contributions are welcome to all Apache Accumulo repositories. While most contributions are code, there are other ways to contribute to Accumulo:

First time developers should start with an issue labeled good first issue.

Any questions/ideas don't hesitate to contact us.

Accumulo Repositories

RepositoryLinksDescription
AccumuloContribute IssuesCore Project
WebsiteContribute IssuesSource for this website
ExamplesContribute IssuesExample code
TestingContribute IssuesTest suites such as continuous ingest and random walk
DockerContribute IssuesSource for Accumulo Docker image
WikisearchContribute IssuesExample application that indexes and queries Wikipedia data
ProxyIssuesApache Thrift service that exposes Accumulo to other languages
Maven pluginIssuesMaven plugin that runs Accumulo

Example Contribution workflow

  1. Create a GitHub account for issues and pull requests.
  2. Find an issue to work on or optionally create one that describes the work that you want to do.
  3. [Fork] and [clone] the GitHub repository that you want to contribute to.
  4. Create a branch in the local clone of your fork.
    git checkout -b accumulo-4321
  1. Do work and commit to your branch. You can reference [this link][messages] for a guide on how to write good commit log messages.
  2. Ensure you works satisfies the guidelines laid out in the CONTRIBUTING.md file.
  3. If needed, squash to the minimum number of commits. For help on squashing commits, see this [tutorial][squash-tutorial] or [StackOverflow answer][squash-stack].
  4. [Push] your branch to your fork.
    git push origin accumulo-4321
  1. Create a [Pull Request] on GitHub to the appropriate repository. A [draft pull request] can be used if the work is not complete.
  2. At least one committer (and others in the community) will review your pull request and add any comments to your code.
  3. 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.
  4. Repeat this process until a reviewer approves the pull request.
  5. 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

  • Accumulo follows [semver] for its public API.
  • Every file requires the ASF license header as described in [ASF Source Header][srcheaders].
  • Do not use Author Tags. The code is developed and owned by the community.

Helpful Links

  • Build resources - TravisCI & Jenkins
  • Releases - [Making a release][making], [Verifying a release][verifying]

For more information, see the contributor guide.

[making]: {{ “/contributor/making-release” | relative_url }} [verifying]: {{ “/contributor/verifying-release” | relative_url }} [Fork]: https://help.github.com/articles/fork-a-repo/ [Pull Request]: https://help.github.com/articles/about-pull-requests/ [draft pull request]: https://github.blog/2019-02-14-introducing-draft-pull-requests/ [Push]: https://help.github.com/articles/pushing-to-a-remote/ [clone]: https://help.github.com/articles/cloning-a-repository/ [srcheaders]: https://www.apache.org/legal/src-headers [semver]: http://semver.org/spec/v2.0.0.html [messages]: https://chris.beams.io/posts/git-commit/ [squash-tutorial]: http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html [squash-stack]: https://stackoverflow.com/questions/5189560/squash-my-last-x-commits-together-using-git