You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by ch...@apache.org on 2021/11/03 11:38:15 UTC

[flink-web] branch asf-site updated: Rebuild website

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

chesnay pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/flink-web.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 6dbfb0e  Rebuild website
6dbfb0e is described below

commit 6dbfb0e75b4baa93ccdee83ce6e6bd01c581fb5d
Author: Chesnay Schepler <ch...@apache.org>
AuthorDate: Wed Nov 3 12:37:47 2021 +0100

    Rebuild website
---
 content/2021/11/03/flink-backward.html             | 357 +++++++++++++++++++++
 content/blog/feed.xml                              | 206 ++++++------
 content/blog/index.html                            |  38 ++-
 content/blog/page10/index.html                     |  38 ++-
 content/blog/page11/index.html                     |  38 ++-
 content/blog/page12/index.html                     |  38 ++-
 content/blog/page13/index.html                     |  40 ++-
 content/blog/page14/index.html                     |  40 ++-
 content/blog/page15/index.html                     |  40 ++-
 content/blog/page16/index.html                     |  40 ++-
 content/blog/page17/index.html                     |  25 ++
 content/blog/page2/index.html                      |  40 ++-
 content/blog/page3/index.html                      |  38 ++-
 content/blog/page4/index.html                      |  38 ++-
 content/blog/page5/index.html                      |  41 ++-
 content/blog/page6/index.html                      |  39 ++-
 content/blog/page7/index.html                      |  36 ++-
 content/blog/page8/index.html                      |  36 ++-
 content/blog/page9/index.html                      |  36 ++-
 .../2021-11-03-flink-backward/1.14-weather.png     | Bin 0 -> 174546 bytes
 content/index.html                                 |   8 +-
 content/zh/index.html                              |   8 +-
 22 files changed, 873 insertions(+), 347 deletions(-)

