blob: f3fc45bf7d24e768225c3bb08963ede603631db1 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en" dir=ZgotmplZ>
<head>
<link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
<script src="/bootstrap/js/bootstrap.bundle.min.js"></script>
<link rel="stylesheet" type="text/css" href="/font-awesome/css/font-awesome.min.css">
<script src="/js/anchor.min.js"></script>
<script src="/js/flink.js"></script>
<link rel="canonical" href="https://flink.apache.org/2016/12/19/apache-flink-in-2016-year-in-review/">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="2016 was an exciting year for the Apache Flink® community, and the release of Flink 1.0 in March marked the first time in Flink’s history that the community guaranteed API backward compatibility for all versions in a series. This step forward for Flink was followed by many new and exciting production deployments in organizations of all shapes and sizes, all around the globe.
In this post, we’ll look back on the project’s progress over the course of 2016, and we’ll also preview what 2017 has in store.">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Apache Flink in 2016: Year in Review" />
<meta property="og:description" content="2016 was an exciting year for the Apache Flink® community, and the release of Flink 1.0 in March marked the first time in Flink’s history that the community guaranteed API backward compatibility for all versions in a series. This step forward for Flink was followed by many new and exciting production deployments in organizations of all shapes and sizes, all around the globe.
In this post, we’ll look back on the project’s progress over the course of 2016, and we’ll also preview what 2017 has in store." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://flink.apache.org/2016/12/19/apache-flink-in-2016-year-in-review/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2016-12-19T09:00:00+00:00" />
<meta property="article:modified_time" content="2016-12-19T09:00:00+00:00" />
<title>Apache Flink in 2016: Year in Review | Apache Flink</title>
<link rel="manifest" href="/manifest.json">
<link rel="icon" href="/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
<script defer src="/en.search.min.2698f0d1b683dae4d6cb071668b310a55ebcf1c48d11410a015a51d90105b53e.js" integrity="sha256-Jpjw0baD2uTWywcWaLMQpV688cSNEUEKAVpR2QEFtT4="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
<meta name="generator" content="Hugo 0.124.1">
<script>
var _paq = window._paq = window._paq || [];
_paq.push(['disableCookies']);
_paq.push(["setDomains", ["*.flink.apache.org","*.nightlies.apache.org/flink"]]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
</head>
<body dir=ZgotmplZ>
<header>
<nav class="navbar navbar-expand-xl">
<div class="container-fluid">
<a class="navbar-brand" href="/">
<img src="/img/logo/png/100/flink_squirrel_100_color.png" alt="Apache Flink" height="47" width="47" class="d-inline-block align-text-middle">
<span>Apache Flink</span>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<i class="fa fa-bars navbar-toggler-icon"></i>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">About</a>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item" href="/what-is-flink/flink-architecture/">Architecture</a>
</li>
<li>
<a class="dropdown-item" href="/what-is-flink/flink-applications/">Applications</a>
</li>
<li>
<a class="dropdown-item" href="/what-is-flink/flink-operations/">Operations</a>
</li>
<li>
<a class="dropdown-item" href="/what-is-flink/use-cases/">Use Cases</a>
</li>
<li>
<a class="dropdown-item" href="/what-is-flink/powered-by/">Powered By</a>
</li>
<li>
<a class="dropdown-item" href="/what-is-flink/roadmap/">Roadmap</a>
</li>
<li>
<a class="dropdown-item" href="/what-is-flink/community/">Community & Project Info</a>
</li>
<li>
<a class="dropdown-item" href="/what-is-flink/security/">Security</a>
</li>
<li>
<a class="dropdown-item" href="/what-is-flink/special-thanks/">Special Thanks</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Getting Started</a>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/">With Flink<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/">With Flink Kubernetes Operator<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable/docs/get-started/introduction/">With Flink CDC<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/docs/try-flink-ml/quick-start/">With Flink ML<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/getting-started/project-setup.html">With Flink Stateful Functions<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/learn-flink/overview/">Training Course<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 1.19 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-master/">Flink Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/">Kubernetes Operator 1.8 (latest)<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main">Kubernetes Operator Main (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable">CDC 3.0 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-master">CDC Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/">ML 2.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-master">ML Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/">Stateful Functions 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
<li>
<a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-master">Stateful Functions Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">How to Contribute</a>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item" href="/how-to-contribute/overview/">Overview</a>
</li>
<li>
<a class="dropdown-item" href="/how-to-contribute/contribute-code/">Contribute Code</a>
</li>
<li>
<a class="dropdown-item" href="/how-to-contribute/reviewing-prs/">Review Pull Requests</a>
</li>
<li>
<a class="dropdown-item" href="/how-to-contribute/code-style-and-quality-preamble/">Code Style and Quality Guide</a>
</li>
<li>
<a class="dropdown-item" href="/how-to-contribute/contribute-documentation/">Contribute Documentation</a>
</li>
<li>
<a class="dropdown-item" href="/how-to-contribute/documentation-style-guide/">Documentation Style Guide</a>
</li>
<li>
<a class="dropdown-item" href="/how-to-contribute/improve-website/">Contribute to the Website</a>
</li>
<li>
<a class="dropdown-item" href="/how-to-contribute/getting-help/">Getting Help</a>
</li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link" href="/posts/">Flink Blog</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/downloads/">Downloads</a>
</li>
</ul>
<div class="book-search">
<div class="book-search-spinner hidden">
<i class="fa fa-refresh fa-spin"></i>
</div>
<form class="search-bar d-flex" onsubmit="return false;"su>
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/">
<i class="fa fa-search search"></i>
<i class="fa fa-circle-o-notch fa-spin spinner"></i>
</form>
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
</div>
</div>
</nav>
<div class="navbar-clearfix"></div>
</header>
<main class="flex">
<section class="container book-page">
<article class="markdown">
<h1>
<a href="/2016/12/19/apache-flink-in-2016-year-in-review/">Apache Flink in 2016: Year in Review</a>
</h1>
December 19, 2016 -
<p><p>2016 was an exciting year for the Apache Flink® community, and the
<a href="http://flink.apache.org/news/2016/03/08/release-1.0.0.html" target="_blank">release of Flink 1.0 in March</a>
marked the first time in Flink’s history that the community guaranteed API backward compatibility for all
versions in a series. This step forward for Flink was followed by many new and exciting production deployments
in organizations of all shapes and sizes, all around the globe.</p>
<p>In this post, we’ll look back on the project’s progress over the course of 2016, and
we’ll also preview what 2017 has in store.</p>
<p>{%toc%}</p>
<h2 id="community-growth">
Community Growth
<a class="anchor" href="#community-growth">#</a>
</h2>
<h3 id="github">
Github
<a class="anchor" href="#github">#</a>
</h3>
<p>First, here&rsquo;s a summary of community statistics from <a href="https://github.com/apache/flink" target="_blank">GitHub</a>. At the time of writing:</p>
<ul>
<li><b>Contributors</b> have increased from 150 in December 2015 to 258 in December 2016 (up <b>72%</b>)</li>
<li><b>Stars</b> have increased from 813 in December 2015 to 1830 in December 2016 (up <b>125%</b>)</li>
<li><b>Forks</b> have increased from 544 in December 2015 to 1255 in December 2016 (up <b>130%</b>)</li>
</ul>
<p>The community also welcomed <b>3 new committers in 2016</b>: Chengxiang Li, Greg Hogan, and Tzu-Li (Gordon) Tai.</p>
<p><br><img src="/img/blog/github-stats-2016.png" width="775" alt="Apache Flink GitHub Stats"/>
<br>
<br></p>
<p>Next, let&rsquo;s take a look at a few other project stats, starting with number of commits. If we run:</p>
<pre tabindex="0"><code>git log --pretty=oneline --after=12/31/2015 | wc -l
</code></pre><p>&hellip;inside the Flink repository, we&rsquo;ll see a total of <strong>1884</strong> commits so far in 2016, bringing the all-time total commits to <strong>10,015</strong>.</p>
<p>Now, let&rsquo;s go a bit deeper. And here are instructions in case you&rsquo;d like to take a look at this data yourself.</p>
<ul>
<li>Download gitstats from the <a href="http://gitstats.sourceforge.net/">project homepage</a>. Or, on OS X with homebrew, type:</li>
</ul>
<pre tabindex="0"><code>brew install --HEAD homebrew/head-only/gitstats
</code></pre><ul>
<li>Clone the Apache Flink git repository:</li>
</ul>
<pre tabindex="0"><code>git clone git@github.com:apache/flink.git
</code></pre><ul>
<li>Generate the statistics</li>
</ul>
<pre tabindex="0"><code>gitstats flink/ flink-stats/
</code></pre><ul>
<li>View all the statistics as an html page using your defaulf browser:</li>
</ul>
<pre tabindex="0"><code>open flink-stats/index.html
</code></pre><p>2016 is the year that Flink surpassed 1 million lines of code, now clocking in at <strong>1,034,137</strong> lines.</p>
<p><img src="/img/blog/flink-lines-of-code-2016.png" align="center" width="550"
alt="Flink Total Lines of Code"/></p>
<p>Monday remains the day of the week with the most commits over the project&rsquo;s history:</p>
<p><img src="/img/blog/flink-dow-2016.png" align="center" width="550"
alt="Flink Commits by Day of Week"/></p>
<p>And 5pm is still solidly the preferred commit time:</p>
<p><img src="/img/blog/flink-hod-2016.png" align="center" width="550"
alt="Flink Commits by Hour of Day"/></p>
<br>
<h3 id="meetups">
Meetups
<a class="anchor" href="#meetups">#</a>
</h3>
<p><a href="https://www.meetup.com/topics/apache-flink/" target="_blank">Apache Flink Meetup membership</a> grew by <b>240%</b>
this year, and at the time of writing, there are 41 meetups comprised of 16,541 members listing Flink as a topic&ndash;up from 16 groups with 4,864 members in December 2015.
The Flink community is proud to be truly global in nature.</p>
<img src="/img/blog/flink-meetups-dec2016.png" width="775" alt="Apache Flink Meetup Map"/>
<h2 id="flink-forward-2016">
Flink Forward 2016
<a class="anchor" href="#flink-forward-2016">#</a>
</h2>
<p>The <a href="http://2016.flink-forward.org/" target="_blank">second annual Flink Forward conference </a>took place in
Berlin on September 12-14, and over 350 members of the Flink community came together for speaker sessions, training,
and discussion about Flink. <a href="http://2016.flink-forward.org/program/sessions/" target="_blank">Slides and videos</a>
from speaker sessions are available online, and we encourage you to take a look if you’re interested in learning more
about how Flink is used in production in a wide range of organizations.</p>
<p>Flink Forward will be expanding to <a href="http://sf.flink-forward.org/" target="_blank">San Francisco in April 2017</a>, and the <a href="http://berlin.flink-forward.org/" target="_blank">third-annual Berlin event
is scheduled for September 2017.</a></p>
<img src="/img/blog/speaker-logos-ff2016.png" width="775" alt="Flink Forward Speakers"/>
<h2 id="features-and-ecosystem">
Features and Ecosystem
<a class="anchor" href="#features-and-ecosystem">#</a>
</h2>
<h3 id="flink-ecosystem-growth">
Flink Ecosystem Growth
<a class="anchor" href="#flink-ecosystem-growth">#</a>
</h3>
<p>Flink was added to a selection of distributions during 2016, making it easier
for an even larger base of users to start working with Flink:</p>
<ul>
<li><a href="https://aws.amazon.com/blogs/big-data/use-apache-flink-on-amazon-emr/" target="_blank">
Amazon EMR</a></li>
<li><a href="https://cloud.google.com/dataproc/docs/release-notes/service#november_29_2016" target= "_blank">
Google Cloud Dataproc</a></li>
<li><a href="https://www.lightbend.com/blog/introducing-lightbend-fast-data-platform" target="_blank">
Lightbend Fast Data Platform</a></li>
</ul>
<p>In addition, the Apache Beam and Flink communities teamed up to build a Flink runner for Beam that, according to the Google team, is <a href="https://cloud.google.com/blog/big-data/2016/05/why-apache-beam-a-google-perspective"
target="_blank">&ldquo;sophisticated enough to be a compelling alternative to Cloud Dataflow when running on premise or on non-Google clouds&rdquo;</a>.</p>
<h3 id="feature-timeline-in-2016">
Feature Timeline in 2016
<a class="anchor" href="#feature-timeline-in-2016">#</a>
</h3>
<p>Here’s a selection of major features added to Flink over the course of 2016:</p>
<img src="/img/blog/flink-releases-2016.png" width="775" alt="Flink Release Timeline 2016"/>
<p>If you spend time in the <a href="https://issues.apache.org/jira/browse/FLINK-4554?jql=project%20%3D%20FLINK%20AND%20issuetype%20%3D%20%22New%20Feature%22%20AND%20status%20%3D%20Resolved%20ORDER%20BY%20resolved%20DESC" target="_blank">Apache Flink JIRA project</a>, you’ll see that the Flink community has addressed every single one of the roadmap items identified
in <a href="http://flink.apache.org/news/2015/12/18/a-year-in-review.html" target="_blank">2015’s year in review post</a>. Here&rsquo;s to making that an annual tradition. :)</p>
<h2 id="looking-ahead-to-2017">
Looking ahead to 2017
<a class="anchor" href="#looking-ahead-to-2017">#</a>
</h2>
<p>A good source of information about the Flink community&rsquo;s roadmap is the list of
<a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Improvement+Proposals" target="_blank">Flink
Improvement Proposals (FLIPs)</a> in the project wiki. Below, we&rsquo;ll highlight a selection of FLIPs
that have been accepted by the community as well as some that are still under discussion.</p>
<p>We should note that work is already underway on a number of these features, and some will even be included in Flink 1.2 at the beginning of 2017.</p>
<ul>
<li>
<p><strong>A new Flink deployment and process model</strong>, as described in <a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=65147077" target="_blank">FLIP-6<a/>. This work ensures that Flink supports a wide
range of deployment types and cluster managers, making it possible to run Flink smoothly in any environment.</p>
</li>
<li>
<p><strong>Dynamic scaling</strong> for both key-value state <a href="https://github.com/apache/flink/pull/2440" target="_blank">(as described in
this PR)<a/> <em>and</em> non-partitioned state <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-8%3A+Rescalable+Non-Partitioned+State" target="_blank">(as described in FLIP-8)<a/>, ensuring that it&rsquo;s always possible to split or merge state when scaling up or down, respectively.</p>
</li>
<li>
<p><strong>Asynchronous I/O</strong>, as described in <a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=65870673" target="_blank">FLIP-12
</a>, which makes I/O access a less time-consuming process without adding complexity or the need for extra checkpoint coordination.</p>
</li>
<li>
<p><strong>Enhancements to the window evictor</strong>, as described in <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-4+%3A+Enhance+Window+Evictor" target="_blank">FLIP-4</a>,
to provide users with more control over how elements are evicted from a window.</p>
</li>
<li>
<p><strong>Fined-grained recovery from task failures</strong>, as described in <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-1+%3A+Fine+Grained+Recovery+from+Task+Failures" target="_blank">FLIP-1</a>,
to make it possible to restart only what needs to be restarted during recovery, building on cached intermediate results.</p>
</li>
<li>
<p><strong>Unified checkpoints and savepoints</strong>, as described in <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-10%3A+Unify+Checkpoints+and+Savepoints" target="_blank">FLIP-10</a>, to
allow savepoints to be triggered automatically&ndash;important for program updates for the sake of error handling because savepoints allow the user to modify both
the job and Flink version whereas checkpoints can only be recovered with the same job.</p>
</li>
<li>
<p><strong>Table API window aggregations</strong>, as described in <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-11%3A+Table+API+Stream+Aggregations" target="_blank">FLIP-11</a>, to support group-window and row-window aggregates on streaming and batch tables.</p>
</li>
<li>
<p><strong>Side inputs</strong>, as described in <a href="https://docs.google.com/document/d/1hIgxi2Zchww_5fWUHLoYiXwSBXjv-M5eOv-MKQYN3m4/edit" target="_blank">this design document</a>, to
enable the joining of a main, high-throughput stream with one more more inputs with static or slowly-changing data.</p>
</li>
</ul>
<p>If you&rsquo;re interested in getting involved with Flink, we encourage you to take a look at the FLIPs and to join the discussion via the <a href="http://flink.apache.org/community.html#mailing-lists">Flink mailing lists</a>.</p>
<p>Lastly, we&rsquo;d like to extend a sincere thank you to all of the Flink community for making 2016 a great year!</p>
</p>
</article>
<div class="edit-this-page">
<p>
<a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a>
</p>
<p>
<a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2016-12-19-2016-year-in-review.md">
Edit This Page<i class="fa fa-edit fa-fw"></i>
</a>
</p>
</div>
</section>
<aside class="book-toc">
<nav id="TableOfContents"><h3>On This Page <a href="javascript:void(0)" class="toc" onclick="collapseToc()"><i class="fa fa-times" aria-hidden="true"></i></a></h3>
<ul>
<li>
<ul>
<li><a href="#community-growth">Community Growth</a>
<ul>
<li><a href="#github">Github</a></li>
<li><a href="#meetups">Meetups</a></li>
</ul>
</li>
<li><a href="#flink-forward-2016">Flink Forward 2016</a></li>
<li><a href="#features-and-ecosystem">Features and Ecosystem</a>
<ul>
<li><a href="#flink-ecosystem-growth">Flink Ecosystem Growth</a></li>
<li><a href="#feature-timeline-in-2016">Feature Timeline in 2016</a></li>
</ul>
</li>
<li><a href="#looking-ahead-to-2017">Looking ahead to 2017</a></li>
</ul>
</li>
</ul>
</nav>
</aside>
<aside class="expand-toc hidden">
<a class="toc" onclick="expandToc()" href="javascript:void(0)">
<i class="fa fa-bars" aria-hidden="true"></i>
</a>
</aside>
</main>
<footer>
<div class="separator"></div>
<div class="panels">
<div class="wrapper">
<div class="panel">
<ul>
<li>
<a href="https://flink-packages.org/">flink-packages.org</a>
</li>
<li>
<a href="https://www.apache.org/">Apache Software Foundation</a>
</li>
<li>
<a href="https://www.apache.org/licenses/">License</a>
</li>
<li>
<a href="/zh/">
<i class="fa fa-globe" aria-hidden="true"></i>&nbsp;中文版
</a>
</li>
</ul>
</div>
<div class="panel">
<ul>
<li>
<a href="/what-is-flink/security">Security</a-->
</li>
<li>
<a href="https://www.apache.org/foundation/sponsorship.html">Donate</a>
</li>
<li>
<a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
</ul>
</div>
<div class="panel icons">
<div>
<a href="/posts">
<div class="icon flink-blog-icon"></div>
<span>Flink blog</span>
</a>
</div>
<div>
<a href="https://github.com/apache/flink">
<div class="icon flink-github-icon"></div>
<span>Github</span>
</a>
</div>
<div>
<a href="https://twitter.com/apacheflink">
<div class="icon flink-twitter-icon"></div>
<span>Twitter</span>
</a>
</div>
</div>
</div>
</div>
<hr/>
<div class="container disclaimer">
<p>The contents of this website are © 2024 Apache Software Foundation under the terms of the Apache License v2. Apache Flink, Flink, and the Flink logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
</div>
</footer>
</body>
</html>