blob: 676688f1f2550a7108f2bbb724d456cdb18581c8 [file] [log] [blame]
<!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: Apache Flink Roadmap</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]-->
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/* We explicitly disable cookie tracking to avoid privacy issues */
_paq.push(['disableCookies']);
/* Measure a visit to flink.apache.org and nightlies.apache.org/flink as the same visit */
_paq.push(["setDomains", ["*.flink.apache.org","*.nightlies.apache.org/flink"]]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//matomo.privacy.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>
<!-- End Matomo Code -->
</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>
<!-- Stateful Functions? -->
<li><a href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/">What is Stateful Functions?</a></li>
<!-- Flink ML? -->
<li><a href="https://nightlies.apache.org/flink/flink-ml-docs-stable/">What is Flink ML?</a></li>
<!-- Flink Kubernetes Operator? -->
<li><a href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/">What is the Flink Kubernetes Operator?</a></li>
<!-- Flink Table Store? -->
<li><a href="https://nightlies.apache.org/flink/flink-table-store-docs-stable/">What is Flink Table Store?</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.15//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.2/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="https://nightlies.apache.org/flink/flink-ml-docs-release-2.1/try-flink-ml/quick-start.html" target="_blank">With Flink ML <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<li><a href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-release-1.1/try-flink-kubernetes-operator/quick-start.html" target="_blank">With Flink Kubernetes Operator <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<li><a href="https://nightlies.apache.org/flink/flink-table-store-docs-release-0.1/try-table-store/quick-start.html" target="_blank">With Flink Table Store <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.15" target="_blank">Flink 1.15 (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.2" target="_blank">Flink Stateful Functions 3.2 (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>
<li><a href="https://nightlies.apache.org/flink/flink-ml-docs-release-2.1" target="_blank">Flink ML 2.1 (Latest stable release) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<li><a href="https://nightlies.apache.org/flink/flink-ml-docs-master" target="_blank">Flink ML Master (Latest Snapshot) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<li><a href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-release-1.1" target="_blank">Flink Kubernetes Operator 1.1 (Latest stable release) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<li><a href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main" target="_blank">Flink Kubernetes Operator Main (Latest Snapshot) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<li><a href="https://nightlies.apache.org/flink/flink-table-store-docs-release-0.1" target="_blank">Flink Table Store 0.1 (Latest stable release) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<li><a href="https://nightlies.apache.org/flink/flink-table-store-docs-master" target="_blank">Flink Table Store 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 class="active"><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/roadmap.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">
<h1>Apache Flink Roadmap</h1>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<hr />
<div class="page-toc">
<ul id="markdown-toc">
<li><a href="#feature-radar" id="markdown-toc-feature-radar">Feature Radar</a> <ul>
<li><a href="#feature-stages" id="markdown-toc-feature-stages">Feature Stages</a></li>
</ul>
</li>
<li><a href="#unified-analytics-where-batch-and-streaming-come-together-sql-and-beyond" id="markdown-toc-unified-analytics-where-batch-and-streaming-come-together-sql-and-beyond">Unified Analytics: Where Batch and Streaming come Together; SQL and beyond.</a> <ul>
<li><a href="#a-unified-sql-platform" id="markdown-toc-a-unified-sql-platform">A unified SQL Platform</a></li>
<li><a href="#deep-batch--streaming-unification-for-the-datastream-api" id="markdown-toc-deep-batch--streaming-unification-for-the-datastream-api">Deep Batch / Streaming Unification for the DataStream API</a></li>
</ul>
</li>
<li><a href="#applications-vs-clusters-flink-as-a-library" id="markdown-toc-applications-vs-clusters-flink-as-a-library">Applications vs. Clusters; “Flink as a Library”</a></li>
<li><a href="#performance" id="markdown-toc-performance">Performance</a> <ul>
<li><a href="#faster-checkpoints-and-recovery" id="markdown-toc-faster-checkpoints-and-recovery">Faster Checkpoints and Recovery</a></li>
</ul>
</li>
<li><a href="#apache-flink-as-part-of-an-ever-evolving-data-ecosystem" id="markdown-toc-apache-flink-as-part-of-an-ever-evolving-data-ecosystem">Apache Flink as part of an ever evolving data ecosystem</a></li>
<li><a href="#documentation" id="markdown-toc-documentation">Documentation</a></li>
<li><a href="#stateful-functions" id="markdown-toc-stateful-functions">Stateful Functions</a></li>
<li><a href="#flink-kubernetes-operator" id="markdown-toc-flink-kubernetes-operator">Flink Kubernetes Operator</a></li>
<li><a href="#flink-table-store" id="markdown-toc-flink-table-store">Flink Table Store</a></li>
</ul>
</div>
<p><strong>Preamble:</strong> This roadmap means to provide user and contributors with a high-level summary of ongoing efforts,
grouped by the major threads to which the efforts belong. With so much that is happening in Flink, we
hope that this helps with understanding the direction of the project.
The roadmap contains both efforts in early stages as well as nearly completed
efforts, so that users may get a better impression of the overall status and direction of those developments.</p>
<p>More details and various smaller changes can be found in the
<a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Improvement+Proposals">FLIPs</a></p>
<p>The roadmap is continuously updated. New features and efforts should be added to the roadmap once
there is consensus that they will happen and what they will roughly look like for the user.</p>
<p><strong>Last Update:</strong> 2022-04-19</p>
<hr />
<h1 id="feature-radar">Feature Radar</h1>
<p>The feature radar is meant to give users guidance regarding feature maturity, as well as which features
are approaching end-of-life. For questions, please contact the developer mailing list:
<a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#100;&#101;&#118;&#064;&#102;&#108;&#105;&#110;&#107;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;">&#100;&#101;&#118;&#064;&#102;&#108;&#105;&#110;&#107;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;</a></p>
<div class="row front-graphic">
<img src="/img/flink_feature_radar_3.svg" width="700px" />
</div>
<h2 id="feature-stages">Feature Stages</h2>
<ul>
<li><strong>MVP:</strong> Have a look, consider whether this can help you in the future.</li>
<li><strong>Beta:</strong> You can benefit from this, but you should carefully evaluate the feature.</li>
<li><strong>Ready and Evolving:</strong> Ready to use in production, but be aware you may need to make some adjustments to your application and setup in the future, when you upgrade Flink.</li>
<li><strong>Stable:</strong> Unrestricted use in production</li>
<li><strong>Reaching End-of-Life:</strong> Stable, still feel free to use, but think about alternatives. Not a good match for new long-lived projects.</li>
<li><strong>Deprecated:</strong> Start looking for alternatives now</li>
</ul>
<hr />
<h1 id="unified-analytics-where-batch-and-streaming-come-together-sql-and-beyond">Unified Analytics: Where Batch and Streaming come Together; SQL and beyond.</h1>
<p>Flink is a streaming data system in its core, that executes “batch as a special case of streaming”.
Efficient execution of batch jobs is powerful in its own right; but even more so, batch processing
capabilities (efficient processing of bounded streams) open the way for a seamless unification of
batch and streaming applications.</p>
<p>Unified streaming/batch up-levels the streaming data paradigm: It gives users consistent semantics across
their real-time and lag-time applications. Furthermore, streaming applications often need to be complemented
by batch (bounded stream) processing, for example when reprocessing data after bugs or data quality issues,
or when bootstrapping new applications. A unified API and system make this much easier.</p>
<h2 id="a-unified-sql-platform">A unified SQL Platform</h2>
<p>The community has been building Flink to a powerful basis for a unified (batch and streaming) SQL analytics
platform, and is continuing to do so.</p>
<p>SQL has very strong cross-batch-streaming semantics, allowing users to use the same queries for ad-hoc analytics
and as continuous queries. Flink already contains an efficient unified query engine, and a wide set of
integrations. With user feedback, those are continuously improved.</p>
<p><strong>Going Beyond a SQL Stream/Batch Processing Engine</strong></p>
<ul>
<li>To extend the capability of a pure stream processor and make Flink ready for future use cases,
<a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-188%3A+Introduce+Built-in+Dynamic+Table+Storage">FLIP-188</a>
has been announced adding built in dynamic table storage.</li>
<li>The experience of updating Flink SQL based jobs has been rather cumbersome as it could have
lead to new job graphs making restoring from savepoints/checkpoints impossible.
<a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=191336489&amp;src=contextnavpagetreemode">FLIP-190</a>
that already has been shipped as MVP is targeting this.</li>
</ul>
<p><strong>Platform Infrastructure</strong></p>
<ul>
<li>After <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-163%3A+SQL+Client+Improvements">FLIP-163</a>
the community is working again on a set of SQL Client usability improvements
(<a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-189%3A+SQL+Client+Usability+Improvements">FLIP-189</a>)
which is aiming at improving the user experience, when using the SQL client.</li>
</ul>
<p><strong>Support for Common Languages, Formats, Catalogs</strong></p>
<ul>
<li>With <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-216%3A++Introduce+pluggable+dialect+and++decouple+Hive+connector">FLIP-216</a>
there’s now the initiative to introduce pluggable dialects on the example of the Hive connector.
Including so many dependencies to make dialects work has lead to an overhead for contributors
and users.</li>
</ul>
<p>Flink has a broad SQL coverage for batch (full TPC-DS support) and a state-of-the-art set of supported
operations in streaming. There is continuous effort to add more functions and cover more SQL operations.</p>
<h2 id="deep-batch--streaming-unification-for-the-datastream-api">Deep Batch / Streaming Unification for the DataStream API</h2>
<p>The <em>DataStream API</em> is Flink’s <em>physical</em> API, for use cases where users need very explicit control over data
types, streams, state, and time. This API is evolving to support efficient batch execution on bounded data.</p>
<p>DataStream API executes the same dataflow shape in batch as in streaming, keeping the same operators.
That way users keep the same level of control over the dataflow, and our goal is to mix and switch between
batch/streaming execution in the future to make it a seamless experience.</p>
<p><strong>Unified Sources and Sinks</strong></p>
<ul>
<li>
<p>The first APIs and implementations of sources were specific to either streaming programs in the DataStream API
(<a href="https://github.com/apache/flink/blob/master/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/functions/source/SourceFunction.java">SourceFunction</a>),
or to batch programs in the DataSet API (<a href="https://github.com/apache/flink/blob/master/flink-core/src/main/java/org/apache/flink/api/common/io/InputFormat.java">InputFormat</a>).</p>
<p>In this effort, we are creating sources that work across batch and streaming execution. The aim is to give
users a consistent experience across both modes, and to allow them to easily switch between streaming and batch
execution for their unbounded and bounded streaming applications.
The interface for this New Source API is done and available, and we are working on migrating more source connectors
to this new model, see <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-27%3A+Refactor+Source+Interface">FLIP-27</a>.</p>
</li>
<li>
<p>Similar to the sources, the original sink APIs are also specific to streaming
(<a href="https://github.com/apache/flink/blob/master/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/functions/sink/SinkFunction.java">SinkFunction</a>)
and batch (<a href="https://github.com/apache/flink/blob/master/flink-core/src/main/java/org/apache/flink/api/common/io/OutputFormat.java">OutputFormat</a>)
APIs and execution.</p>
<p>We have introduced a new API for sinks that consistently handles result writing and committing (<em>Transactions</em>)
across batch and streaming. The first iteration of the API exists, and we are porting sinks and refining the
API in the process. See <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-143%3A+Unified+Sink+API">FLIP-143</a>.</p>
</li>
</ul>
<hr />
<h1 id="applications-vs-clusters-flink-as-a-library">Applications vs. Clusters; “Flink as a Library”</h1>
<p>The goal of these efforts is to make it feel natural to deploy (long running streaming) Flink applications.
Instead of starting a cluster and submitting a job to that cluster, these efforts support deploying a streaming
job as a self contained application.</p>
<p>For example as a simple Kubernetes deployment; deployed and scaled like a regular application without extra workflows.</p>
<ul>
<li>There is currently a Kubernetes Operator being developed by the community. See
<a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-212%3A+Introduce+Flink+Kubernetes+Operator">FLIP-212</a>.</li>
</ul>
<hr />
<h1 id="performance">Performance</h1>
<p>Continuous work to keep improving performance and recovery speed.</p>
<h2 id="faster-checkpoints-and-recovery">Faster Checkpoints and Recovery</h2>
<p>The community is continuously working on improving checkpointing and recovery speed.
Checkpoints and recovery are stable and have been a reliable workhorse for years. We are still
trying to make it faster, more predictable, and to remove some confusions and inflexibility in some areas.</p>
<ul>
<li><a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-183%3A+Dynamic+buffer+size+adjustment">FLIP-183</a>
is targeting size of checkpoints by debloating the buffers. A first beta is already available.</li>
<li>With <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-151%3A+Incremental+snapshots+for+heap-based+state+backend">FLIP-151</a>
there is an ongoing effort to implement a heap based state backend.</li>
</ul>
<hr />
<h1 id="apache-flink-as-part-of-an-ever-evolving-data-ecosystem">Apache Flink as part of an ever evolving data ecosystem</h1>
<p>There is almost no use case in which Apache Flink is used on its own. It has established itself
as part of many data related reference architectures. In fact you’ll find the squirrel logo covering
several aspects. The community has added a lot of connectors and formats. With the already mentionend
<a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-27%3A+Refactor+Source+Interface">FLIP-27</a> and
<a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-143%3A+Unified+Sink+API">FLIP-143</a>
a new default for connectors has been established.</p>
<ul>
<li>There are efforts to revise the formats API with
<a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-219%3A+Revised+Format+API">FLIP-219</a></li>
<li>There is ongoing work on new connectors
(e.g. <a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=177045634">Pinot</a>)</li>
<li>Connectors will be hosted in an external repository going forward. See the
<a href="https://lists.apache.org/thread/8k1xonqt7hn0xldbky1cxfx3fzh6sj7h">ML thread</a></li>
</ul>
<hr />
<h1 id="documentation">Documentation</h1>
<p>There are various dedicated efforts to simplify the maintenance and structure (more intuitive navigation/reading)
of the documentation.</p>
<ul>
<li>Docs Tech Stack: <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-157+Migrate+Flink+Documentation+from+Jekyll+to+Hugo">FLIP-157</a></li>
<li>General Docs Structure: <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-42%3A+Rework+Flink+Documentation">FLIP-42</a></li>
<li>SQL Docs: <a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=127405685">FLIP-60</a></li>
</ul>
<hr />
<h1 id="stateful-functions">Stateful Functions</h1>
<p>The Stateful Functions subproject has its own roadmap published under <a href="https://statefun.io/">statefun.io</a>.</p>
<h1 id="flink-kubernetes-operator">Flink Kubernetes Operator</h1>
<p>The Flink Kubernetes Operator subproject has its own roadmap under the <a href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main/docs/development/roadmap/">documentation</a>.</p>
<h1 id="flink-table-store">Flink Table Store</h1>
<p>The Flink Table Store subproject has its own roadmap under the <a href="https://nightlies.apache.org/flink/flink-table-store-docs-master/docs/development/roadmap/">documentation</a>.</p>
</div>
</div>
</div>
</div>
<hr />
<div class="row">
<div class="footer text-center col-sm-12">
<p>Copyright © 2014-2022 <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="https://privacy.apache.org/policies/privacy-policy-public.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>
</body>
</html>