Guide for new Hama Committers

Please read this page first.

Update Team List

Please feel free to add your name and Apache ID to Team List page

Guide for Hama Committers

This page contains guidelines for committers.


Every ideas for improvements, new features, and suggestions are recommended to be discussed in polite terms before implementation on the dev@ list, and then its decisions must be listed on our RoadMap page. In simple improvement or bug type issues, you can skip the discussion and report directly on JIRA.


Hama committers should, as often as possible, attempt to review patches submitted by others. Ideally every submitted patch will get reviewed by a committer within a few days. If a committer reviews a patch they've not authored, and believe it to be of sufficient quality, then they can commit the patch, otherwise the patch should be cancelled with a clear explanation for why it was rejected.

For non-trivial changes, it is best to get another committer to review your own patches before commit. Use "Submit Patch" like other contributors, and then wait for a "+1" from another committer before committing.


Patches should be rejected which do not adhere to the guidelines in HowToContribute and to the CodeReviewChecklist. Committers should always be polite to contributors and try to instruct and encourage them to contribute better patches. If a committer wishes to improve an unacceptable patch, then it should first be rejected, and a new patch should be attached by the committer for review.


When you commit a patch, please:


You may want to add your KEY to

To add your KEY, you can add text to (svn) file. and recommend to use a 4096 bit RSA key.

See and

Then, you can create release candidate with following command:

mvn clean install package gpg:sign

Verify Release

To verify a release, which is normally done by the committers, you can do the following:

1. Download the RC's package asc, the url must be given by the release manager starting the vote thread.

wget <SOME URL>/hama-0.x.0.tar.gz.asc 

2. Import the committers keys

gpg --import KEYS

Note that the last argument after import is a file, not a url.

3. Verify

gpg --verify hama-0.x.0.tar.gz.asc

If everything is correctly verified, you have to post the result on the vote thread while casting your vote.

Verification Script

You can use a convenient shell script to check the signatures, it takes the release managers apache index file URL as argument (e.g.

function check_return {
        [ $RETVAL -ne 0 ] && exit 1

function check_md5 {
        real=`openssl md5 $1 | cut -d ' ' -f2`
        expected=`cat $1.md5 | cut -d ' ' -f1`
        if [ "$real" != "$expected" ]
            echo "md5 sums mismatch" && exit 1
            echo "md5 checksums OK"

function check_sha1 {
        real=`openssl sha1 $1 | cut -d ' ' -f2`
        expected=`cat $1.sha1 | cut -d ' ' -f1`
        if [ "$real" != "$expected" ]
            echo "sha1 sums mismatch" && exit 1
            echo "sha1 checksums OK"

function import_keys {
        wget -q
        gpg --import KEYS
        rm KEYS

if [ $# -ne 2 ]
  echo "Usage: `basename $0` { index url of the release}"
  exit 1


wget --convert-links -q -L -O out.html $1
cat out.html | grep -o -E 'href="([^"#]+).([gz|asc|md5|sha1|zip])"' | cut -d'"' -f2 | sort | uniq > links

mkdir release

while read lnk; do
  echo "Downloading $lnk"
  wget --directory-prefix=release $lnk
done < links

for filename in `find release/ -iregex ".*\(gz\|zip\)" -printf "%f\n"`
  echo "checking release/$filename"

  gpg --verify release/$filename.asc  
  check_md5 release/$filename 

  check_sha1 release/$filename

rm out.html
rm links

Eclipse Settings

You should set the Active Maven Profiles property for each of these projects: hama-core, hama-examples, hama-graph and hama-ml



Project Properties -> Maven -> Active Maven Profiles

add hadoop1

HowToCommit (last edited 2013-10-11 11:28:56 by edwardyoon)