diff --git a/content/2021/11/03/flink-backward.html b/content/2021/11/03/flink-backward.html
new file mode 100644
index 0000000..79a1130
--- /dev/null
+++ b/content/2021/11/03/flink-backward.html
@@ -0,0 +1,357 @@
+<!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: Flink Backward - The Apache Flink Retrospective</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="/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" />
+
+    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
+    <!-- We need to load Jquery in the header for custom google analytics event tracking-->
+    <script src="/js/jquery.min.js"></script>
+
+    <!-- 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>  
+    
+
+    <!-- Main content. -->
+    <div class="container">
+    <div class="row">
+
+      
+     <div id="sidebar" class="col-sm-3">
+        
+
+<!-- Top navbar. -->
+    <nav class="navbar navbar-default">
+        <!-- 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/flink-header-logo.svg" width="147px" height="73px">
+            </a>
+          </div>
+        </div><!-- /.navbar-header -->
+
+        <!-- The navigation links. -->
+        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
+          <ul class="nav navbar-nav navbar-main">
+
+            <!-- First menu section explains visitors what Flink is -->
+
+            <!-- What is Stream Processing? -->
+            <!--
+            <li><a href="/streamprocessing1.html">What is Stream Processing?</a></li>
+            -->
+
+            <!-- What is Flink? -->
+            <li><a href="/flink-architecture.html">What is Apache Flink?</a></li>
+
+            
+            <ul class="nav navbar-nav navbar-subnav">
+              <li >
+                  <a href="/flink-architecture.html">Architecture</a>
+              </li>
+              <li >
+                  <a href="/flink-applications.html">Applications</a>
+              </li>
+              <li >
+                  <a href="/flink-operations.html">Operations</a>
+              </li>
+            </ul>
+            
+
+            <!-- What is Stateful Functions? -->
+
+            <li><a href="/stateful-functions.html">What is Stateful Functions?</a></li>
+
+            <!-- Use cases -->
+            <li><a href="/usecases.html">Use Cases</a></li>
+
+            <!-- Powered by -->
+            <li><a href="/poweredby.html">Powered By</a></li>
+
+
+            &nbsp;
+            <!-- Second menu section aims to support Flink users -->
+
+            <!-- Downloads -->
+            <li><a href="/downloads.html">Downloads</a></li>
+
+            <!-- Getting Started -->
+            <li class="dropdown">
+              <a class="dropdown-toggle" data-toggle="dropdown" href="#">Getting Started<span class="caret"></span></a>
+              <ul class="dropdown-menu">
+                <li><a href="https://nightlies.apache.org/flink/flink-docs-release-1.14//docs/try-flink/local_installation/" target="_blank">With Flink <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
+                <li><a href="https://nightlies.apache.org/flink/flink-statefun-docs-release-3.1/getting-started/project-setup.html" target="_blank">With Flink Stateful Functions <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
+                <li><a href="/training.html">Training Course</a></li>
+              </ul>
+            </li>
+
+            <!-- Documentation -->
+            <li class="dropdown">
+              <a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation<span class="caret"></span></a>
+              <ul class="dropdown-menu">
+                <li><a href="https://nightlies.apache.org/flink/flink-docs-release-1.14" target="_blank">Flink 1.14 (Latest stable release) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
+                <li><a href="https://nightlies.apache.org/flink/flink-docs-master" target="_blank">Flink Master (Latest Snapshot) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
+                <li><a href="https://nightlies.apache.org/flink/flink-statefun-docs-release-3.1" target="_blank">Flink Stateful Functions 3.1 (Latest stable release) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
+                <li><a href="https://nightlies.apache.org/flink/flink-statefun-docs-master" target="_blank">Flink Stateful Functions Master (Latest Snapshot) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
+              </ul>
+            </li>
+
+            <!-- getting help -->
+            <li><a href="/gettinghelp.html">Getting Help</a></li>
+
+            <!-- Blog -->
+            <li><a href="/blog/"><b>Flink Blog</b></a></li>
+
+
+            <!-- Flink-packages -->
+            <li>
+              <a href="https://flink-packages.org" target="_blank">flink-packages.org <small><span class="glyphicon glyphicon-new-window"></span></small></a>
+            </li>
+            &nbsp;
+
+            <!-- Third menu section aim to support community and contributors -->
+
+            <!-- Community -->
+            <li><a href="/community.html">Community &amp; Project Info</a></li>
+
+            <!-- Roadmap -->
+            <li><a href="/roadmap.html">Roadmap</a></li>
+
+            <!-- Contribute -->
+            <li><a href="/contributing/how-to-contribute.html">How to Contribute</a></li>
+            
+
+            <!-- GitHub -->
+            <li>
+              <a href="https://github.com/apache/flink" target="_blank">Flink on GitHub <small><span class="glyphicon glyphicon-new-window"></span></small></a>
+            </li>
+
+            &nbsp;
+
+            <!-- Language Switcher -->
+            <li>
+              
+                
+                  <a href="/zh/2021/11/03/flink-backward.html">中文版</a>
+                
+              
+            </li>
+
+          </ul>
+
+          <style>
+            .smalllinks:link {
+              display: inline-block !important; background: none; padding-top: 0px; padding-bottom: 0px; padding-right: 0px; min-width: 75px;
+            }
+          </style>
+
+          <ul class="nav navbar-nav navbar-bottom">
+          <hr />
+
+            <!-- Twitter -->
+            <li><a href="https://twitter.com/apacheflink" target="_blank">@ApacheFlink <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
+
+            <!-- Visualizer -->
+            <li class=" hidden-md hidden-sm"><a href="/visualizer/" target="_blank">Plan Visualizer <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
+
+            <li >
+                  <a href="/security.html">Flink Security</a>
+            </li>
+
+          <hr />
+
+            <li><a href="https://apache.org" target="_blank">Apache Software Foundation <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
+
+            <li>
+
+              <a class="smalllinks" href="https://www.apache.org/licenses/" target="_blank">License</a> <small><span class="glyphicon glyphicon-new-window"></span></small>
+
+              <a class="smalllinks" href="https://www.apache.org/security/" target="_blank">Security</a> <small><span class="glyphicon glyphicon-new-window"></span></small>
+
+              <a class="smalllinks" href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Donate</a> <small><span class="glyphicon glyphicon-new-window"></span></small>
+
+              <a class="smalllinks" href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a> <small><span class="glyphicon glyphicon-new-window"></span></small>
+            </li>
+
+          </ul>
+        </div><!-- /.navbar-collapse -->
+    </nav>
+
+      </div>
+      <div class="col-sm-9">
+      <div class="row-fluid">
+  <div class="col-sm-12">
+    <div class="row">
+      <h1>Flink Backward - The Apache Flink Retrospective</h1>
+      <p><i></i></p>
+
+      <article>
+        <p>03 Nov 2021 Johannes Moser </p>
+
+<p>It has now been a month since the community released <a href="https://flink.apache.org/downloads.html#apache-flink-1140">Apache Flink 1.14</a> into the wild. We had a comprehensive look at the enhancements, additions, and fixups in the release announcement blog post, and now we will look at the development cycle from a different angle. Based on feedback collected from contributors involved in this release, we will explore the experiences and processes behind it all.</p>
+
+<div class="page-toc">
+<ul id="markdown-toc">
+  <li><a href="#a-retrospective-on-the-release-cycle" id="markdown-toc-a-retrospective-on-the-release-cycle">A retrospective on the release cycle</a>    <ul>
+      <li><a href="#problems-faced" id="markdown-toc-problems-faced">Problems faced</a></li>
+      <li><a href="#things-enjoyed" id="markdown-toc-things-enjoyed">Things enjoyed</a></li>
+    </ul>
+  </li>
+  <li><a href="#what-we-want-to-achieve-through-process-changes" id="markdown-toc-what-we-want-to-achieve-through-process-changes">What we want to achieve through process changes</a>    <ul>
+      <li><a href="#transparency---let-the-community-participate" id="markdown-toc-transparency---let-the-community-participate">Transparency - let the community participate</a></li>
+      <li><a href="#stability---reduce-building-and-testing-pain" id="markdown-toc-stability---reduce-building-and-testing-pain">Stability - reduce building and testing pain</a></li>
+      <li><a href="#documentation---make-it-user-friendly" id="markdown-toc-documentation---make-it-user-friendly">Documentation - make it user-friendly</a></li>
+      <li><a href="#api-consistency---a-timeless-joyful-experience" id="markdown-toc-api-consistency---a-timeless-joyful-experience">API consistency - a timeless, joyful experience</a></li>
+    </ul>
+  </li>
+  <li><a href="#some-noteworthy-items" id="markdown-toc-some-noteworthy-items">Some noteworthy items</a></li>
+</ul>
+
+</div>
+
+<h1 id="a-retrospective-on-the-release-cycle">A retrospective on the release cycle</h1>
+
+<p>From the team, we collected emotions that have been attributed to points in time of the 1.14 release cycle:</p>
+
+<center>
+<img src="/img/blog/2021-11-03-flink-backward/1.14-weather.png" width="70%" />
+</center>
+
+<p>The overall sentiment seems to be quite good. A ship crushed a robot two times, someone felt sick towards the end, an octopus causing negative emotions appeared in June…</p>
+
+<p>We looked at the origin of these emotions and analyzed what went well and what could be improved. We also incorporated some feedback gathered from the community.</p>
+
+<h2 id="problems-faced">Problems faced</h2>
+
+<p>No release is perfect, and the community is constantly looking to improve.</p>
+
+<p>Apache Flink has active contributors from around the globe, many of whom do not speak English as a first language. The community is still ironing out processes for delivering high-quality documentation and blog posts from a content perspective. It is a work in progress but we have contributors focusing on this component.</p>
+
+<p>Each Flink release is built with the help of hundreds of contributors, each working on different parts of the project. Changes to one module may affect others in ways that are not always obvious. To maintain quality, the community supports an expansive test suite. Invariably, some tests are found to be flaky. Whenever we discover a test issue, the community opens a blocker issue that we must resolve before the next release. In practice, this leads to contributors triaging most test in [...]
+
+<p>Finally, the community pushed the planned feature freeze for 1.14 by two weeks. Two weeks is an improvement from previous release cycles, but we hope to continue improving this metric for 1.15.</p>
+
+<h2 id="things-enjoyed">Things enjoyed</h2>
+
+<p>The implementation of some features, such as <a href="https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/deployment/memory/network_mem_tuning/#the-buffer-debloating-mechanism">buffer debloating</a> and <a href="https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/deployment/finegrained_resource/">fine-grained resource management</a>, went smoothly. Though a few issues are now popping up as people begin using them in production, it is satisfying to see an engine [...]
+
+<p>We also said goodbye to some components, the old table planner and integrated Mesos support. As any developer will tell you, there’s nothing better than deleting old code and reducing complexity.</p>
+
+<h1 id="what-we-want-to-achieve-through-process-changes">What we want to achieve through process changes</h1>
+
+<h2 id="transparency---let-the-community-participate">Transparency - let the community participate</h2>
+
+<p>When approaching a release, usually a couple of weeks after the previous release has been done, we set up bi-weekly meetings for the community to discuss any issues regarding the release. The usefulness of those meetings varied a lot, and so we started to <a href="https://cwiki.apache.org/confluence/display/FLINK/1.14+Release">track the efforts</a> in the Apache Flink Confluence wiki.</p>
+
+<p>We came up with a system to label the current states of each feature: “independent”, “won’t make it”, “very unlikely”, “will make it”, “done”, and “done done”. We introduced the “done done” state since we lacked a shared understanding of the definition of done. To qualify for “done done”, the feature is manually tested by someone not involved in the implementation. Additionally, there must exist comprehensive documentation that enables users to use the feature.</p>
+
+<p>After each meeting, we provided updates on the mailing list and created a corresponding burn-down chart. Those efforts have well been received by our contributors, although they might still require some improvements.</p>
+
+<p>The meeting used to only be for those driving the primary efforts, but we opened it up to the whole community for this release. While nobody ended up joining, we will continue to make the meetings open to everyone.</p>
+
+<h2 id="stability---reduce-building-and-testing-pain">Stability - reduce building and testing pain</h2>
+
+<p>At one point, as we were coming close to the feature freeze, the stability of the master branch became quite unstable. Although we have encountered this issue in the past, building and testing Flink under such conditions was not ideal.</p>
+
+<p>As a result, we focused on reducing stability issues, and the release managers have tried to organize and manage this effort. In future development cycles, the whole community needs to focus on the stability of the master branch. There are already improvements in the making, and they will hopefully enhance the experience of contributing significantly.</p>
+
+<h2 id="documentation---make-it-user-friendly">Documentation - make it user-friendly</h2>
+
+<p>Coming back to Apache traditions, most of the documentation (if any) was still being pushed after the feature freeze. As mentioned before, documentation is required to achieve the level of “done done”. Going forward, we will keep more of an eye on pushing documentation earlier in the development process. Apache Flink is an amazing piece of software that can solve so many problems, but we can do so much more in improving the user experience and introducing it to a wider audience.</p>
+
+<h2 id="api-consistency---a-timeless-joyful-experience">API consistency - a timeless, joyful experience</h2>
+
+<p>The issue of API consistency was not caused by the 1.14 release, but popped up during the development cycle nevertheless, including a bigger discussion on the mailing list. While we tried to be transparent about the <a href="https://cwiki.apache.org/confluence/display/FLINK/Stability+Annotations">stability guarantees of an API</a> (there are no guarantees across major versions), this was not made very clear or easy to find. Since many users rely on PublicEvolving APIs (due to a lack o [...]
+
+<p>Moving forward, we will document more clearly what the guarantees are and introduce a process for promoting PublicEvolving APIs. This might involve generating a report on any removed/modified PublicEvolving APIs during the release cycle so that downstream projects can prepare for the changes.</p>
+
+<h1 id="some-noteworthy-items">Some noteworthy items</h1>
+
+<p>The first iteration for the buffer debloat feature was done in a Hackathon.</p>
+
+<p>Our <a href="https://cwiki.apache.org/confluence/display/FLINK/1.14+Release">Apache Flink 1.14 Release wiki page</a> has 167 historic versions. For comparison, <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-147%3A+Support+Checkpoints+After+Tasks+Finished">FLIP 147</a> (one of the most active FLIPs) has just 76.</p>
+
+<p>With <a href="https://issues.apache.org/jira/browse/FLINK-2491">FLINK-2491</a>, we closed the third most watched issue in the Apache Flink Jira. This makes sense since FLINK-2491 was created 6 years ago (August 6, 2015). The second oldest issue was created in 2017.</p>
+
+<p>:heart:</p>
+
+<p>An open source community is more than just working on software. Apache Flink is the perfect example of software that is collaborated on in all parts of the world. The active mailing list, the discussions on FLIPs, and the interactions on Jira tickets all document how people work together to build something great. We should never forget that.</p>
+
+<p>In the meantime, the community is already working towards Apache Flink 1.15. If you would like to become a contributor, please reach out via the <a href="https://flink.apache.org/community.html#mailing-lists">dev mailing list</a>.  We are happy to help you find a ticket to get started on.</p>
+
+      </article>
+    </div>
+
+    <div class="row">
+      <div id="disqus_thread"></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 dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+            dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
+             (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+        })();
+      </script>
+    </div>
+  </div>
+</div>
+      </div>
+    </div>
+
+    <hr />
+
+    <div class="row">
+      <div class="footer text-center col-sm-12">
+        <p>Copyright © 2014-2021 <a href="http://apache.org">The Apache Software Foundation</a>. All Rights Reserved.</p>
+        <p>Apache Flink, Flink®, Apache®, the squirrel logo, and the Apache feather logo are either registered trademarks or 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>
+    </div><!-- /.container -->
+
+    <!-- Include all compiled plugins (below), or include individual files as needed -->
+    <script src="/js/jquery.matchHeight-min.js"></script>
+    <script src="/js/bootstrap.min.js"></script>
+    <script src="/js/codetabs.js"></script>
+    <script src="/js/stickysidebar.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>
diff --git a/content/blog/feed.xml b/content/blog/feed.xml
index 469cafe..6934262 100644
--- a/content/blog/feed.xml
+++ b/content/blog/feed.xml
@@ -7,6 +7,104 @@
 <atom:link href="https://flink.apache.org/blog/feed.xml" rel="self" type="application/rss+xml" />
 
 <item>
