You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sedona.apache.org by ji...@apache.org on 2021/10/06 21:46:49 UTC

[incubator-sedona] branch master updated: [DOCS] Add missing file headers and add more scripts to check ASF requirement before release (#551)

This is an automated email from the ASF dual-hosted git repository.

jiayu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-sedona.git


The following commit(s) were added to refs/heads/master by this push:
     new 7133eb9  [DOCS] Add missing file headers and add more scripts to check ASF requirement before release (#551)
7133eb9 is described below

commit 7133eb9e51171240b1035f664e542514e65f7348
Author: Jia Yu <ji...@apache.org>
AuthorDate: Wed Oct 6 14:46:43 2021 -0700

    [DOCS] Add missing file headers and add more scripts to check ASF requirement before release (#551)
---
 .github/workflows/docs.yml                         |   2 +-
 R/DESCRIPTION                                      |   5 +-
 R/generate-docs.R                                  |  24 --
 R/tests/testthat.R                                 |  17 +
 R/tests/testthat/helper-initialize.R               |  17 +
 R/tests/testthat/test-apply-spatial-partitioner.R  |  17 +
 R/tests/testthat/test-bounding-box.R               |  17 +
 R/tests/testthat/test-build-index.R                |  17 +
 R/tests/testthat/test-crs-transform.R              |  17 +
 R/tests/testthat/test-data-interface.R             |  17 +
 R/tests/testthat/test-dbplyr-integration.R         |  17 +
 R/tests/testthat/test-init.R                       |  17 +
 R/tests/testthat/test-sdf-interface.R              |  17 +
 R/tests/testthat/test-spatial-join.R               |  17 +
 R/tests/testthat/test-spatial-queries.R            |  17 +
 .../testthat/test-spatial-rdd-aggregation-fns.R    |  17 +
 R/tests/testthat/test-viz.R                        |  17 +
 docs/download/compile.md                           |  10 -
 docs/download/download.md                          |   7 +
 docs/download/publish.md                           | 362 +++++++++++++++++----
 examples/rdd-colocation-mining/build.sbt           |  19 ++
 examples/sql/build.sbt                             |  18 +
 examples/viz/build.sbt                             |  19 ++
 generate-docs.R                                    |  41 +++
 mkdocs.yml                                         |   3 +
 python/sedona/version.py                           |   2 +-
 .../spark/sql/sedona_sql/io/ImageOptions.scala     |  18 +
 zeppelin/package.json                              |   2 +-
 28 files changed, 675 insertions(+), 95 deletions(-)

diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 7a23fd4..7786b31 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -22,7 +22,7 @@ jobs:
     - run: pip install mkdocs-git-revision-date-localized-plugin
     - run: sudo apt update
     - run: sudo apt install littler tree libcurl4-openssl-dev
-    - run: (cd R;sudo Rscript generate-docs.R)
+    - run: (sudo Rscript generate-docs.R)
 
     - uses: actions/cache@v2
       with:
diff --git a/R/DESCRIPTION b/R/DESCRIPTION
index 8c936e5..b88e66f 100644
--- a/R/DESCRIPTION
+++ b/R/DESCRIPTION
@@ -1,7 +1,7 @@
 Type: Package
 Package: apache.sedona
 Title: R Interface for Apache Sedona
-Version: 1.1.0
+Version: 1.1.1
 Authors@R:
     c(person(family = "Apache Sedona",
              role = c("aut", "cre"),
@@ -26,6 +26,5 @@ Suggests:
     knitr,
     rmarkdown
 Encoding: UTF-8
-RoxygenNote: 7.1.1
+RoxygenNote: 7.1.2
 SystemRequirements: Spark: 2.4.x or 3.x
-VignetteBuilder: knitr
diff --git a/R/generate-docs.R b/R/generate-docs.R
deleted file mode 100644
index 0d4f246..0000000
--- a/R/generate-docs.R
+++ /dev/null
@@ -1,24 +0,0 @@
-# Install all dependencies if they are not installed
-# Pandoc needs to be installed: brew install pandoc
-list.of.packages <- c("sparklyr", "roxygen2", "tools")
-new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
-if(length(new.packages)) install.packages(new.packages, repos = "http://cran.us.r-project.org")
-
-# Generate Rd files in man/
-roxygen2::roxygenize()
-
-# Script to convert .Rd and .Rmd files from man/ and vignettes to docs/*.md for use by MkDocs
-library("tools")
-
-# Create two dir if not exist
-dir.create(file.path("../docs/api/", "rdocs"), showWarnings = FALSE)
-
-# Convert Rd files to markdown
-
-files = dir("man/")
-for(file in files){
-  infile = file.path("man/", file)
-  outfile = file.path("../docs/api/rdocs", gsub(".Rd", ".html", file))
-  Rd2HTML(infile, outfile, package = "apache.sedona", stages = c("install", "render"))
-}
-
diff --git a/R/tests/testthat.R b/R/tests/testthat.R
index d378a50..999122d 100644
--- a/R/tests/testthat.R
+++ b/R/tests/testthat.R
@@ -1,3 +1,20 @@
+#  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.
+
 library(sparklyr)
 library(apache.sedona)
 library(testthat)
diff --git a/R/tests/testthat/helper-initialize.R b/R/tests/testthat/helper-initialize.R
index ed4a1bc..4ca1eef 100644
--- a/R/tests/testthat/helper-initialize.R
+++ b/R/tests/testthat/helper-initialize.R
@@ -1,3 +1,20 @@
+#  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.
+
 testthat_spark_connection <- function(conn_retry_interval_s = 2) {
   conn_key <- ".testthat_spark_connection"
   if (!exists(conn_key, envir = .GlobalEnv)) {
diff --git a/R/tests/testthat/test-apply-spatial-partitioner.R b/R/tests/testthat/test-apply-spatial-partitioner.R
index 6722e37..c50eb93 100644
--- a/R/tests/testthat/test-apply-spatial-partitioner.R
+++ b/R/tests/testthat/test-apply-spatial-partitioner.R
@@ -1,3 +1,20 @@
+#  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.
+
 context("apply spatial partition")
 
 sc <- testthat_spark_connection()
diff --git a/R/tests/testthat/test-bounding-box.R b/R/tests/testthat/test-bounding-box.R
index f03f5d6..5743e67 100644
--- a/R/tests/testthat/test-bounding-box.R
+++ b/R/tests/testthat/test-bounding-box.R
@@ -1,3 +1,20 @@
+#  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.
+
 context("bounding box")
 
 test_that("bounding box object works as expected", {
diff --git a/R/tests/testthat/test-build-index.R b/R/tests/testthat/test-build-index.R
index 15ca5f2..674d07f 100644
--- a/R/tests/testthat/test-build-index.R
+++ b/R/tests/testthat/test-build-index.R
@@ -1,3 +1,20 @@
+#  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.
+
 context("build index")
 
 sc <- testthat_spark_connection()
diff --git a/R/tests/testthat/test-crs-transform.R b/R/tests/testthat/test-crs-transform.R
index 4ca66e9..3056486 100644
--- a/R/tests/testthat/test-crs-transform.R
+++ b/R/tests/testthat/test-crs-transform.R
@@ -1,3 +1,20 @@
+#  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.
+
 context("CRS transform")
 
 test_that("crs_transform() works as expected", {
diff --git a/R/tests/testthat/test-data-interface.R b/R/tests/testthat/test-data-interface.R
index 34127fd..1f908d9 100644
--- a/R/tests/testthat/test-data-interface.R
+++ b/R/tests/testthat/test-data-interface.R
@@ -1,3 +1,20 @@
+#  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.
+
 context("data interface")
 
 sc <- testthat_spark_connection()
diff --git a/R/tests/testthat/test-dbplyr-integration.R b/R/tests/testthat/test-dbplyr-integration.R
index d0d13e2..c5223dd 100644
--- a/R/tests/testthat/test-dbplyr-integration.R
+++ b/R/tests/testthat/test-dbplyr-integration.R
@@ -1,3 +1,20 @@
+#  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.
+
 context("dbplyr integration")
 
 sc <- testthat_spark_connection()
diff --git a/R/tests/testthat/test-init.R b/R/tests/testthat/test-init.R
index 0b2161c..0f0ea76 100644
--- a/R/tests/testthat/test-init.R
+++ b/R/tests/testthat/test-init.R
@@ -1,3 +1,20 @@
+#  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.
+
 context("initialization")
 
 sc <- testthat_spark_connection()
diff --git a/R/tests/testthat/test-sdf-interface.R b/R/tests/testthat/test-sdf-interface.R
index 4e5b4dc..9131a5c 100644
--- a/R/tests/testthat/test-sdf-interface.R
+++ b/R/tests/testthat/test-sdf-interface.R
@@ -1,3 +1,20 @@
+#  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.
+
 context("sdf interface")
 
 sc <- testthat_spark_connection()
diff --git a/R/tests/testthat/test-spatial-join.R b/R/tests/testthat/test-spatial-join.R
index a3569a7..863739e 100644
--- a/R/tests/testthat/test-spatial-join.R
+++ b/R/tests/testthat/test-spatial-join.R
@@ -1,3 +1,20 @@
+#  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.
+
 context("spatial join")
 
 sc <- testthat_spark_connection()
diff --git a/R/tests/testthat/test-spatial-queries.R b/R/tests/testthat/test-spatial-queries.R
index 8825f1f..1520688 100644
--- a/R/tests/testthat/test-spatial-queries.R
+++ b/R/tests/testthat/test-spatial-queries.R
@@ -1,3 +1,20 @@
+#  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.
+
 context("spatial queries")
 
 sc <- testthat_spark_connection()
diff --git a/R/tests/testthat/test-spatial-rdd-aggregation-fns.R b/R/tests/testthat/test-spatial-rdd-aggregation-fns.R
index af9e010..16c8a63 100644
--- a/R/tests/testthat/test-spatial-rdd-aggregation-fns.R
+++ b/R/tests/testthat/test-spatial-rdd-aggregation-fns.R
@@ -1,3 +1,20 @@
+#  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.
+
 context("spatial RDD aggregation functions")
 
 sc <- testthat_spark_connection()
diff --git a/R/tests/testthat/test-viz.R b/R/tests/testthat/test-viz.R
index 434839f..8ed95f6 100644
--- a/R/tests/testthat/test-viz.R
+++ b/R/tests/testthat/test-viz.R
@@ -1,3 +1,20 @@
+#  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.
+
 context("visualization")
 
 sc <- testthat_spark_connection()
diff --git a/docs/download/compile.md b/docs/download/compile.md
index 3d46ebd..1ae2b57 100644
--- a/docs/download/compile.md
+++ b/docs/download/compile.md
@@ -117,13 +117,3 @@ After installing MkDocs and MkDocs-Material, run the command in Sedona root fold
 mkdocs serve
 ```
 
-### Compile R html docs
-
-1. Make sure you install R, tree and curl on your Ubuntu machine
-```
-sudo apt install littler tree libcurl4-openssl-dev
-```
-2. In the `R` directory, run `Rscript generate-docs.R`. This will create `rdocs` folder in `/docs/api/rdocs`
-
-3. In `/docs/api/rdocs`, run `tree -H '.' -L 1 --noreport --charset utf-8 -o index.html` to generate `index.html`
-
diff --git a/docs/download/download.md b/docs/download/download.md
index e4e39e4..5909d9e 100644
--- a/docs/download/download.md
+++ b/docs/download/download.md
@@ -14,6 +14,13 @@ Automatically generated binary JARs (per each Master branch commit): [GitHub Act
 
 ## Versions
 
+### 1.1.0-incubating
+
+| | Download from ASF | Checksum | Signature |
+|:-----------------:|:--------:|:--------:|:---------:|
+|    Source code    |    [src](https://www.apache.org/dyn/closer.lua/incubator/sedona/1.1.0-incubating/apache-sedona-1.1.0-incubating-src.tar.gz)      |     [src.sha512](https://downloads.apache.org/incubator/sedona/1.1.0-incubating/apache-sedona-1.1.0-incubating-src.tar.gz.sha512)     |     [src.asc](https://downloads.apache.org/incubator/sedona/1.1.0-incubating/apache-sedona-1.1.0-incubating-src.tar.gz.asc)      |
+|       Binary      |    [bin](https://www.apache.org/dyn/closer.lua/incubator/sedona/1.1.0-incubating/apache-sedona-1.1.0-incubating-bin.tar.gz)      |     [bin.sha512](https://downloads.apache.org/incubator/sedona/1.1.0-incubating/apache-sedona-1.1.0-incubating-bin.tar.gz.sha512)     |     [bin.asc](https://downloads.apache.org/incubator/sedona/1.1.0-incubating/apache-sedona-1.1.0-incubating-bin.tar.gz.asc)      |
+
 ### 1.0.1-incubating
 
 | | Download from ASF | Checksum | Signature |
diff --git a/docs/download/publish.md b/docs/download/publish.md
index 0ae196e..4a5ffd0 100644
--- a/docs/download/publish.md
+++ b/docs/download/publish.md
@@ -1,5 +1,21 @@
 # Publish Sedona
 
+## Check ASF copyright in all file headers
+
+1. Download [Apache Rat binary (.jar file)](https://creadur.apache.org/rat/download_rat.cgi).
+2. Run the following terminal script:
+```bash
+#!/bin/bash
+git clone --shared --branch master https://github.com/apache/incubator-sedona.git sedona-src
+java -jar apache-rat-0.13.jar -d sedona-src > report.txt
+```
+3. Read the generated report.txt file and make sure all source code files have ASF header.
+4. Delete the generated report and cloned files
+```
+rm -rf sedona-src
+rm report.txt
+```
+
 ## Publish the doc website
 
 1. Run `mkdocs build` in Sedona root directory. Copy all content in the `site` folder.
@@ -21,6 +37,20 @@ You should first compile the entire docs using `mkdocs build` to get the `site`
 1. Copy the generated Javadoc (Scaladoc should already be there) to the corresponding folders in `site/api/javadoc`
 2. Deploy Javadoc and Scaladoc with the project website
 
+
+### Compile R html docs
+
+1. Make sure you install R, tree and curl on your Ubuntu machine. On Mac, just do `brew install tree`
+```
+sudo apt install littler tree libcurl4-openssl-dev
+```
+2. In the Sedona root directory, run the script below. This will create `rdocs` folder in Sedona `/docs/api/rdocs`
+```bash
+#!/bin/bash
+Rscript generate-docs.R
+cd ./docs/api/rdocs && tree -H '.' -L 1 --noreport --charset utf-8 -o index.html && cd ../../../
+```
+
 !!!note
 	Please read the following guidelines first: 1. ASF Incubator Distribution Guidelines: https://incubator.apache.org/guides/distribution.html 2. ASF Release Guidelines: https://infra.apache.org/release-publishing.html 3. ASF Incubator Release Votes Guidelines: https://issues.apache.org/jira/browse/LEGAL-469
 
@@ -67,15 +97,23 @@ mvn deploy -DskipTests -Dscala=2.12 -Dspark=2.4
 
 ## Publish releases
 
+### Update Sedona Python, R and Zeppelin versions
+
+Make sure the Sedona version in the following files are {{ sedona.current_version }}. Note that: Python and R versions cannot have "incubating" postfix.
+
+1. https://github.com/apache/incubator-sedona/blob/master/python/sedona/version.py
+2. https://github.com/apache/incubator-sedona/blob/master/R/DESCRIPTION
+3. https://github.com/apache/incubator-sedona/blob/master/zeppelin/package.json
+
 ### Stage the Release Candidate
 
 This step is to stage the release to https://repository.apache.org
 
 #### For Spark 3.0 and Scala 2.12
 
-1. Prepare a release. Manually enter the following variables in the terminal: release id: ==1.0.0-incubating==, scm tag id: ==sedona-1.0.0-incubating-rc1== (this is just an example. Please use the correct version number). You also need to provide GitHub username and password three times.
+1. Prepare a release. Manually enter the following variables in the terminal: release id: `{{ sedona.current_version }}`, scm tag id: `{{ sedona.current_git_tag }}`. You also need to provide GitHub username and password three times.
 ```bash
-mvn clean release:prepare -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests" 
+mvn clean release:prepare -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests"
 ```
 2. Stage a release
 ```bash
@@ -83,108 +121,322 @@ mvn clean release:perform -DautoVersionSubmodules=true -Dresume=false -Dargument
 ```
 3. Now the releases are staged. A tag and two commits will be created on Sedona GitHub repo.
 
-Now let's repeat the process to other Sedona modules. Make sure you use the correct SCM Git tag id. For example, ==sedona-1.0.0-incubating-rc1== (see below).
+Now let's repeat the process to other Sedona modules. Make sure you use the correct SCM Git tag id `{{ sedona.current_git_tag }}` (see below).
 
 #### For Spark 2.4 and Scala 2.11
 
 ```
-mvn org.apache.maven.plugins:maven-release-plugin:2.3.2:perform -DconnectionUrl=scm:git:https://github.com/apache/incubator-sedona.git -Dtag=sedona-1.0.0-incubating-rc1 -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests -Dscala=2.11 -Dspark=2.4"
+mvn org.apache.maven.plugins:maven-release-plugin:2.3.2:perform -DconnectionUrl=scm:git:https://github.com/apache/incubator-sedona.git -Dtag={{ sedona.current_git_tag }} -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests -Dscala=2.11 -Dspark=2.4"
 ```
 
 #### For Spark 2.4 and Scala 2.12
 
 ```
-mvn org.apache.maven.plugins:maven-release-plugin:2.3.2:perform -DconnectionUrl=scm:git:https://github.com/apache/incubator-sedona.git -Dtag=sedona-1.0.0-incubating-rc1 -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests -Dscala=2.12 -Dspark=2.4"
+mvn org.apache.maven.plugins:maven-release-plugin:2.3.2:perform -DconnectionUrl=scm:git:https://github.com/apache/incubator-sedona.git -Dtag={{ sedona.current_git_tag }} -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests -Dscala=2.12 -Dspark=2.4"
 ```
 
-#### Use Maven Release Plugin directly from an existing tag
 
-In some cases (i.e., the staging repo on repository.apache.org is closed by mistake), if you need to do `mvn release:perform` from an existing tag, you should use the following command. Note that: you have to use `org.apache.maven.plugins:maven-release-plugin:2.3.2:perform` due to a bug in maven release plugin from v2.4 (https://issues.apache.org/jira/browse/SCM-729). Make sure you use the correct scm tag (i.e.,  `sedona-1.0.0-incubating-rc1`).
+### Upload Release Candidate
 
-##### For Spark 3.0 and Scala 2.12
+All release candidates must be first placed in ASF Dist Dev SVN before vote: https://dist.apache.org/repos/dist/dev/incubator/sedona
 
+1. Make sure your armored PGP public key (must be encrypted by RSA-4096) is included in the `KEYS` file: https://dist.apache.org/repos/dist/dev/incubator/sedona/KEYS, and publish in major key servers: https://pgp.mit.edu/, https://keyserver.ubuntu.com/, http://keys.gnupg.net/
+2. Create a folder on SVN, such as `{{ sedona.current_git_tag }}`
+```bash
+#!/bin/bash
+svn mkdir -m "Adding folder" https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}
+```
+3. In a folder other than the Sedona git repo, run the following script to create six files and two folders.
+```bash
+#!/bin/bash
+git clone --shared --branch {{ sedona.current_git_tag}} https://github.com/apache/incubator-sedona.git apache-sedona-{{ sedona.current_version }}-src
+rm -rf apache-sedona-{{ sedona.current_version }}-src/.git
+tar czf apache-sedona-{{ sedona.current_version }}-src.tar.gz apache-sedona-{{ sedona.current_version }}-src
+mkdir apache-sedona-{{ sedona.current_version }}-bin
+cd apache-sedona-{{ sedona.current_version }}-src && mvn clean install -DskipTests -Dscala=2.12 -Dspark=3.0 && cd ..
+cp apache-sedona-{{ sedona.current_version }}-src/core/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
+cp apache-sedona-{{ sedona.current_version }}-src/sql/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
+cp apache-sedona-{{ sedona.current_version }}-src/viz/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
+cp apache-sedona-{{ sedona.current_version }}-src/python-adapter/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
+cd apache-sedona-{{ sedona.current_version }}-src && mvn clean install -DskipTests -Dscala=2.11 -Dspark=2.4 && cd ..
+cp apache-sedona-{{ sedona.current_version }}-src/core/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
+cp apache-sedona-{{ sedona.current_version }}-src/sql/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
+cp apache-sedona-{{ sedona.current_version }}-src/viz/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
+cp apache-sedona-{{ sedona.current_version }}-src/python-adapter/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
+cd apache-sedona-{{ sedona.current_version }}-src && mvn clean install -DskipTests -Dscala=2.12 -Dspark=2.4 && cd ..
+cp apache-sedona-{{ sedona.current_version }}-src/core/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
+cp apache-sedona-{{ sedona.current_version }}-src/sql/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
+cp apache-sedona-{{ sedona.current_version }}-src/viz/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
+cp apache-sedona-{{ sedona.current_version }}-src/python-adapter/target/sedona-*{{ sedona.current_version}}.jar apache-sedona-{{ sedona.current_version }}-bin/
+tar czf apache-sedona-{{ sedona.current_version }}-bin.tar.gz apache-sedona-{{ sedona.current_version }}-bin
+shasum -a 512 apache-sedona-{{ sedona.current_version }}-src.tar.gz > apache-sedona-{{ sedona.current_version }}-src.tar.gz.sha512
+shasum -a 512 apache-sedona-{{ sedona.current_version }}-bin.tar.gz > apache-sedona-{{ sedona.current_version }}-bin.tar.gz.sha512
+gpg -ab apache-sedona-{{ sedona.current_version }}-src.tar.gz
+gpg -ab apache-sedona-{{ sedona.current_version }}-bin.tar.gz
 ```
-mvn org.apache.maven.plugins:maven-release-plugin:2.3.2:perform -DconnectionUrl=scm:git:https://github.com/apache/incubator-sedona.git -Dtag=sedona-1.0.0-incubating-rc1 -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests"
+4. Upload six files to SVN and delete all created files using the following script
+```bash
+#!/bin/bash
+svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-src.tar.gz https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-src.tar.gz
+svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-src.tar.gz.asc https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-src.tar.gz.asc
+svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-src.tar.gz.sha512 https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-src.tar.gz.sha512
+svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-bin.tar.gz https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-bin.tar.gz
+svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-bin.tar.gz.asc https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-bin.tar.gz.asc
+svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-bin.tar.gz.sha512 https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-bin.tar.gz.sha512
+rm apache-sedona-{{ sedona.current_version }}-src.tar.gz
+rm apache-sedona-{{ sedona.current_version }}-src.tar.gz.asc
+rm apache-sedona-{{ sedona.current_version }}-src.tar.gz.sha512
+rm apache-sedona-{{ sedona.current_version }}-bin.tar.gz
+rm apache-sedona-{{ sedona.current_version }}-bin.tar.gz.asc
+rm apache-sedona-{{ sedona.current_version }}-bin.tar.gz.sha512
+rm -rf apache-sedona-{{ sedona.current_version }}-src
+rm -rf apache-sedona-{{ sedona.current_version }}-bin
 ```
 
-##### For Spark 2.4 and Scala 2.11
+### Call for a vote
+1. Check the status of the staging repo: [Locate and Examine Your Staging Repository
+](https://central.sonatype.org/pages/releasing-the-deployment.html#locate-and-examine-your-staging-repository). You should see 12 Sedona modules in total.
+2. Call for a vote in Sedona community and Apache incubator. Then close the staging repo.
+
+Here is a generated vote email. Please add changes at the end if needed:
 
 ```
-mvn org.apache.maven.plugins:maven-release-plugin:2.3.2:perform -DconnectionUrl=scm:git:https://github.com/apache/incubator-sedona.git -Dtag=sedona-1.0.0-incubating-rc1 -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests -Dscala=2.11 -Dspark=2.4"
+Subject: [VOTE] Release Apache Sedona {{ sedona.current_rc }}
+
+Hi all,
+
+This is a call for vote on Apache Sedona {{ sedona.current_rc }}. Please refer to the changes listed at the bottom of this email.
+
+Release notes:
+https://github.com/apache/incubator-sedona/blob/{{ sedona.current_git_tag }}/docs/download/release-notes.md
+
+Build instructions:
+https://github.com/apache/incubator-sedona/blob/{{ sedona.current_git_tag }}/docs/download/compile.md
+
+GitHub tag:
+https://github.com/apache/incubator-sedona/releases/tag/{{ sedona.current_git_tag }}
+
+GPG public key to verify the Release:
+https://dist.apache.org/repos/dist/dev/incubator/sedona/KEYS
+
+Source code and binaries:
+https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/
+
+The vote will be open for at least 72 hours or until a majority of at least 3 "approve" PMC votes are cast
+
+Please vote accordingly:
+
+[ ] +1 approve
+
+[ ] +0 no opinion
+
+[ ] -1 disapprove with the reason
+
+Checklist for reference (because of DISCLAIMER-WIP, other checklist items are not blockers):
+
+[ ] Download links are valid.
+
+[ ] Checksums and PGP signatures are valid.
+
+[ ] DISCLAIMER is included.
+
+[ ] Source code artifacts have correct names matching the current release.
+
+For a detailed checklist  please refer to:
+https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist
+
+------------
+
+Changes according to the comments on the previous release
+Original comment (Permalink from https://lists.apache.org/list.html): 
+
+
 ```
 
-##### For Spark 2.4 and Scala 2.12
+Here is a generated "pass" email:
 
 ```
-mvn org.apache.maven.plugins:maven-release-plugin:2.3.2:perform -DconnectionUrl=scm:git:https://github.com/apache/incubator-sedona.git -Dtag=sedona-1.0.0-incubating-rc1 -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests -Dscala=2.12 -Dspark=2.4"
+Subject: [RESULT][VOTE] Release Apache Sedona {{ sedona.current_rc }}
+
+Dear all,
+
+The vote closes now as 72hr have passed. The vote PASSES with
+ 
++? (PPMC): NAME1, NAME2, NAME3
++? (non-binding): NAME4
+No -1 votes
+
+The vote thread (Permalink from https://lists.apache.org/list.html):
+
+I will now bring the vote to general@incubator.apache.org to get
+approval by the IPMC. If this vote passes too, the release is accepted and will be published.
+
 ```
 
-### Upload Release Candidate
+Here is a generated "announce" email:
 
-All release candidates must be first placed in ASF Dist Dev SVN before vote: https://dist.apache.org/repos/dist/dev/incubator/sedona
+```
+Subject: [ANNOUNCE] Apache Sedona {{ sedona.current_version }} released
 
-1. Make sure your armored PGP public key (must be encrypted by RSA-4096) is included in the `KEYS` file: https://dist.apache.org/repos/dist/dev/incubator/sedona/KEYS, and publish in major key servers: https://pgp.mit.edu/, https://keyserver.ubuntu.com/, http://keys.gnupg.net/
-2. Create a folder on SVN, such as `1.0.0-incubating-rc1`
-3. Find the tag on GitHub accordingly (i.e., `sedona-1.0.0-incubating-rc1`)
-4. Create the tarball for source code. For example, `tar czf apache-sedona-1.0.0-incubating-src.tar.gz apache-sedona-1.0.0-incubating-src`. The unpacked directory should be `apache-sedona-incubating-1.0.0-src`.
-5. Create the tarball for binary. For examples, `tar czf apache-sedona-1.0.0-incubating-bin.tar.gz apache-sedona-1.0.0-incubating-bin`. The unpacked directory should be `apache-sedona-1.0.0-incubating-bin`.It should contain 12 jars.
-6. Generate sha512 checksum for source code: `shasum -a 512 apache-sedona-1.0.0-incubating-src.tar.gz > apache-sedona-1.0.0-incubating-src.tar.gz.sha512`
-7. Generate sha512 checksum for binary: `shasum -a 512 apache-sedona-1.0.0-incubating-bin.tar.gz > apache-sedona-1.0.0-incubating-bin.tar.gz.sha512`
-8. Sign the tarball for source: `gpg -ab apache-sedona-1.0.0-incubating-src.tar.gz`
-9. Sign the tarball for binary: `gpg -ab apache-sedona-1.0.0-incubating-bin.tar.gz`
-10. Upload six files to `dist/dev/incubator/sedona`: for both src and bin, upload `tar.gz`, `asc` and `sha512`
+Dear all,
 
-### Call for a vote
-1. Check the status of the staging repo: [Locate and Examine Your Staging Repository
-](https://central.sonatype.org/pages/releasing-the-deployment.html#locate-and-examine-your-staging-repository). You should see 12 Sedona modules in total.
-2. Call for a vote in Sedona community and Apache incubator. Then close the staging repo.
+We are happy to report that we have released Apache Sedona (incubating) {{ sedona.current_version }}. Thank you again for your help.
+
+Apache Sedona (incubating) is a cluster computing system for processing large-scale spatial data. 
 
-#### Failed vote
-If a vote failed, please first drop the staging repo on `repository.apache.org`. Then redo all the steps above. Make sure you use a new scm tag for the new release candidate when use maven-release-plugin (i.e., `sedona-1.0.0-incubating-rc2`)
+Vote thread (Permalink from https://lists.apache.org/list.html):
+
+
+Vote result thread (Permalink from https://lists.apache.org/list.html):
+
+
+Website:
+http://sedona.apache.org/
+
+Release notes:
+https://github.com/apache/incubator-sedona/blob/sedona-{{ sedona.current_version }}/docs/download/release-notes.md
+
+Download links:
+https://github.com/apache/incubator-sedona/releases/tag/sedona-{{ sedona.current_version }}
+
+Additional resources:
+Get started: http://sedona.apache.org/download/overview/
+Tutorials: http://sedona.apache.org/tutorial/rdd/
+Mailing list: dev@sedona.apache.org
+Twitter: https://twitter.com/ApacheSedona
+Gitter: https://gitter.im/apache/sedona
+
+Regards,
+Apache Sedona (incubating) Team
+```
+
+### Failed vote
+
+If a vote failed, please first drop the staging repo on `repository.apache.org`. Then redo all the steps above. Make sure you use a new scm tag for the new release candidate when use maven-release-plugin (i.e., `{{ sedona.current_version}}-rc2`). You can change the `sedona.current_rc` and `sedona.current_git_tag` in `mkdocs.yml` to generate the script listed on this webpage.
  
 ### Release the package
 
 1. Move all files in https://dist.apache.org/repos/dist/dev/incubator/sedona to https://dist.apache.org/repos/dist/release/incubator/sedona, using svn
-2. Create a GitHub release. Please follow the template: https://github.com/apache/incubator-sedona/releases/tag/sedona-1.0.0-incubating
-3. Publish Python project to PyPi using twine. You must have the maintainer priviledge of https://pypi.org/project/apache-sedona/. Then please setup your token and run `python3 setup.py sdist bdist_wheel` and `twine upload dist/*` in the `incubator-sedona/python` directory.
-4. Publish Sedona-Zeppelin (a node.js package) on NPM. Run `npm publish` in the `zeppelin` directory.
-5. Close the staging repo on https://repository.apache.org. If the staging repo has been automatically closed by the system, please read ==Use Maven Release Plugin directly from an existing tag== above.
+```bash
+#!/bin/bash
+svn mkdir -m "Adding folder" https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona.current_version }}
+wget https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-src.tar.gz
+wget https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-src.tar.gz.asc
+wget https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-src.tar.gz.sha512
+wget https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-bin.tar.gz
+wget https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-bin.tar.gz.asc
+wget https://dist.apache.org/repos/dist/dev/incubator/sedona/{{ sedona.current_rc }}/apache-sedona-{{ sedona.current_version }}-bin.tar.gz.sha512
+svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-src.tar.gz https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona.current_version }}/apache-sedona-{{ sedona.current_version }}-src.tar.gz
+svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-src.tar.gz.asc https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona.current_version }}/apache-sedona-{{ sedona.current_version }}-src.tar.gz.asc
+svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-src.tar.gz.sha512 https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona.current_version }}/apache-sedona-{{ sedona.current_version }}-src.tar.gz.sha512
+svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-bin.tar.gz https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona.current_version }}/apache-sedona-{{ sedona.current_version }}-bin.tar.gz
+svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-bin.tar.gz.asc https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona.current_version }}/apache-sedona-{{ sedona.current_version }}-bin.tar.gz.asc
+svn import -m "Adding file" apache-sedona-{{ sedona.current_version }}-bin.tar.gz.sha512 https://dist.apache.org/repos/dist/release/incubator/sedona/{{ sedona.current_version }}/apache-sedona-{{ sedona.current_version }}-bin.tar.gz.sha512
+rm apache-sedona-{{ sedona.current_version }}-src.tar.gz
+rm apache-sedona-{{ sedona.current_version }}-src.tar.gz.asc
+rm apache-sedona-{{ sedona.current_version }}-src.tar.gz.sha512
+rm apache-sedona-{{ sedona.current_version }}-bin.tar.gz
+rm apache-sedona-{{ sedona.current_version }}-bin.tar.gz.asc
+rm apache-sedona-{{ sedona.current_version }}-bin.tar.gz.sha512
+```
+2. Add the download link to [Download page](/download/download#versions) and create a GitHub release.
+3. (1) Publish Python project to PyPi using twine. You must have the maintainer priviledge of https://pypi.org/project/apache-sedona/. (2) Publish Zeppelin plugin to NPM
+```bash
+#!/bin/bash
+git clone --shared --branch {{ sedona.current_git_tag}} https://github.com/apache/incubator-sedona.git apache-sedona-{{ sedona.current_version }}-src
+cd apache-sedona-{{ sedona.current_version }}-src/python && python3 setup.py sdist bdist_wheel && twine upload dist/* && cd ..
+cd zeppelin && npm publish && cd ..
+rm -rf apache-sedona-{{ sedona.current_version }}-src
+```
+4. Publish Sedona R to CRAN. More details to be added.
+```bash
+#!/bin/bash
+R CMD build .
+R CMD check --as-cran apache.sedona_*.tar.gz
+```
+5. Instructions on how to submit a R package to CRAN are at the bottom of the [CRAN front page](https://cran.r-project.org/), “Submitting to CRAN.” Submission is now via [a web form](https://xmpalantir.wu.ac.at/cransubmit/).
+6. Close the staging repo on https://repository.apache.org. If the staging repo has been automatically closed by the system, please read ==Use Maven Release Plugin directly from an existing tag==.
+
+#### Use Maven Release Plugin directly from an existing tag
+
+The staging repo on repository.apache.org is usually automatically closed before the voting is closed. If so, you need to do `mvn release:perform` from an existing tag. Note that: you have to use `org.apache.maven.plugins:maven-release-plugin:2.3.2:perform` due to a bug in maven release plugin from v2.4 (https://issues.apache.org/jira/browse/SCM-729). Make sure you use the correct scm tag (i.e.,  `{{ sedona.current_git_tag }}`).
+
+##### For Spark 3.0 and Scala 2.12
+
+```
+mvn org.apache.maven.plugins:maven-release-plugin:2.3.2:perform -DconnectionUrl=scm:git:https://github.com/apache/incubator-sedona.git -Dtag={{ sedona.current_git_tag }} -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests"
+```
+
+##### For Spark 2.4 and Scala 2.11
+
+```
+mvn org.apache.maven.plugins:maven-release-plugin:2.3.2:perform -DconnectionUrl=scm:git:https://github.com/apache/incubator-sedona.git -Dtag={{ sedona.current_git_tag }} -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests -Dscala=2.11 -Dspark=2.4"
+```
+
+##### For Spark 2.4 and Scala 2.12
+
+```
+mvn org.apache.maven.plugins:maven-release-plugin:2.3.2:perform -DconnectionUrl=scm:git:https://github.com/apache/incubator-sedona.git -Dtag={{ sedona.current_git_tag }} -DautoVersionSubmodules=true -Dresume=false -Darguments="-DskipTests -Dscala=2.12 -Dspark=2.4"
+```
 
 #### Fix the error when close the staged repo
 
 In the last step, you may see 6 errors similar to the following:
 ```
 typeId	signature-staging
-failureMessage	Invalid Signature: '/org/apache/sedona/sedona-python-adapter-2.4_2.12/1.0.1-incubating/sedona-python-adapter-2.4_2.12-1.0.1-incubating.pom.asc' is not a valid signature for 'sedona-python-adapter-2.4_2.12-1.0.1-incubating.pom'.
-failureMessage	Invalid Signature: '/org/apache/sedona/sedona-python-adapter-2.4_2.11/1.0.1-incubating/sedona-python-adapter-2.4_2.11-1.0.1-incubating.pom.asc' is not a valid signature for 'sedona-python-adapter-2.4_2.11-1.0.1-incubating.pom'.
-failureMessage	Invalid Signature: '/org/apache/sedona/sedona-python-adapter-3.0_2.12/1.0.1-incubating/sedona-python-adapter-3.0_2.12-1.0.1-incubating.pom.asc' is not a valid signature for 'sedona-python-adapter-3.0_2.12-1.0.1-incubating.pom'.
-failureMessage	Invalid Signature: '/org/apache/sedona/sedona-viz-2.4_2.12/1.0.1-incubating/sedona-viz-2.4_2.12-1.0.1-incubating.pom.asc' is not a valid signature for 'sedona-viz-2.4_2.12-1.0.1-incubating.pom'.
-failureMessage	Invalid Signature: '/org/apache/sedona/sedona-viz-3.0_2.12/1.0.1-incubating/sedona-viz-3.0_2.12-1.0.1-incubating.pom.asc' is not a valid signature for 'sedona-viz-3.0_2.12-1.0.1-incubating.pom'.
-failureMessage	Invalid Signature: '/org/apache/sedona/sedona-viz-2.4_2.11/1.0.1-incubating/sedona-viz-2.4_2.11-1.0.1-incubating.pom.asc' is not a valid signature for 'sedona-viz-2.4_2.11-1.0.1-incubating.pom'.
+failureMessage	Invalid Signature: '/org/apache/sedona/sedona-python-adapter-2.4_2.12/{{ sedona.current_version }}/sedona-python-adapter-2.4_2.12-{{ sedona.current_version }}.pom.asc' is not a valid signature for 'sedona-python-adapter-2.4_2.12-{{ sedona.current_version }}.pom'.
+failureMessage	Invalid Signature: '/org/apache/sedona/sedona-python-adapter-2.4_2.11/{{ sedona.current_version }}/sedona-python-adapter-2.4_2.11-{{ sedona.current_version }}.pom.asc' is not a valid signature for 'sedona-python-adapter-2.4_2.11-{{ sedona.current_version }}.pom'.
+failureMessage	Invalid Signature: '/org/apache/sedona/sedona-python-adapter-3.0_2.12/{{ sedona.current_version }}/sedona-python-adapter-3.0_2.12-{{ sedona.current_version }}.pom.asc' is not a valid signature for 'sedona-python-adapter-3.0_2.12-{{ sedona.current_version }}.pom'.
+failureMessage	Invalid Signature: '/org/apache/sedona/sedona-viz-2.4_2.12/{{ sedona.current_version }}/sedona-viz-2.4_2.12-{{ sedona.current_version }}.pom.asc' is not a valid signature for 'sedona-viz-2.4_2.12-{{ sedona.current_version }}.pom'.
+failureMessage	Invalid Signature: '/org/apache/sedona/sedona-viz-3.0_2.12/{{ sedona.current_version }}/sedona-viz-3.0_2.12-{{ sedona.current_version }}.pom.asc' is not a valid signature for 'sedona-viz-3.0_2.12-{{ sedona.current_version }}.pom'.
+failureMessage	Invalid Signature: '/org/apache/sedona/sedona-viz-2.4_2.11/{{ sedona.current_version }}/sedona-viz-2.4_2.11-{{ sedona.current_version }}.pom.asc' is not a valid signature for 'sedona-viz-2.4_2.11-{{ sedona.current_version }}.pom'.
 ```
 
 This is caused by a bug in the resolved-pom-maven-plugin in POM.xml. You will have to upload the signatures of the 6 POM files mannualy. Please follow the steps below.
 
-1. Please download the correct 6 pom files from the staging repo. On the web interface. Click Staging Repositories, select the latest Sedona staging repo, cick Content, find the aforementioned 6 pom files, download them to your local path.
-2. Generate asc files for the 6 pom files. For example,
-```
-gpg -ab sedona-viz-3.0_2.12-1.0.1-incubating.pom
-```
-3. Delete the asc files of the 6 pom files. Follow the steps in Step 2, and delete them from the web interface.
-4. Upload the 6 asc files to the staging repo using curl. For example,
+1. Please download the correct 6 pom files from the staging repo to your local path and generate signatures. Please make sure you use the correct Sedona staging repo ID
+```bash
+#!/bin/bash
+stagingid=1016
+wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-viz-2.4_2.11/{{ sedona.current_version }}/sedona-viz-2.4_2.11-{{ sedona.current_version }}.pom
+wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-viz-2.4_2.12/{{ sedona.current_version }}/sedona-viz-2.4_2.12-{{ sedona.current_version }}.pom
+wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-viz-3.0_2.12/{{ sedona.current_version }}/sedona-viz-3.0_2.12-{{ sedona.current_version }}.pom
+wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-python-adapter-2.4_2.11/{{ sedona.current_version }}/sedona-python-adapter-2.4_2.11-{{ sedona.current_version }}.pom
+wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-python-adapter-2.4_2.12/{{ sedona.current_version }}/sedona-python-adapter-2.4_2.12-{{ sedona.current_version }}.pom
+wget https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-python-adapter-3.0_2.12/{{ sedona.current_version }}/sedona-python-adapter-3.0_2.12-{{ sedona.current_version }}.pom
+gpg -ab sedona-viz-2.4_2.11-{{ sedona.current_version }}.pom
+gpg -ab sedona-viz-2.4_2.12-{{ sedona.current_version }}.pom
+gpg -ab sedona-viz-3.0_2.12-{{ sedona.current_version }}.pom
+gpg -ab sedona-python-adapter-2.4_2.11-{{ sedona.current_version }}.pom
+gpg -ab sedona-python-adapter-2.4_2.12-{{ sedona.current_version }}.pom
+gpg -ab sedona-python-adapter-3.0_2.12-{{ sedona.current_version }}.pom
 ```
-curl -v -u admin:admin123 --upload-file sedona-python-adapter-2.4_2.11-1.0.1-incubating.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-1010/content/org/apache/sedona/sedona-python-adapter-2.4_2.11/1.0.1-incubating/sedona-python-adapter-2.4_2.11-1.0.1-incubating.pom.asc
+2. Delete the asc files of the 6 pom files from the ASF staging repo web interface.
+3. Upload the 6 asc files to the staging repo using curl. For example,
+```bash
+#!/bin/bash
+username=admin
+password=admin123
+stagingid=1016
+curl -v -u $username:$password --upload-file sedona-python-adapter-2.4_2.11-{{ sedona.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-python-adapter-2.4_2.11/{{ sedona.current_version }}/sedona-python-adapter-2.4_2.11-{{ sedona.current_version }}.pom.asc
+
+curl -v -u $username:$password --upload-file sedona-python-adapter-2.4_2.12-{{ sedona.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-python-adapter-2.4_2.12/{{ sedona.current_version }}/sedona-python-adapter-2.4_2.12-{{ sedona.current_version }}.pom.asc
 
-curl -v -u admin:admin123 --upload-file sedona-python-adapter-2.4_2.12-1.0.1-incubating.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-1010/content/org/apache/sedona/sedona-python-adapter-2.4_2.12/1.0.1-incubating/sedona-python-adapter-2.4_2.12-1.0.1-incubating.pom.asc
+curl -v -u $username:$password --upload-file sedona-python-adapter-3.0_2.12-{{ sedona.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-python-adapter-3.0_2.12/{{ sedona.current_version }}/sedona-python-adapter-3.0_2.12-{{ sedona.current_version }}.pom.asc
 
-curl -v -u admin:admin123 --upload-file sedona-python-adapter-3.0_2.12-1.0.1-incubating.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-1010/content/org/apache/sedona/sedona-python-adapter-3.0_2.12/1.0.1-incubating/sedona-python-adapter-3.0_2.12-1.0.1-incubating.pom.asc
+curl -v -u $username:$password --upload-file sedona-viz-2.4_2.11-{{ sedona.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-viz-2.4_2.11/{{ sedona.current_version }}/sedona-viz-2.4_2.11-{{ sedona.current_version }}.pom.asc
 
-curl -v -u admin:admin123 --upload-file sedona-viz-2.4_2.11-1.0.1-incubating.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-1010/content/org/apache/sedona/sedona-viz-2.4_2.11/1.0.1-incubating/sedona-viz-2.4_2.11-1.0.1-incubating.pom.asc
+curl -v -u $username:$password --upload-file sedona-viz-2.4_2.12-{{ sedona.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-viz-2.4_2.12/{{ sedona.current_version }}/sedona-viz-2.4_2.12-{{ sedona.current_version }}.pom.asc
 
-curl -v -u admin:admin123 --upload-file sedona-viz-2.4_2.12-1.0.1-incubating.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-1010/content/org/apache/sedona/sedona-viz-2.4_2.12/1.0.1-incubating/sedona-viz-2.4_2.12-1.0.1-incubating.pom.asc
+curl -v -u $username:$password --upload-file sedona-viz-3.0_2.12-{{ sedona.current_version }}.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-$stagingid/content/org/apache/sedona/sedona-viz-3.0_2.12/{{ sedona.current_version }}/sedona-viz-3.0_2.12-{{ sedona.current_version }}.pom.asc
 
-curl -v -u admin:admin123 --upload-file sedona-viz-3.0_2.12-1.0.1-incubating.pom.asc https://repository.apache.org/service/local/repositories/orgapachesedona-1010/content/org/apache/sedona/sedona-viz-3.0_2.12/1.0.1-incubating/sedona-viz-3.0_2.12-1.0.1-incubating.pom.asc
+rm sedona-viz-2.4_2.11-{{ sedona.current_version }}.pom.asc
+rm sedona-viz-2.4_2.12-{{ sedona.current_version }}.pom.asc
+rm sedona-viz-3.0_2.12-{{ sedona.current_version }}.pom.asc
+rm sedona-python-adapter-2.4_2.11-{{ sedona.current_version }}.pom.asc
+rm sedona-python-adapter-2.4_2.12-{{ sedona.current_version }}.pom.asc
+rm sedona-python-adapter-3.0_2.12-{{ sedona.current_version }}.pom.asc
 ```
 admin is your Apache ID username and admin123 is your Apache ID password. You can find the correct upload path from the web interface.
-5. Once the staging repo is closed, click "Release" on the web interface.
+4. Once the staging repo is closed, click "Release" on the web interface.
 
diff --git a/examples/rdd-colocation-mining/build.sbt b/examples/rdd-colocation-mining/build.sbt
index 742ef2b..a61d30f 100644
--- a/examples/rdd-colocation-mining/build.sbt
+++ b/examples/rdd-colocation-mining/build.sbt
@@ -1,3 +1,22 @@
+/*
+ * 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.
+ */
+
 import sbt.Keys.{libraryDependencies, version}
 
 
diff --git a/examples/sql/build.sbt b/examples/sql/build.sbt
index 75c0ca1..c97256a 100644
--- a/examples/sql/build.sbt
+++ b/examples/sql/build.sbt
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 import sbt.Keys.{libraryDependencies, version}
 
 
diff --git a/examples/viz/build.sbt b/examples/viz/build.sbt
index ff3857e..2efacb6 100644
--- a/examples/viz/build.sbt
+++ b/examples/viz/build.sbt
@@ -1,3 +1,22 @@
+/*
+ * 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.
+ */
+
 import sbt.Keys.{libraryDependencies, version}
 
 
diff --git a/generate-docs.R b/generate-docs.R
new file mode 100644
index 0000000..3c33af0
--- /dev/null
+++ b/generate-docs.R
@@ -0,0 +1,41 @@
+#  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.
+
+# Install all dependencies if they are not installed
+# Pandoc needs to be installed: brew install pandoc
+list.of.packages <- c("sparklyr", "roxygen2", "tools")
+new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
+if(length(new.packages)) install.packages(new.packages, repos = "http://cran.us.r-project.org")
+
+# Generate Rd files in man/
+roxygen2::roxygenize("R")
+
+# Script to convert .Rd and .Rmd files from man/ and vignettes to docs/*.md for use by MkDocs
+library("tools")
+
+# Create two dir if not exist
+dir.create(file.path("docs/api/", "rdocs"), showWarnings = FALSE)
+
+# Convert Rd files to markdown
+
+files = dir("R/man/")
+for(file in files){
+  infile = file.path("R/man/", file)
+  outfile = file.path("docs/api/rdocs", gsub(".Rd", ".html", file))
+  Rd2HTML(infile, outfile, package = "apache.sedona", stages = c("install", "render"))
+}
+
diff --git a/mkdocs.yml b/mkdocs.yml
index 6d8854e..f0c47fb 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -138,7 +138,10 @@ extra:
       link: 'https://twitter.com/ApacheSedona'
   sedona:
     current_version: 1.1.0-incubating
+    current_git_tag: sedona-1.1.0-incubating-rc1
+    current_rc: 1.1.0-incubating-rc1
     current_snapshot: 1.1.1-incubating-SNAPSHOT
+    next_version: 1.1.1-incubating
     current_geotools: 1.1.0-24.1
 copyright: Apache Sedona, Apache Incubator, Apache, the Apache feather logo, and the Apache Incubator project logo are trademarks or registered trademarks of The Apache Software Foundation. Copyright © 2021 The Apache Software Foundation
 markdown_extensions:
diff --git a/python/sedona/version.py b/python/sedona/version.py
index bc95a40..81614a8 100644
--- a/python/sedona/version.py
+++ b/python/sedona/version.py
@@ -15,4 +15,4 @@
 #  specific language governing permissions and limitations
 #  under the License.
 
-version = "1.1.0"
+version = "1.1.1"
diff --git a/sql/src/main/scala/org/apache/spark/sql/sedona_sql/io/ImageOptions.scala b/sql/src/main/scala/org/apache/spark/sql/sedona_sql/io/ImageOptions.scala
index d736de1..94d2183 100644
--- a/sql/src/main/scala/org/apache/spark/sql/sedona_sql/io/ImageOptions.scala
+++ b/sql/src/main/scala/org/apache/spark/sql/sedona_sql/io/ImageOptions.scala
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
 package org.apache.spark.sql.sedona_sql.io
 
 import org.apache.spark.sql.catalyst.util.CaseInsensitiveMap
diff --git a/zeppelin/package.json b/zeppelin/package.json
index b51f792..d4a7b17 100644
--- a/zeppelin/package.json
+++ b/zeppelin/package.json
@@ -2,7 +2,7 @@
   "name": "apache-sedona",
   "description": "Zeppelin visualization support for Sedona",
   "author": "Apache Sedona, original authors are listed on https://github.com/myuwono/zeppelin-leaflet",
-  "version": "1.0.1-incubating",
+  "version": "1.1.1-incubating",
   "main": "index.js",
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1",