diff --git a/BUILD b/BUILD
index 3638149..4ab8e13 100644
--- a/BUILD
+++ b/BUILD
@@ -1,3 +1,12 @@
 licenses(["notice"])
 
 exports_files(["LICENSE"])
+
+filegroup(
+    name = "standard_package",
+    srcs = glob([
+        "LICENSE",
+        "java/**",
+    ]),
+    visibility = ["@//distro:__pkg__"],
+)
diff --git a/WORKSPACE b/WORKSPACE
index c820ee6..0bc9cf1 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,3 +3,16 @@
 load("@rules_java//java:repositories.bzl", "rules_java_dependencies", "rules_java_toolchains")
 rules_java_dependencies()
 rules_java_toolchains()
+
+
+#
+# Dependencies for development of rules_java itself.
+#
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+http_archive(
+    name = "rules_pkg",
+    url = "https://github.com/bazelbuild/rules_pkg/releases/download/0.2.0/rules_pkg-0.2.0.tar.gz",
+    sha256 = "5bdc04987af79bd27bc5b00fe30f59a858f77ffa0bd2d8143d5b31ad8b1bd71c",
+)
+load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies")
+rules_pkg_dependencies()
diff --git a/distro/BUILD b/distro/BUILD
new file mode 100644
index 0000000..619c4fd
--- /dev/null
+++ b/distro/BUILD
@@ -0,0 +1,65 @@
+package(
+    default_visibility = ["//visibility:private"],
+)
+
+load("@rules_java//java:defs.bzl", "version")
+load("@rules_pkg//:pkg.bzl", "pkg_tar")
+
+# Build the artifact to put on the github release page.
+pkg_tar(
+    name = "rules_java-%s" % version,
+    srcs = [
+        "@rules_java//:standard_package",
+    ],
+    extension = "tar.gz",
+    # It is all source code, so make it read-only.
+    mode = "0444",
+    # Make it owned by root so it does not have the uid of the CI robot.
+    owner = "0.0",
+    package_dir = ".",
+)
+
+# TODO(aiuto): Package print_rel_notes as a rule so this is easier to write.
+genrule(
+    name = "relnotes",
+    srcs = [
+        ":rules_java-%s.tar.gz" % version,
+    ],
+    outs = ["relnotes.txt"],
+    cmd = " ".join([
+        "$(location :print_rel_notes)",
+        "rules_java",
+        version,
+        "$(location :rules_java-%s.tar.gz)" % version,
+        ">$@",
+    ]),
+    tools = [
+        ":print_rel_notes",
+    ],
+)
+
+# TODO(aiuto): All below should be a component of a different repo.
+# Possibly rules_pkg.
+py_library(
+    name = "util",
+    srcs = [
+        "__init__.py",
+        "release_tools.py",
+    ],
+    srcs_version = "PY3",
+    deps = [
+        "@bazel_tools//tools/python/runfiles",
+    ],
+)
+
+py_binary(
+    name = "print_rel_notes",
+    srcs = [
+        "print_rel_notes.py",
+    ],
+    python_version = "PY3",
+    deps = [
+        ":util",
+        "@bazel_tools//tools/python/runfiles",
+    ],
+)
diff --git a/distro/README.md b/distro/README.md
new file mode 100644
index 0000000..0c832c7
--- /dev/null
+++ b/distro/README.md
@@ -0,0 +1,5 @@
+# Package rules_java
+
+```
+bazel run :print_rel_notes
+```
diff --git a/distro/__init__.py b/distro/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/distro/__init__.py
diff --git a/distro/print_rel_notes.py b/distro/print_rel_notes.py
new file mode 100644
index 0000000..521301b
--- /dev/null
+++ b/distro/print_rel_notes.py
@@ -0,0 +1,63 @@
+# Copyright 2019 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Print release notes for a package.
+
+"""
+
+import sys
+from string import Template
+import textwrap
+
+from distro import release_tools
+
+
+def print_notes(repo, version, tarball_path, org='bazelbuild'):
+  file_name = release_tools.package_basename(repo, version)
+  sha256 = release_tools.get_package_sha256(tarball_path)
+
+  url = 'https://github.com/%s/%s/releases/download/%s/%s' % (
+      org, repo, version, file_name)
+  workspace_stanza = release_tools.workspace_content(url, repo, sha256)
+  relnotes_template = Template(textwrap.dedent(
+      """
+      ------------------------ snip ----------------------------
+      **New Features**
+
+      **Incompatible Changes**
+
+      **WORKSPACE setup**
+
+      ```
+      ${workspace_stanza}
+      ```
+
+      **Using the rules**
+
+      See [the source](https://github.com/${org}/${repo}/tree/master).
+      ------------------------ snip ----------------------------
+
+      """).strip())
+  print(relnotes_template.substitute({
+      'org': org,
+      'repo': repo,
+      'workspace_stanza': workspace_stanza,
+  }))
+
+
+def main(args):
+  print_notes(repo=args[1], version=args[2], tarball_path=args[3])
+
+
+if __name__ == '__main__':
+  main(sys.argv)
diff --git a/distro/release_tools.py b/distro/release_tools.py
new file mode 100644
index 0000000..6a8509b
--- /dev/null
+++ b/distro/release_tools.py
@@ -0,0 +1,49 @@
+# Copyright 2019 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Utilities to help create a rule set release."""
+
+import hashlib
+import os
+from string import Template
+import textwrap
+
+
+def package_basename(repo, version):
+  return '%s-%s.tar.gz' % (repo, version)
+
+
+def get_package_sha256(tarball_path):
+  with open(tarball_path, 'rb') as pkg_content:
+    tar_sha256 = hashlib.sha256(pkg_content.read()).hexdigest()
+  return tar_sha256
+
+
+def workspace_content(url, repo, sha256):
+  # Set up a fresh Bazel workspace
+  workspace_stanza_template = Template(textwrap.dedent(
+      """
+      load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+      http_archive(
+          name = "${repo}",
+          url = "${url}",
+          sha256 = "${sha256}",
+      )
+      load("@${repo}//:deps.bzl", "${repo}_dependencies")
+      ${repo}_dependencies()
+      """).strip())
+  return workspace_stanza_template.substitute({
+      'url': url,
+      'sha256': sha256,
+      'repo': repo,
+  })
diff --git a/java/defs.bzl b/java/defs.bzl
index 1cb4d57..e77b1a9 100644
--- a/java/defs.bzl
+++ b/java/defs.bzl
@@ -15,6 +15,8 @@
 
 _MIGRATION_TAG = "__JAVA_RULES_MIGRATION_DO_NOT_USE_WILL_BREAK__"
 
+version = "0.1.0"
+
 def _add_tags(attrs):
     if "tags" in attrs and attrs["tags"] != None:
         attrs["tags"] = attrs["tags"] + [_MIGRATION_TAG]
