diff --git a/README.md b/README.md
index 78f17ed..27e439f 100644
--- a/README.md
+++ b/README.md
@@ -26,7 +26,7 @@
 
 ### Documentation
 
-[https://heron.incubator.apache.org/](https://heron.incubator.apache.org/)
+[https://heron.incubator.apache.org/](https://heron.apache.org/)
 </br>
 Confluence: https://cwiki.apache.org/confluence/display/HERON
 
@@ -54,8 +54,8 @@
 
 ## For more information:
 
-* Official Heron documentation located at [https://heron.incubator.apache.org/](https://heron.incubator.apache.org/)
-* Official Heron resources, including Conference & Journal Papers, Videos, Blog Posts and selected Press located at [Heron Resources](https://heron.incubator.apache.org/resources)
+* Official Heron documentation located at [https://heron.apache.org/](https://heron.apache.org/)
+* Official Heron resources, including Conference & Journal Papers, Videos, Blog Posts and selected Press located at [Heron Resources](https://heron.apache.org/resources)
 * [Twitter Heron: Stream Processing at Scale](http://dl.acm.org/citation.cfm?id=2742788) (academic paper)
 * [Twitter Heron: Stream Processing at Scale](https://www.youtube.com/watch?v=pUaFOuGgmco) (YouTube video)
 * [Flying Faster with Twitter Heron](https://blog.twitter.com/2015/flying-faster-with-twitter-heron) (blog post)
diff --git a/heron/tools/cli/src/python/main.py b/heron/tools/cli/src/python/main.py
index a4a060e..735a910 100644
--- a/heron/tools/cli/src/python/main.py
+++ b/heron/tools/cli/src/python/main.py
@@ -51,7 +51,7 @@
 HELP_EPILOG = '''Getting more help:
   heron help <command> Prints help and options for <command>
 
-For detailed documentation, go to https://heron.incubator.apache.org'''
+For detailed documentation, go to https://heron.apache.org'''
 
 
 # pylint: disable=protected-access,superfluous-parens
diff --git a/release/maven/heron-kafka.template.pom b/release/maven/heron-kafka.template.pom
index 781d722..3ffa9f8 100644
--- a/release/maven/heron-kafka.template.pom
+++ b/release/maven/heron-kafka.template.pom
@@ -41,7 +41,7 @@
   <packaging>jar</packaging>
   <name>NAME</name>
   <description>DESCRIPTION</description>
-  <url>https://heron.incubator.apache.org</url>
+  <url>https://heron.apache.org</url>
   <licenses>
     <license>
       <name>The Apache License, Version 2.0</name>
diff --git a/release/maven/heron-no-kryo.template.pom b/release/maven/heron-no-kryo.template.pom
index 28d4a6c..3b40a26 100644
--- a/release/maven/heron-no-kryo.template.pom
+++ b/release/maven/heron-no-kryo.template.pom
@@ -24,7 +24,7 @@
   <packaging>jar</packaging>
   <name>NAME</name>
   <description>DESCRIPTION</description>
-  <url>https://heron.incubator.apache.org</url>
+  <url>https://heron.apache.org</url>
   <licenses>
     <license>
       <name>The Apache License, Version 2.0</name>
diff --git a/release/maven/heron-with-kryo.template.pom b/release/maven/heron-with-kryo.template.pom
index edd16f4..6a0e28a 100644
--- a/release/maven/heron-with-kryo.template.pom
+++ b/release/maven/heron-with-kryo.template.pom
@@ -24,7 +24,7 @@
   <packaging>jar</packaging>
   <name>NAME</name>
   <description>DESCRIPTION</description>
-  <url>https://heron.incubator.apache.org</url>
+  <url>https://heron.apache.org</url>
   <licenses>
     <license>
       <name>The Apache License, Version 2.0</name>
diff --git a/scripts/packages/template_bin.sh b/scripts/packages/template_bin.sh
index 4973a85..ed43311 100755
--- a/scripts/packages/template_bin.sh
+++ b/scripts/packages/template_bin.sh
@@ -15,7 +15,7 @@
 # Heron self-extractable installer for client package
 
 # Set help URL
-getting_started_url=https://heron.incubator.apache.org/docs/getting-started-local-single-node/
+getting_started_url=https://heron.apache.org/docs/getting-started-local-single-node/
 
 # Installation and etc prefix can be overriden from command line
 install_prefix=${1:-"/usr/local/heron"}
diff --git a/scripts/packages/tests_template_bin.sh b/scripts/packages/tests_template_bin.sh
index 1ca166a..947d5a9 100755
--- a/scripts/packages/tests_template_bin.sh
+++ b/scripts/packages/tests_template_bin.sh
@@ -16,7 +16,7 @@
 # used only for integration tests
 
 # Set help URL
-getting_started_url=https://heron.incubator.apache.org/docs/getting-started-local-single-node/
+getting_started_url=https://heron.apache.org/docs/getting-started-local-single-node/
 
 # Installation and etc prefix can be overriden from command line
 install_prefix=${1:-"/usr/local/herontests"}
diff --git a/website2/docs/client-api-docs-overview.md b/website2/docs/client-api-docs-overview.md
index a1ce713..afdb83b 100644
--- a/website2/docs/client-api-docs-overview.md
+++ b/website2/docs/client-api-docs-overview.md
@@ -20,6 +20,6 @@
     under the License.
 -->
 
-You can view JavaDocs [here](http://heron.incubator.apache.org/api/java)
+You can view JavaDocs [here](http://heron.apache.org/api/java)
 
-You can view Pydocs [here](http://heron.incubator.apache.org/api/python)
\ No newline at end of file
+You can view Pydocs [here](http://heron.apache.org/api/python)
\ No newline at end of file
diff --git a/website2/docs/getting-started-docker.md b/website2/docs/getting-started-docker.md
new file mode 100644
index 0000000..435e80b
--- /dev/null
+++ b/website2/docs/getting-started-docker.md
@@ -0,0 +1,49 @@
+---
+id: getting-started-docker
+title: The official Apache Heron Docker Image(s)
+sidebar_label: Heron & Docker
+---
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+
+> The current version of Heron is {{heron:version}}
+
+The official Apache Heron Docker image is located at the link below
+
+<a target="_blank" href="https://hub.docker.com/repository/docker/apache/heron">https://hub.docker.com/repository/docker/apache/heron</a>
+
+### Docker Quickstart
+In one terminal execute to start Heron in a container
+
+```bash
+$ docker run -it  --rm \ 
+   -p 8889:8889 \ 
+   -p 8888:8888 \ 
+   --name local-heron \ 
+   apache/heron:0.20.4-incubating supervisord --nodaemon
+```
+In another terminal execute the following to deploy a job:
+```bash
+$ docker exec -it \ 
+   local-heron \ 
+   bash -c "heron submit sandbox  /heron/examples/heron-eco-examples.jar org.apache.heron.eco.Eco --eco-config-file /heron/examples/heron_wordcount.yaml"
+```
+
+View your job details by navigating to `localhost:8889` in your browser.  Congratulations, you've just deployed a Heron job in Docker!
+
+
+
diff --git a/website2/docs/getting-started-local-single-node.md b/website2/docs/getting-started-local-single-node.md
index 984b090..6e0c153 100644
--- a/website2/docs/getting-started-local-single-node.md
+++ b/website2/docs/getting-started-local-single-node.md
@@ -21,37 +21,25 @@
 -->
 
 > The current version of Heron is {{heron:version}}
+For other platforms, you need to build from source. Please refer to the [guide to compiling Heron](compiling-overview).
 
-The current way to get started learning Heron is to build from source. 
-Please refer to the [guide to compiling Heron](compiling-overview). The Heron community is working to add release scripts and Heron
-binaries available from Apache mirrors soon.
+## Step 1 --- Download the Heron tools
 
-* [MacOS](#macos-homebrew)
-* [Ubuntu 18.04](#using-installation-scripts)
-* [CentOS](#using-installation-scripts)
+Heron tools can be installed using [installation scripts](#using-installation-scripts).
 
-## Building installation scripts
+> Note: As of version  0.20.4-incubating, there is a python compatibility on OSX.
+> The supported platforms are CentOS7, Debian10, and Ubuntu18.04.
 
-The only way to obtain the installation scripts at this time are to compile from source.  We are working to add release scripts and Heron
-binaries available from Apache mirrors soon.
+## Using installation scripts
 
-See how to get setup building Heron see the notes [here](compiling-overview.md)
+To install Heron binaries directly, using installation scripts, go to Heron's [download page](https://heron.apache.org/download)
+and see a full listing of Heron releases for each available platform. The installation script for macOS (`debian10`), for example, is named
+`heron-install-{{% heronVersion %}}-debian10.sh`.
 
-If you already have Bazel and the other required tools installed for your platform you can execute the following:
+Once you've downloaded the script, make it executable using [chmod](https://en.wikipedia.org/wiki/Chmod):
 
 ```bash
-$ bazel build --config=[platform] scripts/packages:binpkgs
-```
-Options for the config flag are:
-* `debian` (Debian10)
-* `ubuntu` (Ubuntu)
-* `darwin` (OSX)
-
-This command will take approximately 45 minutes to compile based on your machine settings. 
- It will output a script called `heron-install.sh`  You will be able to find it relative to the Heron root folder:
- 
- ```bash
-$ ./bazel-bin/scripts/packages/heron-install.sh 
+$ chmod +x heron-*.sh
 ```
 
 Now run the [Heron client](user-manuals-heron-cli) installation script with the `--user` flag set. Here's an example:
@@ -59,7 +47,7 @@
 > The script will install executables in the `~/bin` folder. You should add that folder to your `PATH` using `export PATH=~/bin:$PATH`.
 
 ```bash
-$ ./heron-install.sh --user
+$ ./heron-install-{{% heronVersion %}}-ubuntu.sh --user
 Heron installer
 ---------------
 
@@ -214,7 +202,7 @@
     submit             Submit a topology
     version            Print version of heron-cli
 
-For detailed documentation, go to https://heron.incubator.apache.org
+For detailed documentation, go to https://heron.apache.org
 ```
 
 To invoke help output for a command, run `heron help COMMAND`. Here's an
diff --git a/website2/docs/topology-development-topology-api-java.md b/website2/docs/topology-development-topology-api-java.md
index 11b50e2..0795170 100644
--- a/website2/docs/topology-development-topology-api-java.md
+++ b/website2/docs/topology-development-topology-api-java.md
@@ -20,9 +20,6 @@
     under the License.
 -->
 
-> This document pertains to the older, Storm-based, Heron Topology API.  Heron now offers two separate APIs for building topologies: the original, [Storm](https://storm.apache.org)-based Topology API, and the newer [Streamlet API](../../../concepts/topologies#the-heron-streamlet-api). Topologies created using the Topology API can still run on Heron and there are currently no plans to deprecate this API. We would, however, recommend that you use the Streamlet API for future work.
-
-
 A topology specifies components like spouts and bolts, as well as the relation
 between components and proper configurations. The
 [`heron-api`](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.apache.heron%22%20AND%20a%3A%22heron-api%22)
@@ -82,13 +79,13 @@
 Once your `pom.xml` is properly set up, you can compile the JAR with dependencies using this command:
 
 ```bash
-$ mvn assembly:assembly
+$ mvn package
 ```
 
 By default, this will add a JAR in your project's `target` folder with the name `PROJECT-NAME-VERSION-jar-with-dependencies.jar`. Here's an example topology submission command using a compiled JAR:
 
 ```bash
-$ mvn assembly:assembly
+$ mvn package
 $ heron submit local \
   target/my-project-1.2.3-jar-with-dependencies.jar \
   com.example.Main \
diff --git a/website2/docs/user-manuals-heron-cli.md b/website2/docs/user-manuals-heron-cli.md
index 02892c7..6c72ba0 100644
--- a/website2/docs/user-manuals-heron-cli.md
+++ b/website2/docs/user-manuals-heron-cli.md
@@ -42,7 +42,7 @@
 
 Make sure you have "/Users/$USER/bin" in your path.
 
-See https://heron.incubator.apache.org/docs/getting-started-local-single-node/ on how to use Heron!
+See https://heron.apache.org/docs/getting-started-local-single-node/ on how to use Heron!
 
 ....
 ```
diff --git a/website2/website/blog/2016-03-11-blog-post.md b/website2/website/blog/2016-03-11-blog-post.md
deleted file mode 100755
index d295d5e..0000000
--- a/website2/website/blog/2016-03-11-blog-post.md
+++ /dev/null
@@ -1,36 +0,0 @@
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you 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.
--->
----
-title: Blog Title
-author: Blog Author
-authorURL: http://twitter.com/
-authorFBID: 100002976521003
----
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus elementum massa eget nulla aliquet sagittis. Proin odio tortor, vulputate ut odio in, ultrices ultricies augue. Cras ornare ultrices lorem malesuada iaculis. Etiam sit amet libero tempor, pulvinar mauris sed, sollicitudin sapien.
-
-<!--truncate-->
-
-Mauris vestibulum ullamcorper nibh, ut semper purus pulvinar ut. Donec volutpat orci sit amet mauris malesuada, non pulvinar augue aliquam. Vestibulum ultricies at urna ut suscipit. Morbi iaculis, erat at imperdiet semper, ipsum nulla sodales erat, eget tincidunt justo dui quis justo. Pellentesque dictum bibendum diam at aliquet. Sed pulvinar, dolor quis finibus ornare, eros odio facilisis erat, eu rhoncus nunc dui sed ex. Nunc gravida dui massa, sed ornare arcu tincidunt sit amet. Maecenas efficitur sapien neque, a laoreet libero feugiat ut.
-
-Nulla facilisi. Maecenas sodales nec purus eget posuere. Sed sapien quam, pretium a risus in, porttitor dapibus erat. Sed sit amet fringilla ipsum, eget iaculis augue. Integer sollicitudin tortor quis ultricies aliquam. Suspendisse fringilla nunc in tellus cursus, at placerat tellus scelerisque. Sed tempus elit a sollicitudin rhoncus. Nulla facilisi. Morbi nec dolor dolor. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras et aliquet lectus. Pellentesque sit amet eros nisi. Quisque ac sapien in sapien congue accumsan. Nullam in posuere ante. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin lacinia leo a nibh fringilla pharetra.
-
-Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin venenatis lectus dui, vel ultrices ante bibendum hendrerit. Aenean egestas feugiat dui id hendrerit. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Curabitur in tellus laoreet, eleifend nunc id, viverra leo. Proin vulputate non dolor vel vulputate. Curabitur pretium lobortis felis, sit amet finibus lorem suscipit ut. Sed non mollis risus. Duis sagittis, mi in euismod tincidunt, nunc mauris vestibulum urna, at euismod est elit quis erat. Phasellus accumsan vitae neque eu placerat. In elementum arcu nec tellus imperdiet, eget maximus nulla sodales. Curabitur eu sapien eget nisl sodales fermentum.
-
-Phasellus pulvinar ex id commodo imperdiet. Praesent odio nibh, sollicitudin sit amet faucibus id, placerat at metus. Donec vitae eros vitae tortor hendrerit finibus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Quisque vitae purus dolor. Duis suscipit ac nulla et finibus. Phasellus ac sem sed dui dictum gravida. Phasellus eleifend vestibulum facilisis. Integer pharetra nec enim vitae mattis. Duis auctor, lectus quis condimentum bibendum, nunc dolor aliquam massa, id bibendum orci velit quis magna. Ut volutpat nulla nunc, sed interdum magna condimentum non. Sed urna metus, scelerisque vitae consectetur a, feugiat quis magna. Donec dignissim ornare nisl, eget tempor risus malesuada quis.
diff --git a/website2/website/blog/2017-04-10-blog-post-two.md b/website2/website/blog/2017-04-10-blog-post-two.md
deleted file mode 100755
index 653f3cd..0000000
--- a/website2/website/blog/2017-04-10-blog-post-two.md
+++ /dev/null
@@ -1,36 +0,0 @@
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you 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.
--->
----
-title: New Blog Post
-author: Blog Author
-authorURL: http://twitter.com/
-authorFBID: 100002976521003
----
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus elementum massa eget nulla aliquet sagittis. Proin odio tortor, vulputate ut odio in, ultrices ultricies augue. Cras ornare ultrices lorem malesuada iaculis. Etiam sit amet libero tempor, pulvinar mauris sed, sollicitudin sapien.
-
-<!--truncate-->
-
-Mauris vestibulum ullamcorper nibh, ut semper purus pulvinar ut. Donec volutpat orci sit amet mauris malesuada, non pulvinar augue aliquam. Vestibulum ultricies at urna ut suscipit. Morbi iaculis, erat at imperdiet semper, ipsum nulla sodales erat, eget tincidunt justo dui quis justo. Pellentesque dictum bibendum diam at aliquet. Sed pulvinar, dolor quis finibus ornare, eros odio facilisis erat, eu rhoncus nunc dui sed ex. Nunc gravida dui massa, sed ornare arcu tincidunt sit amet. Maecenas efficitur sapien neque, a laoreet libero feugiat ut.
-
-Nulla facilisi. Maecenas sodales nec purus eget posuere. Sed sapien quam, pretium a risus in, porttitor dapibus erat. Sed sit amet fringilla ipsum, eget iaculis augue. Integer sollicitudin tortor quis ultricies aliquam. Suspendisse fringilla nunc in tellus cursus, at placerat tellus scelerisque. Sed tempus elit a sollicitudin rhoncus. Nulla facilisi. Morbi nec dolor dolor. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras et aliquet lectus. Pellentesque sit amet eros nisi. Quisque ac sapien in sapien congue accumsan. Nullam in posuere ante. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin lacinia leo a nibh fringilla pharetra.
-
-Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin venenatis lectus dui, vel ultrices ante bibendum hendrerit. Aenean egestas feugiat dui id hendrerit. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Curabitur in tellus laoreet, eleifend nunc id, viverra leo. Proin vulputate non dolor vel vulputate. Curabitur pretium lobortis felis, sit amet finibus lorem suscipit ut. Sed non mollis risus. Duis sagittis, mi in euismod tincidunt, nunc mauris vestibulum urna, at euismod est elit quis erat. Phasellus accumsan vitae neque eu placerat. In elementum arcu nec tellus imperdiet, eget maximus nulla sodales. Curabitur eu sapien eget nisl sodales fermentum.
-
-Phasellus pulvinar ex id commodo imperdiet. Praesent odio nibh, sollicitudin sit amet faucibus id, placerat at metus. Donec vitae eros vitae tortor hendrerit finibus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Quisque vitae purus dolor. Duis suscipit ac nulla et finibus. Phasellus ac sem sed dui dictum gravida. Phasellus eleifend vestibulum facilisis. Integer pharetra nec enim vitae mattis. Duis auctor, lectus quis condimentum bibendum, nunc dolor aliquam massa, id bibendum orci velit quis magna. Ut volutpat nulla nunc, sed interdum magna condimentum non. Sed urna metus, scelerisque vitae consectetur a, feugiat quis magna. Donec dignissim ornare nisl, eget tempor risus malesuada quis.
diff --git a/website2/website/blog/2017-09-25-testing-rss.md b/website2/website/blog/2017-09-25-testing-rss.md
deleted file mode 100755
index c6916fb..0000000
--- a/website2/website/blog/2017-09-25-testing-rss.md
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you 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.
--->
----
-title: Adding RSS Support - RSS Truncation Test
-author: Eric Nakagawa
-authorURL: http://twitter.com/ericnakagawa
-authorFBID: 661277173
----
-1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
-
-This should be truncated.
-<!--truncate-->
-This line should never render in XML.
diff --git a/website2/website/blog/2017-09-26-adding-rss.md b/website2/website/blog/2017-09-26-adding-rss.md
deleted file mode 100755
index 403fa76..0000000
--- a/website2/website/blog/2017-09-26-adding-rss.md
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you 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.
--->
----
-title: Adding RSS Support
-author: Eric Nakagawa
-authorURL: http://twitter.com/ericnakagawa
-authorFBID: 661277173
----
-
-This is a test post.
-
-A whole bunch of other information.
diff --git a/website2/website/blog/2017-10-24-new-version-1.0.0.md b/website2/website/blog/2017-10-24-new-version-1.0.0.md
deleted file mode 100755
index 55f2747..0000000
--- a/website2/website/blog/2017-10-24-new-version-1.0.0.md
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you 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.
--->
----
-title: New Version 1.0.0
-author: Eric Nakagawa
-authorURL: http://twitter.com/ericnakagawa
-authorFBID: 661277173
----
-
-This blog post will test file name parsing issues when periods are present.
diff --git a/website2/website/blog/2021-05-27-0.20.4-incubating-release.md b/website2/website/blog/2021-05-27-0.20.4-incubating-release.md
new file mode 100644
index 0000000..338f0c9
--- /dev/null
+++ b/website2/website/blog/2021-05-27-0.20.4-incubating-release.md
@@ -0,0 +1,45 @@
+---
+title: 0.20.4-incubating Release
+author: Josh Fischer
+authorURL: https://www.linkedin.com/in/joshfischer1108/
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+---
+The Heron community is pleased to announce the release of version 0.20.4-incubating. 
+We are excited as this is the first release the Heron community has distributed a full set of convenience binaries from the released source code while under the Apache Foundation.
+Heron has had several improvements implemented while in incubation, and the community has learned much along the way.
+
+This is a major milestone in the incubation process at the Apache Incubator for Heron.  
+We expect the release of convenience binaries to ease the adoption of Heron in organizations across the world.
+This goal could not have been achieved without the solid community behind Heron. 
+
+Here are a few updates since the last release:
+
+* [Improving Kubernetes Resource Handling](https://github.com/apache/incubator-heron/pull/3664/)
+* [Adding Prometheus Metrics Rule](https://github.com/apache/incubator-heron/pull/3651)
+* [Use Build Kit Docker feature to shrink the Docker image size](https://github.com/apache/incubator-heron/pull/3669)
+* [Removing unused Bookkeeper Port](https://github.com/apache/incubator-heron/pull/3677)
+* [Use the full featured Zookeeper config generation script](https://github.com/apache/incubator-heron/pull/3688)
+* [Add sum/max/min reducers in Scala](https://github.com/apache/incubator-heron/pull/3133)
+
+## Additional Information
+* To download Apache Heron 0.20.4-incubating, click [here](https://heron.apache.org/download)
+* To view the official Heron Docker Image repository click [here](https://hub.docker.com/repository/docker/apache/heron)
+* Maven artifacts can be found [here](https://search.maven.org/search?q=apache-heron)
+* For more information about Apache Heron 0.20.4-incubating, see [0.20.4-incubating release notes](https://heron.apache.org/release-notes/#0.20.4) and [The 0.20.4-incubating PR List](https://github.com/apache/incubator-heron/releases/tag/0.20.4-incubating-rc1)
\ No newline at end of file
diff --git a/website2/website/heron-release.json b/website2/website/heron-release.json
index 666bcb3..f5fd3d0 100644
--- a/website2/website/heron-release.json
+++ b/website2/website/heron-release.json
@@ -1,3 +1,5 @@
 [
-  "0.20.3-incubating"
+  "0.20.4-incubating",
+  "0.20.3-incubating",
+  "0.20.0-incubating"
 ]
\ No newline at end of file
diff --git a/website2/website/pages/en/download.js b/website2/website/pages/en/download.js
index df631b5..1abec5e 100644
--- a/website2/website/pages/en/download.js
+++ b/website2/website/pages/en/download.js
@@ -8,37 +8,69 @@
 const CWD = process.cwd();
 
 const siteConfig = require(`${CWD}/siteConfig.js`);
-const releases = require(`${CWD}/releases.json`);
 const heronReleases = require(`${CWD}/heron-release.json`)
 
 function getLatestArchiveMirrorUrl(version, type) {
-    return `https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=incubator/heron/heron-${version}/heron-${version}-${type}.tar.gz`
+    return `http://www.apache.org/dyn/closer.cgi/incubator/heron/heron-${version}/heron-${version}-${type}.tar.gz?action=download`
+}
+
+function getTarUrl(version, type) {
+   return `https://downloads.apache.org/incubator/heron/heron-${version}/heron-${version}-${type}.tar.gz`
+}
+
+function getInstallScriptCryptoUrl(version, osType) {
+   return `https://downloads.apache.org/incubator/heron/heron-${version}/heron-install-${version}-${osType}.sh`
 }
 
 function distUrl(version, type) {
-    return `https://www.apache.org/dist/incubator/heron/heron-${version}/heron-${version}-${type}.tar.gz`
+    return `http://www.apache.org/dyn/closer.cgi/incubator/heron/heron-${version}/heron-${version}-${type}.tar.gz?action=download`
+}
+
+function getInstallScriptMirrorUrl(version, type) {
+    return `http://www.apache.org/dyn/closer.cgi/incubator/heron/heron-${version}/heron-install-${version}-${type}.sh`
 }
 
 function archiveUrl(version, type) {
     if (version.includes('incubating')) {
-        return `https://archive.apache.org/dist/incubator/heron/heron-${version}/apache-heron-v-${version}-${type}.tar.gz`
+
+        return `https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=/incubator/heron/heron-${version}/` + getProperEndpoint(version, type)
     } else {
-        return `https://archive.apache.org/dist/heron/heron-${version}/apache-heron-v-${version}-${type}.tar.gz`
+        return `https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=heron/heron-${version}/` + getProperEndpoint(version, type)
     }
 }
 
+function getProperEndpoint(version, type) {
+
+  if (version == "0.20.0-incubating") {
+   return `apache-heron-v-${version}-${type}.tar.gz`
+  }
+  if (type == "source") {
+    type = "src";
+  }
+  return `heron-${version}-${type}.tar.gz`
+}
+
 
 
 class Download extends React.Component {
   render() {
-    const latestVersion = releases[0];
     const latestHeronVersion = heronReleases[0];
-    const latestArchiveMirrorUrl = getLatestArchiveMirrorUrl(latestVersion, 'bin');
-    const latestSrcArchiveMirrorUrl = getLatestArchiveMirrorUrl(latestVersion, 'src');
-    const latestArchiveUrl = distUrl(latestVersion, 'bin');
-    const latestSrcArchiveUrl = distUrl(latestVersion, 'src')
+    const latestArchiveMirrorUrl = getLatestArchiveMirrorUrl(latestHeronVersion, 'bin');
+    const latestSrcArchiveMirrorUrl = getLatestArchiveMirrorUrl(latestHeronVersion, 'src');
+    const latestSrcUrl = getTarUrl(latestHeronVersion, "src");
+    const latestDebian10TarUrl =  getTarUrl(latestHeronVersion, "debian10");
+    const latestArchiveUrl = distUrl(latestHeronVersion, 'bin');
+    const latestSrcArchiveUrl = distUrl(latestHeronVersion, 'src')
+    const centos7InstallUrl = getInstallScriptMirrorUrl(latestHeronVersion, "centos7")
+    const centos7InstallCryptoUrl = getInstallScriptCryptoUrl(latestHeronVersion, "centos7")
+    const debian10InstallUrl = getInstallScriptMirrorUrl(latestHeronVersion, "debian10")
+    const debian10InstallCryptoUrl = getInstallScriptCryptoUrl(latestHeronVersion, "debian10")
+    const ubuntu1804InstallUrl = getInstallScriptMirrorUrl(latestHeronVersion, "ubuntu18.04")
+    const ubuntu1804InstallCryptoUrl = getInstallScriptCryptoUrl(latestHeronVersion, "ubuntu18.04")
 
-    const releaseInfo = releases.map(version => {
+
+
+    const releaseInfo = heronReleases.map(version => {
       return {
         version: version,
         binArchiveUrl: archiveUrl(version, 'bin'),
@@ -56,19 +88,19 @@
               <hr />
             </header>
 
-            <h2>Release notes</h2>
-            <div>
-              <p>
-                <a href={`${siteConfig.baseUrl}${this.props.language}/release-notes`}>Release notes</a> for all Heron's versions
-              </p>
-            </div>
+             <h2>Release notes</h2>
+              <div>
+                <p>
+                  <a href="https://heron.apache.org/release-notes">Release notes</a> for all of Heron's versions
+                </p>
+              </div>
 
             <h2 id="latest">Current version (Stable) {latestHeronVersion}</h2>
             <table className="versions" style={{width:'100%'}}>
               <thead>
                 <tr>
                   <th>Release</th>
-                  <th>Link</th>
+                  <th>Direct Download Link</th>
                   <th>Crypto files</th>
                 </tr>
               </thead>
@@ -78,16 +110,77 @@
                 <tr key={'source'}>
                   <th>Source</th>
                   <td>
-                    <a href={latestSrcArchiveMirrorUrl}>apache-heron-{latestVersion}-src.tar.gz</a>
+                    <a href={latestSrcArchiveMirrorUrl}>heron-{latestHeronVersion}-src.tar.gz</a>
                   </td>
                   <td>
-                    <a href={`${latestSrcArchiveUrl}.asc`}>asc</a>,&nbsp;
-                    <a href={`${latestSrcArchiveUrl}.sha512`}>sha512</a>
+                    <a href={`${latestSrcUrl}.asc`}>asc</a>,&nbsp;
+                    <a href={`${latestSrcUrl}.sha512`}>sha512</a>
+                  </td>
+                </tr>
+                <tr key={'binary'}>
+                  <th>Debian10 Binary</th>
+                  <td>
+                    <a href={latestSrcArchiveMirrorUrl}>heron-{latestHeronVersion}-debian10.tar.gz</a>
+                  </td>
+                  <td>
+                    <a href={`${latestDebian10TarUrl}.asc`}>asc</a>,&nbsp;
+                    <a href={`${latestDebian10TarUrl}.sha512`}>sha512</a>
                   </td>
                 </tr>
                 </tbody>
               </table>
 
+              <h2 id="latest">Heron Install Scripts</h2>
+              <h3 style={{color:"red"}}> READ BEFORE DOWNLOADING </h3>
+              <p>
+                To download the Heron self-extracting install scripts: click a link below for the Operating System of your choice that will show the closest mirror for you to download from.
+                 Once you are on the page with the closest mirror right click on the link and select “save as” to download the install script.
+                  If you do not right click the link will only bring you to view the script in the browser and will not start a download.
+              </p>
+              <table className="versions" style={{width:'100%'}}>
+                <thead>
+                  <tr>
+                    <th>Release</th>
+                    <th>Link to find the closest mirror</th>
+                    <th>Crypto files</th>
+                  </tr>
+                </thead>
+                <tbody>
+
+
+                  <tr key={'centos-install'}>
+                    <th>CentOS7</th>
+                    <td>
+                      <a href={`${centos7InstallUrl}`}> heron-install-0.20.4-incubating-centos7.sh</a>
+                    </td>
+                    <td>
+                      <a href={`${centos7InstallCryptoUrl}.asc`}>asc</a>,&nbsp;
+                      <a href={`${centos7InstallCryptoUrl}.sha512`}>sha512</a>
+                    </td>
+                  </tr>
+                  <tr key={'debian10-install'}>
+                    <th>Debian10</th>
+                    <td>
+                      <a href={`${debian10InstallUrl}`}> heron-install-0.20.4-incubating-debian10.sh</a>
+                    </td>
+                    <td>
+                      <a href={`${debian10InstallCryptoUrl}.asc`}>asc</a>,&nbsp;
+                      <a href={`${debian10InstallCryptoUrl}.sha512`}>sha512</a>
+                    </td>
+                  </tr>
+                   <tr key={'ubuntu18.04-install'}>
+                    <th>Ubuntu18.04</th>
+                    <td>
+                     <a href={`${ubuntu1804InstallUrl}`}> heron-install-0.20.4-incubating-ubuntu18.04.sh</a>
+                    </td>
+                    <td>
+                      <a href={`${ubuntu1804InstallCryptoUrl}.asc`}>asc</a>,&nbsp;
+                      <a href={`${ubuntu1804InstallCryptoUrl}.sha512`}>sha512</a>
+                    </td>
+                  </tr>
+                  </tbody>
+                </table>
+
 
             <h2>Release Integrity</h2>
             <MarkdownBlock>
@@ -125,10 +218,8 @@
                 {releaseInfo.map(
                   info => {
                         var sha = "sha512"
-                        if (info.version.includes('1.19.0-incubating') || info.version.includes('1.20.0-incubating')) {
-                            sha = "sha"
-                        }
-                        return info.version !== latestVersion && (
+
+                        return info.version !== latestHeronVersion && (
                             <tr key={info.version}>
                         <th>{info.version}</th>
 
diff --git a/website2/website/release-notes.md b/website2/website/release-notes.md
index b755f23..54251c9 100644
--- a/website2/website/release-notes.md
+++ b/website2/website/release-notes.md
@@ -1,6 +1,42 @@
 
 ## Releases
 
+### 0.20.4-incubating &mdash; 2019-08-27 <a id="0.20.4"></a>
+
+- 83a742f (tag: 0.20.4-incubating-rc1, upstream/master) Adding disclaimers to release artifacts [#3689](https://github.com/apache/incubator-heron/pull/3689)
+- db5c992 (origin/master, origin/HEAD) Use the proper featured Zookeeper config generation script [#3688](https://github.com/apache/incubator-heron/pull/3688)
+- 103cf19 (upstream/ubuntu20.04-arm64) updatedocandlink [#3685](https://github.com/apache/incubator-heron/pull/3685)
+- c23dba7 Updated to Kryo 5.0.4 [#3683](https://github.com/apache/incubator-heron/pull/3683)
+- 8ff6390 Fixing incorrect article title [#3682](https://github.com/apache/incubator-heron/pull/3682)
+- 63fe9fa Grammar fix [#3681](https://github.com/apache/incubator-heron/pull/3681)
+- c2d7f14 Remove cppunit-dev dependency [#3680](https://github.com/apache/incubator-heron/pull/3680)
+- 2956293 Decrease the minimum requirement of RAM of single instance to 16MB in Round Robin algorithm [#3678](https://github.com/apache/incubator-heron/pull/3678)
+- d4d3ccc Removing unused Bookkeeper hostPort that causes port conflict [#3677](https://github.com/apache/incubator-heron/pull/3677)
+- a8eb752 Specifying explicit transitive dependency for uvloop due to Python version conflict [#3675](https://github.com/apache/incubator-heron/pull/3675)
+- a945338 Fixed website style issue [#3673](https://github.com/apache/incubator-heron/pull/3673)
+- 43fa2ff Joshfischer/add download links [#3671](https://github.com/apache/incubator-heron/pull/3671)
+- bfdbd43 Reverting Glog back to 0.3.5 [#3672](https://github.com/apache/incubator-heron/pull/3672)
+- a51c822 Use Build Kit docker feature to shrink the Docker image size [#3669](https://github.com/apache/incubator-heron/pull/3669)
+- b161317 Changed heartbeat log statement to debug [#3667](https://github.com/apache/incubator-heron/pull/3667)
+- 7a75e51 Removing defaulted HeapDumpOnOutOfMemory [#3665](https://github.com/apache/incubator-heron/pull/3665)
+- f11ebc3 Added CLI submit config toggle for verbose GC logging [#3663](https://github.com/apache/incubator-heron/pull/3663)
+- fdf3430 Add sum/max/min reducers in Scala [#3133](https://github.com/apache/incubator-heron/pull/3133)
+- 1a0d198 Updated K8s Scheduler to set Resource Limits and Requests [#3664](https://github.com/apache/incubator-heron/pull/3664)
+- 0f0ba18 explicit unreleased code [#3658](https://github.com/apache/incubator-heron/pull/3658)
+- 6edbee7 Allow localhost graceful shutdown [#3650](https://github.com/apache/incubator-heron/pull/3650)
+- b363319 GLog updated to 0.4.0. Also some C++ code cleanup to remove warnings [#3655](https://github.com/apache/incubator-heron/pull/3655)
+- 6e83c96 Updated Kryo to 5.0.3 [#3657](https://github.com/apache/incubator-heron/pull/3657)
+- 1a8fc39 update notice year [#3656](https://github.com/apache/incubator-heron/pull/3656)
+- 9af45c7 Improving Kubernetes scheduler logic [#3653](https://github.com/apache/incubator-heron/pull/3653)
+- 0025251 Bumping Bazel to 3.7.2 [#3654](https://github.com/apache/incubator-heron/pull/3654)
+- 01abf01 Add Prometheus metrics rules [#3651](https://github.com/apache/incubator-heron/pull/3651)
+
+
+
+### 0.21.1-incubating &mdash; 2019-7-20 <a id="0.20.1"></a>
+
+- Example commit of 0.21.1
+
 ### 0.20.0-incubating &mdash; 2018-11-21 <a id="0.20.0"></a>
 
 This is the first release of Heron as an Apache Incubating Project
@@ -13,12 +49,5 @@
 - Nwang/update thirdparty license (#3042)
 - Fix 'Copyright 2015 The Heron Authors' in scripts (#3036)
 
-### 0.21.1-incubating &mdash; 2019-7-20 <a id="0.20.1"></a>
-
-- Example commit of 0.21.1
-
-### 0.21.2-incubating &mdash; 2019-08-27 <a id="0.21.2"></a>
-
-- Example Commit (#XXXX)
 
 
diff --git a/website2/website/releases.json b/website2/website/releases.json
deleted file mode 100644
index 99dd7df..0000000
--- a/website2/website/releases.json
+++ /dev/null
@@ -1,4 +0,0 @@
-[
-    "0.20.3-incubating",
-    "0.20.0-incubating"
-]
\ No newline at end of file
diff --git a/website2/website/scripts/replace.js b/website2/website/scripts/replace.js
index bb5ac7a..72e4e19 100755
--- a/website2/website/scripts/replace.js
+++ b/website2/website/scripts/replace.js
@@ -39,6 +39,7 @@
     '0.20.1-incubating': '0.26.0',
     '0.20.2-incubating': '0.26.0',
     '0.20.3-incubating': '3.7.0',
+    '0.20.4-incubating': '3.7.2',
     'latest': '3.7.2',
 }
 
diff --git a/website2/website/sidebars.json b/website2/website/sidebars.json
index a0324c5..05de426 100755
--- a/website2/website/sidebars.json
+++ b/website2/website/sidebars.json
@@ -4,6 +4,7 @@
     "Getting Started": [
       "getting-started-local-single-node",
       "getting-started-migrate-storm-topologies",
+      "getting-started-docker",
       "getting-started-troubleshooting-guide"
     ],
     "Deployment": [
diff --git a/website2/website/siteConfig.js b/website2/website/siteConfig.js
index 78624bc..460873e 100644
--- a/website2/website/siteConfig.js
+++ b/website2/website/siteConfig.js
@@ -53,7 +53,7 @@
   };
 };
 
-const url = 'https://heron.incubator.apache.org';
+const url = 'https://heron.apache.org';
 const baseUrl = '/';
 
 const siteVariables = {
@@ -65,6 +65,7 @@
   // For github.io type URLs, you would set the url and baseUrl like:
   url: url,
   baseUrl: baseUrl, // Base URL for your project */
+  gaTrackingId: "UA-198017384-1",
 
   // Used for publishing and more
   projectName: 'incubator-heron',
@@ -77,14 +78,12 @@
     {doc: 'getting-started-local-single-node', label: 'Docs'},
     {page: 'download', label: "Downloads"},
     {href: '#community', label: 'Community'},
-    //{blog: true, label: 'Blog'},
+    {blog: true, label: 'Blog'},
     {href: '#apache', label: 'Apache'},
     // {page: 'download', label: 'Download'},
     // Drop down for languages
     // { languages: true }
   ],
-  // explicitly set the flag to allow for indexing of the site.
-  noIndex: 'false',
 
   /* path to images for header/footer */
   headerIcon: 'img/HeronTextLogo-small.png',
diff --git a/website2/website/versioned_docs/version-0.20.0-incubating/client-api-docs-overview.md b/website2/website/versioned_docs/version-0.20.0-incubating/client-api-docs-overview.md
index 15046db..25c96df 100644
--- a/website2/website/versioned_docs/version-0.20.0-incubating/client-api-docs-overview.md
+++ b/website2/website/versioned_docs/version-0.20.0-incubating/client-api-docs-overview.md
@@ -21,6 +21,6 @@
     under the License.
 -->
 
-You can view JavaDocs [here](http://heron.incubator.apache.org/api/java)
+You can view JavaDocs [here](http://heron.apache.org/api/java)
 
-You can view Pydocs [here](http://heron.incubator.apache.org/api/python)
\ No newline at end of file
+You can view Pydocs [here](http://heron.apache.org/api/python)
\ No newline at end of file
diff --git a/website2/website/versioned_docs/version-0.20.0-incubating/getting-started-local-single-node.md b/website2/website/versioned_docs/version-0.20.0-incubating/getting-started-local-single-node.md
index 130eeb4..af83247 100644
--- a/website2/website/versioned_docs/version-0.20.0-incubating/getting-started-local-single-node.md
+++ b/website2/website/versioned_docs/version-0.20.0-incubating/getting-started-local-single-node.md
@@ -215,7 +215,7 @@
     submit             Submit a topology
     version            Print version of heron-cli
 
-For detailed documentation, go to https://heron.incubator.apache.org
+For detailed documentation, go to https://heron.apache.org
 ```
 
 To invoke help output for a command, run `heron help COMMAND`. Here's an
diff --git a/website2/website/versioned_docs/version-0.20.0-incubating/topology-development-topology-api-java.md b/website2/website/versioned_docs/version-0.20.0-incubating/topology-development-topology-api-java.md
index 5508687..61c1b08 100644
--- a/website2/website/versioned_docs/version-0.20.0-incubating/topology-development-topology-api-java.md
+++ b/website2/website/versioned_docs/version-0.20.0-incubating/topology-development-topology-api-java.md
@@ -83,13 +83,13 @@
 Once your `pom.xml` is properly set up, you can compile the JAR with dependencies using this command:
 
 ```bash
-$ mvn assembly:assembly
+$ mvn package
 ```
 
 By default, this will add a JAR in your project's `target` folder with the name `PROJECT-NAME-VERSION-jar-with-dependencies.jar`. Here's an example topology submission command using a compiled JAR:
 
 ```bash
-$ mvn assembly:assembly
+$ mvn package
 $ heron submit local \
   target/my-project-1.2.3-jar-with-dependencies.jar \
   com.example.Main \
diff --git a/website2/website/versioned_docs/version-0.20.0-incubating/user-manuals-heron-cli.md b/website2/website/versioned_docs/version-0.20.0-incubating/user-manuals-heron-cli.md
index 609cac3..c159983 100644
--- a/website2/website/versioned_docs/version-0.20.0-incubating/user-manuals-heron-cli.md
+++ b/website2/website/versioned_docs/version-0.20.0-incubating/user-manuals-heron-cli.md
@@ -43,7 +43,7 @@
 
 Make sure you have "/Users/$USER/bin" in your path.
 
-See https://heron.incubator.apache.org/docs/getting-started-local-single-node/ on how to use Heron!
+See https://heron.apache.org/docs/getting-started-local-single-node/ on how to use Heron!
 
 ....
 ```
diff --git a/website2/website/versioned_docs/version-0.20.4-incubating/compiling-linux.md b/website2/website/versioned_docs/version-0.20.4-incubating/compiling-linux.md
new file mode 100644
index 0000000..7ff5470
--- /dev/null
+++ b/website2/website/versioned_docs/version-0.20.4-incubating/compiling-linux.md
@@ -0,0 +1,212 @@
+---
+id: version-0.20.4-incubating-compiling-linux
+title: Compiling on Linux
+sidebar_label: Compiling on Linux
+original_id: compiling-linux
+---
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+
+Heron can currently be built on the following Linux platforms:
+
+* [Ubuntu 18.04](#building-on-ubuntu-18.04)
+* [CentOS 7](#building-on-centos-7)
+
+## Building on Ubuntu 18.04
+
+To build Heron on a fresh Ubuntu 18.04 installation:
+
+### Step 1 --- Update Ubuntu
+
+```bash
+$ sudo apt-get update -y
+$ sudo apt-get upgrade -y
+```
+
+### Step 2 --- Install required libraries
+
+```bash
+$ sudo apt-get install git build-essential automake cmake libtool-bin zip ant \
+  libunwind-setjmp0-dev zlib1g-dev unzip pkg-config python3-setuptools -y
+```
+
+#### Step 3 --- Set the following environment variables
+
+```bash
+export CC=/usr/bin/gcc
+export CCX=/usr/bin/g++
+```
+
+### Step 4 --- Install JDK 11 and set JAVA_HOME
+
+```bash
+$ sudo add-apt-repository ppa:webupd8team/java
+$ sudo apt-get update -y
+$ sudo apt-get install openjdk-11-jdk-headless -y
+$ export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
+```
+
+#### Step 5 - Install Bazel {{% bazelVersion %}}
+
+```bash
+wget -O /tmp/bazel.sh https://github.com/bazelbuild/bazel/releases/download/0.26.0/bazel-0.26.0-installer-linux-x86_64.sh
+chmod +x /tmp/bazel.sh
+/tmp/bazel.sh --user
+```
+
+Make sure to download the appropriate version of Bazel (currently {{%
+bazelVersion %}}).
+
+### Step 6 --- Install python development tools
+```bash
+$ sudo apt-get install  python3-dev python3-pip
+```
+
+### Step 7 --- Make sure the Bazel executable is in your `PATH`
+
+```bash
+$ export PATH="$PATH:$HOME/bin"
+```
+
+### Step 8 --- Fetch the latest version of Heron's source code
+
+```bash
+$ git clone https://github.com/apache/incubator-heron.git && cd heron
+```
+
+### Step 9 --- Configure Heron for building with Bazel
+
+```bash
+$ ./bazel_configure.py
+```
+
+### Step 10 --- Build the project
+
+```bash
+$ bazel build --config=ubuntu heron/...
+```
+
+### Step 11 --- Build the packages
+
+```bash
+$ bazel build --config=ubuntu scripts/packages:binpkgs
+$ bazel build --config=ubuntu scripts/packages:tarpkgs
+```
+
+This will install Heron packages in the `bazel-bin/scripts/packages/` directory.
+
+## Manually Installing Libraries
+
+If you encounter errors with [libunwind](http://www.nongnu.org/libunwind), [libtool](https://www.gnu.org/software/libtool), or
+[gperftools](https://github.com/gperftools/gperftools/releases), we recommend
+installing them manually.
+
+### Compling and installing libtool
+
+```bash
+$ wget http://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz
+$ tar -xvf libtool-2.4.6.tar.gz
+$ cd libtool-2.4.6
+$ ./configure
+$ make
+$ sudo make install
+```
+
+### Compiling and installing libunwind
+
+```bash
+$ wget http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz
+$ tar -xvf libunwind-1.1.tar.gz
+$ cd libunwind-1.1
+$ ./configure
+$ make
+$ sudo make install
+```
+
+### Compiling and installing gperftools
+
+```bash
+$ wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.5/gperftools-2.5.tar.gz
+$ tar -xvf gperftools-2.5.tar.gz
+$ cd gperftools-2.5
+$ ./configure
+$ make
+$ sudo make install
+```
+
+## Building on CentOS 7
+
+To build Heron on a fresh CentOS 7 installation:
+
+### Step 1 --- Install the required dependencies
+
+```bash
+$ sudo yum install gcc gcc-c++ kernel-devel wget unzip zlib-devel zip git automake cmake patch libtool ant pkg-config -y
+```
+
+### Step 2 --- Install libunwind from source
+
+```bash
+$ wget http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz
+$ tar xvf libunwind-1.1.tar.gz
+$ cd libunwind-1.1
+$ ./configure
+$ make
+$ sudo make install
+```
+
+### Step 3 --- Set the following environment variables
+
+```bash
+$ export CC=/usr/bin/gcc
+$ export CCX=/usr/bin/g++
+```
+
+### Step 4 --- Install JDK 11
+
+```bash
+$ sudo yum install java-11-openjdk java-11-openjdk-devel
+$ export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
+```
+
+#### Step 5 - Install Bazel {{% bazelVersion %}}
+
+```bash
+wget -O /tmp/bazel.sh https://github.com/bazelbuild/bazel/releases/download/0.26.0/bazel-0.26.0-installer-linux-x86_64.sh
+chmod +x /tmp/bazel.sh
+/tmp/bazel.sh --user
+```
+
+Make sure to download the appropriate version of Bazel (currently {{%
+bazelVersion %}}).
+
+### Step 6 --- Download Heron and compile it
+
+```bash
+$ git clone https://github.com/apache/incubator-heron.git && cd heron
+$ ./bazel_configure.py
+$ bazel build --config=centos heron/...
+```
+
+### Step 7 --- Build the binary packages
+
+```bash
+$ bazel build --config=centos scripts/packages:binpkgs
+$ bazel build --config=centos scripts/packages:tarpkgs
+```
+
+This will install Heron packages in the `bazel-bin/scripts/packages/` directory.
diff --git a/website2/website/versioned_docs/version-0.20.4-incubating/compiling-osx.md b/website2/website/versioned_docs/version-0.20.4-incubating/compiling-osx.md
new file mode 100644
index 0000000..20b2130
--- /dev/null
+++ b/website2/website/versioned_docs/version-0.20.4-incubating/compiling-osx.md
@@ -0,0 +1,89 @@
+---
+id: version-0.20.4-incubating-compiling-osx
+title: Compiling on OS X
+sidebar_label: Compiling on OS X
+original_id: compiling-osx
+---
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+
+This is a step-by-step guide to building Heron on Mac OS X (versions 10.10 and
+  10.11).
+
+### Step 1 --- Install Homebrew
+
+If [Homebrew](http://brew.sh/) isn't yet installed on your system, you can
+install it using this one-liner:
+
+```bash
+$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
+```
+
+### Step 2 -- Install Bazel
+```bash
+wget -O /tmp/bazel.sh https://github.com/bazelbuild/bazel/releases/download/3.7.2/bazel-3.7.2-installer-darwin-x86_64.sh
+chmod +x /tmp/bazel.sh
+/tmp/bazel.sh --user
+```
+
+### Step 2 --- Install other required libraries
+
+```bash
+brew install automake
+brew install cmake
+brew install libtool
+brew install ant
+brew install pkg-config
+```
+
+### Step 3 --- Set the following environment variables
+
+```bash
+$ export CC=/usr/bin/clang
+$ export CXX=/usr/bin/clang++
+$ echo $CC $CXX
+```
+
+### Step 4 --- Fetch the latest version of Heron's source code
+
+```bash
+$ git clone https://github.com/apache/incubator-heron.git && cd incubator-heron
+```
+
+### Step 5 --- Configure Heron for building with Bazel
+
+```bash
+$ ./bazel_configure.py
+```
+
+If this configure script fails with missing dependencies, Homebrew can be used
+to install those dependencies.
+
+### Step 6 --- Build the project
+
+```bash
+$ bazel build --config=darwin heron/...
+```
+
+### Step 7 --- Build the packages
+
+```bash
+$ bazel build --config=darwin scripts/packages:binpkgs
+$ bazel build --config=darwin scripts/packages:tarpkgs
+```
+
+This will install Heron packages in the `bazel-bin/scripts/packages/` directory.
diff --git a/website2/website/versioned_docs/version-0.20.4-incubating/compiling-overview.md b/website2/website/versioned_docs/version-0.20.4-incubating/compiling-overview.md
new file mode 100644
index 0000000..0a4d1da
--- /dev/null
+++ b/website2/website/versioned_docs/version-0.20.4-incubating/compiling-overview.md
@@ -0,0 +1,144 @@
+---
+id: version-0.20.4-incubating-compiling-overview
+title: Compiling Heron
+sidebar_label: Compiling Overview
+original_id: compiling-overview
+---
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+
+Heron is currently available for [Mac OS X 11.01](compiling-osx),
+[Ubuntu 18.04](compiling-linux), and [Debian10](compiling-docker#building-heron).
+ This guide describes the basics of the
+Heron build system. For step-by-step build instructions for other platforms,
+the following guides are available:
+
+* [Building on Linux Platforms](compiling-linux)
+* [Building on Mac OS X](compiling-osx)
+
+Heron can be built either [in its entirety](#building-all-components), as [individual components](#building-specific-components).
+
+Instructions on running unit tests for Heron can also be found in [Testing Heron](compiling-running-tests).
+
+## Requirements
+
+You must have the following installed to compile Heron:
+
+* [Bazel](http://bazel.io/docs/install.html) = {{% bazelVersion %}}. Later
+  versions might work but have not been tested. See [Installing Bazel](#installing-bazel)below.
+* [Java 11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html)
+  is required by Bazel and Heron;
+  topologies can be written in Java 7 or above
+  , but Heron jars are required to run with a Java 11 JRE.
+* [Autoconf](http://www.gnu.org/software/autoconf/autoconf.html) >=
+  2.6.3
+* [Automake](https://www.gnu.org/software/automake/) >= 1.11.1
+* [GNU Make](https://www.gnu.org/software/make/) >= 3.81
+* [GNU Libtool](http://www.gnu.org/software/libtool/) >= 2.4.6
+* [gcc/g++](https://gcc.gnu.org/) >= 4.8.1 (Linux platforms)
+* [CMake](https://cmake.org/) >= 2.6.4
+* [Python](https://www.python.org/) >= 3.8
+* [Perl](https://www.perl.org/) >= 5.8.8
+* [Ant] (https://ant.apache.org/) >= 1.10.0
+* [Pkg-Config] (https://www.freedesktop.org/wiki/Software/pkg-config/) >= 0.29.2
+
+Export the `CC` and `CXX` environment variables with a path specific to your
+machine:
+
+```bash
+$ export CC=/your-path-to/bin/c_compiler
+$ export CXX=/your-path-to/bin/c++_compiler
+$ echo $CC $CXX
+```
+
+## Installing Bazel
+
+Heron uses the [Bazel](http://bazel.io) build tool. Bazel releases can be found here:
+https://github.com/bazelbuild/bazel/releases/tag/{{% bazelVersion %}}
+and installation instructions can be found [here](http://bazel.io/docs/install.html).
+
+To ensure that Bazel has been installed, run `bazel version` and check the
+version (listed next to `Build label` in the script's output) to ensure that you
+have Bazel {{% bazelVersion %}}.
+
+## Configuring Bazel
+
+There is a Python script that you can run to configure Bazel on supported
+platforms:
+
+```bash
+$ cd /path/to/heron
+$ ./bazel_configure.py
+```
+
+## Building
+
+### Bazel OS Environments
+
+Bazel builds are specific to a given OS. When building you must specify an
+OS-specific configuration using the `--config` flag. The following OS values
+are supported:
+
+* `darwin` (Mac OS X)
+* `ubuntu` (Ubuntu 18.04)
+* `debian` (Debian10)
+* `centos5` (CentOS 7)
+
+For example, on Mac OS X (`darwin`), the following command will build all
+packages:
+
+```bash
+$ bazel build --config=darwin heron/...
+```
+
+Production release packages include additional performance optimizations
+not enabled by default. Enabling these optimizations increases build time.
+To enable production optimizations, include the `opt` flag:
+```bash
+$ bazel build -c opt --config=PLATFORM heron/...
+```
+
+### Building All Components
+
+The Bazel build process can produce either executable install scripts or
+bundled tars. To build executables or tars for all Heron components at once,
+use the following `bazel build` commands, respectively:
+
+```bash
+$ bazel build --config=PLATFORM scripts/packages:binpkgs
+$ bazel build --config=PLATFORM scripts/packages:tarpkgs
+```
+
+Resulting artifacts can be found in subdirectories below the `bazel-bin`
+directory. The `heron-tracker` executable, for example, can be found at
+`bazel-bin/heron/tools/tracker/src/python/heron-tracker`.
+
+### Building Specific Components
+
+As an alternative to building a full release, you can build Heron executables
+for a single Heron component (such as the [Heron
+Tracker](user-manuals-heron-tracker-runbook)) by passing a target to the `bazel
+build` command. For example, the following command would build the Heron Tracker:
+
+```bash
+$ bazel build --config=darwin heron/tools/tracker/src/python:heron-tracker
+```
+
+## Testing Heron
+
+Instructions for running Heron unit tests can be found at [Testing
+Heron](compiling-running-tests).
diff --git a/website2/website/versioned_docs/version-0.20.4-incubating/getting-started-docker.md b/website2/website/versioned_docs/version-0.20.4-incubating/getting-started-docker.md
new file mode 100644
index 0000000..2d5884d
--- /dev/null
+++ b/website2/website/versioned_docs/version-0.20.4-incubating/getting-started-docker.md
@@ -0,0 +1,52 @@
+---
+id: version-0.20.4-incubating-getting-started-docker
+title: The official Apache Heron Docker Image(s)
+sidebar_label: Heron & Docker
+original_id: getting-started-docker
+---
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+
+> The current version of Heron is {{heron:version}}
+
+The official Apache Heron Docker image is located at the link below
+
+<a target="_blank" href="https://hub.docker.com/repository/docker/apache/heron">https://hub.docker.com/repository/docker/apache/heron</a>
+
+### Docker Quickstart
+In one terminal execute to start Heron in a container
+
+```bash
+$ docker run -it  --rm \ 
+   -p 8889:8889 \ 
+   -p 8888:8888 \ 
+   --name local-heron \ 
+   apache/heron:0.20.4-incubating supervisord --nodaemon
+```
+In another terminal execute the following to deploy a job:
+```bash
+$ docker exec -it \ 
+   local-heron \ 
+   bash -c "heron submit sandbox  /heron/examples/heron-eco-examples.jar org.apache.heron.eco.Eco --eco-config-file /heron/examples/heron_wordcount.yaml"
+```
+
+View your job details by navigating to `localhost:8889` in your browser.  Congratulations, you've just deployed a Heron job in Docker!
+
+
+
+
+
diff --git a/website2/website/versioned_docs/version-0.20.4-incubating/getting-started-local-single-node.md b/website2/website/versioned_docs/version-0.20.4-incubating/getting-started-local-single-node.md
new file mode 100644
index 0000000..ef05e5f
--- /dev/null
+++ b/website2/website/versioned_docs/version-0.20.4-incubating/getting-started-local-single-node.md
@@ -0,0 +1,259 @@
+---
+id: version-0.20.4-incubating-getting-started-local-single-node
+title: Local (Single Node)
+sidebar_label: Local (Single Node)
+original_id: getting-started-local-single-node
+---
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+
+> The current version of Heron is {{heron:version}}
+For other platforms, you need to build from source. Please refer to the [guide to compiling Heron](compiling-overview).
+
+## Step 1 --- Download the Heron tools
+
+Heron tools can be installed using [installation scripts](#using-installation-scripts).
+
+> Note: As of version  0.20.4-incubating, there is a python compatibility on OSX.
+> The supported platforms are CentOS7, Debian10, and Ubuntu18.04.
+
+## Using installation scripts
+
+To install Heron binaries directly, using installation scripts, go to Heron's [download page](https://heron.apache.org/download)
+and see a full listing of Heron releases for each available platform. The installation script for macOS (`debian10`), for example, is named
+`heron-install-{{% heronVersion %}}-debian10.sh`.
+
+Once you've downloaded the script, make it executable using [chmod](https://en.wikipedia.org/wiki/Chmod):
+
+```bash
+$ chmod +x heron-*.sh
+```
+
+Now run the [Heron client](user-manuals-heron-cli) installation script with the `--user` flag set. Here's an example:
+
+> The script will install executables in the `~/bin` folder. You should add that folder to your `PATH` using `export PATH=~/bin:$PATH`.
+
+```bash
+$ ./heron-install-{{% heronVersion %}}-ubuntu.sh --user
+Heron installer
+---------------
+
+Uncompressing...done
+...
+Heron is now installed!
+```
+
+To check that Heron is successfully installed, run `heron version`:
+
+```bash
+$ heron version
+heron.build.git.revision : b580f689d8cbcb3026966bde2aacf6da74d5bcf5
+heron.build.git.status : Modified
+heron.build.host : MBP
+heron.build.time : Sun Mar 22 06:42:05 CDT 2020
+heron.build.timestamp : 1584877325000
+heron.build.user : ...
+heron.build.version : update-docs-compiling
+```
+
+## Step 2 --- Launch an example topology
+
+> #### Note for macOS users
+
+> If you want to run topologies locally on macOS, you may need to add your
+> hostname to your `/etc/hosts` file under `localhost`. Here's an example line:
+> `127.0.0.1 localhost My-Mac-Laptop.local`. You can fetch your hostname by simply
+> running `hostname` in your shell.
+
+If you set the `--user` flag when running the installation scripts, some example
+topologies will be installed in your `~/.heron/examples` directory. You can
+launch an example [topology](heron-topology-concepts) locally (on your machine)
+using the [Heron CLI tool](user-manuals-heron-cli):
+
+```bash
+$ heron submit local \
+  ~/.heron/examples/heron-streamlet-examples.jar \
+  org.apache.heron.examples.streamlet.WindowedWordCountTopology \
+  WindowedWordCountTopology \
+  --deploy-deactivated
+```
+
+The output should look something like this:
+
+```bash
+INFO: Launching topology 'WindowedWordCountTopology'
+
+...
+
+INFO: Topology 'WindowedWordCountTopology' launched successfully
+INFO: Elapsed time: 3.409s.
+```
+
+This will *submit* the topology to your locally running Heron cluster but it
+won't *activate* the topology because the `--deploy-deactivated` flag was set.
+Activating the topology will be explored in [step
+5](#step-5-explore-topology-management-commands) below.
+
+Note that the output shows whether the topology has been launched successfully as well
+the working directory for the topology.
+
+To check what's under the working directory, run:
+
+```bash
+$ ls -al ~/.herondata/topologies/local/${ROLE}/WindowedWordCountTopology
+-rw-r--r--   1 username  staff     6141 Oct 12 09:58 WindowedWordCountTopology.defn
+-rw-r--r--   1 username  staff        5 Oct 12 09:58 container_1_flatmap1_4.pid
+-rw-r--r--   1 username  staff        5 Oct 12 09:58 container_1_logger1_3.pid
+# etc.
+```
+
+All instances' log files can be found in `log-files` under the working directory:
+
+```bash
+$ ls -al ~/.herondata/topologies/local/${ROLE}/WindowedWordCountTopology/log-files
+total 408
+-rw-r--r--   1 username  staff   5055 Oct 12 09:58 container_1_flatmap1_4.log.0
+-rw-r--r--   1 username  staff      0 Oct 12 09:58 container_1_flatmap1_4.log.0.lck
+-rw-r--r--   1 username  staff   5052 Oct 12 09:58 container_1_logger1_3.log.0
+# etc.
+```
+
+## Step 3 --- Start Heron Tracker
+
+The [Heron Tracker](user-manuals-heron-tracker-runbook) is a web service that
+continuously gathers information about your Heron cluster. You can launch the
+tracker by running the `heron-tracker` command (which is already installed):
+
+```bash
+$ heron-tracker
+... Running on port: 8888
+... Using config file: $HOME/.herontools/conf/heron_tracker.yaml
+```
+
+You can reach Heron Tracker in your browser at [http://localhost:8888](http://localhost:8888)
+and see something like the following upon successful submission of the topology:
+![Heron Tracker](assets/heron-tracker.png)
+
+To explore Heron Tracker, please refer to [Heron Tracker Rest API](user-manuals-tracker-rest)
+
+## Step 4 --- Start Heron UI
+
+[Heron UI](user-manuals-heron-ui-runbook) is a user interface that uses Heron Tracker to
+provide detailed visual representations of your Heron topologies. To launch
+Heron UI:
+
+```bash
+$ heron-ui
+... Running on port: 8889
+... Using tracker url: http://localhost:8888
+```
+
+You can open Heron UI in your browser at [http://localhost:8889](http://localhost:8889)
+and see something like this upon successful submission of the topology:
+![Heron UI](assets/heron-ui.png)
+
+To play with Heron UI, please refer to [Heron UI Usage Guide](guides-ui-guide)
+
+## Step 5 --- Explore topology management commands
+
+In step 2 you submitted a topology to your local cluster. The `heron` CLI tool
+also enables you to activate, deactivate, and kill topologies and more.
+
+```bash
+$ heron activate local WindowedWordCountTopology
+$ heron deactivate local WindowedWordCountTopology
+$ heron kill local WindowedWordCountTopology
+```
+
+Upon successful actions, a message similar to the following will appear:
+
+```bash
+INFO: Successfully activated topology 'WindowedWordCountTopology'
+INFO: Elapsed time: 1.980s.
+```
+
+For more info on these commands, read about [topology
+lifecycles](heron-topology-concepts#topology-lifecycle).
+
+To list the available CLI commands, run `heron` by itself:
+
+```bash
+usage: heron <command> <options> ...
+
+Available commands:
+    activate           Activate a topology
+    deactivate         Deactivate a topology
+    help               Prints help for commands
+    kill               Kill a topology
+    restart            Restart a topology
+    submit             Submit a topology
+    version            Print version of heron-cli
+
+For detailed documentation, go to https://heron.apache.org
+```
+
+To invoke help output for a command, run `heron help COMMAND`. Here's an
+example:
+
+```bash
+$ heron help submit
+usage: heron submit [options] cluster/[role]/[environ] topology-file-name topology-class-name [topology-args]
+
+Required arguments:
+  cluster/[role]/[env]  Cluster, role, and environ to run topology
+  topology-file-name    Topology jar/tar/zip file
+  topology-class-name   Topology class name
+
+Optional arguments:
+  --config-path (a string; path to cluster config; default: "$HOME/.heron/conf")
+  --config-property (key=value; a config key and its value; default: [])
+  --deploy-deactivated (a boolean; default: "false")
+  -D DEFINE             Define a system property to pass to java -D when
+                        running main.
+  --verbose (a boolean; default: "false")
+```
+
+## Step 6 --- Explore other example topologies
+
+The source code for the example topologies can be found
+[on
+GitHub](https://github.com/apache/incubator-heron/tree/master/examples/src/java/org/apache/heron/examples).
+The included example topologies:
+
+* `AckingTopology.java` --- A topology with acking enabled.
+* `ComponentJVMOptionsTopology.java` --- A topology that supplies JVM options
+  for each component.
+* `CustomGroupingTopology.java` --- A topology that implements custom grouping.
+* `ExclamationTopology.java` --- A spout that emits random words to a bolt that
+  then adds an exclamation mark.
+* `MultiSpoutExclamationTopology.java` --- a topology with multiple spouts.
+* `MultiStageAckingTopology.java` --- A three-stage topology. A spout emits to a
+  bolt that then feeds to another bolt.
+* `TaskHookTopology.java` --- A topology that uses a task hook to subscribe to
+   event notifications.
+
+## Troubleshooting
+In case of any issues, please refer to [Quick Start Troubleshooting](getting-started-troubleshooting-guide).
+
+### Next Steps
+
+* [Migrate Storm topologies](getting-started-migrate-storm-topologies) to Heron with simple `pom.xml`
+  changes
+* [Deploy topologies](deployment-overview) in clustered, scheduler-driven
+  environments (such as on [Aurora](schedulers-aurora-cluster)
+  and [locally](schedulers-local))
+* [Develop topologies](heron-architecture) for Heron
\ No newline at end of file
diff --git a/website2/website/versioned_docs/version-0.20.4-incubating/heron-resources-resources.md b/website2/website/versioned_docs/version-0.20.4-incubating/heron-resources-resources.md
new file mode 100644
index 0000000..7530889
--- /dev/null
+++ b/website2/website/versioned_docs/version-0.20.4-incubating/heron-resources-resources.md
@@ -0,0 +1,69 @@
+---
+id: version-0.20.4-incubating-heron-resources-resources
+title: Heron Resources
+sidebar_label: Heron Resources
+original_id: heron-resources-resources
+---
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+
+Heron Resources outside this documentation:
+
+## Books
+
+* [Heron Streaming: Fundamentals, Applications, Operations, and Insights](https://www.springer.com/us/book/9783030600938)
+
+## Conference & Journal Papers
+
+* [Streaming@Twitter - Bulletin of the IEEE Computer Society Technical Committee on Data Engineering](http://sites.computer.org/debull/A15dec/p15.pdf) (Jul, 2016)
+* [Twitter Heron: Stream Processing at
+  Scale - SIGMOD’15](http://dl.acm.org/citation.cfm?id=2742788) (May, 2015)
+* [Storm@Twitter - SIGMOD'14](http://dl.acm.org/citation.cfm?id=2595641) (Jun, 2014)
+
+## Videos
+
+* [Twitter Heron on Apache Aurora - #compute event @Twitter](https://m.youtube.com/watch?v=ua0ufmr9sQI&feature=youtu.be) (Apr, 2016)
+* [Flying Faster with Heron - InfoQ](http://www.infoq.com/presentations/twitter-heron) (Apr, 2016)
+* [Twitter Heron: Stream Processing at
+  Scale - @Scale](https://www.youtube.com/watch?v=pUaFOuGgmco) (Sep, 2015)
+* [Stream Processing and Anomaly Detection - Velocity O'Reilly - Note: requires O'Reilly login ](
+https://player.oreilly.com/videos/9781491927977?login=true)(Jun, 2015)
+* [Building Apache Heron - BazelCon 2018](https://www.youtube.com/watch?v=yBTSfA4YDtY&t=1s)(Oct, 2018)
+
+##  Blog Posts
+* [Leaving the Nest: Heron donated to Apache Software Foundation](https://blog.twitter.com/engineering/en_us/topics/open-source/2018/heron-donated-to-apache-software-foundation.html) (Feb, 2018)
+* [Open Sourcing Twitter Heron](https://blog.twitter.com/2016/open-sourcing-twitter-heron) (May, 2016)
+* [Flying Faster with Twitter
+  Heron](https://blog.twitter.com/2015/flying-faster-with-twitter-heron) (June, 2015)
+* [Deploying Heron on a Cluster of Machines with Apache Aurora](http://streamanalytics.blogspot.com/2016/06/deploying-heron-on-cluster-of-machines.html) (Supun Kamburugamuve, Jun, 2016)
+* [Setting up Heron Locally with Apache Aurora](http://pulasthisupun.blogspot.com/2016/06/setting-up-heron-cluster-with-apache.html) (Pulasthi Supun, Jun, 2016)
+* [Introducing Heron’s ECO; A Flexible Way To Manage Topologies](https://1904labs.com/2018/02/14/introducing-herons-eco-flexible-way-manage-topologies/) (Feb, 2018)
+
+## Slides
+
+* [Real-Time Analytics: Algorithms and Systems - Twitter University ](
+http://www.slideshare.net/arunkejariwal/real-time-analytics-algorithms-and-systems) (May, 2016)
+* [Stream Processing and Anomaly Detection - Velocity O'Reilly ](http://www.slideshare.net/arunkejariwal/velocity-2015final)(Jun, 2015)
+
+## Press 
+
+* [Heron, Twitter's Data Streaming Platform, Has Been Open Sourced](http://www.benzinga.com/tech/16/06/8119962/heron-twitters-data-streaming-platform-has-been-open-sourced) (BenZinga, Jun, 2016)
+* [Twitter Open Sources Heron -- Data Streaming For Dummies](http://www.forbes.com/sites/adrianbridgwater/2016/06/16/twitter-open-sources-heron-data-streaming-for-dummies/#6f8984319b50) (Forbes, Jun, 2016)
+* [Getting Started with Heron on Apache Mesos and Apache Kafka](https://allthingshadoop.com/2016/05/30/getting-started-with-heron-on-apache-mesos-and-apache-kafka/) (All Things Hadoop, May, 2016)
+* [Twitter open-sources Heron, its real-time stream-processing engine](http://venturebeat.com/2016/05/25/twitter-open-sources-heron-its-real-time-stream-processing-engine/) (VentureBeat, May, 2016)
+* [Twitter's Heron Will Start a New Chapter in Real-Time Streaming](http://www.forbes.com/sites/janakirammsv/2015/06/08/twitters-heron-will-start-a-new-chapter-in-real-time-streaming/#62c8645b2306) (Forbes, Jun, 2015)
+* [Twitter Has Replaced Storm with Heron](https://www.infoq.com/news/2015/06/twitter-storm-heron) (InfoQ, Jun, 2015)
\ No newline at end of file
diff --git a/website2/website/versioned_sidebars/version-0.20.4-incubating-sidebars.json b/website2/website/versioned_sidebars/version-0.20.4-incubating-sidebars.json
new file mode 100644
index 0000000..c4c48c0
--- /dev/null
+++ b/website2/website/versioned_sidebars/version-0.20.4-incubating-sidebars.json
@@ -0,0 +1,100 @@
+{
+  "version-0.20.4-incubating-docs": {
+    "Getting Started": [
+      "version-0.20.4-incubating-getting-started-local-single-node",
+      "version-0.20.4-incubating-getting-started-migrate-storm-topologies",
+      "version-0.20.4-incubating-getting-started-docker",
+      "version-0.20.4-incubating-getting-started-troubleshooting-guide"
+    ],
+    "Deployment": [
+      "version-0.20.4-incubating-deployment-overview",
+      "version-0.20.4-incubating-deployment-configuration",
+      "version-0.20.4-incubating-deployment-api-server"
+    ],
+    "Topology Development APIs": [
+      "version-0.20.4-incubating-topology-development-streamlet-api",
+      "version-0.20.4-incubating-topology-development-eco-api",
+      "version-0.20.4-incubating-topology-development-topology-api-java",
+      "version-0.20.4-incubating-topology-development-topology-api-python",
+      "version-0.20.4-incubating-topology-development-streamlet-scala"
+    ],
+    "Client API Docs": [
+      "version-0.20.4-incubating-client-api-docs-overview"
+    ],
+    "Guides": [
+      "version-0.20.4-incubating-guides-effectively-once-java-topologies",
+      "version-0.20.4-incubating-guides-data-model",
+      "version-0.20.4-incubating-guides-tuple-serialization",
+      "version-0.20.4-incubating-guides-ui-guide",
+      "version-0.20.4-incubating-guides-topology-tuning",
+      "version-0.20.4-incubating-guides-packing-algorithms",
+      "version-0.20.4-incubating-guides-simulator-mode",
+      "version-0.20.4-incubating-guides-troubeshooting-guide"
+    ],
+    "Heron Concepts": [
+      "version-0.20.4-incubating-heron-design-goals",
+      "version-0.20.4-incubating-heron-topology-concepts",
+      "version-0.20.4-incubating-heron-streamlet-concepts",
+      "version-0.20.4-incubating-heron-architecture",
+      "version-0.20.4-incubating-heron-delivery-semantics"
+    ],
+    "State Managers": [
+      "version-0.20.4-incubating-state-managers-zookeeper",
+      "version-0.20.4-incubating-state-managers-local-fs"
+    ],
+    "Uploaders": [
+      "version-0.20.4-incubating-uploaders-local-fs",
+      "version-0.20.4-incubating-uploaders-hdfs",
+      "version-0.20.4-incubating-uploaders-http",
+      "version-0.20.4-incubating-uploaders-amazon-s3",
+      "version-0.20.4-incubating-uploaders-scp"
+    ],
+    "Schedulers": [
+      "version-0.20.4-incubating-schedulers-k8s-by-hand",
+      "version-0.20.4-incubating-schedulers-k8s-with-helm",
+      "version-0.20.4-incubating-schedulers-aurora-cluster",
+      "version-0.20.4-incubating-schedulers-aurora-local",
+      "version-0.20.4-incubating-schedulers-local",
+      "version-0.20.4-incubating-schedulers-nomad",
+      "version-0.20.4-incubating-schedulers-mesos-local-mac",
+      "version-0.20.4-incubating-schedulers-slurm",
+      "version-0.20.4-incubating-schedulers-yarn"
+    ],
+    "Cluster Configuration": [
+      "version-0.20.4-incubating-cluster-config-overview",
+      "version-0.20.4-incubating-cluster-config-system-level",
+      "version-0.20.4-incubating-cluster-config-instance",
+      "version-0.20.4-incubating-cluster-config-metrics",
+      "version-0.20.4-incubating-cluster-config-stream",
+      "version-0.20.4-incubating-cluster-config-tmanager"
+    ],
+    "Observability": [
+      "version-0.20.4-incubating-observability-prometheus",
+      "version-0.20.4-incubating-observability-graphite",
+      "version-0.20.4-incubating-observability-scribe"
+    ],
+    "User Manuals": [
+      "version-0.20.4-incubating-user-manuals-heron-cli",
+      "version-0.20.4-incubating-user-manuals-heron-explorer",
+      "version-0.20.4-incubating-user-manuals-tracker-rest",
+      "version-0.20.4-incubating-user-manuals-heron-tracker-runbook",
+      "version-0.20.4-incubating-user-manuals-heron-ui-runbook",
+      "version-0.20.4-incubating-user-manuals-heron-shell"
+    ],
+    "Compiling": [
+      "version-0.20.4-incubating-compiling-overview",
+      "version-0.20.4-incubating-compiling-linux",
+      "version-0.20.4-incubating-compiling-osx",
+      "version-0.20.4-incubating-compiling-docker",
+      "version-0.20.4-incubating-compiling-running-tests",
+      "version-0.20.4-incubating-compiling-code-organization"
+    ],
+    "Extending Heron": [
+      "version-0.20.4-incubating-extending-heron-scheduler",
+      "version-0.20.4-incubating-extending-heron-metric-sink"
+    ],
+    "Heron Resources": [
+      "version-0.20.4-incubating-heron-resources-resources"
+    ]
+  }
+}
diff --git a/website2/website/versions.json b/website2/website/versions.json
index 707894d..99b1145 100644
--- a/website2/website/versions.json
+++ b/website2/website/versions.json
@@ -1,4 +1,5 @@
 [
+  "0.20.4-incubating",
   "0.20.3-incubating",
   "0.20.2-incubating",
   "0.20.1-incubating",