+<title>Flink Backward - The Apache Flink Retrospective</title>
+<description>&lt;p&gt;It has now been a month since the community released &lt;a href=&quot;https://flink.apache.org/downloads.html#apache-flink-1140&quot;&gt;Apache Flink 1.14&lt;/a&gt; into the wild. We had a comprehensive look at the enhancements, additions, and fixups in the release announcement blog post, and now we will look at the development cycle from a different angle. Based on feedback collected from contributors involved in this release, we will explore the experiences and pr [...]
+
+&lt;div class=&quot;page-toc&quot;&gt;
+&lt;ul id=&quot;markdown-toc&quot;&gt;
+  &lt;li&gt;&lt;a href=&quot;#a-retrospective-on-the-release-cycle&quot; id=&quot;markdown-toc-a-retrospective-on-the-release-cycle&quot;&gt;A retrospective on the release cycle&lt;/a&gt;    &lt;ul&gt;
+      &lt;li&gt;&lt;a href=&quot;#problems-faced&quot; id=&quot;markdown-toc-problems-faced&quot;&gt;Problems faced&lt;/a&gt;&lt;/li&gt;
+      &lt;li&gt;&lt;a href=&quot;#things-enjoyed&quot; id=&quot;markdown-toc-things-enjoyed&quot;&gt;Things enjoyed&lt;/a&gt;&lt;/li&gt;
+    &lt;/ul&gt;
+  &lt;/li&gt;
+  &lt;li&gt;&lt;a href=&quot;#what-we-want-to-achieve-through-process-changes&quot; id=&quot;markdown-toc-what-we-want-to-achieve-through-process-changes&quot;&gt;What we want to achieve through process changes&lt;/a&gt;    &lt;ul&gt;
+      &lt;li&gt;&lt;a href=&quot;#transparency---let-the-community-participate&quot; id=&quot;markdown-toc-transparency---let-the-community-participate&quot;&gt;Transparency - let the community participate&lt;/a&gt;&lt;/li&gt;
+      &lt;li&gt;&lt;a href=&quot;#stability---reduce-building-and-testing-pain&quot; id=&quot;markdown-toc-stability---reduce-building-and-testing-pain&quot;&gt;Stability - reduce building and testing pain&lt;/a&gt;&lt;/li&gt;
+      &lt;li&gt;&lt;a href=&quot;#documentation---make-it-user-friendly&quot; id=&quot;markdown-toc-documentation---make-it-user-friendly&quot;&gt;Documentation - make it user-friendly&lt;/a&gt;&lt;/li&gt;
+      &lt;li&gt;&lt;a href=&quot;#api-consistency---a-timeless-joyful-experience&quot; id=&quot;markdown-toc-api-consistency---a-timeless-joyful-experience&quot;&gt;API consistency - a timeless, joyful experience&lt;/a&gt;&lt;/li&gt;
+    &lt;/ul&gt;
+  &lt;/li&gt;
+  &lt;li&gt;&lt;a href=&quot;#some-noteworthy-items&quot; id=&quot;markdown-toc-some-noteworthy-items&quot;&gt;Some noteworthy items&lt;/a&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;/div&gt;
+
+&lt;h1 id=&quot;a-retrospective-on-the-release-cycle&quot;&gt;A retrospective on the release cycle&lt;/h1&gt;
+
+&lt;p&gt;From the team, we collected emotions that have been attributed to points in time of the 1.14 release cycle:&lt;/p&gt;
+
+&lt;center&gt;
+&lt;img src=&quot;/img/blog/2021-11-03-flink-backward/1.14-weather.png&quot; width=&quot;70%&quot; /&gt;
+&lt;/center&gt;
+
+&lt;p&gt;The overall sentiment seems to be quite good. A ship crushed a robot two times, someone felt sick towards the end, an octopus causing negative emotions appeared in June…&lt;/p&gt;
+
+&lt;p&gt;We looked at the origin of these emotions and analyzed what went well and what could be improved. We also incorporated some feedback gathered from the community.&lt;/p&gt;
+
+&lt;h2 id=&quot;problems-faced&quot;&gt;Problems faced&lt;/h2&gt;
+
+&lt;p&gt;No release is perfect, and the community is constantly looking to improve.&lt;/p&gt;
+
+&lt;p&gt;Apache Flink has active contributors from around the globe, many of whom do not speak English as a first language. The community is still ironing out processes for delivering high-quality documentation and blog posts from a content perspective. It is a work in progress but we have contributors focusing on this component.&lt;/p&gt;
+
+&lt;p&gt;Each Flink release is built with the help of hundreds of contributors, each working on different parts of the project. Changes to one module may affect others in ways that are not always obvious. To maintain quality, the community supports an expansive test suite. Invariably, some tests are found to be flaky. Whenever we discover a test issue, the community opens a blocker issue that we must resolve before the next release. In practice, this leads to contributors triaging most t [...]
+
+&lt;p&gt;Finally, the community pushed the planned feature freeze for 1.14 by two weeks. Two weeks is an improvement from previous release cycles, but we hope to continue improving this metric for 1.15.&lt;/p&gt;
+
+&lt;h2 id=&quot;things-enjoyed&quot;&gt;Things enjoyed&lt;/h2&gt;
+
+&lt;p&gt;The implementation of some features, such as &lt;a href=&quot;https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/deployment/memory/network_mem_tuning/#the-buffer-debloating-mechanism&quot;&gt;buffer debloating&lt;/a&gt; and &lt;a href=&quot;https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/deployment/finegrained_resource/&quot;&gt;fine-grained resource management&lt;/a&gt;, went smoothly. Though a few issues are now popping up as people begin using the [...]
+
+&lt;p&gt;We also said goodbye to some components, the old table planner and integrated Mesos support. As any developer will tell you, there’s nothing better than deleting old code and reducing complexity.&lt;/p&gt;
+
+&lt;h1 id=&quot;what-we-want-to-achieve-through-process-changes&quot;&gt;What we want to achieve through process changes&lt;/h1&gt;
+
+&lt;h2 id=&quot;transparency---let-the-community-participate&quot;&gt;Transparency - let the community participate&lt;/h2&gt;
+
+&lt;p&gt;When approaching a release, usually a couple of weeks after the previous release has been done, we set up bi-weekly meetings for the community to discuss any issues regarding the release. The usefulness of those meetings varied a lot, and so we started to &lt;a href=&quot;https://cwiki.apache.org/confluence/display/FLINK/1.14+Release&quot;&gt;track the efforts&lt;/a&gt; in the Apache Flink Confluence wiki.&lt;/p&gt;
+
+&lt;p&gt;We came up with a system to label the current states of each feature: “independent”, “won’t make it”, “very unlikely”, “will make it”, “done”, and “done done”. We introduced the “done done” state since we lacked a shared understanding of the definition of done. To qualify for “done done”, the feature is manually tested by someone not involved in the implementation. Additionally, there must exist comprehensive documentation that enables users to use the feature.&lt;/p&gt;
+
+&lt;p&gt;After each meeting, we provided updates on the mailing list and created a corresponding burn-down chart. Those efforts have well been received by our contributors, although they might still require some improvements.&lt;/p&gt;
+
+&lt;p&gt;The meeting used to only be for those driving the primary efforts, but we opened it up to the whole community for this release. While nobody ended up joining, we will continue to make the meetings open to everyone.&lt;/p&gt;
+
+&lt;h2 id=&quot;stability---reduce-building-and-testing-pain&quot;&gt;Stability - reduce building and testing pain&lt;/h2&gt;
+
+&lt;p&gt;At one point, as we were coming close to the feature freeze, the stability of the master branch became quite unstable. Although we have encountered this issue in the past, building and testing Flink under such conditions was not ideal.&lt;/p&gt;
+
+&lt;p&gt;As a result, we focused on reducing stability issues, and the release managers have tried to organize and manage this effort. In future development cycles, the whole community needs to focus on the stability of the master branch. There are already improvements in the making, and they will hopefully enhance the experience of contributing significantly.&lt;/p&gt;
+
+&lt;h2 id=&quot;documentation---make-it-user-friendly&quot;&gt;Documentation - make it user-friendly&lt;/h2&gt;
+
+&lt;p&gt;Coming back to Apache traditions, most of the documentation (if any) was still being pushed after the feature freeze. As mentioned before, documentation is required to achieve the level of “done done”. Going forward, we will keep more of an eye on pushing documentation earlier in the development process. Apache Flink is an amazing piece of software that can solve so many problems, but we can do so much more in improving the user experience and introducing it to a wider audience. [...]
+
+&lt;h2 id=&quot;api-consistency---a-timeless-joyful-experience&quot;&gt;API consistency - a timeless, joyful experience&lt;/h2&gt;
+
+&lt;p&gt;The issue of API consistency was not caused by the 1.14 release, but popped up during the development cycle nevertheless, including a bigger discussion on the mailing list. While we tried to be transparent about the &lt;a href=&quot;https://cwiki.apache.org/confluence/display/FLINK/Stability+Annotations&quot;&gt;stability guarantees of an API&lt;/a&gt; (there are no guarantees across major versions), this was not made very clear or easy to find. Since many users rely on PublicEv [...]
+
+&lt;p&gt;Moving forward, we will document more clearly what the guarantees are and introduce a process for promoting PublicEvolving APIs. This might involve generating a report on any removed/modified PublicEvolving APIs during the release cycle so that downstream projects can prepare for the changes.&lt;/p&gt;
+
+&lt;h1 id=&quot;some-noteworthy-items&quot;&gt;Some noteworthy items&lt;/h1&gt;
+
+&lt;p&gt;The first iteration for the buffer debloat feature was done in a Hackathon.&lt;/p&gt;
+
+&lt;p&gt;Our &lt;a href=&quot;https://cwiki.apache.org/confluence/display/FLINK/1.14+Release&quot;&gt;Apache Flink 1.14 Release wiki page&lt;/a&gt; has 167 historic versions. For comparison, &lt;a href=&quot;https://cwiki.apache.org/confluence/display/FLINK/FLIP-147%3A+Support+Checkpoints+After+Tasks+Finished&quot;&gt;FLIP 147&lt;/a&gt; (one of the most active FLIPs) has just 76.&lt;/p&gt;
+
+&lt;p&gt;With &lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-2491&quot;&gt;FLINK-2491&lt;/a&gt;, we closed the third most watched issue in the Apache Flink Jira. This makes sense since FLINK-2491 was created 6 years ago (August 6, 2015). The second oldest issue was created in 2017.&lt;/p&gt;
+
+&lt;p&gt;:heart:&lt;/p&gt;
+
+&lt;p&gt;An open source community is more than just working on software. Apache Flink is the perfect example of software that is collaborated on in all parts of the world. The active mailing list, the discussions on FLIPs, and the interactions on Jira tickets all document how people work together to build something great. We should never forget that.&lt;/p&gt;
+
+&lt;p&gt;In the meantime, the community is already working towards Apache Flink 1.15. If you would like to become a contributor, please reach out via the &lt;a href=&quot;https://flink.apache.org/community.html#mailing-lists&quot;&gt;dev mailing list&lt;/a&gt;.  We are happy to help you find a ticket to get started on.&lt;/p&gt;
+</description>
+<pubDate>Wed, 03 Nov 2021 01:00:00 +0100</pubDate>
+<link>https://flink.apache.org/2021/11/03/flink-backward.html</link>
+<guid isPermaLink="true">/2021/11/03/flink-backward.html</guid>
+</item>
+
+<item>
 <title>Sort-Based Blocking Shuffle Implementation in Flink - Part Two</title>
 <description>&lt;p&gt;&lt;a href=&quot;/2021/10/26/sort-shuffle-part1&quot;&gt;Part one&lt;/a&gt; of this blog post explained the motivation behind introducing sort-based blocking shuffle, presented benchmark results, and provided guidelines on how to use this new feature.&lt;/p&gt;
 
