This Confluence has been LDAP enabled, if you are an ASF Committer, please use your LDAP Credentials to login. Any problems file an INFRA jira ticket please.

Child pages
  • Contributor's Corner
Skip to end of metadata
Go to start of metadata

Interested in contributing patches to Samza? This page will get you started.  


Apache Samza is developed by an open and friendly community. Everybody is welcome to contribute and engage with the community. We are happy to accept contributions, be it trivial cleanups or bug-fix or new features. There are many ways to engage with the community and contribute to Apache Samza, including filing bugs, asking questions and joining discussions in our mailing lists, contributing code or documentation, or testing.

Ask Questions

Apache Samza community is happy to answer any questions related to the project. We use our mailing list for all communications and discussions. You can also interact in StackOverflow under the tag - #apache-samza

File Bug Reports

Apache Samza uses JIRA to file bug reports. In order to file a bug report, please open Samza JIRA and include the following details:

  • A descriptive title
  • Description of the issue you are facing
  • Version of Apache Samza in which this issue is seen - You can add the version(s) by updating “Affects Version/s” field in the JIRA
  • Environment details (such as OS, JDK version etc) whenever applicable

If you need someone to immediately take a look at your JIRA, please don’t hesitate to send an email to the dev mailing list.

Find A Project to Work On

We tag bugs in JIRA with “newbie” label that are good for people getting started with the code base. When you feel confident, you can pick-up “newbie++” JIRAs. Picking up these JIRAs are the best way to familiarize yourself with the codebase.

More meaty projects are here. The process for working on a large project is:

  1. Instigate a discussion on the JIRA
  2. Write a design document
  3. Request feedback for the design document on the Jira and the samza-dev mailing list
  4. Come to an agreement on design
  5. Implement design

If you are unclear whether a change you are proposing requires a design document, feel free ask us through our mailing list!

Contributor Workflow  

Setup

Samza’s code is in an Apache Git repository located here.

You can check out Samza’s code by running:

git clone http://git-wip-us.apache.org/repos/asf/samza.git


Style

Please read this page for coding style suggestions.

Tests

Please read this page for running various tests in Samza.

Website

The Samza website is built by Jekyll from the markdown files found in the docs subdirectory.

Contribute using Pull Requests

We use Pull Requests to review and discuss your contributions. In order to contribute code, please do the following:

  • If you are working on a big new feature, follow the steps outlined above regarding design documents page
  • If there is no JIRA for your work, please open a JIRA before creating a Pull Request. If it is a trivial fix (such as typo, doc fix etc), you may skip the JIRA creation.
  • Creating Pull Request
    1. Fork the Github repository at http://github.com/apache/samza if you haven’t already
    2. Create a new branch in your repository and push your changes to that branch
    3. Open a Pull Request against the “master” branch of apache/samza
      • Make sure that the Pull Request title is of the format “SAMZA-<JiraNumber> : <JiraTitle>”
      • Make sure that your patch cleanly applies against the master branch. If not, rebase before creating the Pull Request
    4. Change the status of the JIRA to “Patch Available” so that it notifies the committers of the patch being available
  • Nag us if we don’t follow up on your JIRA in a timely fashion.
  • If your Pull Request is approved, it will automatically be closed, with any associated JIRA when a committer merges your changes.
  • If your Pull Request is not approved and requires changes based on reviews, please make changes to your patch.
    • While making the changes, kindly update the JIRA status from “Patch Available” to “In Progress”.
    • Make sure that you have rebased your branch to latest in the master branch before updating the Pull Request. This will help avoid conflicts during the merge. We cannot commit patches that have merge conflicts!
  • If your Pull Request is rejected for whatever reason, please close it promptly because committers cannot close your Pull Requests!

Committer Workflow

Enabling merging through GitHub

  1. Prerequisites
    1. Apache ID (should have been set up in the initial committer onboarding process)
    2. You should be added as a committer to the Samza project (should have been set up in the initial committer onboarding process)
    3. Github account
  2. Follow the instructions at https://reference.apache.org/committer/github. Please do also follow the instructions for "Can I write to repositories at GitHub ??", so you can merge through GitHub.
    1. When doing the Gitbox linking under "Can I write to repositories at GitHub ??", you will be required to set up 2FA for Github. This page (https://help.github.com/en/articles/configuring-two-factor-authentication) might be helpful for that.
      1. This link (https://help.github.com/en/articles/accessing-github-using-two-factor-authentication#using-two-factor-authentication-with-the-command-line) might also be helpful if you need to authenticate on the command line after enabling 2FA (e.g. for pushing code to GitHub).
  3. Once the Gitbox page says you have linked your Apache account to GitHub, you can double check that everything is now ready: Go to an open Samza pull request (PR) and scroll towards the bottom of the feed for the PR. In the section about the test and merge checks, you should see a button for merging the branch.

Merging a pull request (PR)

  1. Make sure the PR can be cleanly merged (GitHub should report if it can be cleanly merged).
  2. At the bottom of the feed for the PR, there is a button with a selection dropdown for merging a branch. Make sure the "Squash and merge" option is selected, and then click "Squash and merge".
  3. Whenever possible, make sure that the commit title includes the JIRA number and title.

Other notes

  • The committer workflow used to involve running a "merge-pull-request.py" script. That flow is no longer applicable.
  • For committers wishing to update the webpage, please see docs/README.md for instructions.
  • No labels