diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 758b102..9f4c944 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -1,12 +1,32 @@
+                     Apache Commons Statistics
+                            Version 1.0
+                           Release Notes
 
-              Apache Commons Statistics RELEASE NOTES
+
+INTRODUCTION:
+
+This document contains the release notes for the 1.0 version of Apache Commons Statistics.
 
 The Apache Commons Statistics project provides tools for statistics.
 
-There has been no formal release of this component. 1.0-SNAPSHOT versions
-are available for testing using the Apache snapshots repository.
+This is the first release of Apache Commons Statistics.
+
+Contains the following modules:
+
+  commons-statistics-distribution.
+
+Requires Java 8.
+
+No changes defined in this version.
+
+Historical list of changes: https://commons.apache.org/proper/commons-statistics/changes-report.html
 
 For complete information on Apache Commons Statistics, including instructions on how to submit bug
 reports, patches, or suggestions for improvement, see the Apache Commons Statistics website:
 
-http://commons.apache.org/proper/commons-statistics/
+https://commons.apache.org/proper/commons-statistics/
+
+Download page: https://commons.apache.org/proper/commons-statistics/download_text.cgi
+
+Have fun!
+-Apache Commons Team
diff --git a/commons-statistics-distribution/pom.xml b/commons-statistics-distribution/pom.xml
index 6aa61b7..703ef73 100644
--- a/commons-statistics-distribution/pom.xml
+++ b/commons-statistics-distribution/pom.xml
@@ -23,11 +23,11 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-statistics-parent</artifactId>
-    <version>1.0-SNAPSHOT</version>
+    <version>1.0</version>
   </parent>
 
   <artifactId>commons-statistics-distribution</artifactId>
-  <version>1.0-SNAPSHOT</version>
+  <version>1.0</version>
   <name>Apache Commons Statistics Distribution</name>
 
   <description>Statistical distributions.</description>
diff --git a/commons-statistics-distribution/src/site/site.xml b/commons-statistics-distribution/src/site/site.xml
index dc527ff..e7b664c 100644
--- a/commons-statistics-distribution/src/site/site.xml
+++ b/commons-statistics-distribution/src/site/site.xml
@@ -28,10 +28,8 @@
       <item name="Overview" href="index.html"/>
       <item name="Latest API docs (development)"
             href="apidocs/index.html"/>
-      <!-- TODO: Uncomment for initial release
       <item name="Javadoc (1.0 release)"
-            href="https://commons.apache.org/rng/commons-statistics-distribution/javadocs/api-1.0/index.html"/>
-      -->
+            href="https://commons.apache.org/statistics/commons-statistics-distribution/javadocs/api-1.0/index.html"/>
     </menu>
 
   </body>
diff --git a/commons-statistics-examples/examples-distribution/pom.xml b/commons-statistics-examples/examples-distribution/pom.xml
index 629afc3..2660471 100644
--- a/commons-statistics-examples/examples-distribution/pom.xml
+++ b/commons-statistics-examples/examples-distribution/pom.xml
@@ -21,11 +21,11 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-statistics-examples</artifactId>
-    <version>1.0-SNAPSHOT</version>
+    <version>1.0</version>
   </parent>
 
   <artifactId>commons-statistics-examples-distribution</artifactId>
-  <version>1.0-SNAPSHOT</version>
+  <version>1.0</version>
   <!-- This name is used in the shaded jar to provide the application title for the version information. -->
   <name>Apache Commons Statistics Distribution Utilities</name>
 
diff --git a/commons-statistics-examples/examples-jmh/pom.xml b/commons-statistics-examples/examples-jmh/pom.xml
index 8fd5568..3a89996 100644
--- a/commons-statistics-examples/examples-jmh/pom.xml
+++ b/commons-statistics-examples/examples-jmh/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-statistics-examples</artifactId>
-    <version>1.0-SNAPSHOT</version>
+    <version>1.0</version>
   </parent>
 
   <artifactId>commons-statistics-examples-jmh</artifactId>