@@ -20152,113 +20250,5 @@ Special credits go to the following members for contributing to the 1.7.0 releas
 <guid isPermaLink="true">/news/2018/10/29/release-1.6.2.html</guid>
 </item>
 
-<item>
-<title>Apache Flink 1.5.5 Released</title>
-<description>&lt;p&gt;The Apache Flink community released the fifth bugfix version of the Apache Flink 1.5 series.&lt;/p&gt;
-
-&lt;p&gt;This release includes more than 20 fixes and minor improvements for Flink 1.5.4. The list below includes a detailed list of all fixes.&lt;/p&gt;
-
-&lt;p&gt;We highly recommend all users to upgrade to Flink 1.5.5.&lt;/p&gt;
-
-&lt;p&gt;Updated Maven dependencies:&lt;/p&gt;
-
-&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-xml&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
-  &lt;span class=&quot;nt&quot;&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.apache.flink&lt;span class=&quot;nt&quot;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
-  &lt;span class=&quot;nt&quot;&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;flink-java&lt;span class=&quot;nt&quot;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
-  &lt;span class=&quot;nt&quot;&gt;&amp;lt;version&amp;gt;&lt;/span&gt;1.5.5&lt;span class=&quot;nt&quot;&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
-&lt;span class=&quot;nt&quot;&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
-&lt;span class=&quot;nt&quot;&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
-  &lt;span class=&quot;nt&quot;&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.apache.flink&lt;span class=&quot;nt&quot;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
-  &lt;span class=&quot;nt&quot;&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;flink-streaming-java_2.11&lt;span class=&quot;nt&quot;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
-  &lt;span class=&quot;nt&quot;&gt;&amp;lt;version&amp;gt;&lt;/span&gt;1.5.5&lt;span class=&quot;nt&quot;&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
-&lt;span class=&quot;nt&quot;&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
-&lt;span class=&quot;nt&quot;&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
-  &lt;span class=&quot;nt&quot;&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.apache.flink&lt;span class=&quot;nt&quot;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
-  &lt;span class=&quot;nt&quot;&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;flink-clients_2.11&lt;span class=&quot;nt&quot;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
-  &lt;span class=&quot;nt&quot;&gt;&amp;lt;version&amp;gt;&lt;/span&gt;1.5.5&lt;span class=&quot;nt&quot;&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
-&lt;span class=&quot;nt&quot;&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
-
-&lt;p&gt;You can find the binaries on the updated &lt;a href=&quot;http://flink.apache.org/downloads.html&quot;&gt;Downloads page&lt;/a&gt;.&lt;/p&gt;
-
-&lt;p&gt;List of resolved issues:&lt;/p&gt;
-
-&lt;h2&gt;        Sub-task
-&lt;/h2&gt;
-&lt;ul&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10242&quot;&gt;FLINK-10242&lt;/a&gt;] -         Latency marker interval should be configurable
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10243&quot;&gt;FLINK-10243&lt;/a&gt;] -         Add option to reduce latency metrics granularity
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10331&quot;&gt;FLINK-10331&lt;/a&gt;] -         Reduce number of flush requests to the network stack
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10332&quot;&gt;FLINK-10332&lt;/a&gt;] -         Move data available notification in PipelinedSubpartition out of the synchronized block
-&lt;/li&gt;
-&lt;/ul&gt;
-
-&lt;h2&gt;        Bug
-&lt;/h2&gt;
-&lt;ul&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-5542&quot;&gt;FLINK-5542&lt;/a&gt;] -         YARN client incorrectly uses local YARN config to check vcore capacity
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-9567&quot;&gt;FLINK-9567&lt;/a&gt;] -         Flink does not release resource in Yarn Cluster mode
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-9788&quot;&gt;FLINK-9788&lt;/a&gt;] -         ExecutionGraph Inconsistency prevents Job from recovering
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-9884&quot;&gt;FLINK-9884&lt;/a&gt;] -         Slot request may not be removed when it has already be assigned in slot manager
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-9891&quot;&gt;FLINK-9891&lt;/a&gt;] -         Flink cluster is not shutdown in YARN mode when Flink client is stopped
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-9932&quot;&gt;FLINK-9932&lt;/a&gt;] -         Timed-out TaskExecutor slot-offers to JobMaster leak the slot
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10135&quot;&gt;FLINK-10135&lt;/a&gt;] -         Certain cluster-level metrics are no longer exposed
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10222&quot;&gt;FLINK-10222&lt;/a&gt;] -         Table scalar function expression parses error when function name equals the exists keyword suffix
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10259&quot;&gt;FLINK-10259&lt;/a&gt;] -         Key validation for GroupWindowAggregate is broken
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10316&quot;&gt;FLINK-10316&lt;/a&gt;] -         Add check to KinesisProducer that aws.region is set
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10354&quot;&gt;FLINK-10354&lt;/a&gt;] -         Savepoints should be counted as retained checkpoints
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10400&quot;&gt;FLINK-10400&lt;/a&gt;] -         Return failed JobResult if job terminates in state FAILED or CANCELED
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10415&quot;&gt;FLINK-10415&lt;/a&gt;] -         RestClient does not react to lost connection
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10451&quot;&gt;FLINK-10451&lt;/a&gt;] -         TableFunctionCollector should handle the life cycle of ScalarFunction
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10469&quot;&gt;FLINK-10469&lt;/a&gt;] -         FileChannel may not write the whole buffer in a single call to FileChannel.write(Buffer buffer)
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10487&quot;&gt;FLINK-10487&lt;/a&gt;] -         fix invalid Flink SQL example
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10516&quot;&gt;FLINK-10516&lt;/a&gt;] -         YarnApplicationMasterRunner does not initialize FileSystem with correct Flink Configuration during setup
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10524&quot;&gt;FLINK-10524&lt;/a&gt;] -         MemoryManagerConcurrentModReleaseTest.testConcurrentModificationWhileReleasing failed on travis
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10544&quot;&gt;FLINK-10544&lt;/a&gt;] -         Remove custom settings.xml for snapshot deployments
-&lt;/li&gt;
-&lt;/ul&gt;
-
-&lt;h2&gt;        Improvement
-&lt;/h2&gt;
-&lt;ul&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10075&quot;&gt;FLINK-10075&lt;/a&gt;] -         HTTP connections to a secured REST endpoint flood the log
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10260&quot;&gt;FLINK-10260&lt;/a&gt;] -         Confusing log messages during TaskManager registration
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10282&quot;&gt;FLINK-10282&lt;/a&gt;] -         Provide separate thread-pool for REST endpoint
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10312&quot;&gt;FLINK-10312&lt;/a&gt;] -         Wrong / missing exception when submitting job
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10375&quot;&gt;FLINK-10375&lt;/a&gt;] -         ExceptionInChainedStubException hides wrapped exception in cause
-&lt;/li&gt;
-&lt;li&gt;[&lt;a href=&quot;https://issues.apache.org/jira/browse/FLINK-10582&quot;&gt;FLINK-10582&lt;/a&gt;] -         Make REST executor thread priority configurable
-&lt;/li&gt;
-&lt;/ul&gt;
-</description>
-<pubDate>Mon, 29 Oct 2018 13:00:00 +0100</pubDate>
-<link>https://flink.apache.org/news/2018/10/29/release-1.5.5.html</link>
-<guid isPermaLink="true">/news/2018/10/29/release-1.5.5.html</guid>
-</item>
-
 </channel>
 </rss>
diff --git a/content/blog/index.html b/content/blog/index.html
index 81a3025..5d94d64 100644
--- a/content/blog/index.html
+++ b/content/blog/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/2021/11/03/flink-backward.html">Flink Backward - The Apache Flink Retrospective</a></h2>
+
+      <p>03 Nov 2021
+       Johannes Moser </p>
+
+      <p>A look back at the development cycle for Flink 1.14</p>
+
+      <p><a href="/2021/11/03/flink-backward.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle Implementation in Flink - Part Two</a></h2>
 
       <p>26 Oct 2021
@@ -337,21 +350,6 @@ This new release brings various improvements to the StateFun runtime, a leaner w
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2021/08/06/release-1.13.2.html">Apache Flink 1.13.2 Released</a></h2>
-
-      <p>06 Aug 2021
-       Yun Tang </p>
-
-      <p><p>The Apache Flink community released the second bugfix version of the Apache Flink 1.13 series.</p>
-
-</p>
-
-      <p><a href="/news/2021/08/06/release-1.13.2.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -384,6 +382,16 @@ This new release brings various improvements to the StateFun runtime, a leaner w
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/11/03/flink-backward.html">Flink Backward - The Apache Flink Retrospective</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle Implementation in Flink - Part Two</a></li>
 
       
diff --git a/content/blog/page10/index.html b/content/blog/page10/index.html
index c495766..cef5742 100644
--- a/content/blog/page10/index.html
+++ b/content/blog/page10/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2019/03/06/ffsf-preview.html">What to expect from Flink Forward San Francisco 2019</a></h2>
+
+      <p>06 Mar 2019
+       Fabian Hueske (<a href="https://twitter.com/fhueske">@fhueske</a>)</p>
+
+      <p>The third annual Flink Forward conference in San Francisco is just a few weeks away. Let's see what Flink Forward SF 2019 has in store for the Apache Flink and stream processing communities. This post covers some of its highlights!</p>
+
+      <p><a href="/news/2019/03/06/ffsf-preview.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2019/02/25/monitoring-best-practices.html">Monitoring Apache Flink Applications 101</a></h2>
 
       <p>25 Feb 2019
@@ -333,21 +346,6 @@ Please check the <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2018/10/29/release-1.5.5.html">Apache Flink 1.5.5 Released</a></h2>
-
-      <p>29 Oct 2018
-      </p>
-
-      <p><p>The Apache Flink community released the fifth bugfix version of the Apache Flink 1.5 series.</p>
-
-</p>
-
-      <p><a href="/news/2018/10/29/release-1.5.5.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -380,6 +378,16 @@ Please check the <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/11/03/flink-backward.html">Flink Backward - The Apache Flink Retrospective</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle Implementation in Flink - Part Two</a></li>
 
       
diff --git a/content/blog/page11/index.html b/content/blog/page11/index.html
index 6126933..eb4b7c1 100644
--- a/content/blog/page11/index.html
+++ b/content/blog/page11/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2018/10/29/release-1.5.5.html">Apache Flink 1.5.5 Released</a></h2>
+
+      <p>29 Oct 2018
+      </p>
+
+      <p><p>The Apache Flink community released the fifth bugfix version of the Apache Flink 1.5 series.</p>
+
+</p>
+
+      <p><a href="/news/2018/10/29/release-1.5.5.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2018/09/20/release-1.6.1.html">Apache Flink 1.6.1 Released</a></h2>
 
       <p>20 Sep 2018
@@ -335,19 +350,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/features/2018/03/01/end-to-end-exactly-once-apache-flink.html">An Overview of End-to-End Exactly-Once Processing in Apache Flink (with Apache Kafka, too!)</a></h2>
-
-      <p>01 Mar 2018
-       Piotr Nowojski (<a href="https://twitter.com/PiotrNowojski">@PiotrNowojski</a>) &amp; Mike Winters (<a href="https://twitter.com/wints">@wints</a>)</p>
-
-      <p>Flink 1.4.0 introduced a new feature that makes it possible to build end-to-end exactly-once applications with Flink and data sources and sinks that support transactions.</p>
-
-      <p><a href="/features/2018/03/01/end-to-end-exactly-once-apache-flink.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -380,6 +382,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/11/03/flink-backward.html">Flink Backward - The Apache Flink Retrospective</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle Implementation in Flink - Part Two</a></li>
 
       
diff --git a/content/blog/page12/index.html b/content/blog/page12/index.html
index 0083203..2084428 100644
--- a/content/blog/page12/index.html
+++ b/content/blog/page12/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/features/2018/03/01/end-to-end-exactly-once-apache-flink.html">An Overview of End-to-End Exactly-Once Processing in Apache Flink (with Apache Kafka, too!)</a></h2>
+
+      <p>01 Mar 2018
+       Piotr Nowojski (<a href="https://twitter.com/PiotrNowojski">@PiotrNowojski</a>) &amp; Mike Winters (<a href="https://twitter.com/wints">@wints</a>)</p>
+
+      <p>Flink 1.4.0 introduced a new feature that makes it possible to build end-to-end exactly-once applications with Flink and data sources and sinks that support transactions.</p>
+
+      <p><a href="/features/2018/03/01/end-to-end-exactly-once-apache-flink.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2018/02/15/release-1.4.1.html">Apache Flink 1.4.1 Released</a></h2>
 
       <p>15 Feb 2018
@@ -334,21 +347,6 @@ what’s coming in Flink 1.4.0 as well as a preview of what the Flink community
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2017/05/16/official-docker-image.html">Introducing Docker Images for Apache Flink</a></h2>
-
-      <p>16 May 2017 by Patrick Lucas (Data Artisans) and Ismaël Mejía (Talend) (<a href="https://twitter.com/">@iemejia</a>)
-      </p>
-
-      <p><p>For some time, the Apache Flink community has provided scripts to build a Docker image to run Flink. Now, starting with version 1.2.1, Flink will have a <a href="https://hub.docker.com/r/_/flink/">Docker image</a> on the Docker Hub. This image is maintained by the Flink community and curated by the <a href="https://github.com/docker-library/official-images">Docker</a> team to ensure it meets the quality standards for container images of the Docker community.</p>
-
-</p>
-
-      <p><a href="/news/2017/05/16/official-docker-image.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -381,6 +379,16 @@ what’s coming in Flink 1.4.0 as well as a preview of what the Flink community
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/11/03/flink-backward.html">Flink Backward - The Apache Flink Retrospective</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle Implementation in Flink - Part Two</a></li>
 
       
diff --git a/content/blog/page13/index.html b/content/blog/page13/index.html
index 8ac0709..8002476 100644
--- a/content/blog/page13/index.html
+++ b/content/blog/page13/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2017/05/16/official-docker-image.html">Introducing Docker Images for Apache Flink</a></h2>
+
+      <p>16 May 2017 by Patrick Lucas (Data Artisans) and Ismaël Mejía (Talend) (<a href="https://twitter.com/">@iemejia</a>)
+      </p>
+
+      <p><p>For some time, the Apache Flink community has provided scripts to build a Docker image to run Flink. Now, starting with version 1.2.1, Flink will have a <a href="https://hub.docker.com/r/_/flink/">Docker image</a> on the Docker Hub. This image is maintained by the Flink community and curated by the <a href="https://github.com/docker-library/official-images">Docker</a> team to ensure it meets the quality standards for container images of the Docker community.</p>
+
+</p>
+
+      <p><a href="/news/2017/05/16/official-docker-image.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2017/04/26/release-1.2.1.html">Apache Flink 1.2.1 Released</a></h2>
 
       <p>26 Apr 2017
@@ -328,21 +343,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2016/08/24/ff16-keynotes-panels.html">Flink Forward 2016: Announcing Schedule, Keynotes, and Panel Discussion</a></h2>
-
-      <p>24 Aug 2016
-      </p>
-
-      <p><p>An update for the Flink community: the <a href="http://flink-forward.org/kb_day/day-1/">Flink Forward 2016 schedule</a> is now available online. This year's event will include 2 days of talks from stream processing experts at Google, MapR, Alibaba, Netflix, Cloudera, and more. Following the talks is a full day of hands-on Flink training.</p>
-
-</p>
-
-      <p><a href="/news/2016/08/24/ff16-keynotes-panels.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -375,6 +375,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/11/03/flink-backward.html">Flink Backward - The Apache Flink Retrospective</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle Implementation in Flink - Part Two</a></li>
 
       
diff --git a/content/blog/page14/index.html b/content/blog/page14/index.html
index 84ca9c2..53bc23b 100644
--- a/content/blog/page14/index.html
+++ b/content/blog/page14/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2016/08/24/ff16-keynotes-panels.html">Flink Forward 2016: Announcing Schedule, Keynotes, and Panel Discussion</a></h2>
+
+      <p>24 Aug 2016
+      </p>
+
+      <p><p>An update for the Flink community: the <a href="http://flink-forward.org/kb_day/day-1/">Flink Forward 2016 schedule</a> is now available online. This year's event will include 2 days of talks from stream processing experts at Google, MapR, Alibaba, Netflix, Cloudera, and more. Following the talks is a full day of hands-on Flink training.</p>
+
+</p>
+
+      <p><a href="/news/2016/08/24/ff16-keynotes-panels.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2016/08/11/release-1.1.1.html">Flink 1.1.1 Released</a></h2>
 
       <p>11 Aug 2016
@@ -332,21 +347,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2016/02/11/release-0.10.2.html">Flink 0.10.2 Released</a></h2>
-
-      <p>11 Feb 2016
-      </p>
-
-      <p><p>Today, the Flink community released Flink version <strong>0.10.2</strong>, the second bugfix release of the 0.10 series.</p>
-
-</p>
-
-      <p><a href="/news/2016/02/11/release-0.10.2.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -379,6 +379,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/11/03/flink-backward.html">Flink Backward - The Apache Flink Retrospective</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle Implementation in Flink - Part Two</a></li>
 
       
diff --git a/content/blog/page15/index.html b/content/blog/page15/index.html
index 95be170..59e4508 100644
--- a/content/blog/page15/index.html
+++ b/content/blog/page15/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2016/02/11/release-0.10.2.html">Flink 0.10.2 Released</a></h2>
+
+      <p>11 Feb 2016
+      </p>
+
+      <p><p>Today, the Flink community released Flink version <strong>0.10.2</strong>, the second bugfix release of the 0.10 series.</p>
+
+</p>
+
+      <p><a href="/news/2016/02/11/release-0.10.2.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2015/12/18/a-year-in-review.html">Flink 2015: A year in review, and a lookout to 2016</a></h2>
 
       <p>18 Dec 2015 by Robert Metzger (<a href="https://twitter.com/">@rmetzger_</a>)
@@ -336,21 +351,6 @@ vertex-centric or gather-sum-apply to Flink dataflows.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2015/06/24/announcing-apache-flink-0.9.0-release.html">Announcing Apache Flink 0.9.0</a></h2>
-
-      <p>24 Jun 2015
-      </p>
-
-      <p><p>The Apache Flink community is pleased to announce the availability of the 0.9.0 release. The release is the result of many months of hard work within the Flink community. It contains many new features and improvements which were previewed in the 0.9.0-milestone1 release and have been polished since then. This is the largest Flink release so far.</p>
-
-</p>
-
-      <p><a href="/news/2015/06/24/announcing-apache-flink-0.9.0-release.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -383,6 +383,16 @@ vertex-centric or gather-sum-apply to Flink dataflows.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/11/03/flink-backward.html">Flink Backward - The Apache Flink Retrospective</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle Implementation in Flink - Part Two</a></li>
 
       
diff --git a/content/blog/page16/index.html b/content/blog/page16/index.html
index 25243f0..b239a0c 100644
--- a/content/blog/page16/index.html
+++ b/content/blog/page16/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2015/06/24/announcing-apache-flink-0.9.0-release.html">Announcing Apache Flink 0.9.0</a></h2>
+
+      <p>24 Jun 2015
+      </p>
+
+      <p><p>The Apache Flink community is pleased to announce the availability of the 0.9.0 release. The release is the result of many months of hard work within the Flink community. It contains many new features and improvements which were previewed in the 0.9.0-milestone1 release and have been polished since then. This is the largest Flink release so far.</p>
+
+</p>
+
+      <p><a href="/news/2015/06/24/announcing-apache-flink-0.9.0-release.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2015/05/14/Community-update-April.html">April 2015 in the Flink community</a></h2>
 
       <p>14 May 2015 by Kostas Tzoumas (<a href="https://twitter.com/">@kostas_tzoumas</a>)
@@ -342,21 +357,6 @@ and offers a new API including definition of flexible windows.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2015/01/06/december-in-flink.html">December 2014 in the Flink community</a></h2>
-
-      <p>06 Jan 2015
-      </p>
-
-      <p><p>This is the first blog post of a “newsletter” like series where we give a summary of the monthly activity in the Flink community. As the Flink project grows, this can serve as a “tl;dr” for people that are not following the Flink dev and user mailing lists, or those that are simply overwhelmed by the traffic.</p>
-
-</p>
-
-      <p><a href="/news/2015/01/06/december-in-flink.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -389,6 +389,16 @@ and offers a new API including definition of flexible windows.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/11/03/flink-backward.html">Flink Backward - The Apache Flink Retrospective</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle Implementation in Flink - Part Two</a></li>
 
       
diff --git a/content/blog/page17/index.html b/content/blog/page17/index.html
index 60796da..8781cb6 100644
--- a/content/blog/page17/index.html
+++ b/content/blog/page17/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2015/01/06/december-in-flink.html">December 2014 in the Flink community</a></h2>
+
+      <p>06 Jan 2015
+      </p>
+
+      <p><p>This is the first blog post of a “newsletter” like series where we give a summary of the monthly activity in the Flink community. As the Flink project grows, this can serve as a “tl;dr” for people that are not following the Flink dev and user mailing lists, or those that are simply overwhelmed by the traffic.</p>
+
+</p>
+
+      <p><a href="/news/2015/01/06/december-in-flink.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2014/11/18/hadoop-compatibility.html">Hadoop Compatibility in Flink</a></h2>
 
       <p>18 Nov 2014 by Fabian Hüske (<a href="https://twitter.com/">@fhueske</a>)
@@ -310,6 +325,16 @@ academic and open source project that Flink originates from.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/11/03/flink-backward.html">Flink Backward - The Apache Flink Retrospective</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle Implementation in Flink - Part Two</a></li>
 
       
diff --git a/content/blog/page2/index.html b/content/blog/page2/index.html
index e028cef..367c1da 100644
--- a/content/blog/page2/index.html
+++ b/content/blog/page2/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2021/08/06/release-1.13.2.html">Apache Flink 1.13.2 Released</a></h2>
+
+      <p>06 Aug 2021
+       Yun Tang </p>
+
+      <p><p>The Apache Flink community released the second bugfix version of the Apache Flink 1.13 series.</p>
+
+</p>
+
+      <p><a href="/news/2021/08/06/release-1.13.2.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2021/08/06/release-1.12.5.html">Apache Flink 1.12.5 Released</a></h2>
 
       <p>06 Aug 2021
@@ -329,21 +344,6 @@ to develop scalable, consistent, and elastic distributed applications.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2021/03/03/release-1.12.2.html">Apache Flink 1.12.2 Released</a></h2>
-
-      <p>03 Mar 2021
-       Yuan Mei  &amp; Roman Khachatryan </p>
-
-      <p><p>The Apache Flink community released the next bugfix version of the Apache Flink 1.12 series.</p>
-
-</p>
-
-      <p><a href="/news/2021/03/03/release-1.12.2.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -376,6 +376,16 @@ to develop scalable, consistent, and elastic distributed applications.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/11/03/flink-backward.html">Flink Backward - The Apache Flink Retrospective</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle Implementation in Flink - Part Two</a></li>
 
       
diff --git a/content/blog/page3/index.html b/content/blog/page3/index.html
index 443fc28..978603b 100644
--- a/content/blog/page3/index.html
+++ b/content/blog/page3/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2021/03/03/release-1.12.2.html">Apache Flink 1.12.2 Released</a></h2>
+
+      <p>03 Mar 2021
+       Yuan Mei  &amp; Roman Khachatryan </p>
+
+      <p><p>The Apache Flink community released the next bugfix version of the Apache Flink 1.12 series.</p>
+
+</p>
+
+      <p><a href="/news/2021/03/03/release-1.12.2.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/2021/02/10/native-k8s-with-ha.html">How to natively deploy Flink on Kubernetes with High-Availability (HA)</a></h2>
 
       <p>10 Feb 2021
@@ -325,19 +340,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2020/12/10/release-1.12.0.html">Apache Flink 1.12.0 Release Announcement</a></h2>
-
-      <p>10 Dec 2020
-       Marta Paes (<a href="https://twitter.com/morsapaes">@morsapaes</a>) &amp; Aljoscha Krettek (<a href="https://twitter.com/aljoscha">@aljoscha</a>)</p>
-
-      <p>The Apache Flink community is excited to announce the release of Flink 1.12.0! Close to 300 contributors worked on over 1k threads to bring significant improvements to usability as well as new features to Flink users across the whole API stack. We're particularly excited about adding efficient batch execution to the DataStream API, Kubernetes HA as an alternative to ZooKeeper, support for upsert mode in the Kafka SQL connector and the new Python DataStream API! Read on for all m [...]
-
-      <p><a href="/news/2020/12/10/release-1.12.0.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -370,6 +372,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/11/03/flink-backward.html">Flink Backward - The Apache Flink Retrospective</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle Implementation in Flink - Part Two</a></li>
 
       
diff --git a/content/blog/page4/index.html b/content/blog/page4/index.html
index 8285825..a531764 100644
--- a/content/blog/page4/index.html
+++ b/content/blog/page4/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2020/12/10/release-1.12.0.html">Apache Flink 1.12.0 Release Announcement</a></h2>
+
+      <p>10 Dec 2020
+       Marta Paes (<a href="https://twitter.com/morsapaes">@morsapaes</a>) &amp; Aljoscha Krettek (<a href="https://twitter.com/aljoscha">@aljoscha</a>)</p>
+
+      <p>The Apache Flink community is excited to announce the release of Flink 1.12.0! Close to 300 contributors worked on over 1k threads to bring significant improvements to usability as well as new features to Flink users across the whole API stack. We're particularly excited about adding efficient batch execution to the DataStream API, Kubernetes HA as an alternative to ZooKeeper, support for upsert mode in the Kafka SQL connector and the new Python DataStream API! Read on for all m [...]
+
+      <p><a href="/news/2020/12/10/release-1.12.0.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2020/11/11/release-statefun-2.2.1.html">Stateful Functions 2.2.1 Release Announcement</a></h2>
 
       <p>11 Nov 2020
@@ -329,21 +342,6 @@ as well as increased observability for operational purposes.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/2020/08/19/statefun.html">Monitoring and Controlling Networks of IoT Devices with Flink Stateful Functions</a></h2>
-
-      <p>19 Aug 2020
-       Igal Shilman (<a href="https://twitter.com/IgalShilman">@IgalShilman</a>)</p>
-
-      <p><p>In this blog post, we’ll take a look at a class of use cases that is a natural fit for <a href="https://flink.apache.org/stateful-functions.html">Flink Stateful Functions</a>: monitoring and controlling networks of connected devices (often called the “Internet of Things” (IoT)).</p>
-
-</p>
-
-      <p><a href="/2020/08/19/statefun.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -376,6 +374,16 @@ as well as increased observability for operational purposes.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/11/03/flink-backward.html">Flink Backward - The Apache Flink Retrospective</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle Implementation in Flink - Part Two</a></li>
 
       
diff --git a/content/blog/page5/index.html b/content/blog/page5/index.html
index a67f18e..9df7508 100644
--- a/content/blog/page5/index.html
+++ b/content/blog/page5/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/2020/08/19/statefun.html">Monitoring and Controlling Networks of IoT Devices with Flink Stateful Functions</a></h2>
+
+      <p>19 Aug 2020
+       Igal Shilman (<a href="https://twitter.com/IgalShilman">@IgalShilman</a>)</p>
+
+      <p><p>In this blog post, we’ll take a look at a class of use cases that is a natural fit for <a href="https://flink.apache.org/stateful-functions.html">Flink Stateful Functions</a>: monitoring and controlling networks of connected devices (often called the “Internet of Things” (IoT)).</p>
+
+</p>
+
+      <p><a href="/2020/08/19/statefun.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2020/08/06/external-resource.html">Accelerating your workload with GPU and other external resources</a></h2>
 
       <p>06 Aug 2020
@@ -328,22 +343,6 @@ illustrate this trend.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/ecosystem/2020/06/23/flink-on-zeppelin-part2.html">Flink on Zeppelin Notebooks for Interactive Data Analysis - Part 2</a></h2>
-
-      <p>23 Jun 2020
-       Jeff Zhang (<a href="https://twitter.com/zjffdu">@zjffdu</a>)</p>
-
-      <p><p>In a previous post, we introduced the basics of Flink on Zeppelin and how to do Streaming ETL. In this second part of the “Flink on Zeppelin” series of posts, I will share how to 
-perform streaming data visualization via Flink on Zeppelin and how to use Apache Flink UDFs in Zeppelin.</p>
-
-</p>
-
-      <p><a href="/ecosystem/2020/06/23/flink-on-zeppelin-part2.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -376,6 +375,16 @@ perform streaming data visualization via Flink on Zeppelin and how to use Apache
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/11/03/flink-backward.html">Flink Backward - The Apache Flink Retrospective</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle Implementation in Flink - Part Two</a></li>
 
       
diff --git a/content/blog/page6/index.html b/content/blog/page6/index.html
index fed1781..1b2694b 100644
--- a/content/blog/page6/index.html
+++ b/content/blog/page6/index.html
@@ -201,6 +201,22 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/ecosystem/2020/06/23/flink-on-zeppelin-part2.html">Flink on Zeppelin Notebooks for Interactive Data Analysis - Part 2</a></h2>
+
+      <p>23 Jun 2020
+       Jeff Zhang (<a href="https://twitter.com/zjffdu">@zjffdu</a>)</p>
+
+      <p><p>In a previous post, we introduced the basics of Flink on Zeppelin and how to do Streaming ETL. In this second part of the “Flink on Zeppelin” series of posts, I will share how to 
+perform streaming data visualization via Flink on Zeppelin and how to use Apache Flink UDFs in Zeppelin.</p>
+
+</p>
+
+      <p><a href="/ecosystem/2020/06/23/flink-on-zeppelin-part2.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2020/06/15/flink-on-zeppelin-part1.html">Flink on Zeppelin Notebooks for Interactive Data Analysis - Part 1</a></h2>
 
       <p>15 Jun 2020
@@ -327,19 +343,6 @@ and provide a tutorial for running Streaming ETL with Flink on Zeppelin.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/2020/04/09/pyflink-udf-support-flink.html">PyFlink: Introducing Python Support for UDFs in Flink's Table API</a></h2>
-
-      <p>09 Apr 2020
-       Jincheng Sun (<a href="https://twitter.com/sunjincheng121">@sunjincheng121</a>) &amp; Markos Sfikas (<a href="https://twitter.com/MarkSfik">@MarkSfik</a>)</p>
-
-      <p>Flink 1.10 extends its support for Python by adding Python UDFs in PyFlink. This post explains how UDFs work in PyFlink and gives some practical examples of how to use UDFs in PyFlink.</p>
-
-      <p><a href="/2020/04/09/pyflink-udf-support-flink.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -372,6 +375,16 @@ and provide a tutorial for running Streaming ETL with Flink on Zeppelin.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/11/03/flink-backward.html">Flink Backward - The Apache Flink Retrospective</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle Implementation in Flink - Part Two</a></li>
 
       
diff --git a/content/blog/page7/index.html b/content/blog/page7/index.html
index 8ab5b1a..324c912 100644
--- a/content/blog/page7/index.html
+++ b/content/blog/page7/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/2020/04/09/pyflink-udf-support-flink.html">PyFlink: Introducing Python Support for UDFs in Flink's Table API</a></h2>
+
+      <p>09 Apr 2020
+       Jincheng Sun (<a href="https://twitter.com/sunjincheng121">@sunjincheng121</a>) &amp; Markos Sfikas (<a href="https://twitter.com/MarkSfik">@MarkSfik</a>)</p>
+
+      <p>Flink 1.10 extends its support for Python by adding Python UDFs in PyFlink. This post explains how UDFs work in PyFlink and gives some practical examples of how to use UDFs in PyFlink.</p>
+
+      <p><a href="/2020/04/09/pyflink-udf-support-flink.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2020/04/07/release-statefun-2.0.0.html">Stateful Functions 2.0 - An Event-driven Database on Apache Flink</a></h2>
 
       <p>07 Apr 2020
@@ -326,19 +339,6 @@ This release marks a big milestone: Stateful Functions 2.0 is not only an API up
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2020/01/29/state-unlocked-interacting-with-state-in-apache-flink.html">State Unlocked: Interacting with State in Apache Flink</a></h2>
-
-      <p>29 Jan 2020
-       Seth Wiesman (<a href="https://twitter.com/sjwiesman">@sjwiesman</a>)</p>
-
-      <p>This post discusses the efforts of the Flink community as they relate to state management in Apache Flink. We showcase some practical examples of how the different features and APIs can be utilized and cover some future ideas for new and improved ways of managing state in Apache Flink.</p>
-
-      <p><a href="/news/2020/01/29/state-unlocked-interacting-with-state-in-apache-flink.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -371,6 +371,16 @@ This release marks a big milestone: Stateful Functions 2.0 is not only an API up
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/11/03/flink-backward.html">Flink Backward - The Apache Flink Retrospective</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle Implementation in Flink - Part Two</a></li>
 
       
diff --git a/content/blog/page8/index.html b/content/blog/page8/index.html
index 51d0e3f..7fe203f 100644
--- a/content/blog/page8/index.html
+++ b/content/blog/page8/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2020/01/29/state-unlocked-interacting-with-state-in-apache-flink.html">State Unlocked: Interacting with State in Apache Flink</a></h2>
+
+      <p>29 Jan 2020
+       Seth Wiesman (<a href="https://twitter.com/sjwiesman">@sjwiesman</a>)</p>
+
+      <p>This post discusses the efforts of the Flink community as they relate to state management in Apache Flink. We showcase some practical examples of how the different features and APIs can be utilized and cover some future ideas for new and improved ways of managing state in Apache Flink.</p>
+
+      <p><a href="/news/2020/01/29/state-unlocked-interacting-with-state-in-apache-flink.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2020/01/15/demo-fraud-detection.html">Advanced Flink Application Patterns Vol.1: Case Study of a Fraud Detection System</a></h2>
 
       <p>15 Jan 2020
@@ -326,19 +339,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/2019/07/23/flink-network-stack-2.html">Flink Network Stack Vol. 2: Monitoring, Metrics, and that Backpressure Thing</a></h2>
-
-      <p>23 Jul 2019
-       Nico Kruber  &amp; Piotr Nowojski </p>
-
-      <p>In a previous blog post, we presented how Flink’s network stack works from the high-level abstractions to the low-level details. This second  post discusses monitoring network-related metrics to identify backpressure or bottlenecks in throughput and latency.</p>
-
-      <p><a href="/2019/07/23/flink-network-stack-2.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -371,6 +371,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/11/03/flink-backward.html">Flink Backward - The Apache Flink Retrospective</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle Implementation in Flink - Part Two</a></li>
 
       
diff --git a/content/blog/page9/index.html b/content/blog/page9/index.html
index a2a6a96..8ae7f30 100644
--- a/content/blog/page9/index.html
+++ b/content/blog/page9/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/2019/07/23/flink-network-stack-2.html">Flink Network Stack Vol. 2: Monitoring, Metrics, and that Backpressure Thing</a></h2>
+
+      <p>23 Jul 2019
+       Nico Kruber  &amp; Piotr Nowojski </p>
+
+      <p>In a previous blog post, we presented how Flink’s network stack works from the high-level abstractions to the low-level details. This second  post discusses monitoring network-related metrics to identify backpressure or bottlenecks in throughput and latency.</p>
+
+      <p><a href="/2019/07/23/flink-network-stack-2.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2019/07/02/release-1.8.1.html">Apache Flink 1.8.1 Released</a></h2>
 
       <p>02 Jul 2019
@@ -327,19 +340,6 @@ for more details.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2019/03/06/ffsf-preview.html">What to expect from Flink Forward San Francisco 2019</a></h2>
-
-      <p>06 Mar 2019
-       Fabian Hueske (<a href="https://twitter.com/fhueske">@fhueske</a>)</p>
-
-      <p>The third annual Flink Forward conference in San Francisco is just a few weeks away. Let's see what Flink Forward SF 2019 has in store for the Apache Flink and stream processing communities. This post covers some of its highlights!</p>
-
-      <p><a href="/news/2019/03/06/ffsf-preview.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -372,6 +372,16 @@ for more details.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/11/03/flink-backward.html">Flink Backward - The Apache Flink Retrospective</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle Implementation in Flink - Part Two</a></li>
 
       
diff --git a/content/img/blog/2021-11-03-flink-backward/1.14-weather.png b/content/img/blog/2021-11-03-flink-backward/1.14-weather.png
new file mode 100644
index 0000000..a6a9a6e
Binary files /dev/null and b/content/img/blog/2021-11-03-flink-backward/1.14-weather.png differ
diff --git a/content/index.html b/content/index.html
index f4e1d3e..b169a83 100644
--- a/content/index.html
+++ b/content/index.html
@@ -365,6 +365,9 @@
 
   <dl>
       
+        <dt> <a href="/2021/11/03/flink-backward.html">Flink Backward - The Apache Flink Retrospective</a></dt>
+        <dd>A look back at the development cycle for Flink 1.14</dd>
+      
         <dt> <a href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle Implementation in Flink - Part Two</a></dt>
         <dd>Flink has implemented the sort-based blocking shuffle (FLIP-148) for batch data processing. In this blog post, we will take a close look at the design &amp; implementation details and see what we can gain from it.</dd>
       
@@ -378,11 +381,6 @@
       
         <dt> <a href="/news/2021/09/29/release-1.14.0.html">Apache Flink 1.14.0 Release Announcement</a></dt>
         <dd>The Apache Flink community is excited to announce the release of Flink 1.14.0! More than 200 contributor worked on over 1,000 issues. The release brings exciting new features like a more seamless streaming/batch integration, automatic network memory tuning, a hybrid source to switch data streams between storgage systems (e.g., Kafka/S3), Fine-grained resource management, PyFlink performance and debugging enhancements, and a Pulsar connector.</dd>
-      
-        <dt> <a href="/2021/09/07/connector-table-sql-api-part2.html">Implementing a custom source connector for Table API and SQL - Part Two </a></dt>
-        <dd><p>In <a href="/2021/09/07/connector-table-sql-api-part1">part one</a> of this tutorial, you learned how to build a custom source connector for Flink. In part two, you will learn how to integrate the connector with a test email inbox through the IMAP protocol and filter out emails using Flink SQL.</p>
-
-</dd>
     
   </dl>
 
diff --git a/content/zh/index.html b/content/zh/index.html
index a860a16..d01fa7b 100644
--- a/content/zh/index.html
+++ b/content/zh/index.html
@@ -362,6 +362,9 @@
 
   <dl>
       
+        <dt> <a href="/2021/11/03/flink-backward.html">Flink Backward - The Apache Flink Retrospective</a></dt>
+        <dd>A look back at the development cycle for Flink 1.14</dd>
+      
         <dt> <a href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle Implementation in Flink - Part Two</a></dt>
         <dd>Flink has implemented the sort-based blocking shuffle (FLIP-148) for batch data processing. In this blog post, we will take a close look at the design &amp; implementation details and see what we can gain from it.</dd>
       
@@ -375,11 +378,6 @@
       
         <dt> <a href="/news/2021/09/29/release-1.14.0.html">Apache Flink 1.14.0 Release Announcement</a></dt>
         <dd>The Apache Flink community is excited to announce the release of Flink 1.14.0! More than 200 contributor worked on over 1,000 issues. The release brings exciting new features like a more seamless streaming/batch integration, automatic network memory tuning, a hybrid source to switch data streams between storgage systems (e.g., Kafka/S3), Fine-grained resource management, PyFlink performance and debugging enhancements, and a Pulsar connector.</dd>
-      
-        <dt> <a href="/2021/09/07/connector-table-sql-api-part2.html">Implementing a custom source connector for Table API and SQL - Part Two </a></dt>
-        <dd><p>In <a href="/2021/09/07/connector-table-sql-api-part1">part one</a> of this tutorial, you learned how to build a custom source connector for Flink. In part two, you will learn how to integrate the connector with a test email inbox through the IMAP protocol and filter out emails using Flink SQL.</p>
-
-</dd>
     
   </dl>