flink-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From u..@apache.org
Subject [18/52] [abbrv] flink-web git commit: Change website layout
Date Fri, 15 May 2015 14:10:17 GMT
http://git-wip-us.apache.org/repos/asf/flink-web/blob/7b3cf3a7/_posts/2015-03-13-peeking-into-Apache-Flinks-Engine-Room.md
----------------------------------------------------------------------
diff --git a/_posts/2015-03-13-peeking-into-Apache-Flinks-Engine-Room.md b/_posts/2015-03-13-peeking-into-Apache-Flinks-Engine-Room.md
index 1f464e3..72f56cb 100644
--- a/_posts/2015-03-13-peeking-into-Apache-Flinks-Engine-Room.md
+++ b/_posts/2015-03-13-peeking-into-Apache-Flinks-Engine-Room.md
@@ -2,12 +2,15 @@
 layout: post
 title:  "Peeking into Apache Flink's Engine Room"
 date:   2015-03-13 10:00:00
+author: "Fabian Hüske"
+author-twitter: "fhueske"
 categories: news
+excerpt: "Joins are prevalent operations in many data processing applications. Most data processing systems feature APIs that make joining data sets very easy. However, the internal algorithms for join processing are much more involved – especially if large data sets need to be efficiently handled. In this blog post, we cut through Apache Flink’s layered architecture and take a look at its internals with a focus on how it handles joins."
 ---
 
-###Join Processing in Apache Flink
+### Join Processing in Apache Flink
 
-Joins are prevalent operations in many data processing applications. Most data processing systems feature APIs that make joining data sets very easy. However, the internal algorithms for join processing are much more involved especially if large data sets need to be efficiently handled. Therefore, join processing serves as a good example to discuss the salient design points and implementation details of a data processing system.
+Joins are prevalent operations in many data processing applications. Most data processing systems feature APIs that make joining data sets very easy. However, the internal algorithms for join processing are much more involved – especially if large data sets need to be efficiently handled. Therefore, join processing serves as a good example to discuss the salient design points and implementation details of a data processing system.
 
 In this blog post, we cut through Apache Flink’s layered architecture and take a look at its internals with a focus on how it handles joins. Specifically, I will
 
@@ -19,7 +22,7 @@ In this blog post, we cut through Apache Flink’s layered architecture and take
 
 *Disclaimer*: This blog post is exclusively about equi-joins. Whenever I say “join” in the following, I actually mean “equi-join”.
 