diff --git a/commons-statistics-examples/pom.xml b/commons-statistics-examples/pom.xml
index 6319fb5..f3e1eb0 100644
--- a/commons-statistics-examples/pom.xml
+++ b/commons-statistics-examples/pom.xml
@@ -21,11 +21,11 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-statistics-parent</artifactId>
-    <version>1.0-SNAPSHOT</version>
+    <version>1.0</version>
   </parent>
 
   <artifactId>commons-statistics-examples</artifactId>
-  <version>1.0-SNAPSHOT</version>
+  <version>1.0</version>
   <packaging>pom</packaging>
   <name>Apache Commons Statistics Examples</name>
 
@@ -58,7 +58,7 @@
       <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-statistics-distribution</artifactId>
-        <version>1.0-SNAPSHOT</version>
+        <version>1.0</version>
       </dependency>
       <dependency>
         <groupId>info.picocli</groupId>
diff --git a/dist-archive/pom.xml b/dist-archive/pom.xml
index 1831314..73273f7 100644
--- a/dist-archive/pom.xml
+++ b/dist-archive/pom.xml
@@ -23,11 +23,11 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-statistics-parent</artifactId>
-    <version>1.0-SNAPSHOT</version>
+    <version>1.0</version>
   </parent>
 
   <artifactId>commons-statistics</artifactId>
-  <version>1.0-SNAPSHOT</version>
+  <version>1.0</version>
   <packaging>pom</packaging>
   <name>Apache Commons Statistics (full distribution)</name>
   <description>This module creates the Apache Commons Statistics distribution.</description>
@@ -65,18 +65,18 @@
         <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-statistics-distribution</artifactId>
-          <version>1.0-SNAPSHOT</version>
+          <version>1.0</version>
         </dependency>
         <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-statistics-distribution</artifactId>
-          <version>1.0-SNAPSHOT</version>
+          <version>1.0</version>
           <classifier>sources</classifier>
         </dependency>
         <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-statistics-distribution</artifactId>
-          <version>1.0-SNAPSHOT</version>
+          <version>1.0</version>
           <classifier>javadoc</classifier>
         </dependency>
 
diff --git a/pom.xml b/pom.xml
index e943da0..702f5c0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
   <modelVersion>4.0.0</modelVersion>
   <artifactId>commons-statistics-parent</artifactId>
   <packaging>pom</packaging>
-  <version>1.0-SNAPSHOT</version>
+  <version>1.0</version>
   <name>Apache Commons Statistics</name>
 
   <inceptionYear>2018</inceptionYear>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 927aa21..fcb5121 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -53,7 +53,7 @@
   </properties>
   <body>
 
-    <release version="1.0-beta1" date="2020-04-30" description="
+    <release version="1.0" date="2022-12-05" description="
 This is the first release of Apache Commons Statistics.
 
 Contains the following modules:
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-1.0.txt b/src/site/resources/release-notes/RELEASE-NOTES-1.0.txt
new file mode 100644
index 0000000..9f4c944
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-1.0.txt
@@ -0,0 +1,32 @@
+                     Apache Commons Statistics
+                            Version 1.0
+                           Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 1.0 version of Apache Commons Statistics.
+
+The Apache Commons Statistics project provides tools for statistics.
+
+This is the first release of Apache Commons Statistics.
+
+Contains the following modules:
+
+  commons-statistics-distribution.
+
+Requires Java 8.
+
+No changes defined in this version.
+
+Historical list of changes: https://commons.apache.org/proper/commons-statistics/changes-report.html
+
+For complete information on Apache Commons Statistics, including instructions on how to submit bug
+reports, patches, or suggestions for improvement, see the Apache Commons Statistics website:
+
+https://commons.apache.org/proper/commons-statistics/
+
+Download page: https://commons.apache.org/proper/commons-statistics/download_text.cgi
+
+Have fun!
+-Apache Commons Team
diff --git a/src/site/xdoc/download_statistics.xml b/src/site/xdoc/download_statistics.xml
index 2e63998..bf5bb65 100644
--- a/src/site/xdoc/download_statistics.xml
+++ b/src/site/xdoc/download_statistics.xml
@@ -26,25 +26,24 @@
  | commons-build-plugin/trunk/src/main/resources/commons-xdoc-templates |
  +======================================================================+
  |                                                                      |
