You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@age.apache.org by ey...@apache.org on 2020/12/06 19:05:59 UTC

[incubator-age-website] branch master updated (c8c9f7f -> 1e12f16)

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

eya pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-age-website.git.


 discard c8c9f7f  Delete index.html
 discard 0eb9ce8  Delete faq.html
 discard d56ad65  Delete contributeBackup.html
 discard 28d93e0  Delete comment1.png
 discard 266aaa3  Delete code8.png
 discard 4945180  Delete code6.png
 discard fade36e  Delete code5.png
 discard b4b502e  Delete code4.png
 discard f98d2ed  Delete code3.png
 discard eeed060  Delete code2.png
 discard 52b728e  Delete code1.png
 discard 703cdda  Delete architecture.png
 discard c3668d4  Delete instruction.css
 discard 25e79c7  Delete instruction.html
 discard a38f4d9  Delete instruction2.css
 discard 7c7b104  Delete logo.png
 discard b48de56  Delete member.html
 discard f754889  Delete roadmap.html
 discard 8c1319c  Links Fix
 discard 1b478ce  Update .asf.yaml
 discard 50b8c9a  Update .asf.yaml
 discard d2257e8  Update .asf.yaml
 discard 232dc4a  Update .asf.yaml
 discard b1cfba9  Update .asf.yaml
 discard 5dcf30e  Update .asf.yaml
 discard f39eefc  Update .asf.yaml
 discard cadca7e  Update .asf.yaml
 discard a1f0bbc  Update .asf.yaml
 discard 1479151  Update .asf.yaml
 discard 06ff009  Update .asf.yaml
 discard d0127c8  .asf.yml
 discard 4af049d  bugfix, in a
 discard 25df14c  Update README.md
 discard fd04d12  Add files via upload
 discard 5e333b5  first commit
 discard 3172a34  first commit
     new 1e12f16  First commit

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (c8c9f7f)
            \
             N -- N -- N   refs/heads/master (1e12f16)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .asf.yaml                                  |  12 -
 .gitignore                                 |   1 +
 .prettierrc                                |   7 +
 README.md                                  |   2 -
 assets/images/ageworks.png                 | Bin 0 -> 65212 bytes
 assets/images/favicon/apple-touch-icon.png | Bin 0 -> 12028 bytes
 assets/images/favicon/favicon-16x16.png    | Bin 0 -> 1893 bytes
 assets/images/favicon/favicon-32x32.png    | Bin 0 -> 2837 bytes
 assets/images/incubator_ring_logo.png      | Bin 0 -> 28717 bytes
 assets/images/logo.png                     | Bin 0 -> 15864 bytes
 assets/scripts/index.js                    |  47 ++
 assets/styles/index.css                    | 224 +++++++
 examples.c                                 |  99 +++
 index.html                                 | 961 +++++++++++++++++++++++++++++
 14 files changed, 1339 insertions(+), 14 deletions(-)
 delete mode 100644 .asf.yaml
 create mode 100644 .gitignore
 create mode 100644 .prettierrc
 delete mode 100644 README.md
 create mode 100755 assets/images/ageworks.png
 create mode 100755 assets/images/favicon/apple-touch-icon.png
 create mode 100755 assets/images/favicon/favicon-16x16.png
 create mode 100755 assets/images/favicon/favicon-32x32.png
 create mode 100755 assets/images/incubator_ring_logo.png
 create mode 100755 assets/images/logo.png
 create mode 100644 assets/scripts/index.js
 create mode 100644 assets/styles/index.css
 create mode 100644 examples.c
 create mode 100644 index.html


[incubator-age-website] 01/01: First commit

Posted by ey...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 1e12f163385caf75641495def9f6c13880b26e64
Author: eyab <ba...@gmail.com>
AuthorDate: Sun Dec 6 11:04:03 2020 -0800

    First commit