-###How do I join with Flink?
+### How do I join with Flink?
 
 Flink provides fluent APIs in Java and Scala to write data flow programs. Flink’s APIs are centered around parallel data collections which are called data sets. data sets are processed by applying Transformations that compute new data sets. Flink’s transformations include Map and Reduce as known from MapReduce [[1]](http://research.google.com/archive/mapreduce.html) but also operators for joining, co-grouping, and iterative processing. The documentation gives an overview of all available transformations [[2]](http://ci.apache.org/projects/flink/flink-docs-release-0.8/dataset_transformations.html). 
 
@@ -52,7 +55,7 @@ Flink’s APIs also allow to:
 See the documentation for more details on Flink’s join features [[3]](http://ci.apache.org/projects/flink/flink-docs-release-0.8/dataset_transformations.html#join).
 
 
-###How does Flink join my data?
+### How does Flink join my data?
 
 Flink uses techniques which are well known from parallel database systems to efficiently execute parallel joins. A join operator must establish all pairs of elements from its input data sets for which the join condition evaluates to true. In a standalone system, the most straight-forward implementation of a join is the so-called nested-loop join which builds the full Cartesian product and evaluates the join condition for each pair of elements. This strategy has quadratic complexity and does obviously not scale to large inputs.
 
@@ -63,7 +66,7 @@ In a distributed system joins are commonly processed in two steps:
 
 The distribution of data across parallel instances must ensure that each valid join pair can be locally built by exactly one instance. For both steps, there are multiple valid strategies that can be independently picked and which are favorable in different situations. In Flink terminology, the first phase is called Ship Strategy and the second phase Local Strategy. In the following I will describe Flink’s ship and local strategies to join two data sets *R* and *S*.
 
-####Ship Strategies
+#### Ship Strategies
 Flink features two ship strategies to establish a valid data partitioning for a join:
 
 * the *Repartition-Repartition* strategy (RR) and
@@ -83,7 +86,7 @@ The Broadcast-Forward strategy sends one complete data set (R) to each parallel
 
 The Repartition-Repartition and Broadcast-Forward ship strategies establish suitable data distributions to execute a distributed join. Depending on the operations that are applied before the join, one or even both inputs of a join are already distributed in a suitable way across parallel instances. In this case, Flink will reuse such distributions and only ship one or no input at all.
 
-####Flink’s Memory Management
+#### Flink’s Memory Management
 Before delving into the details of Flink’s local join algorithms, I will briefly discuss Flink’s internal memory management. Data processing algorithms such as joining, grouping, and sorting need to hold portions of their input data in memory. While such algorithms perform best if there is enough memory available to hold all data, it is crucial to gracefully handle situations where the data size exceeds memory. Such situations are especially tricky in JVM-based systems such as Flink because the system needs to reliably recognize that it is short on memory. Failure to detect such situations can result in an `OutOfMemoryException` and kill the JVM. 
 
 Flink handles this challenge by actively managing its memory. When a worker node (TaskManager) is started, it allocates a fixed portion (70% by default) of the JVM’s heap memory that is available after initialization as 32KB byte arrays. These byte arrays are distributed as working memory to all algorithms that need to hold significant portions of data in memory. The algorithms receive their input data as Java data objects and serialize them into their working memory.
@@ -96,7 +99,7 @@ This design has several nice properties. First, the number of data objects on th
 
 This active memory management makes Flink extremely robust for processing very large data sets on limited memory resources while preserving all benefits of in-memory processing if data is small enough to fit in-memory. De/serializing data into and from memory has a certain cost overhead compared to simply holding all data elements on the JVM’s heap. However, Flink features efficient custom de/serializers which also allow to perform certain operations such as comparisons directly on serialized data without deserializing data objects from memory.
 
-####Local Strategies
+#### Local Strategies
 
 After the data has been distributed across all parallel join instances using either a Repartition-Repartition or Broadcast-Forward ship strategy, each instance runs a local join algorithm to join the elements of its local partition. Flink’s runtime features two common join strategies to perform these local joins:
 
@@ -115,13 +118,13 @@ The Hybrid-Hash-Join distinguishes its inputs as build-side and probe-side input
 <img src="{{ site.baseurl }}/img/blog/joins-hhj.png" style="width:90%;margin:15px">
 </center>
 
-###How does Flink choose join strategies?
+### How does Flink choose join strategies?
 
 Ship and local strategies do not depend on each other and can be independently chosen. Therefore, Flink can execute a join of two data sets R and S in nine different ways by combining any of the three ship strategies (RR, BF with R being broadcasted, BF with S being broadcasted) with any of the three local strategies (SM, HH with R being build-side, HH with S being build-side). Each of these strategy combinations results in different execution performance depending on the data sizes and the available amount of working memory. In case of a small data set R and a much larger data set S, broadcasting R and using it as build-side input of a Hybrid-Hash-Join is usually a good choice because the much larger data set S is not shipped and not materialized (given that the hash table completely fits into memory). If both data sets are rather large or the join is performed on many parallel instances, repartitioning both inputs is a robust choice.
 
 Flink features a cost-based optimizer which automatically chooses the execution strategies for all operators including joins. Without going into the details of cost-based optimization, this is done by computing cost estimates for execution plans with different strategies and picking the plan with the least estimated costs. Thereby, the optimizer estimates the amount of data which is shipped over the the network and written to disk. If no reliable size estimates for the input data can be obtained, the optimizer falls back to robust default choices. A key feature of the optimizer is to reason about existing data properties. For example, if the data of one input is already partitioned in a suitable way, the generated candidate plans will not repartition this input. Hence, the choice of a RR ship strategy becomes more likely. The same applies for previously sorted data and the Sort-Merge-Join strategy. Flink programs can help the optimizer to reason about existing data properties by pro
 viding semantic information about  user-defined functions [[4]](http://ci.apache.org/projects/flink/flink-docs-master/programming_guide.html#semantic-annotations). While the optimizer is a killer feature of Flink, it can happen that a user knows better than the optimizer how to execute a specific join. Similar to relational database systems, Flink offers optimizer hints to tell the optimizer which join strategies to pick [[5]](http://ci.apache.org/projects/flink/flink-docs-master/dataset_transformations.html#join-algorithm-hints).
 
-###How is Flink’s join performance?
+### How is Flink’s join performance?
 
 Alright, that sounds good, but how fast are joins in Flink? Let’s have a look. We start with a benchmark of the single-core performance of Flink’s Hybrid-Hash-Join implementation and run a Flink program that executes a Hybrid-Hash-Join with parallelism 1. We run the program on a n1-standard-2 Google Compute Engine instance (2 vCPUs, 7.5GB memory) with two locally attached SSDs. We give 4GB as working memory to the join. The join program generates 1KB records for both inputs on-the-fly, i.e., the data is not read from disk. We run 1:N (Primary-Key/Foreign-Key) joins and generate the smaller input with unique Integer join keys and the larger input with randomly chosen Integer join keys that fall into the key range of the smaller input. Hence, each tuple of the larger side joins with exactly one tuple of the smaller side. The result of the join is immediately discarded. We vary the size of the build-side input from 1 million to 12 million elements (1GB to 12GB). The probe-side inpu
 t is kept constant at 64 million elements (64GB). The following chart shows the average execution time of three runs for each setup.
 
@@ -154,11 +157,11 @@ As in the single-core benchmark, we run 1:N joins, generate the data on-the-fly,
 
 As expected, the Broadcast-Forward strategy performs best for very small inputs because the large probe side is not shipped over the network and is locally joined. However, when the size of the broadcasted side grows, two problems arise. First the amount of data which is shipped increases but also each parallel instance has to process the full broadcasted data set. The performance of both Repartitioning strategies behaves similar for growing input sizes which indicates that these strategies are mainly limited by the cost of the data transfer (at max 2TB are shipped over the network and joined). Although the Sort-Merge-Join strategy shows the worst performance all shown cases, it has a right to exist because it can nicely exploit sorted input data.
 
-###I’ve got sooo much data to join, do I really need to ship it?
+### I’ve got sooo much data to join, do I really need to ship it?
 
 We have seen that off-the-shelf distributed joins work really well in Flink. But what if your data is so huge that you do not want to shuffle it across your cluster? We recently added some features to Flink for specifying semantic properties (partitioning and sorting) on input splits and co-located reading of local input files. With these tools at hand, it is possible to join pre-partitioned data sets from your local filesystem without sending a single byte over your cluster’s network. If the input data is even pre-sorted, the join can be done as a Sort-Merge-Join without sorting, i.e., the join is essentially done on-the-fly. Exploiting co-location requires a very special setup though. Data needs to be stored on the local filesystem because HDFS does not feature data co-location and might move file blocks across data nodes. That means you need to take care of many things yourself which HDFS would have done for you, including replication to avoid data loss. On the other hand, perf
 ormance gains of joining co-located and pre-sorted can be quite substantial.
 
-###tl;dr: What should I remember from all of this?
+### tl;dr: What should I remember from all of this?
 
 * Flink’s fluent Scala and Java APIs make joins and other data transformations easy as cake.
 * The optimizer does the hard choices for you, but gives you control in case you know better.

http://git-wip-us.apache.org/repos/asf/flink-web/blob/7b3cf3a7/_posts/2015-04-07-march-in-flink.md
----------------------------------------------------------------------
diff --git a/_posts/2015-04-07-march-in-flink.md b/_posts/2015-04-07-march-in-flink.md
index 4d46346..61aefa2 100644
--- a/_posts/2015-04-07-march-in-flink.md
+++ b/_posts/2015-04-07-march-in-flink.md
@@ -7,7 +7,7 @@ categories: news
 
 March has been a busy month in the Flink community.
 
-###Flink runner for Google Cloud Dataflow
+### Flink runner for Google Cloud Dataflow
 
 A Flink runner for Google Cloud Dataflow was announced. See the blog
 posts by [data Artisans](http://data-artisans.com/dataflow.html) and
@@ -18,7 +18,7 @@ SDK and run in multiple backends, either as a managed service inside
 Google's infrastructure, or leveraging open source runners,
 including Apache Flink.
 
-###Learn about the internals of Flink
+### Learn about the internals of Flink
 
 The community has started an effort to better document the internals
 of Flink. Check out the first articles on the Flink wiki on [how Flink
@@ -35,7 +35,7 @@ Check out also the [new blog
 post](http://flink.apache.org/news/2015/03/13/peeking-into-Apache-Flinks-Engine-Room.html)
 on how Flink executes joins with several insights into Flink's runtime.
 
-###Meetups and talks
+### Meetups and talks
 
 Flink's machine learning efforts were presented at the [Machine
 Learning Stockholm meetup
@@ -44,16 +44,16 @@ regular Berlin Flink meetup featured a talk on the past, present, and
 future of Flink. The talk is available on
 [youtube](https://www.youtube.com/watch?v=fw2DBE6ZiEQ&feature=youtu.be).
 
-##In the Flink master
+## In the Flink master
 
-###Table API in Scala and Java
+### Table API in Scala and Java
 
 The new [Table
 API](https://github.com/apache/flink/tree/master/flink-staging/flink-table)
 in Flink is now available in both Java and Scala. Check out the
 examples [here (Java)](https://github.com/apache/flink/blob/master/flink-staging/flink-table/src/main/java/org/apache/flink/examples/java/JavaTableExample.java) and [here (Scala)](https://github.com/apache/flink/tree/master/flink-staging/flink-table/src/main/scala/org/apache/flink/examples/scala).
 
-###Additions to the Machine Learning library
+### Additions to the Machine Learning library
 
 Flink's [Machine Learning
 library](https://github.com/apache/flink/tree/master/flink-staging/flink-ml)
@@ -61,7 +61,7 @@ is seeing quite a bit of traction. Recent additions include the [CoCoA
 algorithm](http://arxiv.org/abs/1409.1458) for distributed
 optimization.
 
-###Exactly-once delivery guarantees for streaming jobs
+### Exactly-once delivery guarantees for streaming jobs
 
 Flink streaming jobs now provide exactly once processing guarantees
 when coupled with persistent sources (notably [Apache
@@ -71,11 +71,8 @@ checkpoints at failure recovery. This functionality is currently
 limited in that it does not yet handle large state and iterative
 programs.
 
-###Flink on Tez
+### Flink on Tez
 
 A new execution environment enables non-iterative Flink jobs to use
 Tez as an execution backend instead of Flink's own network stack. Learn more
-[here](http://ci.apache.org/projects/flink/flink-docs-master/flink_on_tez_guide.html).
-
-
-
+[here](http://ci.apache.org/projects/flink/flink-docs-master/flink_on_tez_guide.html).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flink-web/blob/7b3cf3a7/_posts/2015-04-13-release-0.9.0-milestone1.md
----------------------------------------------------------------------
diff --git a/_posts/2015-04-13-release-0.9.0-milestone1.md b/_posts/2015-04-13-release-0.9.0-milestone1.md
index e7014a3..67199db 100644
--- a/_posts/2015-04-13-release-0.9.0-milestone1.md
+++ b/_posts/2015-04-13-release-0.9.0-milestone1.md
@@ -20,9 +20,9 @@ through the Flink [mailing
 lists](http://flink.apache.org/community.html#mailing-lists) is, as
 always, very welcome!
 
-##New Features
+## New Features
 
-###Table API
+### Table API
 
 Flink’s new Table API offers a higher-level abstraction for
 interacting with structured data sources. The Table API allows users
@@ -47,7 +47,7 @@ data sources (DataSet and DataStream APIs).
 Check out the Table guide for Java and Scala
 [here](http://ci.apache.org/projects/flink/flink-docs-master/table.html).
 
-###Gelly Graph Processing API
+### Gelly Graph Processing API
 
 Gelly is a Java Graph API for Flink. It contains a set of utilities
 for graph analysis, support for iterative graph processing and a
@@ -68,7 +68,7 @@ Gelly will eventually subsume Spargel, Flink’s Pregel-like API. Check
 out the Gelly guide
 [here](http://ci.apache.org/projects/flink/flink-docs-master/gelly_guide.html).
 
-###Flink Machine Learning Library
+### Flink Machine Learning Library
 
 This release includes the first version of Flink’s Machine Learning
 library. The library’s pipeline approach, which has been strongly
@@ -95,7 +95,7 @@ coordinate ascent (CoCoA) algorithm is the latest addition to the
 library. The CoCoA algorithm can be used to train distributed
 soft-margin SVMs.
 
-###Flink on YARN leveraging Apache Tez
+### Flink on YARN leveraging Apache Tez
 
 We are introducing a new execution mode for Flink to be able to run
 restricted Flink programs on top of [Apache
@@ -114,7 +114,7 @@ shared YARN clusters.
 Get started with Flink on Tez
 [here](http://ci.apache.org/projects/flink/flink-docs-master/flink_on_tez_guide.html).
 
-###Reworked Distributed Runtime on Akka
+### Reworked Distributed Runtime on Akka
 
 Flink’s RPC system has been replaced by the widely adopted
 [Akka](http://akka.io) framework. Akka’s concurrency model offers the
@@ -126,7 +126,7 @@ Flink’s scalability by introducing asynchronous messages to the
 system. These asynchronous messages allow Flink to be run on many more
 nodes than before.
 
-###Exactly-once  processing on Kafka Streaming Sources
+### Exactly-once processing on Kafka Streaming Sources
 
 This release introduces stream processing with exacly-once delivery
 guarantees for Flink streaming programs that analyze streaming sources
@@ -138,7 +138,7 @@ Read
 [here](http://ci.apache.org/projects/flink/flink-docs-master/streaming_guide.html#apache-kafka)
 on how to use the persistent Kafka source.
 
-###Improved YARN support
+### Improved YARN support
 
 Flink’s YARN client contains several improvements, such as a detached
 mode for starting a YARN session in the background, the ability to
@@ -154,7 +154,7 @@ cluster.
 See the YARN docs
 [here](http://ci.apache.org/projects/flink/flink-docs-master/yarn_setup.html).
 
-##More Improvements and Fixes
+## More Improvements and Fixes
 
 * [FLINK-1605](https://issues.apache.org/jira/browse/FLINK-1605):
   Flink is not exposing its Guava and ASM dependencies to Maven

http://git-wip-us.apache.org/repos/asf/flink-web/blob/7b3cf3a7/archive.md
----------------------------------------------------------------------
diff --git a/archive.md b/archive.md
deleted file mode 100644
index 89d7ece..0000000
--- a/archive.md
+++ /dev/null
@@ -1,85 +0,0 @@
----
-title: "Archive"
-layout: simple
----
-
-<script type="text/javascript">
-$( document ).ready(function() {
-  // Handler for .ready() called.
-  $('.ga-track').on('click', function() {
-    // we just use the element id for tracking with google analytics
-    ga('send', 'event', 'button', 'click', $(this).attr('id'));
-  });
-
-});
-</script>
-
-This page lists old versions of Flink including their documentation.
-
-## Flink 0.8.0
-
-[Jars](http://archive.apache.org/dist/flink/flink-0.8.0/)
-
-[Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.8.0/)
-
-[Java Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.8.0/api/java)
-
-[Scala Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.8.0/api/scala/index.html)
-
-## Flink 0.7.0-incubating
-
-[Jars](http://archive.apache.org/dist/incubator/flink/flink-0.7.0-incubating/)
-
-[Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.7/)
-
-[Java Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.7/api/java)
-
-[Scala Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.7/api/scala/index.html)
-
-## Flink 0.6.2-incubating
-
-[Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.6.2/)
-
-[Java Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.6.2/api/java)
-
-[Scala Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.6.2/api/scala/index.html)
-
-## Flink 0.6.1-incubating
-
-[Jars](http://archive.apache.org/dist/incubator/flink/flink-0.6.1-incubating/)
-
-[Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.6.1/)
-
-[Java Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.6.1/api/java)
-
-[Scala Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.6.1/api/scala/index.html)
-
-## Flink 0.6-incubating
-
-[Jars](http://archive.apache.org/dist/incubator/flink/)
-
-[Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.6/)
-
-[Java Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.6/api/java)
-
-[Scala Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.6/api/scala/index.html)
-
-## Stratosphere 0.5.1
-
-[Java Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.5.1/api/java)
-
-[Scala Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.5.1/api/scala/index.html)
-
-
-## Stratosphere 0.5
-
-[Java Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.5/api/java)
-
-[Scala Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.5/api/scala/index.html)
-
-
-## Stratosphere 0.4
-
-[Java Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.4/api/java)
-
-[Scala Docs]({{site.DOCS_BASE_URL}}flink-docs-release-0.4/api/scala/index.html)

http://git-wip-us.apache.org/repos/asf/flink-web/blob/7b3cf3a7/asf.md
----------------------------------------------------------------------
diff --git a/asf.md b/asf.md
deleted file mode 100644
index 96c9301..0000000
--- a/asf.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: "Apache Software Foundation"
-layout: with_toc
----
-
-Apache Flink is an effort currently undergoing incubation at The <a href="http://apache.org/">Apache Software Foundation</a> (ASF) sponsored by the Apache Incubator PMC. We would like to [thank the sponsors of the ASF](http://www.apache.org/foundation/thanks.html), the Apache Software Foundation itself and its community for supporting Apache Flink.
-
-The projects incubation status page can be found at [incubator.apache.org](http://incubator.apache.org/projects/flink.html).
-
-

http://git-wip-us.apache.org/repos/asf/flink-web/blob/7b3cf3a7/blog/feed.xml
----------------------------------------------------------------------
diff --git a/blog/feed.xml b/blog/feed.xml
index a2ed719..70260de 100644
--- a/blog/feed.xml
+++ b/blog/feed.xml
@@ -1,5 +1,5 @@
 ---
-layout: none
+layout: feed
 ---
 <?xml version="1.0" encoding="UTF-8"?>
 <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">

http://git-wip-us.apache.org/repos/asf/flink-web/blob/7b3cf3a7/blog/index.html
----------------------------------------------------------------------
diff --git a/blog/index.html b/blog/index.html
index 0334f4c..c3553f7 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -1,60 +1,70 @@
 ---
 title: Blog
-description: Blog posts and news around the Stratosphere Big Data Analytics platform.
-keywords: stratosphere, news, blog, big data, data analytics
 ---
 
-<div class="container">
-	<div class="row">
-		<div class="col-md-2"></div>
-		<div class="col-md-8">
-			{% for post in paginator.posts %}
-			<article>
-				<h2><a href="{{ site.baseurl }}{{ post.url }}">{{ post.title }}</a></h2>
-				<p class="meta">{{ post.date | date_to_string }}</p>
-
-				<div>{{ post.content }}</div>
-				<a href="{{ site.baseurl }}{{ post.url }}#disqus_thread">{{ post.title }}</a>
-			</article>
-			{% endfor %}
-		</div>
-		<div class="col-md-2"></div>
-	</div>
-</div>
-
-<script type="text/javascript">
-/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
-var disqus_shortname = 'stratosphere-eu'; // required: replace example with your forum shortname
-
-/* * * DON'T EDIT BELOW THIS LINE * * */
-(function () {
-    var s = document.createElement('script'); s.async = true;
-    s.type = 'text/javascript';
-    s.src = '//' + disqus_shortname + '.disqus.com/count.js';
-    (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
-}());
-</script>
-
-
-{% if paginator.total_pages > 1 %}
-<!-- Pagination links -->
-<ul class="pager">
-	<li>
-	{% if paginator.previous_page %}
-		<a href="{{ site.baseurl }}/blog{% if paginator.previous_page > 1%}/page{{ paginator.previous_page }}{% endif %}" class="previous">Previous</a>
-	{% else %}
-		<span>Previous</span>
-	{% endif %}
-	</li>
-	<li>
-		<span class="page_number ">Page: {{ paginator.page }} of {{ paginator.total_pages }}</span>
-	</li>
-	<li>
-	{% if paginator.next_page %}
-		<a href="{{ site.baseurl }}/blog/page{{ paginator.next_page }}" class="next">Next</a>
-	{% else %}
-		<span>Next</span>
-	{% endif %}
-	</li>
-</ul>
-{% endif %}
+<div class="row">
+  <div class="col-sm-8">
+    <!-- Blog posts -->
+    {% for post in paginator.posts %}
+    <article>
+      <h2 class="blog-title"><a href="{{ site.baseurl }}{{ post.url }}">{{ post.title }}</a></h2>
+      <p>{{ post.date | date_to_string }}{% if post.author %} by {{ post.author }}{% if post.author-twitter %} (<a href="https://twitter.com/{{ post.author-twitter }}">@{{ post.author-twitter }}</a>){% endif %}{% endif %}</p>
+
+      <p>{{ post.excerpt }}</p>
+
+      <p><a href="{{ site.baseurl }}{{ post.url }}">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    {% endfor %}
+
+    <!-- Pagination links -->
+    {% if paginator.total_pages > 1 %}
+    <ul class="pager">
+      <li>
+      {% if paginator.previous_page %}
+        <a href="{{ site.baseurl }}/blog{% if paginator.previous_page > 1%}/page{{ paginator.previous_page }}{% endif %}" class="previous">Previous</a>
+      {% else %}
+        <span>Previous</span>
+      {% endif %}
+      </li>
+      <li>
+        <span class="page_number ">Page: {{ paginator.page }} of {{ paginator.total_pages }}</span>
+      </li>
+      <li>
+      {% if paginator.next_page %}
+        <a href="{{ site.baseurl }}/blog/page{{ paginator.next_page }}" class="next">Next</a>
+      {% else %}
+        <span>Next</span>
+      {% endif %}
+      </li>
+    </ul>
+    {% endif %}
+  </div>
+
+  <div class="col-sm-4" markdown="1">
+    <!-- Blog posts by YEAR -->
+    {% for post in site.posts  %}
+      {% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %}
+      {% capture next_year %}{{ post.previous.date | date: "%Y" }}{% endcapture %}
+
+      {% if forloop.first %}
+    <h2>{{this_year}}</h2>
+
+    <ul id="markdown-toc">
+      {% endif %}
+      <li><a href="{{ post.url }}">{{ post.title }}</a></li>
+      
+      {% if forloop.last %}
+    </ul>
+      {% else %}
+        {% if this_year != next_year %}
+    </ul>
+        <hr>
+        <h2>{{next_year}}</h2>
+    <ul id="markdown-toc">
+        {% endif %}
+      {% endif %}
+    {% endfor %}
+  </div>
+</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flink-web/blob/7b3cf3a7/coding-guidelines.md
----------------------------------------------------------------------
diff --git a/coding-guidelines.md b/coding-guidelines.md
new file mode 100644
index 0000000..9a72a49
--- /dev/null
+++ b/coding-guidelines.md
@@ -0,0 +1,44 @@
+---
+title:  "Coding Guidelines"
+---
+
+These are the coding and style guidelines that we follow.
+
+## Guidelines for pull requests and patches
+
+- **JIRA issue and commit message**. A pull request should relate to a JIRA issue; create an issue if none exists for the change you want to make. The latest commit message should reference that issue. An example commit message would be *[FLINK-633] Fix NullPointerException for empty UDF parameters*. That way, the pull request automatically gives a description of what it does, for example what bug does it fix in what way.
+- **No WIP pull requests**. We consider pull requests as requests to merge the referenced code *as is* into the current *stable* master branch. Therefore, a pull request should not be "work in progress". Open a pull request if you are confident that it can be merged into the current master branch without problems. If you rather want comments on your code, post a link to your working branch.
+- **Single change per PR**. Please do not combine various unrelated changes in a single pull request. Rather, open multiple individual pull requests. This ensures that pull requests are *topic related*, can be merged more easily, and typically result in topic-specific merge conflicts only.
+- **Tests need to pass**. Any pull request where the tests do not pass or which does not compile will not undergo any further review. We recommend to connect your private GitHub accounts with [Travis CI](http://travis-ci.org/) (like the Flink GitHub repository). Travis will run tests for all tested environments whenever you push something into *your* Github repository.
+- **No reformattings**. Please keep reformatting of source files to a minimum. Diffs become unreadable if you (or your IDE automatically) remove or replace whitespaces, reformat code, or comments. Also, other patches that affect the same files become un-mergeable. Please configure your IDE such that code is not automatically reformatted. Pull requests with excessive or unnecessary code reformatting might be rejected.
+- **Tests for new features are required**. All new features need to be backed by tests, *strictly*. It is very easy that a later merge accidentally throws out a feature or breaks it. This will not be caught if the feature is not guarded by tests. Anything not covered by a test is considered cosmetic.
+- **Cleanup**. Before opening a pull request follow this checklist:
+  - Rebase onto the latest version of the master branch
+  - Clean up your commits, i.e., squash them in a reasonable way and give meaningful commit messages
+  - Run *all* tests either locally with ```mvn clean verify``` or use Travis CI to check the build
+- **Append review commits**. When you get comments on the pull request asking for changes, append commits for these changes. *Do not rebase and squash them.* It allows people to review the cleanup work independently. Otherwise reviewers have to go through the entire set of diffs again.
+- **Javadocs for public methods**. Public methods and classes that are part of the user-facing API need to have JavaDocs. Please write meaningful docs. Good docs are concise and informative.
+- **Meaningful error messages**. Give meaningful exception messages. Try to imagine why an exception could be thrown (what a user did wrong) and give a message that will help a user to resolve the problem.
+- **Follow the coding style** (see below). The checkstyle plugin verifies these rules when you build the code. If your code does not follow the checkstyle rules, Maven will not compile it and consequently the build will fail.
+
+## Coding Style Guidelines
+
+- **Apache license headers**. Make sure you have Apache License headers in your files. The RAT plugin is checking for that when you build the code.
+- **Tabs vs. spaces**. We are using tabs for indentation, not spaces. We are not religious there, it just happened to be that we started with tabs, and it is important to not mix them (merge/diff conflicts).
+- **Blocks**. All statements after `if`, `for`, `while`, `do`, ... must always be encapsulated in a block with curly braces (even if the block contains one statement):
+  
+  ```java
+for (...) {
+ ...
+}
+```
+  If you are wondering why, recall the famous [*goto bug*](https://www.imperialviolet.org/2014/02/22/applebug.html) in Apple's SSL library.
+- **No wildcard imports**. Do not use wildcard imports in the core files. They can cause problems when adding to the code and in some cases even during refactoring. Exceptions are the Tuple classes, Tuple-related utilities, and Flink user programs, when importing operators/functions. Tests are a special case of the user programs.
+- **No unused imports**. Remove all unused imports.
+- **No raw generic types**. Do not use raw generic types, unless strictly necessary (sometime necessary for signature matches, arrays).
+- **Supress warnings**. Add annotations to suppress warnings, if they cannot be avoided (such as "unchecked", or "serial").
+- **Comments**. Add comments to your code. What is it doing? Add JavaDocs or inherit them by not adding any comments to the methods. Do not automatically generate comments and avoid unnecessary comments like:
+
+  ```java
+i++; // increment by one
+```

http://git-wip-us.apache.org/repos/asf/flink-web/blob/7b3cf3a7/coding_guidelines.md
----------------------------------------------------------------------
diff --git a/coding_guidelines.md b/coding_guidelines.md
deleted file mode 100644
index 6ab5475..0000000
--- a/coding_guidelines.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-title:  "Coding Guidelines"
----
-
-These are the coding and style guidelines that we follow in the Flink project.
-
-## Guidelines for pull requests and patches
-
-- A pull request should relate to a JIRA issue; create an issue if none exists for the change you want to make. The latest commit message should reference that issue. An example commit message would be "[FLINK-633] Fix NullPointerException for empty UDF parameters". That way, the pull request automatically gives a description of what it does, for example what bug does it fix in what way?
-
-- We consider pull requests as requests to merge the referenced code *as is* into the current *stable* master branch. Therefore, a pull request should not be "work in progress". Open a pull request if you are confident that it can be merged into the current master branch without problems. If you rather want comments on your code, post a link to your working branch.
-
-- Please do not combine various unrelated changes in a single pull request. Rather, open multiple individual pull requests. This ensures that pull requests are *topic related*, can be merged more easily, and typically result in topic-specific merge conflicts only.
-
-- Any pull request where the tests do not pass or which does not compile will not undergo any further review. We recommend to connect your private GitHub accounts with [Travis CI](http://travis-ci.org/) (like the Flink GitHub repository). Travis will run tests for all tested environments whenever you push something into *your* Github repository.
-
-- Please keep reformatting of source files to a minimum. Diffs become unreadable if you (or your IDE automatically) remove or replace whitespaces, reformat code, or comments. Also, other patches that affect the same files become un-mergeable. Please configure your IDE such that code is not automatically reformatted. Pull requests with excessive or unnecessary code reformatting might be rejected.
-
-- All new features need to be backed by tests, *strictly*. It is very easy that a later merge accidentally throws out a feature or breaks it. This will not be caught if the feature is not guarded by tests. Anything not covered by a test is considered cosmetic.
-
-- Before opening a pull request follow this checklist:
- - Rebase onto the latest version of the master branch
- - Clean up your commits, i.e., squash them in a reasonable way and give meaningful commit messages
- - Run *all* tests either locally with ```mvn clean verify``` or use Travis CI to check the build
-
-- When you get comments on the pull request asking for changes, append commits for these changes. *Do not rebase and squash them.* It allows people to review the cleanup work independently. Otherwise reviewers have to go through the entire set of diffs again.
-
-- Public methods and classes that are part of the user-facing API need to have JavaDocs. Please write meaningful docs. Good docs are concise and informative.
-
-- Give meaningful exception messages. Try to imagine why an exception could be thrown (what a user did wrong) and give a message that will help a user to resolve the problem.
-
-- Follow the checkstyle rules (see below). The checkstyle plugin verifies these rules when you build the code. If your code does not follow the checkstyle rules, Maven will not compile it and consequently the build will fail.
-
-
-## Coding Style Guidelines
-
-- Make sure you have Apache License headers in your files. The RAT plugin is checking for that when you build the code.
-
-- We are using tabs for indentation, not spaces. We are not religious there, it just happened to be the way that we started with tabs, and it is important to not mix them (merge/diff conflicts).
-
-- All statements after `if`, `for`, `while`, `do`, ... must always be encapsulated in a block with curly braces (even if the block contains one statement):
-```
-for (...) {
- ...
-}
-```
-If you are wondering why, recall the famous [*goto bug*](https://www.imperialviolet.org/2014/02/22/applebug.html) in Apple's SSL library.
-
-
--  Do not use wildcard imports in the core files. They can cause problems when adding to the code and in some cases even during refactoring. Exceptions are the Tuple classes, Tuple-related utilities, and Flink user programs, when importing operators/functions. Tests are a special case of the user programs.
-  
-- Remove all unused imports.
-
-- Do not use raw generic types, unless strictly necessary (sometime necessary for signature matches, arrays).
-
-- Add annotations to suppress warnings, if they cannot be avoided (such as "unchecked", or "serial")
-
-- Do not add "non-javadoc" comments. 
-
-- Add comments to your code. What is it doing? Add JavaDocs or inherit them by not adding any comments to the methods. Do not automatically generate comments and avoid unnecessary comments like
-```
-i++;  // increment by one
-```
-
-

http://git-wip-us.apache.org/repos/asf/flink-web/blob/7b3cf3a7/community.md
----------------------------------------------------------------------
diff --git a/community.md b/community.md
index 70683b2..0aa3485 100644
--- a/community.md
+++ b/community.md
@@ -1,276 +1,270 @@
 ---
 title: "Community"
-layout: with_toc
 ---
 
-# Getting Help
+There are many ways to get help from the Apache Flink community. The [mailing lists](#mailing-lists) are the primary place where all Flink committers are present. If you want to talk with the Flink committers and users in a chat, there is a [IRC channel](#irc). Some committers are also monitoring [Stack Overflow](http://stackoverflow.com/questions/tagged/flink). Please remember to tag your questions with the *[flink](http://stackoverflow.com/questions/tagged/flink)* tag. Bugs and feature requests can either be discussed on *dev mailing list* or on [JIRA]({{ site.jire }}). Those interested in contributing to Flink should check out the [contribution guide](how-to-contribute.html).
 
-There are many ways to get help from the Apache Flink community. The mailing lists are the primary place where all Flink committers are present.
-To ask a question there, you have to send an empty subscription email first to *user-subscribe@flink.apache.org*. Once the subscription is confirmed, you can send questions to *user@flink.apache.org*.
-
-If you want to talk with the Flink committers and users in a chat, there is a Freenode [IRC channel](#irc) for *#flink*.
-
-Some committers are also monitoring [stackoverflow](http://stackoverflow.com/questions/tagged/flink) for Flink related questions. Please remember to tag them with the *[flink](http://stackoverflow.com/questions/tagged/flink)* tag. [Ask a Question on Stackoverflow](http://stackoverflow.com/questions/ask/?tags=flink).
-
-Bugs and feature requests can either be discussed on *dev@flink.apache.org* or on [JIRA]({{ site.FLINK_ISSUES_URL }}).
-
-Those interested in contributing to Flink should check out the ["How to contribute" guide](http://localhost:4000/how-to-contribute.html).
+{% toc %}
 
 ## Mailing Lists
 
 <table class="table table-striped">
-	<thead>
-		<th class="text-center">Name</th>
-		<th class="text-center">Subscribe</th>
-		<th class="text-center">Digest</th>
-		<th class="text-center">Unsubscribe</th>
-		<th class="text-center">Post</th>
-		<th class="text-center">Archive</th>
-	</thead>
-	<tr>
-		<td>
-			<strong>news</strong>@flink.apache.org<br>
-			<small>News and announcements from the Flink community.</small>
-		</td>
-		<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:news-subscribe@flink.apache.org">Subscribe</a></td>
-		<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:news-digest-subscribe@flink.apache.org">Subscribe</a></td>
-		<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:news-unsubscribe@flink.apache.org">Unsubscribe</a></td>
-		<td class="text-center"><i class="fa fa-pencil-square-o"></i> <i>Read only list</i></td>
-		<td class="text-center">
-			<a href="http://mail-archives.apache.org/mod_mbox/flink-news/">Archives</a> <br>
-		</td>
-	</tr>
-	<tr>
-		<td>
-			<strong>user</strong>@flink.apache.org<br>
-			<small>User support and questions mailing list</small>
-		</td>
-		<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:user-subscribe@flink.apache.org">Subscribe</a></td>
-		<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:user-digest-subscribe@flink.apache.org">Subscribe</a></td>
-		<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:user-unsubscribe@flink.apache.org">Unsubscribe</a></td>
-		<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:user@flink.apache.org">Post</a></td>
-		<td class="text-center">
-			<a href="http://mail-archives.apache.org/mod_mbox/flink-user/">Archives</a> <br>
-			<a href="http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/">Nabble Archive</a>
-		</td>
-	</tr>
-	<tr>
-		<td>
-			<strong>dev</strong>@flink.apache.org<br>
-			<small>Development related discussions</small>
-		</td>
-		<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:dev-subscribe@flink.apache.org">Subscribe</a></td>
-		<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:dev-digest-subscribe@flink.apache.org">Subscribe</a></td>
-		<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:dev-unsubscribe@flink.apache.org">Unsubscribe</a></td>
-		<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:dev@flink.apache.org">Post</a></td>
-		<td class="text-center">
-			<a href="http://mail-archives.apache.org/mod_mbox/flink-dev/">Archives</a> <br>
-			<a href="http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/">Nabble Archive</a>
-		</td>
-	</tr>
-	<tr>
-		<td>
-			<strong>issues</strong>@flink.apache.org
-			<br>
-			<small>Mirror of all JIRA activity</small>
-		</td>
-		<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:issues-subscribe@flink.apache.org">Subscribe</a></td>
-		<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:issues-digest-subscribe@flink.apache.org">Subscribe</a></td>
-		<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:issues-unsubscribe@flink.apache.org">Unsubscribe</a></td>
-		<td class="text-center"><i class="fa fa-pencil-square-o"></i><i>Read only list</i></td>
-		<td class="text-center"><a href="http://mail-archives.apache.org/mod_mbox/flink-issues/">Archives</a></td>
-	</tr>
-	<tr>
-		<td>
-			<strong>commits</strong>@flink.apache.org
-			<br>
-			<small>All commits to our Git (code) and SVN (website) repositories</small>
-		</td>
-		<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:commits-subscribe@flink.apache.org">Subscribe</a></td>
-		<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:commits-digest-subscribe@flink.apache.org">Subscribe</a></td>
-		<td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:commits-unsubscribe@flink.apache.org">Unsubscribe</a></td>
-		<td class="text-center"><i class="fa fa-pencil-square-o"></i> <i>Read only list</i></td>
-		<td class="text-center"><a href="http://mail-archives.apache.org/mod_mbox/flink-commits/">Archives</a></td>
-	</tr>
+  <thead>
+    <th class="text-center">Name</th>
+    <th class="text-center">Subscribe</th>
+    <th class="text-center">Digest</th>
+    <th class="text-center">Unsubscribe</th>
+    <th class="text-center">Post</th>
+    <th class="text-center">Archive</th>
+  </thead>
+  <tr>
+    <td>
+      <strong>news</strong>@flink.apache.org<br>
+      <small>News and announcements from the Flink community.</small>
+    </td>
+    <td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:news-subscribe@flink.apache.org">Subscribe</a></td>
+    <td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:news-digest-subscribe@flink.apache.org">Subscribe</a></td>
+    <td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:news-unsubscribe@flink.apache.org">Unsubscribe</a></td>
+    <td class="text-center"><i class="fa fa-pencil-square-o"></i> <i>Read only list</i></td>
+    <td class="text-center">
+      <a href="http://mail-archives.apache.org/mod_mbox/flink-news/">Archives</a> <br>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <strong>user</strong>@flink.apache.org<br>
+      <small>User support and questions mailing list</small>
+    </td>
+    <td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:user-subscribe@flink.apache.org">Subscribe</a></td>
+    <td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:user-digest-subscribe@flink.apache.org">Subscribe</a></td>
+    <td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:user-unsubscribe@flink.apache.org">Unsubscribe</a></td>
+    <td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:user@flink.apache.org">Post</a></td>
+    <td class="text-center">
+      <a href="http://mail-archives.apache.org/mod_mbox/flink-user/">Archives</a> <br>
+      <a href="http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/">Nabble Archive</a>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <strong>dev</strong>@flink.apache.org<br>
+      <small>Development related discussions</small>
+    </td>
+    <td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:dev-subscribe@flink.apache.org">Subscribe</a></td>
+    <td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:dev-digest-subscribe@flink.apache.org">Subscribe</a></td>
+    <td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:dev-unsubscribe@flink.apache.org">Unsubscribe</a></td>
+    <td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:dev@flink.apache.org">Post</a></td>
+    <td class="text-center">
+      <a href="http://mail-archives.apache.org/mod_mbox/flink-dev/">Archives</a> <br>
+      <a href="http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/">Nabble Archive</a>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <strong>issues</strong>@flink.apache.org
+      <br>
+      <small>Mirror of all JIRA activity</small>
+    </td>
+    <td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:issues-subscribe@flink.apache.org">Subscribe</a></td>
+    <td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:issues-digest-subscribe@flink.apache.org">Subscribe</a></td>
+    <td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:issues-unsubscribe@flink.apache.org">Unsubscribe</a></td>
+    <td class="text-center"><i class="fa fa-pencil-square-o"></i><i>Read only list</i></td>
+    <td class="text-center"><a href="http://mail-archives.apache.org/mod_mbox/flink-issues/">Archives</a></td>
+  </tr>
+  <tr>
+    <td>
+      <strong>commits</strong>@flink.apache.org
+      <br>
+      <small>All commits to our repositories</small>
+    </td>
+    <td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:commits-subscribe@flink.apache.org">Subscribe</a></td>
+    <td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:commits-digest-subscribe@flink.apache.org">Subscribe</a></td>
+    <td class="text-center"><i class="fa fa-pencil-square-o"></i> <a href="mailto:commits-unsubscribe@flink.apache.org">Unsubscribe</a></td>
+    <td class="text-center"><i class="fa fa-pencil-square-o"></i> <i>Read only list</i></td>
+    <td class="text-center"><a href="http://mail-archives.apache.org/mod_mbox/flink-commits/">Archives</a></td>
+  </tr>
 </table>
 
-## Issues
+## IRC
 
-We use JIRA to track all code related issues: {{ site.FLINK_ISSUES_URL }}.
+There is an IRC channel called #flink dedicated to Apache Flink at irc.freenode.org. There is also a [web-based IRC client](http://webchat.freenode.net/?channels=flink) available.
 
-All issue activity is also mirrored to the issues mailing list.
+The IRC channel can be used for online discussions about Apache Flink as community, but developers should be careful to move or duplicate all the official or useful discussions to the issue tracking system or dev mailing list.
 
-## IRC
+## Stack Overflow
 
-There is an IRC channel called #flink dedicated to Apache Flink at irc.freenode.org. There is also a [web-based IRC client](http://webchat.freenode.net/?channels=flink) available.
+Committers are watching [Stack Overflow](http://stackoverflow.com/questions/tagged/flink) for the [flink](http://stackoverflow.com/questions/tagged/flink) tag.
 
-The IRC channel can be used for online discussions about Apache Flink as community, but developers should be careful 
-to move or duplicate all the official or useful discussions to the issue tracking system or dev mailing list.
+Make sure to tag your questions there accordingly to get answers from the Flink community.
 
-## Team
+## Issue Tracker
+
+We use JIRA to track all code related issues: [{{ site.jira }}]({{ site.jira }}).
+
+All issue activity is also mirrored to the issues mailing list.
+
+## People
 
 <table class="table table-striped">
-	<thead>
-		<th class="text-center"></th>
-		<th class="text-center">Name</th>
-		<th class="text-center">Role</th>
-		<th class="text-center">Apache ID</th>
-	</thead>
-	<tr>
-		<td class="text-center"><img src="https://avatars2.githubusercontent.com/u/5990983?s=50"></td>
-		<td class="text-center">Márton Balassi</td>
-		<td class="text-center">PMC, Committer</td>
-		<td class="text-center">mbalassi</td>
-	</tr>
+  <thead>
+    <th class="text-center"></th>
+    <th class="text-center">Name</th>
+    <th class="text-center">Role</th>
+    <th class="text-center">Apache ID</th>
+  </thead>
+  <tr>
+    <td class="text-center"><img src="https://avatars2.githubusercontent.com/u/5990983?s=50"></td>
+    <td class="text-center">Márton Balassi</td>
+    <td class="text-center">PMC, Committer</td>
+    <td class="text-center">mbalassi</td>
+  </tr>
     <tr>
         <td class="text-center"><img src="https://avatars2.githubusercontent.com/u/858078?v=3&s=50"></td>
         <td class="text-center">Paris Carbone</td>
         <td class="text-center">Committer</td>
         <td class="text-center">senorcarbone</td>
     </tr>
-	<tr>
-		<td class="text-center" width="10%"><img src="https://avatars3.githubusercontent.com/u/1756620?s=50"></a></td>
-		<td class="text-center">Ufuk Celebi</td>
-		<td class="text-center">PMC, Committer</td>
-		<td class="text-center">uce</td>
-	</tr>
-	<tr>
-		<td class="text-center"><img src="https://avatars2.githubusercontent.com/u/1727146?s=50"></td>
-		<td class="text-center">Stephan Ewen</td>
-		<td class="text-center">PMC, Committer, VP</td>
-		<td class="text-center">sewen</td>
-	</tr>
-	<tr>
-		<td class="text-center"><img src="https://avatars1.githubusercontent.com/u/5880972?s=50"></td>
-		<td class="text-center">Gyula Fóra</td>
-		<td class="text-center">PMC, Committer</td>
-		<td class="text-center">gyfora</td>
-	</tr>
-	<tr>
-		<td class="text-center"></td>
-		<td class="text-center">Alan Gates</td>
-		<td class="text-center">PMC, Committer</td>
-		<td class="text-center">gates</td>
-	</tr>
-	<tr>
-		<td class="text-center"><img src="https://avatars0.githubusercontent.com/u/2388347?s=50"></td>
-		<td class="text-center">Fabian Hueske</td>
-		<td class="text-center">PMC, Committer</td>
-		<td class="text-center">fhueske</td>
-	</tr>
-		<tr>
-		<td class="text-center"><img src="https://avatars3.githubusercontent.com/u/498957?v=3&s=50"></td>
-		<td class="text-center">Vasia Kalavri</td>
-		<td class="text-center">PMC, Committer</td>
-		<td class="text-center">vasia</td>
-	</tr>
-	</tr>
-		<tr>
-		<td class="text-center"><img src="https://avatars0.githubusercontent.com/u/68551?s=50"></td>
-		<td class="text-center">Aljoscha Krettek</td>
-		<td class="text-center">PMC, Committer</td>
-		<td class="text-center">aljoscha</td>
-	</tr>
-	<tr>
-		<td class="text-center"><img src="https://avatars0.githubusercontent.com/u/89049?s=50"></td>
-		<td class="text-center">Robert Metzger</td>
-		<td class="text-center">PMC, Committer</td>
-		<td class="text-center">rmetzger</td>
-	</tr>
-	<tr>
-		<td class="text-center"><img src="https://avatars2.githubusercontent.com/u/837221?s=50"></td>
-		<td class="text-center">Maximilian Michels</td>
-		<td class="text-center">Committer</td>
-		<td class="text-center">mxm</td>
-	</tr>
-	</tr>
-	<tr>
-		<td class="text-center"><img src="https://avatars1.githubusercontent.com/u/5756858?s=50"></td>
-		<td class="text-center">Till Rohrmann</td>
-		<td class="text-center">PMC, Committer</td>
-		<td class="text-center">trohrmann</td>
-	</tr>
-	<tr>
-		<td class="text-center"><img src="https://avatars0.githubusercontent.com/u/105434?s=50"></td>
-		<td class="text-center">Henry Saputra</td>
-		<td class="text-center">PMC, Committer</td>
-		<td class="text-center">hsaputra</td>
-	</tr>
-	<tr>
-		<td class="text-center"><img src="https://avatars1.githubusercontent.com/u/409707?s=50"></td>
-		<td class="text-center">Sebastian Schelter</td>
-		<td class="text-center">PMC, Committer</td>
-		<td class="text-center">ssc</td>
-	</tr>
-	<tr>
-		<td class="text-center"><img src="https://avatars2.githubusercontent.com/u/1925554?s=50"></td>
-		<td class="text-center">Kostas Tzoumas</td>
-		<td class="text-center">PMC, Committer</td>
-		<td class="text-center">ktzoumas</td>
-	</tr>
-	<tr>
-		<td class="text-center"></td>
-		<td class="text-center">Timo Walther</td>
-		<td class="text-center">PMC, Committer</td>
-		<td class="text-center">twalthr</td>
-	</tr>	
-	<tr>
-		<td class="text-center"><img src="https://avatars1.githubusercontent.com/u/1826769?s=50"></td>
-		<td class="text-center">Daniel Warneke</td>
-		<td class="text-center">PMC, Committer</td>
-		<td class="text-center">warneke</td>
-	</tr>
+  <tr>
+    <td class="text-center" width="10%"><img src="https://avatars3.githubusercontent.com/u/1756620?s=50"></a></td>
+    <td class="text-center">Ufuk Celebi</td>
+    <td class="text-center">PMC, Committer</td>
+    <td class="text-center">uce</td>
+  </tr>
+  <tr>
+    <td class="text-center"><img src="https://avatars2.githubusercontent.com/u/1727146?s=50"></td>
+    <td class="text-center">Stephan Ewen</td>
+    <td class="text-center">PMC, Committer, VP</td>
+    <td class="text-center">sewen</td>
+  </tr>
+  <tr>
+    <td class="text-center"><img src="https://avatars1.githubusercontent.com/u/5880972?s=50"></td>
+    <td class="text-center">Gyula Fóra</td>
+    <td class="text-center">PMC, Committer</td>
+    <td class="text-center">gyfora</td>
+  </tr>
+  <tr>
+    <td class="text-center"></td>
+    <td class="text-center">Alan Gates</td>
+    <td class="text-center">PMC, Committer</td>
+    <td class="text-center">gates</td>
+  </tr>
+  <tr>
+    <td class="text-center"><img src="https://avatars0.githubusercontent.com/u/2388347?s=50"></td>
+    <td class="text-center">Fabian Hueske</td>
+    <td class="text-center">PMC, Committer</td>
+    <td class="text-center">fhueske</td>
+  </tr>
+    <tr>
+    <td class="text-center"><img src="https://avatars3.githubusercontent.com/u/498957?v=3&s=50"></td>
+    <td class="text-center">Vasia Kalavri</td>
+    <td class="text-center">PMC, Committer</td>
+    <td class="text-center">vasia</td>
+  </tr>
+  </tr>
+    <tr>
+    <td class="text-center"><img src="https://avatars0.githubusercontent.com/u/68551?s=50"></td>
+    <td class="text-center">Aljoscha Krettek</td>
+    <td class="text-center">PMC, Committer</td>
+    <td class="text-center">aljoscha</td>
+  </tr>
+  <tr>
+    <td class="text-center"><img src="https://avatars0.githubusercontent.com/u/89049?s=50"></td>
+    <td class="text-center">Robert Metzger</td>
+    <td class="text-center">PMC, Committer</td>
+    <td class="text-center">rmetzger</td>
+  </tr>
+  <tr>
+    <td class="text-center"><img src="https://avatars2.githubusercontent.com/u/837221?s=50"></td>
+    <td class="text-center">Maximilian Michels</td>
+    <td class="text-center">Committer</td>
+    <td class="text-center">mxm</td>
+  </tr>
+  </tr>
+  <tr>
+    <td class="text-center"><img src="https://avatars1.githubusercontent.com/u/5756858?s=50"></td>
+    <td class="text-center">Till Rohrmann</td>
+    <td class="text-center">PMC, Committer</td>
+    <td class="text-center">trohrmann</td>
+  </tr>
+  <tr>
+    <td class="text-center"><img src="https://avatars0.githubusercontent.com/u/105434?s=50"></td>
+    <td class="text-center">Henry Saputra</td>
+    <td class="text-center">PMC, Committer</td>
+    <td class="text-center">hsaputra</td>
+  </tr>
+  <tr>
+    <td class="text-center"><img src="https://avatars1.githubusercontent.com/u/409707?s=50"></td>
+    <td class="text-center">Sebastian Schelter</td>
+    <td class="text-center">PMC, Committer</td>
+    <td class="text-center">ssc</td>
+  </tr>
+  <tr>
+    <td class="text-center"><img src="https://avatars2.githubusercontent.com/u/1925554?s=50"></td>
+    <td class="text-center">Kostas Tzoumas</td>
+    <td class="text-center">PMC, Committer</td>
+    <td class="text-center">ktzoumas</td>
+  </tr>
+  <tr>
+    <td class="text-center"></td>
+    <td class="text-center">Timo Walther</td>
+    <td class="text-center">PMC, Committer</td>
+    <td class="text-center">twalthr</td>
+  </tr> 
+  <tr>
+    <td class="text-center"><img src="https://avatars1.githubusercontent.com/u/1826769?s=50"></td>
+    <td class="text-center">Daniel Warneke</td>
+    <td class="text-center">PMC, Committer</td>
+    <td class="text-center">warneke</td>
+  </tr>
 </table>
 
-You can reach committers directly at `<apache-id>@apache.org`. A list of all contributors can be found on our GitHub [Contributors]({{ site.FLINK_GITHUB_CONTRIBUTORS_URL }}) page.
+You can reach committers directly at `<apache-id>@apache.org`. A list of all contributors can be found on our [GitHub Contributors]({{ site.FLINK_GITHUB_CONTRIBUTORS_URL }}) page.
 
-##Former mentors
+## Former mentors
 
 The following people were very kind to mentor the project while in incubation.
 
 <table class="table table-striped">
-	<thead>
-		<th class="text-center"></th>
-		<th class="text-center">Name</th>
-		<th class="text-center">Role</th>
-		<th class="text-center">Apache ID</th>
-	</thead>
-	<tr>
-		<td class="text-center"></td>
-		<td class="text-center">Ashutosh Chauhan</td>
-		<td class="text-center">Former PPMC, Mentor</td>
-		<td class="text-center">hashutosh</td>
-	</tr>
-	<tr>
-		<td class="text-center"></td>
-		<td class="text-center">Ted Dunning</td>
-		<td class="text-center">Former PPMC, Mentor</td>
-		<td class="text-center">tdunning</td>
-	</tr>
-	<tr>
-		<td class="text-center"></td>
-		<td class="text-center">Alan Gates</td>
-		<td class="text-center">Former PPMC, Mentor</td>
-		<td class="text-center">gates</td>
-	</tr>
-	</tr>
-		<tr>
-		<td class="text-center"></td>
-		<td class="text-center">Owen O'Malley</td>
-		<td class="text-center">Former PPMC, Mentor</td>
-		<td class="text-center">omalley</td>
-	</tr>
-	<tr>
-		<td class="text-center"></td>
-		<td class="text-center">Sean Owen</td>
-		<td class="text-center">Former PPMC, Mentor</td>
-		<td class="text-center">srowen</td>
-	</tr>
-	<tr>
-		<td class="text-center"></td>
-		<td class="text-center">Henry Saputra</td>
-		<td class="text-center">Former PPMC, Mentor</td>
-		<td class="text-center">hsaputra</td>
-	</tr>
-</table>
-
+  <thead>
+    <th class="text-center"></th>
+    <th class="text-center">Name</th>
+    <th class="text-center">Role</th>
+    <th class="text-center">Apache ID</th>
+  </thead>
+  <tr>
+    <td class="text-center"></td>
+    <td class="text-center">Ashutosh Chauhan</td>
+    <td class="text-center">Former PPMC, Mentor</td>
+    <td class="text-center">hashutosh</td>
+  </tr>
+  <tr>
+    <td class="text-center"></td>
+    <td class="text-center">Ted Dunning</td>
+    <td class="text-center">Former PPMC, Mentor</td>
+    <td class="text-center">tdunning</td>
+  </tr>
+  <tr>
+    <td class="text-center"></td>
+    <td class="text-center">Alan Gates</td>
+    <td class="text-center">Former PPMC, Mentor</td>
+    <td class="text-center">gates</td>
+  </tr>
+  </tr>
+    <tr>
+    <td class="text-center"></td>
+    <td class="text-center">Owen O'Malley</td>
+    <td class="text-center">Former PPMC, Mentor</td>
+    <td class="text-center">omalley</td>
+  </tr>
+  <tr>
+    <td class="text-center"></td>
+    <td class="text-center">Sean Owen</td>
+    <td class="text-center">Former PPMC, Mentor</td>
+    <td class="text-center">srowen</td>
+  </tr>
+  <tr>
+    <td class="text-center"></td>
+    <td class="text-center">Henry Saputra</td>
+    <td class="text-center">Former PPMC, Mentor</td>
+    <td class="text-center">hsaputra</td>
+  </tr>
+</table>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flink-web/blob/7b3cf3a7/content/coding-guidelines.html
----------------------------------------------------------------------
diff --git a/content/coding-guidelines.html b/content/coding-guidelines.html
new file mode 100644
index 0000000..2d64c3b
--- /dev/null
+++ b/content/coding-guidelines.html
@@ -0,0 +1,207 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
+    <title>Apache Flink: Coding Guidelines</title>
+    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
+    <link rel="icon" href="/favicon.ico" type="image/x-icon">
+
+    <!-- Bootstrap -->
+    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
+    <link rel="stylesheet" href="/css/flink.css">
+    <link rel="stylesheet" href="/css/syntax.css">
+
+    <!-- Blog RSS feed -->
+    <link href="/blog/feed.xml" rel="alternate" type="application/rss+xml" title="Apache Flink Blog: RSS feed" />
+
+    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
+    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
+    <!--[if lt IE 9]>
+      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
+      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+    <![endif]-->
+  </head>
+  <body>  
+    
+
+  <!-- Top navbar. -->
+    <nav class="navbar navbar-default navbar-fixed-top">
+      <div class="container">
+        <!-- The logo. -->
+        <div class="navbar-header">
+          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <div class="navbar-logo">
+            <a href="/"><img alt="Apache Flink" src="/img/navbar-brand-logo.jpg"></a>
+          </div>
+        </div><!-- /.navbar-header -->
+
+        <!-- The navigation links. -->
+        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
+          <ul class="nav navbar-nav">
+            <!-- Overview -->
+            <li><a href="/index.html">Overview</span></a></li>
+
+            <!-- Features -->
+            <li><a href="/features.html">Features</span></a></li>
+
+            <!-- Downloads -->
+            <li><a href="/downloads.html">Downloads</span></a></li>
+
+            <!-- Documentation -->
+            <li class="dropdown">
+              <a href="" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Documentation <span class="caret"></span></a>
+              <ul class="dropdown-menu" role="menu">
+                <!-- Latest stable release -->
+                <li role="presentation" class="dropdown-header"><strong>Latest Release</strong> (Stable)</li>
+                <li><a href="http://ci.apache.org/projects/flink/flink-docs-release-0.8">0.8.1 Documentation</a></li>
+                <li><a href="http://ci.apache.org/projects/flink/flink-docs-release-0.8/api/java" class="active">0.8.1 Javadocs</a></li>
+                <li><a href="http://ci.apache.org/projects/flink/flink-docs-release-0.8/api/scala/index.html" class="active">0.8.1 ScalaDocs</a></li>
+
+                <!-- Snapshot docs -->
+                <li class="divider"></li>
+                <li role="presentation" class="dropdown-header"><strong>Snapshot</strong> (Development)</li>
+                <li><a href="http://ci.apache.org/projects/flink/flink-docs-master">0.9 Documentation</a></li>
+                <li><a href="http://ci.apache.org/projects/flink/flink-docs-master/api/java" class="active">0.9 Javadocs</a></li>
+                <li><a href="http://ci.apache.org/projects/flink/flink-docs-master/api/scala/index.html" class="active">0.9 ScalaDocs</a></li>
+
+                <!-- Wiki -->
+                <li class="divider"></li>
+                <li><a href="https://cwiki.apache.org/confluence/display/FLINK/Apache+Flink+Home"><small><span class="glyphicon glyphicon-new-window"></span></small> Wiki</a></li>
+              </ul>
+            </li>
+
+            <!-- FAQ -->
+            <li><a href="/faq.html">FAQ</span></a></li>
+          </ul>
+
+          <ul class="nav navbar-nav navbar-right hidden-sm">
+            <!-- Blog -->
+            <li><a href="/blog/">Blog</a></li>
+
+            <li class="dropdown active">
+              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Project <span class="caret"></span></a>
+              <ul class="dropdown-menu" role="menu">
+                <!-- Project -->
+                <li role="presentation" class="dropdown-header"><strong>Project</strong></li>
+                <li><a href="/material.html">Material</a></li>
+                <li><a href="https://twitter.com/apacheflink"><small><span class="glyphicon glyphicon-new-window"></span></small> Twitter</a></li>
+                <li><a href="https://github.com/apache/flink"><small><span class="glyphicon glyphicon-new-window"></span></small> GitHub</a></li>
+                <li><a href="https://cwiki.apache.org/confluence/display/FLINK/Apache+Flink+Home"><small><span class="glyphicon glyphicon-new-window"></span></small> Wiki</a></li>
+                
+                <!-- Community -->
+                <li class="divider"></li>
+                <li role="presentation" class="dropdown-header"><strong>Community</strong></li>
+                <li><a href="/community.html#mailing-lists">Mailing Lists</a></li>
+                <li><a href="/community.html#irc">IRC</a></li>
+                <li><a href="/community.html#stack-overflow">Stack Overflow</a></li>
+                <li><a href="/community.html#issue-tracker">Issue Tracker</a></li>
+                <li><a href="/community.html#people">People</a></li>
+
+                <!-- Contribute -->
+                <li class="divider"></li>
+                <li role="presentation" class="dropdown-header"><strong>Contribute</strong></li>
+                <li><a href="/how-to-contribute.html">How to Contribute</a></li>
+                <li><a href="/coding-guidelines.html">Coding Guidelines</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /.navbar-collapse -->
+      </div><!-- /.container -->
+    </nav>
+
+
+    <!-- Main content. -->
+    <div class="container">
+      
+
+<div class="row">
+  <div class="col-sm-12">
+      <h1>Coding Guidelines</h1>
+
+<p>These are the coding and style guidelines that we follow.</p>
+
+<h2 id="guidelines-for-pull-requests-and-patches">Guidelines for pull requests and patches</h2>
+
+<ul>
+  <li><strong>JIRA issue and commit message</strong>. A pull request should relate to a JIRA issue; create an issue if none exists for the change you want to make. The latest commit message should reference that issue. An example commit message would be <em>[FLINK-633] Fix NullPointerException for empty UDF parameters</em>. That way, the pull request automatically gives a description of what it does, for example what bug does it fix in what way.</li>
+  <li><strong>No WIP pull requests</strong>. We consider pull requests as requests to merge the referenced code <em>as is</em> into the current <em>stable</em> master branch. Therefore, a pull request should not be “work in progress”. Open a pull request if you are confident that it can be merged into the current master branch without problems. If you rather want comments on your code, post a link to your working branch.</li>
+  <li><strong>Single change per PR</strong>. Please do not combine various unrelated changes in a single pull request. Rather, open multiple individual pull requests. This ensures that pull requests are <em>topic related</em>, can be merged more easily, and typically result in topic-specific merge conflicts only.</li>
+  <li><strong>Tests need to pass</strong>. Any pull request where the tests do not pass or which does not compile will not undergo any further review. We recommend to connect your private GitHub accounts with <a href="http://travis-ci.org/">Travis CI</a> (like the Flink GitHub repository). Travis will run tests for all tested environments whenever you push something into <em>your</em> Github repository.</li>
+  <li><strong>No reformattings</strong>. Please keep reformatting of source files to a minimum. Diffs become unreadable if you (or your IDE automatically) remove or replace whitespaces, reformat code, or comments. Also, other patches that affect the same files become un-mergeable. Please configure your IDE such that code is not automatically reformatted. Pull requests with excessive or unnecessary code reformatting might be rejected.</li>
+  <li><strong>Tests for new features are required</strong>. All new features need to be backed by tests, <em>strictly</em>. It is very easy that a later merge accidentally throws out a feature or breaks it. This will not be caught if the feature is not guarded by tests. Anything not covered by a test is considered cosmetic.</li>
+  <li><strong>Cleanup</strong>. Before opening a pull request follow this checklist:
+    <ul>
+      <li>Rebase onto the latest version of the master branch</li>
+      <li>Clean up your commits, i.e., squash them in a reasonable way and give meaningful commit messages</li>
+      <li>Run <em>all</em> tests either locally with <code>mvn clean verify</code> or use Travis CI to check the build</li>
+    </ul>
+  </li>
+  <li><strong>Append review commits</strong>. When you get comments on the pull request asking for changes, append commits for these changes. <em>Do not rebase and squash them.</em> It allows people to review the cleanup work independently. Otherwise reviewers have to go through the entire set of diffs again.</li>
+  <li><strong>Javadocs for public methods</strong>. Public methods and classes that are part of the user-facing API need to have JavaDocs. Please write meaningful docs. Good docs are concise and informative.</li>
+  <li><strong>Meaningful error messages</strong>. Give meaningful exception messages. Try to imagine why an exception could be thrown (what a user did wrong) and give a message that will help a user to resolve the problem.</li>
+  <li><strong>Follow the coding style</strong> (see below). The checkstyle plugin verifies these rules when you build the code. If your code does not follow the checkstyle rules, Maven will not compile it and consequently the build will fail.</li>
+</ul>
+
+<h2 id="coding-style-guidelines">Coding Style Guidelines</h2>
+
+<ul>
+  <li><strong>Apache license headers</strong>. Make sure you have Apache License headers in your files. The RAT plugin is checking for that when you build the code.</li>
+  <li><strong>Tabs vs. spaces</strong>. We are using tabs for indentation, not spaces. We are not religious there, it just happened to be that we started with tabs, and it is important to not mix them (merge/diff conflicts).</li>
+  <li>
+    <p><strong>Blocks</strong>. All statements after <code>if</code>, <code>for</code>, <code>while</code>, <code>do</code>, … must always be encapsulated in a block with curly braces (even if the block contains one statement):</p>
+
+    <div class="highlight"><pre><code class="language-java"><span class="k">for</span> <span class="o">(...)</span> <span class="o">{</span>
+ <span class="o">...</span>
+<span class="o">}</span></code></pre></div>
+    <p>If you are wondering why, recall the famous <a href="https://www.imperialviolet.org/2014/02/22/applebug.html"><em>goto bug</em></a> in Apple’s SSL library.</p>
+  </li>
+  <li><strong>No wildcard imports</strong>. Do not use wildcard imports in the core files. They can cause problems when adding to the code and in some cases even during refactoring. Exceptions are the Tuple classes, Tuple-related utilities, and Flink user programs, when importing operators/functions. Tests are a special case of the user programs.</li>
+  <li><strong>No unused imports</strong>. Remove all unused imports.</li>
+  <li><strong>No raw generic types</strong>. Do not use raw generic types, unless strictly necessary (sometime necessary for signature matches, arrays).</li>
+  <li><strong>Supress warnings</strong>. Add annotations to suppress warnings, if they cannot be avoided (such as “unchecked”, or “serial”).</li>
+  <li>
+    <p><strong>Comments</strong>. Add comments to your code. What is it doing? Add JavaDocs or inherit them by not adding any comments to the methods. Do not automatically generate comments and avoid unnecessary comments like:</p>
+
+    <div class="highlight"><pre><code class="language-java"><span class="n">i</span><span class="o">++;</span> <span class="c1">// increment by one</span></code></pre></div>
+  </li>
+</ul>
+
+
+  </div>
+</div>
+
+
+      <hr />
+      <div class="footer text-center">
+        <p>Copyright © 2014-2015 <a href="http://apache.org">The Apache Software Foundation</a>. All Rights Reserved.</p>
+        <p>Apache Flink, Apache, and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
+        <p><a href="/privacy-policy.html">Privacy Policy</a> &middot; <a href="/blog/feed.xml">RSS feed</a></p>
+      </div>
+
+    </div><!-- /.container -->
+
+    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
+    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
+    <!-- Include all compiled plugins (below), or include individual files as needed -->
+    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
+    <script src="/js/codetabs.js"></script>
+
+    <!-- Google Analytics -->
+    <script>
+      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+      ga('create', 'UA-52545728-1', 'auto');
+      ga('send', 'pageview');
+    </script>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/flink-web/blob/7b3cf3a7/content/css/flink.css
----------------------------------------------------------------------
diff --git a/content/css/flink.css b/content/css/flink.css
new file mode 100644
index 0000000..4c244e6
--- /dev/null
+++ b/content/css/flink.css
@@ -0,0 +1,150 @@
+/*=============================================================================
+                         Navbar at the top of the page
+=============================================================================*/
+
+/* Padding at top because of the fixed navbar. */
+body {
+	padding-top: 70px;
+}
+
+/* Our logo. */
+.navbar-logo {
+	padding: 5px 15px 5px 15px;
+}
+.navbar-logo img {
+	height: 40px;
+}
+
+/* Links */
+.navbar-default .navbar-nav > li > a {
+	color: black;
+	font-weight: bold;
+}
+.navbar-default .navbar-nav > li > a:hover {
+	background: #E7E7E7;
+}
+
+.navbar-collapse .dropdown-header {
+	color: black;
+}
+
+/*=============================================================================
+                                    Text
+=============================================================================*/
+
+/* The auto-generated TOC anchors are hidden by the top navbar otherwise. */
+h1, h2, h3, h4, h5, h6 {
+    padding-top: 70px;
+    margin-top: -60px;
+}
+
+h1 {
+	font-size: 160%;
+}
+
+h2 {
+	font-size: 140%;
+}
+
+h3, h4, h5, h6 {
+	font-size: 120%;
+}
+
+/*=============================================================================
+                                    Stack
+=============================================================================*/
+
+.stack img {
+	/*width: 100%;*/
+}
+
+pre {
+	background: none;
+}
+
+/*=============================================================================
+                              Table of Contents
+=============================================================================*/
+
+.page-toc {
+	padding-bottom: 2em;
+}
+
+#markdown-toc {
+	font-size: 90%;
+}
+
+@media (min-width: 768px) {
+	#markdown-toc {
+		/*width: 35%;*/
+	}
+}
+
+/* Custom list styling */
+#markdown-toc, #markdown-toc ul {
+	list-style: none;
+	display: block;
+	position: relative;
+	padding-left: 0;
+	margin-bottom: 0;
+}
+
+/* All element */
+#markdown-toc li > a {
+	display: block;
+	padding: 5px 10px;
+	border: 1px solid #E5E5E5;
+	margin:-1px;
+}
+#markdown-toc li > a:hover,
+#markdown-toc li > a:focus {
+  text-decoration: none;
+  background-color: #eee;
+}
+
+/* 1st-level elements */
+#markdown-toc > li > a {
+	font-weight: bold;
+}
+
+/* 2nd-level element */
+#markdown-toc > li li > a {
+	padding-left: 20px; /* A little more indentation*/
+}
+
+/* >= 3rd-level element */
+#markdown-toc > li li li {
+	display: none; /* hide */
+}
+
+#markdown-toc li:last-child > a {
+	border-bottom: 1px solid #E5E5E5;
+}
+
+/*=============================================================================
+                                 Blog
+=============================================================================*/
+.blog-title a {
+	color: black;
+}
+
+code {
+	background: none;
+	color: black;
+}
+
+.footer {
+	padding: 1em 0 2em 0;
+}
+
+.download-button {
+	padding-bottom:10px
+}
+
+.logo img {
+	width: 100%;
+}
+
+.img100 img {
+	width: 100%;
+}


Mime
View raw message