- | 1) Re-generate using: mvn commons:download-page                      |
-
- Do NOT re-generate before an actual release can be downloaded.
-
+ | 1) Re-generate using: mvn commons-build:download-page                |
  |                                                                      |
  | 2) Set the following properties in the component's pom:              |
- |    - commons.componentid (required, alphabetic, lower case)          |
+ |    - commons.componentid     (required, alphabetic, lower case)      |
  |    - commons.release.version (required)                              |
  |    - commons.release.name    (required)                              |
  |    - commons.binary.suffix   (optional)                              |
  |      (defaults to "-bin", set to "" for pre-maven2 releases)         |
  |    - commons.release.desc    (optional)                              |
  |    - commons.release.subdir  (optional)                              |
+ |    - commons.release.hash    (optional, lowercase, default sha512)   |
  |                                                                      |
- |    - commons.release.2/3.version       (conditional)                 |
- |    - commons.release.2/3.name          (conditional)                 |
- |    - commons.release.2/3.binary.suffix (optional)                    |
- |    - commons.release.2/3.desc          (optional)                    |
- |    - commons.release.2/3.subdir        (optional)                    |
+ |    - commons.release.[234].version       (conditional)               |
+ |    - commons.release.[234].name          (conditional)               |
+ |    - commons.release.[234].binary.suffix (optional)                  |
+ |    - commons.release.[234].desc          (optional)                  |
+ |    - commons.release.[234].subdir        (optional)                  |
+ |    - commons.release.[234].hash       (optional, lowercase, [sha512])|
  |                                                                      |
  | 3) Example Properties                                                |
  |    (commons.release.name inherited by parent:                        |
@@ -64,10 +63,94 @@
   </properties>
   <body>
     <section name="Download Apache Commons Statistics">
+    <subsection name="Using a Mirror">
       <p>
-       "Commons Statistics" is a new component split off "Commons Math".
-       There is no release yet. Come and help to make it happen!
+        We recommend you use a mirror to download our release
+        builds, but you <strong>must</strong> <a href="https://www.apache.org/info/verification.html">verify the integrity</a> of
+        the downloaded files using signatures downloaded from our main
+        distribution directories. Recent releases (48 hours) may not yet
+        be available from all the mirrors.
       </p>
+
+      <p>
+        You are currently using <b>[preferred]</b>.  If you
+        encounter a problem with this mirror, please select another
+        mirror.  If all mirrors are failing, there are <i>backup</i>
+        mirrors (at the end of the mirrors list) that should be
+        available.
+        <br></br>
+        [if-any logo]<a href="[link]"><img align="right" src="[logo]" border="0"></img></a>[end]
+      </p>
+
+      <form action="[location]" method="get" id="SelectMirror">
+        <p>
+          Other mirrors:
+          <select name="Preferred">
+          [if-any http]
+            [for http]<option value="[http]">[http]</option>[end]
+          [end]
+          [if-any ftp]
+            [for ftp]<option value="[ftp]">[ftp]</option>[end]
+          [end]
+          [if-any backup]
+            [for backup]<option value="[backup]">[backup] (backup)</option>[end]
+          [end]
+          </select>
+          <input type="submit" value="Change"></input>
+        </p>
+      </form>
+
+      <p>
+        It is essential that you
+        <a href="https://www.apache.org/info/verification.html">verify the integrity</a>
+        of downloaded files, preferably using the <code>PGP</code> signature (<code>*.asc</code> files);
+        failing that using the <code>SHA512</code> hash (<code>*.sha512</code> checksum files).
+      </p>
+      <p>
+        The <a href="https://www.apache.org/dist/commons/KEYS">KEYS</a>
+        file contains the public PGP keys used by Apache Commons developers
+        to sign releases.
+      </p>
+    </subsection>
+    </section>
+    <section name="Apache Commons Statistics 1.0 (requires Java 8)">
+      <subsection name="Binaries">
+        <table>
+          <tr>
+              <td><a href="[preferred]/commons/statistics/binaries/commons-statistics-1.0-bin.tar.gz">commons-statistics-1.0-bin.tar.gz</a></td>
+              <td><a href="https://www.apache.org/dist/commons/statistics/binaries/commons-statistics-1.0-bin.tar.gz.sha512">sha512</a></td>
+              <td><a href="https://www.apache.org/dist/commons/statistics/binaries/commons-statistics-1.0-bin.tar.gz.asc">pgp</a></td>
+          </tr>
+          <tr>
+              <td><a href="[preferred]/commons/statistics/binaries/commons-statistics-1.0-bin.zip">commons-statistics-1.0-bin.zip</a></td>
+              <td><a href="https://www.apache.org/dist/commons/statistics/binaries/commons-statistics-1.0-bin.zip.sha512">sha512</a></td>
+              <td><a href="https://www.apache.org/dist/commons/statistics/binaries/commons-statistics-1.0-bin.zip.asc">pgp</a></td>
+          </tr>
+        </table>
+      </subsection>
+      <subsection name="Source">
+        <table>
+          <tr>
+              <td><a href="[preferred]/commons/statistics/source/commons-statistics-1.0-src.tar.gz">commons-statistics-1.0-src.tar.gz</a></td>
+              <td><a href="https://www.apache.org/dist/commons/statistics/source/commons-statistics-1.0-src.tar.gz.sha512">sha512</a></td>
+              <td><a href="https://www.apache.org/dist/commons/statistics/source/commons-statistics-1.0-src.tar.gz.asc">pgp</a></td>
+          </tr>
+          <tr>
+              <td><a href="[preferred]/commons/statistics/source/commons-statistics-1.0-src.zip">commons-statistics-1.0-src.zip</a></td>
+              <td><a href="https://www.apache.org/dist/commons/statistics/source/commons-statistics-1.0-src.zip.sha512">sha512</a></td>
+              <td><a href="https://www.apache.org/dist/commons/statistics/source/commons-statistics-1.0-src.zip.asc">pgp</a></td>
+          </tr>
+        </table>
+      </subsection>
+    </section>
+    <section name="Archives">
+        <p>
+          Older releases can be obtained from the archives.
+        </p>
+        <ul>
+          <li class="download"><a href="[preferred]/commons/statistics/">browse download area</a></li>
+          <li><a href="https://archive.apache.org/dist/commons/statistics/">archives...</a></li>
+        </ul>
     </section>
   </body>
 </document>
diff --git a/src/site/xdoc/release-history.xml b/src/site/xdoc/release-history.xml
new file mode 100644
index 0000000..acd7568
--- /dev/null
+++ b/src/site/xdoc/release-history.xml
@@ -0,0 +1,35 @@
+<?xml version="1.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.
+-->
+<document>
+  <properties>
+    <title>Home</title>
+    <author email="dev@commons.apache.org">Commons Documentation Team</author>
+  </properties>
+  <body>
+    <!-- ================================================== -->
+    <section name="Commons Statistics Release History">
+      <p><em>Note.</em> For older release javadocs see the individual artifact sub-sites.</p>
+      <table>
+        <tr><th>Version</th><th>Release date (YYYY-MM-DD)</th><th>Required Java Version</th><th>Release notes</th></tr>
+        <tr>
+          <td>1.0</td><td>2022-12-05</td><td>8+</td><td><a href="release-notes/RELEASE-NOTES-1.0.txt">Release notes for 1.0</a></td>
+        </tr>
+      </table>
+
+    </section>
+    <!-- ================================================== -->
+  </body>
+</document>