---
 .gitignore                                 |   1 +
 .prettierrc                                |   7 +
 assets/images/ageworks.png                 | Bin 0 -> 65212 bytes
 assets/images/favicon/apple-touch-icon.png | Bin 0 -> 12028 bytes
 assets/images/favicon/favicon-16x16.png    | Bin 0 -> 1893 bytes
 assets/images/favicon/favicon-32x32.png    | Bin 0 -> 2837 bytes
 assets/images/incubator_ring_logo.png      | Bin 0 -> 28717 bytes
 assets/images/logo.png                     | Bin 0 -> 15864 bytes
 assets/scripts/index.js                    |  47 ++
 assets/styles/index.css                    | 224 +++++++
 examples.c                                 |  99 +++
 index.html                                 | 961 +++++++++++++++++++++++++++++
 12 files changed, 1339 insertions(+)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..77f12ae
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+docs/
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 0000000..daf741e
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,7 @@
+{
+    "useTabs": false,      
+    "printWidth": 180,      
+    "tabWidth": 2,         
+    "singleQuote": false,  
+    "trailingComma": "none"
+}
\ No newline at end of file
diff --git a/assets/images/ageworks.png b/assets/images/ageworks.png
new file mode 100755
index 0000000..480e3e2
Binary files /dev/null and b/assets/images/ageworks.png differ
diff --git a/assets/images/favicon/apple-touch-icon.png b/assets/images/favicon/apple-touch-icon.png
new file mode 100755
index 0000000..755da9c
Binary files /dev/null and b/assets/images/favicon/apple-touch-icon.png differ
diff --git a/assets/images/favicon/favicon-16x16.png b/assets/images/favicon/favicon-16x16.png
new file mode 100755
index 0000000..7e3e4c3
Binary files /dev/null and b/assets/images/favicon/favicon-16x16.png differ
diff --git a/assets/images/favicon/favicon-32x32.png b/assets/images/favicon/favicon-32x32.png
new file mode 100755
index 0000000..325f38b
Binary files /dev/null and b/assets/images/favicon/favicon-32x32.png differ
diff --git a/assets/images/incubator_ring_logo.png b/assets/images/incubator_ring_logo.png
new file mode 100755
index 0000000..30bf2cb
Binary files /dev/null and b/assets/images/incubator_ring_logo.png differ
diff --git a/assets/images/logo.png b/assets/images/logo.png
new file mode 100755
index 0000000..da70215
Binary files /dev/null and b/assets/images/logo.png differ
diff --git a/assets/scripts/index.js b/assets/scripts/index.js
new file mode 100644
index 0000000..1af5b34
--- /dev/null
+++ b/assets/scripts/index.js
@@ -0,0 +1,47 @@
+var handleClick = function (el) {
+  decorateSidebar(el);
+  showMainContent(el);
+  if (menuIsVisible()) handleMenuClick();
+}
+
+var decorateSidebar = function (el) {
+  let items = document.getElementsByClassName("sidebar-item");
+  for (let i = 0; i < items.length; i++) {
+    items[i].classList.remove("sidebar--selected");
+  }
+  el.parentElement.classList.add("sidebar--selected");
+}
+
+var showMainContent = function (el) {
+  let items = document.getElementsByClassName("main-item");
+  for (let i = 0; i < items.length; i++) {
+    items[i].classList.remove("main--selected");
+  }
+  let divId = "main-" + el.parentElement.id.split("-")[1];
+  document.getElementById(divId).classList.add("main--selected");
+}
+
+var menuIsVisible = function () {
+  let menu = document.getElementById("menu");
+  let display = window.getComputedStyle(menu).display;
+  if (display === "none") {
+    return false;
+  }
+  return true;
+}
+
+var handleMenuClick = function (el) {
+  let sidebar = document.getElementById("sidebar");
+  let display = window.getComputedStyle(sidebar).display;
+  if (display === "none") {
+    sidebar.style.display = "block";
+    document.getElementById("sidebar-overview").scrollIntoView();
+  } else {
+    sidebar.style.display = "none";
+  }
+}
+
+var handleJiraSearch = function () {
+  let searchTerms = document.getElementById("jira-search").value;
+  window.open(`https://issues.apache.org/jira/browse/AGE-1?jql=(project%3DAGE)%20and%20text%20~%20%22${searchTerms}%22`, "_blank");
+}
\ No newline at end of file
diff --git a/assets/styles/index.css b/assets/styles/index.css
new file mode 100644
index 0000000..9141107
--- /dev/null
+++ b/assets/styles/index.css
@@ -0,0 +1,224 @@
+.root {
+  display: grid;
+  grid-template-columns: 1.5fr 5fr;
+  grid-template-rows: 20vh auto-fill;
+  font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
+  max-width: 1600px;
+  margin: auto;
+}
+
+/*
+ *   HEADER 
+ */
+
+.header {
+  grid-column: 1 / -1;
+  background-color: black;
+  padding-bottom: 0.5rem;
+}
+
+.header--title {
+  color: antiquewhite;
+  font-size: 1.3rem;
+  padding-left: 1rem;
+}
+
+.header--hamburger {
+  top: 1rem;
+  right: 1rem;
+  position: fixed;
+  cursor: pointer;
+}
+@media only screen and (min-width: 800px) {
+  .header--hamburger {
+    display: none;
+  }
+}
+
+.header--hamburger-div {
+  width: 35px;
+  height: 5px;
+  background-color: darkgoldenrod;
+  margin: 6px 0;
+}
+
+/*
+ *   SIDEBAR
+ */
+
+.sidebar {
+  grid-column: 1 / 2;
+  grid-row: 2;
+  background-color: rgb(240, 239, 239);
+  padding-left: 1rem;
+  padding-right: 1rem;
+  display: block;
+}
+@media only screen and (max-width: 800px) {
+  .sidebar {
+    display: none;
+    z-index: 100;
+  }
+}
+
+
+.sidebar--selected {
+  border-bottom: 1px dotted blue;
+}
+
+.sidebar--selected::before {
+  content: "➔";
+}
+
+.sidebar-link {
+  text-decoration: none;
+  color: black;
+}
+
+/*
+ *   MAIN AREA 
+ */
+
+.main {
+  grid-column: 2 / 3;
+  grid-row: 2;
+  padding-right: 2rem;
+  overflow: auto;
+}
+@media only screen and (max-width: 800px) {
+  .main {
+    grid-column: 1 / -1;
+  }
+}
+
+.main-body {
+  padding-left: 1rem;
+}
+
+.main-item {
+  display: none;
+}
+
+.main--selected {
+  display: contents;
+}
+
+/*
+ *   FOOTER 
+ */
+
+.footer {
+  width: 100%;
+  margin-bottom: 2rem;
+  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
+}
+
+.footer-img {
+  display: block;
+  margin: auto;
+}
+
+
+/*
+ *   GENERAL 
+ */
+
+.heading {
+  font-size: 1.3rem;
+  padding-left: .5rem;
+}
+
+.center {
+   text-align: center;
+   margin: auto;
+ }
+
+.emph {
+  font-weight: 700;
+}
+
+.title {
+  font-size: 3rem;
+  padding-bottom: 1rem;
+  padding-left: 1rem;
+}
+
+.subtitle {
+  font-size: 2rem;
+  padding-left: 1rem;
+  padding-top: 1rem;
+}
+
+.code {
+  margin: 1rem;
+  background-color: lightgoldenrodyellow;
+  font-family: "Courier New", Courier, monospace;
+  padding-left: 1rem;
+  padding-right: 1rem;
+  padding-bottom: 1rem;
+  padding-top: 1rem;
+  white-space: pre;
+  overflow: auto;
+}
+
+.inline-code {
+  background-color: lightgray;
+  font-family: "Courier New", Courier, monospace;
+  padding-left: .4rem;
+  padding-right: .4rem;
+}
+
+.codebox {
+  border: 5px solid black;
+  white-space: pre;
+  overflow: auto;
+}
+
+.external-link::after {
+  color: blue;
+  content: "➚";
+}
+
+.mail-link::after {
+  color: red;
+  content: "✉"
+}
+
+.search {
+  line-height: 2rem;
+}
+
+br {
+  content: "";
+  margin: 2em;
+  display: block;
+  font-size: 24%;
+}
+
+table {
+  border-collapse: collapse;
+  border: 2px solid black;
+  width: 80%;  
+}
+thead,
+tfoot {
+    background-color: lightblue;
+    font-size: 1.2rem;  
+}
+
+tbody {
+    background-color: #e4f0f5;
+}
+
+td,
+th {
+  border: 1px solid black;
+  padding: 5px 10px;
+}
+tr:nth-child(even) { 
+  background-color: lightgrey; 
+} 
+
+.tblhead {
+  width: 9rem;
+}
\ No newline at end of file
diff --git a/examples.c b/examples.c
new file mode 100644
index 0000000..9977df7
--- /dev/null
+++ b/examples.c
@@ -0,0 +1,99 @@
+switch (suffix) {
+    case 'G':
+    case 'g':
+        mem <<= 30;
+        break;
+    case 'M':
+    case 'm':
+        mem <<= 20;
+        break;
+    case 'K':
+    case 'k':
+        mem <== 10;
+        // fall through
+    default:
+        break;
+}
+
+//
+int function(int x)
+{
+    body of function
+}
+
+struct s
+{
+    int a;
+    int b;
+}
+
+if (x is true)
+{
+    we do a
+}
+else if (y is true)
+{
+    we do b
+}
+else 
+{
+    we do c
+    we do d
+}
+
+//
+if (x is true)
+    we do a
+if (y is true)
+    we do b
+else
+    we do c
+
+//
+do
+{
+    body of do-loop
+} while (condition);
+
+//
+
+/*
+ * This function
+ * does x
+ */
+void f(void)
+{
+    // This is to check...
+    if (y is true)
+        we do b
+
+    /*
+     * We need to do this here
+     * because of ...
+     */
+    for (;;)
+}
+
+//
+//do this
+#define Anum_ag_graph_name 1
+#define Anum_ag_graph_namespace 2
+
+//not this
+#define Anum_ag_graph_name      1
+#define Anum_ag_graph_namespace 2
+
+//
+// do this
+#define f() \
+    do \
+    { \
+        run(); \
+    } while (0)
+
+// not this
+#define f()     \
+    do          \
+    {           \
+        run();  \
+    } while (0)
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..1da3060
--- /dev/null
+++ b/index.html
@@ -0,0 +1,961 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta name="description" content="Apache AGE - A Graph Extension for PostgreSQL" />
+    <meta name="theme-color" content="#ffffff" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+
+    <link rel="stylesheet" href="assets/styles/index.css" />
+    <link rel="apple-touch-icon" sizes="180x180" href="assets/images/favicon/apple-touch-icon.png" />
+    <link rel="icon" type="image/png" sizes="32x32" href="assets/images/favicon/favicon-32x32.png" />
+    <link rel="icon" type="image/png" sizes="16x16" href="assets/images/favicon/favicon-16x16.png" />
+
+    <title>Apache AGE - A Graph Extension for PostgreSQL</title>
+
+    <script type="text/javascript" src="assets/scripts/index.js"></script>
+  </head>
+
+  <body>
+    <div class="root">
+      <div class="header">
+        <img src="assets/images/logo.png" width="250px" />
+        <div class="header--title">A Graph Extension for PostgreSQL</div>
+        <div class="header--hamburger" id="menu" onclick="handleMenuClick(this)">
+          <div class="header--hamburger-div"></div>
+          <div class="header--hamburger-div"></div>
+          <div class="header--hamburger-div"></div>
+        </div>
+      </div>
+
+      <div class="sidebar" id="sidebar">
+        <p class="sidebar--section">
+          <span class="emph">APACHE AGE</span><br />
+          <span id="sidebar-overview" class="sidebar-item sidebar--selected"> <a class="sidebar-link" href="#" onclick="handleClick(this)">Overview</a></span> <br />
+          <!-- FAQs <br /> -->
+          <span id="sidebar-license" class="sidebar-item"> <a class="sidebar-link" href="#" onclick="handleClick(this)">License</a></span> <br />
+          <!-- Downloads <br /> -->
+          <span id="sidebar-roadmap" class="sidebar-item"> <a class="sidebar-link" href="#" onclick="handleClick(this)">Roadmap</a></span> <br />
+        </p>
+
+        <p class="sidebar--section">
+          <span class="emph">DOCUMENTATION</span> <br />
+          <span id="sidebar-installing" class="sidebar-item"> <a class="sidebar-link" href="#" onclick="handleClick(this)">Installing AGE</a></span> <br />
+          <span id="sidebar-gettingstarted" class="sidebar-item"> <a class="sidebar-link" href="#" onclick="handleClick(this)">Getting Started</a></span> <br />
+          <!-- <span id="sidebar-ageworks" class="sidebar-item"> <a class="sidebar-link" href="#" onclick="handleClick(this)">How AGE Works</a></span> <br /> -->
+          <span id="sidebar-docs" class="sidebar-item"> <a target="_blank" class="sidebar-link" href="docs/">Release Docs</a></span> <br />
+        </p>
+
+        <p class="sidebar--section">
+          <span class="emph">CONTRIBUTION</span> <br />
+          <span id="sidebar-contribute" class="sidebar-item"> <a class="sidebar-link" href="#" onclick="handleClick(this)">How to Contribute</a></span> <br />          
+          <span id="sidebar-devguidelines" class="sidebar-item"> <a class="sidebar-link" href="#" onclick="handleClick(this)">Developer Guidelines</a></span> <br />          
+        </p>
+
+        <p class="sidebar--section">
+          <span class="emph">COMMUNITY</span> <br />
+          <span id="sidebar-team" class="sidebar-item"> <a class="sidebar-link" href="#" onclick="handleClick(this)">Team</a></span> <br />          
+          <span id="sidebar-mailinglists" class="sidebar-item"> <a class="sidebar-link" href="#" onclick="handleClick(this)">Mailing Lists</a></span> <br />          
+          <a class="sidebar-link external-link" target="_blank" href="https://issues.apache.org/jira/projects/AGE/issues">JIRA Issues</a> <br />
+          <a class="sidebar-link external-link" target="_blank" href="https://github.com/apache/incubator-age">Github</a> <br />
+        </p>
+
+        <p class="sidebar--section">
+          <span class="emph">ASF</span> <br />
+          <a class="sidebar-link external-link" target="_blank" href="https://www.apache.org/foundation/">Apache Software Foundation</a> <br />
+          <a class="sidebar-link external-link" target="_blank" href="https://www.apache.org/foundation/how-it-works.html">How Apache Works</a> <br />
+          <a class="sidebar-link external-link" target="_blank" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a> <br />
+          <a class="sidebar-link external-link" target="_blank" href="https://www.apache.org/foundation/thanks.html">Thanks</a> <br />
+        </p>
+      </div>
+
+      <div class="main">
+        <!-- 
+          *
+          * AGE 
+          *
+        -->
+        <div class="main-item main--selected" id="main-overview">
+          <div class="heading"><h1>Apache AGE (Incubating)</h1></div>
+          <div class="main-body">
+            <p class="main-content">
+              Apache AGE a PostgreSQL extension that provides graph database functionality. AGE is an acronym for AgensGraph Extension, and is inspired by Bitnine's fork of
+              PostgreSQL 10, AgensGraph, which is a multi-model database. The goal of the project is to create single storage that can handle both relational and graph model data
+              so that users can use standard ANSI SQL along with openCypher, the Graph query language.
+            </p>
+            <p>
+              Below is a brief overview of the AGE architecture in relation to the PostgreSQL architecture and backend. 
+            Every component runs on the PostgreSQL transaction cache layer and storage layer.
+            <img src="assets/images/ageworks.png">
+            </p>
+
+            <div class="heading"><h2>Features</h2></div>
+            <ul>              
+              <li>AGE is currently being developed for the PostgreSQL 11 release and will support PostgreSQL 12 and 13 in 2021 and all the future releases of PostgreSQL.  </li>
+              <li>AGE supports the openCypher graph query language and label hierarchy.</li>
+              <li>AGE enables querying multiple graphs at the same time. This will allow a user to query two or more graphs at once with cypher, decide how to merge them and get the desired query outputs.</li>
+              <li>AGE will be enhanced with an aim to support all of the key features of AgensGraph (PostgreSQL fork extended with graph DB functionality). </li>
+
+            </ul>
+
+          </div>
+        </div>
+        <div class="main-item" id="main-license">
+          <div class="heading"><h1>License</h1></div>
+          <div class="main-body">Apache AGE is licensed under <a target="_blank" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License, version 2.0</a></div>
+        </div>
+        <div class="main-item" id="main-roadmap">
+          <div class="heading"><h1>Roadmap</h1></div>
+          <div class="main-body">
+            <table>
+              <tbody>
+                <tr>
+                  <td colspan="2"><b>v0.1.0-alpha</b> ✅</td>
+                </tr>
+                <tr>
+                  <td class="tblhead">Release Date</td>
+                  <td>2020 Q1</td>
+                </tr>
+                <tr>
+                  <td class="tblhead">Release Notes</td>
+                  <td><a href="https://github.com/apache/incubator-age/releases/tag/v0.1.0">https://github.com/apache/incubator-age/releases/tag/v0.1.0</a></td>
+                </tr>
+                <tr>
+                  <td class="tblhead">Functionality</td>
+                  <td>
+                    <ul>
+                      <li>Agtype to support all datatype requirements in Cypher queries</li>
+                      <li>Basic MATCH and CREATE clause support</li>
+                      <li>Expression support</li>
+                    </ul>
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+            <br>
+            <table>
+              <tbody>
+                <tr>
+                  <td colspan="2"><b>v0.2.0-alpha</b> ✅</td>
+                </tr>
+                <tr>
+                  <td class="tblhead">Release Date</td>
+                  <td>2020 Q2</td>
+                </tr>
+                <tr>
+                  <td class="tblhead">Release Notes</td>
+                  <td><a href="https://github.com/apache/incubator-age/releases/tag/v0.2.0">https://github.com/apache/incubator-age/releases/tag/v0.2.0</a></td>
+                </tr>
+                <tr>
+                  <td class="tblhead">Functionality</td>
+                  <td>
+                    <ul>
+                      <li>Extend Agtype to function better for SQL queries</li>
+                      <li>Scalar functions</li>
+                      <li>Advanced MATCH and CREATE clause support (except for VLE)</li>
+                    </ul>
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+            <br>
+            <table>
+              <tbody>
+                <tr>
+                  <td colspan="2"><b>v0.3.0-alpha</b> ⌛</td>
+                </tr>
+                <tr>
+                  <td class="tblhead">Release Date</td>
+                  <td>Target 2020-12-31</td>
+                </tr>
+                <tr>
+                  <td class="tblhead">Release Notes</td>
+                  <td>N/A</td>
+                </tr>
+                <tr>
+                  <td class="tblhead">Functionality</td>
+                  <td>
+                    <ul>
+                      <li>DELETE, SET, REMOVE, MERGE clause support</li>
+                      <li>Label Inheritance</li>
+                      <li>Mathematical computation functions</li>
+                    </ul>
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+            <br>
+            <table>
+              <tbody>
+                <tr>
+                  <td colspan="2"><b>v0.4.0-beta</b></td>
+                </tr>
+                <tr>
+                  <td class="tblhead">Release Date</td>
+                  <td>Target 2021-02-28</td>
+                </tr>
+                <tr>
+                  <td class="tblhead">Release Notes</td>
+                  <td>N/A</td>
+                </tr>
+                <tr>
+                  <td class="tblhead">Functionality</td>
+                  <td>
+                    <ul>
+                      <li>Aggregation query support</li>
+                      <li>Java driver support</li>
+                    </ul>
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+            <br>
+            <table>
+              <tbody>
+                <tr>
+                  <td colspan="2"><b>v1.0.0-incubating (first stable release)</b></td>
+                </tr>
+                <tr>
+                  <td class="tblhead">Release Date</td>
+                  <td>Target 2021-02-28</td>
+                </tr>
+                <tr>
+                  <td class="tblhead">Release Notes</td>
+                  <td>N/A</td>
+                </tr>
+                <tr>
+                  <td class="tblhead">Functionality</td>
+                  <td>
+                    N/A
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+            <p>* Support for PostgreSQL 12+ and VLE will be added in the later releases in 2021.</p>
+          </div>
+        </div>
+
+        <!-- 
+          *
+          * DOCUMENTATION 
+          *
+        -->
+        <div class="main-item" id="main-installing">
+          <div class="heading"><h1>Installing AGE</h1></div>
+          <div class="heading"><h2>Using Docker</h2></div>
+          <div class="main-body">
+            Docker images are available on Docker Hub and are based on the official PostgreSQL 11 Debian and Alpine images. <br />
+            <ul>
+              <li><a class="external-link" target="_blank" href="https://hub.docker.com/r/sorrell/agensgraph-extension">AGE Debian Docker Image</a></li>
+              <li><a class="external-link" target="_blank" href="https://hub.docker.com/r/sorrell/agensgraph-extension-alpine">AGE Alpine Docker Image</a></li>
+            </ul>
+          </div>
+          <div class="heading"><h2>Installing from source</h2></div>
+          <div class="main-body">
+            Building AGE from source depends on the following Linux libraries (Ubuntu package names shown below):
+
+            <div class="code">$ sudo apt-get install bison build-essential flex postgresql-server-dev-11</div>
+
+            The build process will attempt to use the first path in the PATH environment variable when installing AGE. 
+            If the <span class="inline-code">pg_config</span> path if located there, run the following
+            command in the source code directory of Apache AGE to build and install the extension.
+
+            <div class="code">$ make install</div>
+
+            If the path to your Postgres installation is not in the PATH variable, add the path in the arguments:
+
+            <div class="code">$ make PG_CONFIG=/path/to/postgres/bin/pg_config install</div>
+
+            Since Apache AGE will be installed in the directory of the PostgreSQL installation, proper permissions on the directory are required. Run the following statements in
+            psql to create and load age in PostgreSQL.
+
+            <div class="code">=# CREATE EXTENSION age; -- run this statement only once
+CREATE EXTENSION
+=# LOAD 'age'; 
+LOAD 
+=# SET search_path = ag_catalog, "$user", public; 
+SET
+            </div>
+          </div>
+        </div>
+        <div class="main-item" id="main-gettingstarted">
+          <div class="heading"><h1>Getting Started</h1></div>
+          <div class="main-body">
+            <div class="heading"><h2>Loading AGE</h2></div>
+            Connect to your containerized Postgres instance and then run the following commands:
+
+            <div class="code">
+CREATE EXTENSION age;
+LOAD 'age';
+SET search_path = ag_catalog, "$user", public;
+            </div>
+            
+            <div class="heading"><h2>Using AGE</h2></div>
+            First you will need to create a graph:
+
+            <div class="code">
+SELECT create_graph('my_graph_name');
+            </div>
+
+            To execute Cypher queries, you will need to wrap them in the following syntax:
+
+            <div class="code">
+SELECT * from cypher('my_graph_name', $$
+  CypherQuery
+$$) as (a agtype);
+            </div>
+
+            For example, if we wanted to create a graph with 4 nodes, we could do something as shown below:
+
+            <div class="code">
+SELECT * from cypher('my_graph_name', $$
+  CREATE (a:Part {part_num: '123'}), 
+        (b:Part {part_num: '345'}), 
+        (c:Part {part_num: '456'}), 
+        (d:Part {part_num: '789'})
+$$) as (a agtype);
+
+--- RESULTS
+a
+---
+(0 rows)
+            </div>
+
+            Then we could query the graph with the following:
+
+            <div class="code">
+SELECT * from cypher('my_graph_name', $$
+  MATCH (a)
+  RETURN a
+$$) as (a agtype);
+
+--- RESULTS
+                                          a
+-------------------------------------------------------------------------------------
+{"id": 844424930131969, "label": "Part", "properties": {"part_num": "123"}}::vertex
+{"id": 844424930131970, "label": "Part", "properties": {"part_num": "345"}}::vertex
+{"id": 844424930131971, "label": "Part", "properties": {"part_num": "456"}}::vertex
+{"id": 844424930131972, "label": "Part", "properties": {"part_num": "789"}}::vertex
+(4 rows)
+            </div>
+
+            Next, we could create a relationship between a couple of nodes:
+
+            <div class="code">
+SELECT * from cypher('my_graph_name', $$
+  MATCH (a:Part {part_num: '123'}), (b:Part {part_num: '345'})
+  CREATE (a)-[u:used_by { quantity: 1 }]->(b)
+$$) as (a agtype);
+
+--- RESULTS
+a
+---
+(0 rows)
+            </div>
+
+            Next we can return the path we just created (results have been formatted for readability):
+            
+            <div class="code">
+SELECT * from cypher('age', $$
+  MATCH p=(a)-[]-(b)
+  RETURN p
+$$) as (a agtype);
+
+// RESULTS
+// ROW 1
+[
+  {
+      "id":844424930131969,
+      "label":"Part",
+      "properties":{
+        "part_num":"123"
+      }
+  }::"vertex",
+  {
+      "id":1125899906842625,
+      "label":"used_by",
+      "end_id":844424930131970,
+      "start_id":844424930131969,
+      "properties":{
+        "quantity":1
+      }
+  }::"edge",
+  {
+      "id":844424930131970,
+      "label":"Part",
+      "properties":{
+        "part_num":"345"
+      }
+  }::"vertex"
+]::"path"
+// ROW 2
+[
+  {
+      "id":844424930131970,
+      "label":"Part",
+      "properties":{
+        "part_num":"345"
+      }
+  }::"vertex",
+  {
+      "id":1125899906842625,
+      "label":"used_by",
+      "end_id":844424930131970,
+      "start_id":844424930131969,
+      "properties":{
+        "quantity":1
+      }
+  }::"edge",
+  {
+      "id":844424930131969,
+      "label":"Part",
+      "properties":{
+        "part_num":"123"
+      }
+  }::"vertex"
+]::"path"
+(2 rows)
+            </div>
+
+          </div>
+        </div>
+<!-- 
+        <div class="main-item" id="main-ageworks">
+          <div class="heading"><h1>How AGE Works</h1></div>
+          <div class="main-body">
+            Here is the brief overview of the AGE architecture in which some are related to the PostgreSQL architecture and backend. 
+            Every component runs on the PostgreSQL transaction cache layer and storage layer.
+            <img src="assets/images/ageworks.png">
+          </div>
+        </div> -->
+
+         <!-- 
+          *
+          * CONTRIBUTION 
+          *
+        -->
+        <div class="main-item" id="main-contribute">
+          <div class="heading"><h1>How to contribute</h1></div>
+          <div class="main-body">
+            There are multiple ways you can contribute to the project. And help is always welcome! All details can be 
+            found on the contributing page. Keep reading for a quick overview!
+  
+            <div class="heading"><h2>Becoming a Committer</h2></div>
+            If you are interested in the project and looking for ways to help, consult the list of tasks in JIRA, or ask the mailing list.
+  
+  
+            <div class="heading"><h2>Contributing by Helping Other Users</h2></div>
+            A great way to contribute to AGE is to help answer user questions on the mailing list or on StackOverflow. 
+            There are always many new AGE users; taking a few minutes to help answer a question is a very valuable community service.
+            <br>
+            Contributors should subscribe to this list and follow it to keep up to date on what's happening in AGE. Answering 
+            questions is an excellent and visible way to help the community, which also demonstrates your expertise.
+  
+  
+            <div class="heading"><h2>Contributing by Reviewing Changes</h2></div>
+            Changes to AGE source code are proposed, reviewed, and committed via Github pull requests (described in 
+            <span id="inline_contribure-devguidelines"> <a href="#" onclick="handleClick(this)">Developer Guidelines</a></span>). 
+            Anyone can view and comment on active changes here. Reviewing others' changes is a good way to learn how the change process works 
+            and gain exposure to activity in various parts of the code. You can help by reviewing the changes and asking questions 
+            or pointing out issues as simple as typos or small issues of style.
+  
+  
+            <div class="heading"><h2>Contributing Documentation Changes</h2></div>
+            To propose a change to release documentation (that is, docs that appear <a href="docs/">here</a>), 
+            edit the Markdown source files in AGE's <span class="inline-code">doc/</span> 
+            <a class="external-link" href="https://github.com/apache/incubator-age/tree/master/doc">directory on GitHub</a>. 
+            Instructions for building the documentation can be found 
+            <span id="inline_contribure-devguidelines"> <a href="#createdocs" onclick="handleClick(this)">here</a></span>. 
+            The process to propose a doc change is otherwise the same as the 
+            process for proposing code changes below.
+  
+  
+            <div class="heading"><h2>Contributing Bug Reports</h2></div>
+            Ideally, bug reports are accompanied by a proposed code change to fix the bug. This isn't always possible, as those who discover a 
+            bug may not have the experience to fix it. A bug may be reported by creating a JIRA issue but without creating a pull request.
+            <br>
+            Bug reports are only useful, however, if they include enough information to understand, isolate and ideally reproduce the bug. 
+            Simply encountering an error does not mean a bug should be reported; search JIRA and inquire on the AGE user / dev mailing 
+            lists first. Unreproducible bugs, or simple error reports, may be closed.
+            <br>
+            The more context the reporter can give about a bug, the better, such as: how the bug was introduced, by which 
+            commit, etc. It assists the committers in the decision process on how far the bug fix should be backported, 
+            when the pull request is merged. The pull request to fix the bug should narrow down the problem to the root cause.
+            <br>
+            Data correctness/data loss bugs are very serious. Make sure the corresponding bug report JIRA issue is labeled 
+            as correctness or data-loss. Please send an email to <a href="mailto:dev@age.apache.org">dev@age.apache.org</a> after submitting 
+            the bug report, to quickly draw attention to the issue.
+            <br>
+            Performance issues are classified as bugs. The pull request to fix a performance bug must provide a benchmark 
+            to prove the problem is indeed fixed.
+
+  
+            <div class="heading"><h2>Contributing to JIRA Maintenance</h2></div>
+            Most contributors can directly resolve JIRA issues. Use judgment in determining whether you are confident the issue should be 
+            resolved (although changes can be easily undone).
+            <br> 
+            When resolving JIRA tickets, please observe the following conventions:
+            <ul>
+              <li>
+                Resolve as Fixed if there's a release or code commit that resolved the issue.
+                <ul>
+                  <li>
+                    Set Fix Version(s), if and only if the resolution is Fixed
+                  </li>
+                  <li>
+                    Set Assignee to the person who contributed the most to its resolution, usually the person who opened the PR that resolved the issue.
+                  </li>
+                </ul>
+              </li>
+              <li>
+                For issues that can't be reproduced against master as reported, resolve as Cannot Reproduce.
+              </li>
+              <li>
+                If the issue is the same as or a subset of another issue, resolved as Duplicate
+                <ul>
+                  <li>
+                    Mark the issue that has less activity or discussion as the duplicate.
+                  </li>
+                  <li>
+                    Link it to the JIRA ticket it duplicates.
+                  </li>
+                </ul>
+              </li>
+              <li>
+                If the issue seems clearly obsolete and applies to issues or components that have changed radically since it was opened, resolve as Not a Problem
+              </li>
+              <li>
+                If the issue doesn't make sense or is not actionable resolve as Invalid.
+              </li>
+              <li>
+                If it's a coherent issue, but there is a clear indication that there is no support or interest in acting on it, then resolve as Won't Fix.
+              </li>
+            </ul>
+            <br>
+            <span class="emph">Searching JIRA</span>
+            How to search JIRA for existing issues:
+            <ol>
+              <li><span class="emph">Basic:</span>
+                <ol>
+                  <li>Visit <a class="external-link" target="_blank" href="https://issues.apache.org/jira/projects/AGE/issues">AGE JIRA</a></li>
+                  <li>Type query into search box in top right (beware this will return results from all projects)</li>
+                </ol>
+              </li>
+              <li>
+                <span class="emph">Advanced: </span>
+                <ol>
+                  <li>Visit <a class="external-link" target="_blank" href="https://issues.apache.org/jira/issues/?jql=(project%3DAGE)%20and%20text%20~%20%22%22">AGE JIRA Advanced Search</a></li>
+                  <li>Replace the empty quotes with quoted text (such as "cypher")</li>
+                </ol>
+              </li>
+              <li>
+                <span class="emph">Search Now:</span>
+                <ol>
+                  <li>Use the search box below</li>
+                  <li><input class="search" id="jira-search" placeholder="search term"><button class="search external-link" id="jira-submit" onclick="handleJiraSearch()">Search</button></li>
+                </ol>
+                
+              </li>
+            </ol> 
+            If a logically similar issue already exists, then contribute to the discussion on the existing JIRA ticket and pull request, instead of creating a new ticket and PR.
+          </div>
+        </div>
+
+        <div class="main-item" id="main-devguidelines">
+          <div class="heading"><h1>Developer Guidelines</h1></div>
+          <div class="main-body">
+            <div class="emph">Table of Contents</div>
+            <ul>
+              <li><a href="#codereview">Code Review Process</a></li>
+              <li><a href="#merge">How to Merge a Pull Request</a></li>
+              <li><a href="#style">Coding Style Guide</a></li>
+              <li><a href="#createdocs">Creating Documentation</a></li>
+            </ul>
+            <a id="codereview"></a>
+            <div class="heading"><h2>Code Review Process</h2></div>
+            <ul>
+              <li>Make a commit (or multiple commits) on your local branch.</li>
+              <li> 	Create .patch file(s) of the commit(s).
+              <ul><li>Use <span class="inline-code">git format-patch</span> command. </li></ul></li>
+              <li> 	Send the .patch file(s) to the reviewer.
+                <ul> 	
+                  <li>The title of the email must be "[Review] [JIRA Ticket Name Here] summary-of-the-issue"
+                    <br>(e.g. [Review] [JIRA Ticket Name] Support changing graph name)
+                    <ul><li>If the commit is not for any issues on JIRA, omit " [JIRA Ticket Name Here]". OR make a JIRA ticket</li></ul>
+                  </li>
+                  <li> 	The email body will look like this:
+                    <div class="codebox">
+Commit bef50e5d86d45707806f5733695a229f3e295b1a
+[one blank line]
+Description 
+                    </div>
+                 
+                    <ul>
+                      <li>
+                        The first line is the hash code of the base commit, NOT the commit you've created.
+                        <ul>
+                          <li>This will help reviewers to quickly apply the .patch files.</li>
+                        </ul>
+                      </li>
+                      <li>Put proper information to help the reviewer.</li>
+                    </ul>
+                  </li>
+                  <li>
+                    Attach .patch files.
+                    <ul>
+                      <li>Do NOT rename files. They are named with numbers in order.</li>
+                      <li>Do NOT compress them unless the total file size is over 5MB.</li>
+                    </ul>
+                  </li>
+                </ul>
+              </li>
+              <li> 	Reply to the last email in the same thread to send a review of it.
+                <ul><li>You can attach some .diff files. </li></ul>
+              </li>
+              <li> 	Reply to the last email in the same thread to send updated patch(es) and opinions.
+                <ul><li>If you rebase commits, state the hash code of the new base commit. </li></ul>
+              </li>
+              <li>Repeat 4 and 5.</li>
+            </ul>
+            <!-- END CODE REVIEW -->
+            <hr>
+            <!-- BEGIN MERGE PR -->
+            <a id="merge"></a>
+            <div class="heading"><h2>How to Merge a Pull Request</h2></div>
+            <p class="emph">Single Commit for a Single Task</p>
+            
+              In this case, the commit will be merged into the master branch with the following process.
+              <br>
+              <ol> 	
+                <li> 	
+                  Change the current working branch to the local master branch by running the following command.
+                  <div class="code">$ git checkout master </div>
+                </li>
+
+                <li> 	Make the local master branch up-to-date by running the following command (or any other commands that result the same.)
+                <div class="code">$ git pull </div></li>
+
+                <li> 	Change the current working branch to the local task branch that the commit resides in by running the following command.
+                <div class="code">$ git checkout</div> </li>
+
+                <li> 	Rebase the local task branch by running the following command.
+                <div class="code">$ git rebase master</div> </li>
+
+                <li>Resolve any conflicts that occur during rebase.</li>
+
+                <li> 	Change the current working branch to the local master branch by running the following command.
+                <div class="code">$ git checkout master</div> </li>
+
+                <li> 	Merge the local task branch into the local master branch by running the following command.
+                <div class="code">$ git merge </div> </li>
+              </ol>
+              <p class="emph">Multiple Commits for a Single Task</p>
+              
+                Keeping Commit History <br>
+                Sometimes, having logically separated, multiple commits for a single task helps developers to grasp the logical process of the work that had been done for the task. 
+                If the commits are merged with fast-forward strategy, the commits will not be grouped together. Therefore, to group the commits, create an explicit merge commit.
+                <br>
+                In this case, the commits will be merged into the master branch with the same process above except the last step (step 7).
+                <br>
+                For the last step, the local task branch will be merged into the local master branch with an explicit merge commit by running the following command. 
+                If you omit --no-ff option, the command will do fast-forward merge instead.
+
+                <div class="code">$ git merge --no-ff</div>
+
+                The above process will result, for example, the following commit history. (This is captured from apache/incubator-age.) There is an explicit merge commit, 
+                69f3b32. Each explicit merge commit groups related commits.
+                <div class="code codebox"> 	
+* 9779a0b Implement property and element access operators
+*   69f3b32 Implement + (concatenating strings) operator
+|\
+| * ab50b5c Support Floating Point Precision in String Operators
+| * cceebcd Implement String Operators
+|/
+* 6c36b80 Fix failed assertion when agtype_build_map() takes agtype as key
+* 304bc68 Refactor bool_to_agtype() </div>
+                Note: There is no commit between an explicit merge commit and the parent commit, which is on the master branch, of the explicit merge commit. This is done by doing rebase before merge.
+
+            <!-- END MERGE PR -->
+            <hr>
+            <!-- BEGIN STYLE GUIDE -->
+            <a id="style"></a>
+            <div class="heading"><h2>Code Style Guide</h2></div>
+            For a full list of coding style guidelines, please refer to the style setup in the 
+            <a href="https://github.com/bitnine-oss/agensgraph-ext/blob/master/clang-format.5">clang-format.5</a> in the AGE git repository.
+
+            <div class="heading"><h3>Indentation</h3></div>
+            Use 4 spaces per indentation level. (no tab character)
+            <ul><li>You can see the same indentation in all environments.</li></ul>
+            <br>
+            For switch statement, see below.
+            <div class="code codebox">
+switch (suffix) {
+    case 'G':
+    case 'g':
+        mem <<= 30;
+        break;
+    case 'M':
+    case 'm':
+        mem <<= 20;
+        break;
+    case 'K':
+    case 'k':
+        mem <<= 10;
+        // fall through
+    default:
+        break;
+}
+            </div>
+            <div class="heading"><h3>Breaking long lines and strings</h3></div>
+            The line length limit is 79 columns, except for strings longer than 79 characters.
+
+            <div class="heading"><h3>Placing Braces and Spaces</h3></div>
+            All braces are on their own line solely. See below.
+
+            <div class="code codebox">
+int function(int x)
+{
+    body of function
+}
+
+struct s
+{
+    int a;
+    int b;
+}
+
+if (x is true)
+{
+    we do a
+}
+else if (y is true)
+{
+    we do b
+}
+else 
+{
+    we do c
+    we do d
+}
+            </div>
+            If all the bodies of if/else statement contain a single line, omit braces. See below.
+
+            <div class="code codebox">
+if (x is true)
+    we do a
+
+if (y is true)
+    we do b
+else
+    we do c
+            </div>
+            One exception is do statement. See the following example.
+
+            <div class="code codebox">
+do
+{
+    body of do-loop
+} while (condition);
+            </div>
+            <div class="heading"><h3>Naming</h3></div>
+            Use the underscore name convention for all variables, functions, structs, enums and define macros.
+
+            <div class="heading"><h3>Typedefs</h3></div>
+            Use typedef only for struct and enum. It must not be used for pointer types.
+
+            <div class="heading"><h3>Commenting</h3></div>
+            For multi-line comments, use C style multi-line comments.
+            <br>
+            For single-line comments, use C++ style single-line comments.
+            <br>
+            See below.
+
+            <div class="code codebox">
+/*
+ * This function
+ * does x
+ */
+void f(void)
+{
+    // This is to check...
+    if (y is true)
+        we do b
+
+    /*
+     * We need to do this here
+     * because of ...
+     */
+    for (;;)
+}
+            </div>
+
+            <div class="heading"><h3>Macros, Enums, and RTL</h3></div>
+            Don't align bodies of macros.
+
+            <ul><li>If names are changed or new entries are added, it may produces 
+              unnecessary diffs and this makes it harder for you to find lines that are 
+              actually modified</li></ul>
+            <div class="code codebox">
+//do this
+#define Anum_ag_graph_name 1
+#define Anum_ag_graph_namespace 2
+
+//not this
+#define Anum_ag_graph_name      1
+#define Anum_ag_graph_namespace 2
+            </div>
+            When you write a macro that spans multiple lines, don't align \ character.
+
+            <ul> 	
+              <li>If bodies of macros are modified, it may produce unnecessary diffs and 
+                this makes it harder for you to find lines that are actually modified.</li>
+              <li>It is harder for you to find lines that are actually modified. </li>
+            </ul>
+            <div class="code codebox">
+// do this
+#define f() \
+    do \
+    { \
+        run(); \
+    } while (0)
+
+// not this
+#define f()     \
+    do          \
+    {           \
+        run();  \
+    } while (0)
+
+            </div>
+
+            <div class="heading"><h3>Newlines</h3></div>
+            For newlines, only \n is allowed, not \r\n and \r.
+
+            <div class="heading"><h3>Conditions</h3></div>
+            If a pointer variable (including List *) is used as a condition, which means that it is 
+            evaluated as true/false value, use it AS-IS. Do not perform explicit comparison with 
+            NULL (or NIL). For negation, put ! before it.
+
+            <div class="heading"><h3>Rules for ereport()</h3></div>
+            An error message that is passed to <span class="inline-code">errmsg()</span> starts with a lower case letter.
+            <br>
+            An error detail/hint message that is passed to <span class="inline-code">errdetail()/errhint()</span> starts 
+            with an upper case letter.
+
+            <!-- END CODING STYLE -->
+            <hr>
+            <!-- BEGIN CREATE DOCS -->
+            <a id="createdocs"></a>
+            <div class="heading"><h2>Creating Documentation</h2></div>
+            <ul>
+              <li>Dependencies: python3, python3-sphinx, sphinx_rtd_theme</li>
+              <li>Clone incubator-age repository (AGE) (https://github.com/apache/incubator-age)</li>
+              <li>Go to the doc folder of the project</li>
+              <li>Type <span class="inline-code">make html</span></li>
+              <li>The documents are in <span class="inline-code">_build/html</span></li>
+            </ul>
+            An example of the commands on Ubuntu follow: 
+            <div class="code">
+sudo apt install python3 python3-sphinx
+pip3 install sphinx_rtd_theme
+git clone https://github.com/apache/incubator-age
+cd incubator-age/doc
+make html
+            </div>
+          </div>
+        </div>
+
+        <!-- 
+          *
+          * COMMUNITY 
+          *
+        -->
+        <div class="main-item" id="main-mailinglists">
+          <div class="heading"><h1>Mailing Lists</h1></div>
+          <div class="main-body">
+            Get help using Apache AGE (Incubating) or contribute to the project on our mailing lists:
+
+            <ul>
+              <li>
+                Visit <a target="_blank" class="external-link" href="https://lists.apache.org/list.html?commits@age.apache.org">
+                  Commits</a> 
+                  or <a class="mail-link" href="mailto:commits-subscribe@age.apache.org">subscribe</a>
+                  for people following commits to the project.
+              </li>
+              <li>
+                Visit <a target="_blank" class="external-link" href="https://lists.apache.org/list.html?dev@age.apache.org">
+                  Developer</a> 
+                  or <a class="mail-link" href="mailto:dev-subscribe@age.apache.org">subscribe</a>
+                  for developers wanting to commit code to the project.
+              </li>
+              <li>
+                Visit <a target="_blank" class="external-link" href="https://lists.apache.org/list.html?users@age.apache.org">
+                  Users</a> 
+                  or <a class="mail-link" href="mailto:users-subscribe@age.apache.org">subscribe</a>
+                  for users wanting to learn more about the project.
+              </li>
+            </ul>
+          </div>
+        </div>
+
+        <div class="main-item" id="main-team">
+          <div class="heading"><h1>Apache AGE Team Members</h1></div>
+          <div class="main-body">
+            <div class="heading center"><h2>✪ Champions and Mentors ✪</h2></div>
+            <p class="center">AGE's Mentors are (sorted on last name in alphabetical order):</p>
+            <table class="center">
+              <thead>
+                <tr><th scope="col">Name</th><th scope="col">Email</th></tr>
+              </thead>
+              <tbody>
+                <tr><td>Raphael Bircher</td>	<td>rbircher at apache dot org</td></tr>
+                <tr><td>Von Gosling</td>	<td>vongosling at apachedot org</td></tr>
+                <tr><td>Jim Jagielski</td>	<td>jim at apache dot org </td></tr>
+                <tr><td>Kevin Ratnasekera</td>	<td>kevin at agsft dot com</td></tr>
+                <tr><td>Felix Cheung</td> <td></td></tr>
+              </tbody>
+            </table>
+            <div class="heading center"><h2>✰ Committers ✰</h2></div>
+            <p class="center">AGE's active Committers are (sorted on last name in alphabetical order):</p>
+            <table class="center">
+              <thead>
+                <tr><th scope="col">Name</th><th scope="col">Email</th></tr>
+              </thead>
+              <tbody>
+                <tr><td>John Gemignani</td>	<td>john dot gemignani at bitnine dot net</td></tr>
+                <tr><td>Josh Innis</td>	<td>josh dot innis at bitnine dot net</td></tr>
+                <tr><td>Eya Badal</td> <td>eya dot abdisho at bitnine dot net</td></tr>
+              </tbody>
+            </table>
+
+
+            <div class="heading center"><h2>✧ Contributors ✧</h2></div>
+            <p class="center">AGE's Contributors are (sorted on last name in alphabetical order):</p>
+            <table class="center">
+              <thead>
+                <tr><th scope="col">Name</th><th scope="col">Email</th></tr>
+              </thead>
+              <tbody>
+                <tr><td>Ghassan Al-Noubani</td> <td>g.noubani at qbs dot jo</td></tr>
+                <tr><td>Jasper Blues</td>	<td>jasper at liberation dash data dot com</td></tr>
+                <tr><td>Dehowe Feng</td> <td></td></tr>
+                <tr><td>Andrew Ko</td> <td>andrew dot ko at bitnine dot net</td></tr>
+                <tr><td>Duane Nickull</td> <td>duane at webstationhq dot com</td></tr>
+                <tr><td>Mason Sharp</td>	<td>mason dot sharp at gmail dot com</td></tr>
+                <tr><td>Nick Sorrell</td> <td>nick at canvouch dot com</td></tr>
+                <tr><td>Junseok Yang</td>	<td>jsyang at bitnine dot net</td></tr>
+              </tbody>
+            </table>
+
+          </div>
+        </div>
+      </div>
+
+    </div>
+    <div class="footer">
+      <hr>
+      <img class="footer-img" src="assets/images/incubator_ring_logo.png"> <br>
+      <p class="center">Copyright © 2020 The Apache Software Foundation. <br>
+        Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
+    </div>
+  </body>
+</html>