diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..c0aaef0
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+release export-ignore
diff --git a/release/.gitignore b/release/.gitignore
new file mode 100644
index 0000000..0716d9f
--- /dev/null
+++ b/release/.gitignore
@@ -0,0 +1,3 @@
+.release_manager.profile
+svn-*
+apache-*
diff --git a/release/README.md b/release/README.md
new file mode 100644
index 0000000..5776e09
--- /dev/null
+++ b/release/README.md
@@ -0,0 +1,34 @@
+## Scripts to help release Quickstep
+
+### Preqs
+
+You must fill out `release_manager.profile` first.
+
+You'll need:
+  * md5sum
+  * shasum
+  * svn
+  * gpg
+  * tar
+  * gzip
+
+This is of course in addition to the regular build tools.
+
+### Usage Overview
+
+```
+# Test a candidate
+./release_cmds.sh test
+
+# Create candidate artifacts
+./release_cmds.sh create
+
+# Publish candidate artifacts (after you've created them)
+./release_cmds.sh publish
+```
+
+* A full guide to releases can be found on [confluence][cwiki-howto].
+* PGP key generation is discussed [here][pgp-keys]
+
+[cwiki-howto]: https://cwiki.apache.org/confluence/display/QUICKSTEP/How+To+Release
+[pgp-keys]: http://quickstep.apache.org/release-signing/
\ No newline at end of file
diff --git a/release/release_cmds.sh b/release/release_cmds.sh
new file mode 100755
index 0000000..d23b4ef
--- /dev/null
+++ b/release/release_cmds.sh
@@ -0,0 +1,172 @@
+#!/usr/bin/env bash
+
+# Functions for Releasing Quickstep
+# Usage: Fill out your details in release_manager.profile.
+#        ./release_cmds [create|publish|test]
+#
+# Note: This script is a scratch pad with most of the relevent commands. Modify 
+#       it to see fit. We'll finalize it when we understand the process better.
+#       
+#       Everything in this script assumes that you are running in the release/ 
+#       folder of your quickstep directory.
+#
+# PREREQS:
+#  - full details on how to do a release is in a confluence article: How to Release
+#  - You must have previously created a pgp key using your apache username
+#    and uploaded it to a keyserver [http://quickstep.apache.org/release-signing/]
+#
+
+### Helper functions
+
+create_artifacts() {
+  # Updates submodules, archives everything, signs it using your key (requires 
+  # user input), makes checksums, moves artifacts to release/ folder
+  #
+
+  export RELEASE_DIR=`pwd`
+  cd ..
+
+  # need the submodules to be included for the compile to work.
+  # likely, this will be a no-op
+  git submodule init
+  git submodule update
+
+  # you'll need to push this if you want the tag to be visible to committers
+  # the tag is necesary for the archiving to work correctly
+  git tag -a rc-$VERSION -m 'release candidate $VERSION'
+  git archive --format "tar" --prefix=$PROJECT_NAME-$VERSION/ -o $PROJECT_NAME-$VERSION.tar rc-$VERSION
+  git submodule foreach --recursive 'git archive --verbose --prefix=$PROJECT_NAME-$VERSION/$path/ --format tar master --output $RELEASE_DIR/submodule-$sha1.tar'
+  if [[ $(ls submodule-*.tar | wc -l) != 0  ]]; then
+    # combine all archives into one tar
+    tar --concatenate --file $PROJECT_NAME-$VERSION.tar submodule-*.tar
+    # remove sub tars
+    rm -rf submodule-*.tar
+  fi
+
+  # gzip final tar
+  gzip --force --verbose $PROJECT_NAME-$VERSION.tar
+
+  # Make the signature. This requires human input
+  gpg -u $APACHE_USERNAME@apache.org --armor --output $PROJECT_NAME-$VERSION.tar.gz.asc --detach-sign $PROJECT_NAME-$VERSION.tar.gz
+  # Make hashes
+  md5sum $PROJECT_NAME-$VERSION.tar.gz > $PROJECT_NAME-$VERSION.tar.gz.md5
+  sha1sum $PROJECT_NAME-$VERSION.tar.gz > $PROJECT_NAME-$VERSION.tar.gz.sha
+
+
+  # Make sure these three artifacts are good
+  gpg --verify $PROJECT_NAME-$VERSION.tar.gz.asc
+  md5sum --check $PROJECT_NAME-$VERSION.tar.gz.md5
+  sha1sum --check $PROJECT_NAME-$VERSION.tar.gz.sha
+
+  mv $PROJECT_NAME-$VERSION.tar.gz* $RELEASE_DIR
+
+  cd $RELEASE_DIR
+}
+
+publish_candidate() {
+  # push a RC to subversion. We use SVN sparse directories so as not to pull
+  # every artifact ever. Assumes that you have already created the artifacts
+  # and they reside in the release/ folder.
+  # directory layout is x.y.z/RCw, where w is the release candidate number
+  #
+
+  if [ ! -d "$SVN_DEV" ]; then
+    svn checkout --depth immediates $SVN_DEV_URL $SVN_DEV
+  fi
+
+  BASE_DIR=`pwd`
+  cd $SVN_DEV
+
+  if [ ! -d "$VERSION" ]; then
+    mkdir $VERSION
+    cd $VERSION
+  else
+    cd $VERSION
+    svn update --set-depth immediates .
+  fi
+
+  # now in $VERSION folder
+
+  RCFOLDER=RC$CANDIDATE
+  mkdir $RCFOLDER
+  cd $RCFOLDER
+  cp $BASE_DIR/$PROJECT_NAME-$VERSION.tar.gz* ./
+  cd ..
+
+  svn add $VERSION/$RCFOLDER
+  svn commit --username=$APACHE_USERNAME -m "Quickstep-$VERSION RC$CANDIDATE"
+
+  cd $BASE_DIR
+}
+
+test_candidate() {
+  # This is best run in /tmp
+  # tries checking out a release candidate and building
+  #
+
+  svn checkout --depth immediates $SVN_DEV_URL $SVN_DEV
+  cd $SVN_DEV
+
+  # add the KEYS file from quickstep to your gpg key ring
+  gpg --import KEYS
+
+  cd $VERSION
+  svn update --set-depth infinity RC$CANDIDATE
+  cd RC$CANDIDATE
+
+  tar -xzf $PROJECT_NAME-$VERSION.tar.gz
+
+  # verify artifacts
+  gpg --verify $PROJECT_NAME-$VERSION.tar.gz.asc
+  md5sum --check $PROJECT_NAME-$VERSION.tar.gz.md5
+  sha1sum --check $PROJECT_NAME-$VERSION.tar.gz.sha
+
+  # now build the release artifacts
+  cd $PROJECT_NAME-$VERSION
+
+  # first download third_party, then do your normal build
+  cd third_party/
+  ./download_and_patch_prerequisites.sh
+  cd ..
+  cd build
+  cmake ..
+  make
+}
+
+usage() {
+  echo "usage: $0 [create|publish|test]"
+  exit $1
+}
+
+### main
+
+source release_manager.profile
+if [ -z $APACHE_USERNAME ] || [ -z $VERSION ] || [ -z $CANDIDATE ]; then 
+  echo "please set release_manager.profile"
+  exit 1
+fi
+
+alias svn="svn --non-interactive"
+
+set -e
+
+if [ -z $1 ] ; then
+  usage 0
+fi
+
+echo "user: $APACHE_USERNAME"
+echo "version: $VERSION"
+echo "candidate: $CANDIDATE"
+
+if [ "create" == "$1" ] ; then
+  echo "creating artifacts ..."
+  create_artifacts
+elif [ "publish" == "$1" ] ; then
+  echo "publishing candidate artifacts ..."
+  publish_candidate 
+elif [ "test" == "$1" ] ; then
+  echo "testing candidate artifacts ..."
+  test_candidate
+else
+  usage 0
+fi
diff --git a/release/release_manager.profile b/release/release_manager.profile
new file mode 100644
index 0000000..6b51003
--- /dev/null
+++ b/release/release_manager.profile
@@ -0,0 +1,29 @@
+# Profile for Releasing Quickstep
+#
+# This script is for release managers. It is to be used in conjunction with 
+# the release_cmds script.
+#
+# Usage: Fill out this file with your apache details. Then source this file.
+#        Sourcing the release_cmds file will automatically source this.
+#
+
+# you must be registered with apache
+export APACHE_USERNAME=
+
+# quickstep version, Major.Minor.Increment
+export VERSION=
+
+# release candidate number. For a new version, this starts at 0
+export CANDIDATE=
+
+# folders corresponding to SVN repos where we keep our release artifacts
+export SVN_DEV=svn-quickstep-dev
+export SVN_REL=svn-quickstep-rel
+
+# you probably will not need to change things below this line
+export PROJECT_NAME=apache-quickstep-incubating
+
+# path to apache repo with quickstep releases
+
+export SVN_DEV_URL=https://dist.apache.org/repos/dist/dev/incubator/quickstep
+export SVN_REL_URL=https://dist.apache.org/repos/dist/rel/incubator/quickstep
\ No newline at end of file
