Joshfischer/refine docs (#3300)
* refactor main page links
* fix broken link
* clean up
diff --git a/website2/docs/community-contact.md b/website2/docs/community-contact.md
deleted file mode 100644
index bed72a8..0000000
--- a/website2/docs/community-contact.md
+++ /dev/null
@@ -1,18 +0,0 @@
----
-id: community-contact
-title: Contact
-sidebar_label: Contact
----
-
-## Contact
-
-#### Mailing lists
-
-| Name | Scope | | | |
-|:--------------------------------------------------------------------------|:--------------------------------|:---------------------------------------------------------------|:-------------------------------------------------------------------|:--------------------------------------------------------------------------|
-| [user@heron.incubator.apache.org](mailto:user@heron.incubator.apache.org) | User-related discussions | [Subscribe](mailto:user-subscribe@heron.incubator.apache.org) | [Unsubscribe](mailto:user-unsubscribe@heron.incubator.apache.org) | [Archives](http://mail-archives.apache.org/mod_mbox/incubator-heron-user/)|
-| [dev@heron.incubator.apache.org](mailto:dev@heron.incubator.apache.org) | Development-related discussions | [Subscribe](mailto:dev-subscribe@heron.incubator.apache.org) | [Unsubscribe](mailto:dev-unsubscribe@heron.incubator.apache.org) | [Archives](http://mail-archives.apache.org/mod_mbox/incubator-heron-dev/) |
-
-#### Slack
-
-[Self-Register](http://heronstreaming.herokuapp.com/) to our [Heron Slack Workspace](https://heronstreaming.slack.com/)
\ No newline at end of file
diff --git a/website2/docs/community-events.md b/website2/docs/community-events.md
deleted file mode 100644
index d7014a3..0000000
--- a/website2/docs/community-events.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-id: community-events
-title: Community Events
-sidebar_label: Community Events
----
-
-Groups
-
-[Apache Heron Bay Area Meetup](https://www.meetup.com/Apache-Heron-Bay-Area)
\ No newline at end of file
diff --git a/website2/website/data/resources.js b/website2/website/data/resources.js
new file mode 100644
index 0000000..742ecef
--- /dev/null
+++ b/website2/website/data/resources.js
@@ -0,0 +1,207 @@
+module.exports = {
+ publications: [
+ {
+ forum: 'O’Reilly',
+ forum_link: 'http://shop.oreilly.com/product/0636920203131.do',
+ title: 'Stream Processing with Heron',
+ link: 'http://shop.oreilly.com/product/0636920203131.do'
+ },
+ {
+ forum: '',
+ forum_link: '',
+ presenter: '',
+ date: 'July 2016',
+ title: 'Streaming@Twitter - Bulletin of the IEEE Computer Society Technical Committee on Data Engineering',
+ link: 'http://sites.computer.org/debull/A15dec/p15.pdf'
+ },
+ {
+ forum: '',
+ forum_link: '',
+ presenter: '',
+ date: 'May 2015',
+ title: 'Twitter Heron: Stream Processing at Scale - SIGMOD’15',
+ link: 'http://dl.acm.org/citation.cfm?id=2595641'
+ },
+ {
+ forum: '',
+ forum_link: '',
+ presenter: '',
+ date: 'June 2013',
+ title: 'Storm@Twitter - SIGMOD\'14',
+ link: 'http://dl.acm.org/citation.cfm?id=2595641'
+ },
+
+ ],
+ presentations: [
+ {
+ forum: 'Twitter',
+ forum_link: '',
+ presenter: 'Maosong Fu',
+ date: 'April 2016',
+ title: 'Twitter Heron on Apache Aurora - #compute event @Twitter',
+ link: 'https://m.youtube.com/watch?v=ua0ufmr9sQI&feature=youtu.be'
+ },
+ {
+ forum: 'Twitter',
+ forum_link: '',
+ presenter: '',
+ date: 'May 2015',
+ title: 'Twitter Heron: Stream Processing at Scale - SIGMOD’15',
+ link: 'http://dl.acm.org/citation.cfm?id=2595641'
+ },
+ {
+ forum: 'QCon',
+ forum_link: 'https://qconferences.com/',
+ presenter: 'Karthik Ramasamy',
+ date: 'April 2016',
+ title: 'Flying Faster with Heron - InfoQ',
+ link: 'http://www.infoq.com/presentations/twitter-heron'
+ },
+ {
+ forum: 'Data @ Scale',
+ forum_link: 'https://www.youtube.com/channel/UCd9I8ZkgoR1d7GeSj_wi_LQ',
+ presenter: 'Karthik Ramasamy',
+ date: 'September 2015',
+ title: 'Twitter Heron: Stream Processing at Scale - @Scale',
+ link: 'https://www.youtube.com/watch?v=pUaFOuGgmco'
+ },
+ {
+ forum: 'Data @ Scale',
+ forum_link: 'https://www.youtube.com/channel/UCd9I8ZkgoR1d7GeSj_wi_LQ',
+ presenter: 'Karthik Ramasamy',
+ date: 'June 2015',
+ title: 'Stream Processing and Anomaly Detection - Velocity O’Reilly - Note: requires O’Reilly login',
+ link: 'https://player.oreilly.com/videos/9781491927977?login=true'
+ },
+ {
+ forum: 'Google',
+ forum_link: 'hhttps://www.youtube.com/channel/UC7BjFZywGHiqWdEF7SnQ7hQ',
+ presenter: 'Josh Fischer',
+ date: 'October 2018',
+ title: 'Building Apache Heron - BazelCon 2018',
+ link: 'https://www.youtube.com/watch?v=yBTSfA4YDtY&t'
+ },
+ ],
+ blogs: [
+ {
+ forum: 'Twitter Engineering blog',
+ forum_link: 'https://blog.twitter.com/engineering/',
+ presenter: 'Maosong Fu',
+ date: 'Feb 2018',
+ title: 'Leaving the Nest: Heron donated to Apache Software Foundation',
+ link: 'https://blog.twitter.com/engineering/en_us/topics/open-source/2018/heron-donated-to-apache-software-foundation.html'
+ },
+ {
+ forum: 'Twitter Engineering blog',
+ forum_link: 'https://blog.twitter.com/engineering/',
+ presenter: 'Karthik Ramasamy',
+ date: 'May 2016',
+ title: 'Leaving the Nest: Heron donated to Apache Software Foundation',
+ link: 'https://blog.twitter.com/2016/open-sourcing-twitter-heron'
+ },
+ {
+ forum: 'Twitter Engineering blog',
+ forum_link: 'https://blog.twitter.com/engineering/',
+ presenter: 'Karthik Ramasamy',
+ date: 'June 2015',
+ title: 'Flying Faster with Twitter Heron',
+ link: 'https://blog.twitter.com/2016/open-sourcing-twitter-heron'
+ },
+ {
+ forum: 'Streamanalytics',
+ forum_link: 'http://streamanalytics.blogspot.com/',
+ presenter: 'Supun Kamburugamuve',
+ date: 'June 2016',
+ title: 'Deploying Heron on a Cluster of Machines with Apache Aurora',
+ link: 'http://streamanalytics.blogspot.com/2016/06/deploying-heron-on-cluster-of-machines.html'
+ },
+ {
+ forum: '',
+ forum_link: 'http://pulasthisupun.blogspot.com/',
+ presenter: 'Pulasthi Supun',
+ date: 'June 2016',
+ title: 'Setting up Heron Locally with Apache Aurora',
+ link: 'http://pulasthisupun.blogspot.com/2016/06/setting-up-heron-cluster-with-apache.html'
+ },
+ {
+ forum: '1904Labs',
+ forum_link: 'https://1904labs.com/',
+ presenter: 'Josh Fischer',
+ date: 'Feb 2018',
+ title: 'Introducing Heron’s ECO; A Flexible Way To Manage Topologies',
+ link: 'https://1904labs.com/2018/02/14/introducing-herons-eco-flexible-way-manage-topologies/'
+ },
+ {
+ forum: 'Twitter University',
+ forum_link: 'https://www.twitter.com/',
+ presenter: 'Arun Kejariwal',
+ date: 'May 2016',
+ title: 'Real-Time Analytics: Algorithms and Systems - Twitter University',
+ link: 'http://www.slideshare.net/arunkejariwal/real-time-analytics-algorithms-and-systems'
+ },
+ {
+ forum: 'O’Reilly',
+ forum_link: 'https://www.oreilly.com/',
+ presenter: 'Arun Kejariwal',
+ date: 'June 2015',
+ title: 'Stream Processing and Anomaly Detection - Velocity O’Reilly',
+ link: 'http://www.slideshare.net/arunkejariwal/velocity-2015final'
+ },
+ ],
+ press: [
+ {
+ forum: '',
+ forum_link: '',
+ presenter: 'BenZinga ',
+ date: 'June 2016',
+ title: 'Heron, Twitter\'s Data Streaming Platform, Has Been Open Sourced',
+ link: 'http://www.benzinga.com/tech/16/06/8119962/heron-twitters-data-streaming-platform-has-been-open-sourced'
+ },
+ {
+ forum: '',
+ forum_link: '',
+ presenter: 'Forbes',
+ date: 'June 2016',
+ title: 'Twitter Open Sources Heron -- Data Streaming For Dummies',
+ link: 'http://www.forbes.com/sites/adrianbridgwater/2016/06/16/twitter-open-sources-heron-data-streaming-for-dummies/#6f8984319b50'
+ },
+ {
+ forum: '',
+ forum_link: '',
+ presenter: 'All Things Hadoop',
+ date: 'May 2016',
+ title: 'Getting Started with Heron on Apache Mesos and Apache Kafka',
+ link: 'https://allthingshadoop.com/2016/05/30/getting-started-with-heron-on-apache-mesos-and-apache-kafka/'
+ },
+ {
+ forum: '',
+ forum_link: '',
+ presenter: 'VentureBeat',
+ date: 'May 2016',
+ title: 'Twitter open-sources Heron, its real-time stream-processing engine',
+ link: 'http://venturebeat.com/2016/05/25/twitter-open-sources-heron-its-real-time-stream-processing-engine/'
+ },
+ {
+ forum: '',
+ forum_link: '',
+ presenter: 'Forbes',
+ date: 'June 2015',
+ title: 'Twitter\'s Heron Will Start a New Chapter in Real-Time Streaming',
+ link: 'http://www.forbes.com/sites/janakirammsv/2015/06/08/twitters-heron-will-start-a-new-chapter-in-real-time-streaming/#62c8645b2306'
+ },
+ {
+ forum: '',
+ forum_link: '',
+ presenter: 'InfoQ',
+ date: 'June 2015',
+ title: 'Twitter Has Replaced Storm with Heron',
+ link: 'https://www.infoq.com/news/2015/06/twitter-storm-heron'
+ },
+ ]
+ }
+
+
+
+
+
+
diff --git a/website2/website/pages/en/contact.js b/website2/website/pages/en/contact.js
new file mode 100644
index 0000000..5d25b83
--- /dev/null
+++ b/website2/website/pages/en/contact.js
@@ -0,0 +1,98 @@
+
+const React = require('react');
+
+const CompLibrary = require('../../core/CompLibrary.js');
+const Container = CompLibrary.Container;
+const MarkdownBlock = CompLibrary.MarkdownBlock; /* Used to read markdown */
+const GridBlock = CompLibrary.GridBlock;
+const translate = require('../../server/translate.js').translate;
+
+const CWD = process.cwd();
+
+const siteConfig = require(`${CWD}/siteConfig.js`);
+
+class Contact extends React.Component {
+ render() {
+ let language = this.props.language || '';
+ const mailingLists = [
+ {
+ email: 'users@heron.incubator.apache.org',
+ desc: 'User-related discussions',
+ subscribe: 'mailto:user-subscribe@heron.incubator.apache.org',
+ unsubscribe: 'mailto:users-unsubscribe@heron.incubator.apache.org',
+ archives: 'http://mail-archives.apache.org/mod_mbox/heron-user/'
+ },
+ {
+ email: 'dev@heron.incubator.apache.org',
+ desc: 'Development-related discussions',
+ subscribe: 'mailto:dev-subscribe@heron.incubator.apache.org',
+ unsubscribe: 'mailto:dev-unsubscribe@heron.incubator.apache.org',
+ archives: 'http://mail-archives.apache.org/mod_mbox/heron-dev/'
+ },
+ {
+ email: 'commits@heron.incubator.apache.org',
+ desc: 'All commits to the Heron repository',
+ subscribe: 'mailto:commits-subscribe@heron.incubator.apache.org',
+ unsubscribe: 'mailto:commits-unsubscribe@heron.incubator.apache.org',
+ archives: 'http://mail-archives.apache.org/mod_mbox/heron-commits/'
+ }
+ ]
+
+ return (
+ <div className="docMainWrapper wrapper">
+ <Container className="mainContainer documentContainer postContainer">
+ <div className="post">
+ <header className="postHeader">
+ <h1><translate>Contact</translate></h1>
+ <hr />
+ </header>
+ <p><translate>
+ There are many ways to get help from the Apache Heron community.
+ The mailing lists are the primary place where all Heron committers are present.
+ Bugs and feature requests can either be discussed on the dev mailing list or
+ by opening an issue on
+ <a href="https://github.com/apache/incubator-heron/" target="_blank">GitHub</a>.
+ </translate></p>
+
+ <h2><translate>Mailing Lists</translate></h2>
+ <table className="versions">
+ <thead>
+ <tr>
+ <th><translate>Name</translate></th>
+ <th><translate>Scope</translate></th>
+ <th></th>
+ <th></th>
+ <th></th>
+ </tr>
+ </thead>
+ <tbody>
+ {mailingLists.map(
+ list => (
+ <tr key={list.email}>
+ <td>{list.email}</td>
+ <td>{list.desc}</td>
+ <td><a href={list.subscribe}><translate>Subscribe</translate></a></td>
+ <td><a href={list.unsubscribe}><translate>Unsubscribe</translate></a></td>
+ <td><a href={list.archives}><translate>Archives</translate></a></td>
+ </tr>
+ )
+ )}
+ </tbody>
+ </table>
+
+ <h2><translate>Slack</translate></h2>
+ <p><translate>There is a Heron slack channel that is used for informal discussions for devs and users.</translate></p>
+
+ <p><translate>The Slack instance is at </translate> <a href="https://heronstreaming.slack.com/" target="_blank">
+ https://heronstreaming.slack.com/</a></p>
+
+ <p><translate>You can self-register at </translate> <a href="http://heronstreaming.herokuapp.com/" target="_blank">
+ http://heronstreaming.herokuapp.com/</a></p>
+ </div>
+ </Container>
+ </div>
+ );
+ }
+}
+
+module.exports = Contact;
\ No newline at end of file
diff --git a/website2/website/pages/en/events.js b/website2/website/pages/en/events.js
new file mode 100644
index 0000000..4197f36
--- /dev/null
+++ b/website2/website/pages/en/events.js
@@ -0,0 +1,38 @@
+
+const React = require('react');
+
+const CompLibrary = require('../../core/CompLibrary.js');
+const Container = CompLibrary.Container;
+const MarkdownBlock = CompLibrary.MarkdownBlock; /* Used to read markdown */
+const GridBlock = CompLibrary.GridBlock;
+
+const CWD = process.cwd();
+
+const translate = require('../../server/translate.js').translate;
+
+const siteConfig = require(`${CWD}/siteConfig.js`);
+
+class Events extends React.Component {
+ render() {
+
+ return (
+ <div className="docMainWrapper wrapper">
+ <Container className="mainContainer documentContainer postContainer">
+ <div className="post">
+ <header className="postHeader">
+ <h1><translate>Events</translate></h1>
+ <hr />
+ </header>
+
+ <h2><translate>Groups</translate></h2>
+ <MarkdownBlock>
+ - [Apache Heron Bay Area Meetup Group](https://www.meetup.com/Apache-Heron-Bay-Area/events/249414421/)
+ </MarkdownBlock>
+ </div>
+ </Container>
+ </div>
+ );
+ }
+}
+
+module.exports = Events;
\ No newline at end of file
diff --git a/website2/website/pages/en/resources.js b/website2/website/pages/en/resources.js
new file mode 100644
index 0000000..88344f0
--- /dev/null
+++ b/website2/website/pages/en/resources.js
@@ -0,0 +1,122 @@
+
+
+const React = require('react');
+
+const CompLibrary = require('../../core/CompLibrary.js');
+const Container = CompLibrary.Container;
+
+const CWD = process.cwd();
+
+const translate = require('../../server/translate.js').translate;
+
+const siteConfig = require(`${CWD}/siteConfig.js`);
+const resources = require(`${CWD}/data/resources.js`)
+
+class Resources extends React.Component {
+ render() {
+ let language = this.props.language || '';
+
+
+ return (
+ <div className="docMainWrapper wrapper">
+ <Container className="mainContainer documentContainer postContainer">
+ <div className="post">
+ <header className="postHeader">
+ <h1><translate>Resources</translate></h1>
+ <hr />
+ </header>
+
+ <h2><translate>Articles</translate></h2>
+ <table className="versions">
+ <thead>
+ <tr>
+ <th><translate>Link</translate></th>
+ </tr>
+ </thead>
+ <tbody>
+ {resources.publications.map(
+ (a, i) => (
+ <tr key={i}>
+ <td><a href={a.link}>{a.title}</a></td>
+ </tr>
+ )
+ )}
+ </tbody>
+ </table>
+
+ <h2><translate>Presentations</translate></h2>
+ <table className="versions">
+ <thead>
+ <tr>
+ <th><translate>Forum</translate></th>
+ <th><translate>Data</translate></th>
+ <th><translate>Presenter</translate></th>
+ <th><translate>Link</translate></th>
+ </tr>
+ </thead>
+ <tbody>
+ {resources.presentations.map(
+ (p, i) => (
+ <tr key={i}>
+ <td><a href={p.forum_link}>{p.forum}</a></td>
+ <td>{p.date}</td>
+ <td>{p.presenter}</td>
+ <td><a href={p.link}>{p.title}</a></td>
+ </tr>
+ )
+ )}
+ </tbody>
+ </table>
+ <h2><translate>Blogs</translate></h2>
+ <table className="versions">
+ <thead>
+ <tr>
+ <th><translate>Forum</translate></th>
+ <th><translate>Data</translate></th>
+ <th><translate>Presenter</translate></th>
+ <th><translate>Link</translate></th>
+ </tr>
+ </thead>
+ <tbody>
+ {resources.blogs.map(
+ (p, i) => (
+ <tr key={i}>
+ <td><a href={p.forum_link}>{p.forum}</a></td>
+ <td>{p.date}</td>
+ <td>{p.presenter}</td>
+ <td><a href={p.link}>{p.title}</a></td>
+ </tr>
+ )
+ )}
+ </tbody>
+ </table>
+ <h2><translate>Press</translate></h2>
+ <table className="versions">
+ <thead>
+ <tr>
+ <th><translate>Data</translate></th>
+ <th><translate>Presenter</translate></th>
+ <th><translate>Link</translate></th>
+ </tr>
+ </thead>
+ <tbody>
+ {resources.press.map(
+ (p, i) => (
+ <tr key={i}>
+ <td>{p.date}</td>
+ <td>{p.presenter}</td>
+ <td><a href={p.link}>{p.title}</a></td>
+ </tr>
+ )
+ )}
+ </tbody>
+ </table>
+
+ </div>
+ </Container>
+ </div>
+ );
+ }
+}
+
+module.exports = Resources;
\ No newline at end of file
diff --git a/website2/website/static/js/custom.js b/website2/website/static/js/custom.js
index cd61b65..a89d27f 100644
--- a/website2/website/static/js/custom.js
+++ b/website2/website/static/js/custom.js
@@ -7,10 +7,10 @@
'<a id="community-menu" href="#">Community<span style="font-size: 0.75em"> ▼</span></a>' +
'<div id="community-dropdown" class="hide" >' +
'<ul id="community-dropdown-items">' +
- '<li><a href="community-contact" style="color:#1d3f5f">Contact</a></li>' +
- '<li><a href="community-events" style="color:#1d3f5f">Events</a></li>' +
+ '<li><a href="/contact" style="color:#1d3f5f">Contact</a></li>' +
+ '<li><a href="/events" style="color:#1d3f5f">Events</a></li>' +
'<li><a href="https://github.com/apache/incubator-heron/issues" style="color:#1d3f5f">Issue tracking</a></li>' +
- '<li><a href="heron-resources-resources" style="color:#1d3f5f">Resources</a></li>' +
+ '<li><a href="/resources" style="color:#1d3f5f">Resources</a></li>' +
'<li><a href="/team" style="color:#1d3f5f">Team</a></li>' +
'</ul>' +
'</div>' +