blob: 5249bfb713e8c1f86fc1d6f562622454953475dc [file] [log] [blame]
<!DOCTYPE html>
<html lang="zh" 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/zh/how-to-contribute/overview/">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=" 如何参与贡献 # Apache Flink 是由一个开放友好的社区开发的。我们诚挚地欢迎每个人加入社区并为 Apache Flink 做出贡献。与社区交流和为 Flink 做贡献的方式包括:提问题、报告 bug、提议新特性、参与邮件列表的讨论、贡献代码或文档、改进网站和测试候选发布版本。
你想做什么? # 为 Apache Flink 做贡献不仅仅包括贡献代码。下面列出来不同的贡献形式:
可以贡献的领域 详细说明 报告 Bug 要报告 Flink 的问题,请登录 Flink’s Jira,然后点击顶部红色的 Create 按钮。 请提供你遇到问题的详细信息,如果可以,请附上能够帮助我们复现问题的描述。 贡献代码 请阅读 ">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="如何参与贡献" />
<meta property="og:description" content=" 如何参与贡献 # Apache Flink 是由一个开放友好的社区开发的。我们诚挚地欢迎每个人加入社区并为 Apache Flink 做出贡献。与社区交流和为 Flink 做贡献的方式包括:提问题、报告 bug、提议新特性、参与邮件列表的讨论、贡献代码或文档、改进网站和测试候选发布版本。
你想做什么? # 为 Apache Flink 做贡献不仅仅包括贡献代码。下面列出来不同的贡献形式:
可以贡献的领域 详细说明 报告 Bug 要报告 Flink 的问题,请登录 Flink’s Jira,然后点击顶部红色的 Create 按钮。 请提供你遇到问题的详细信息,如果可以,请附上能够帮助我们复现问题的描述。 贡献代码 请阅读 " />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://flink.apache.org/zh/how-to-contribute/overview/" /><meta property="article:section" content="how-to-contribute" />
<title>如何参与贡献 | Apache Flink</title>
<link rel="manifest" href="/manifest.json">
<link rel="icon" href="/favicon.png" type="image/x-icon">
<link rel="alternate" hreflang="en" href="https://flink.apache.org/how-to-contribute/overview/" title="Overview">
<link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
<script defer src="/zh.search.min.4fed8368d7410bf2cb8853d136d796128533433358adcd85133b7d8014ce76ef.js" integrity="sha256-T&#43;2DaNdBC/LLiFPRNteWEoUzQzNYrc2FEzt9gBTOdu8="></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="/zh/">
<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="/zh/what-is-flink/flink-architecture/">架构</a>
</li>
<li>
<a class="dropdown-item" href="/zh/what-is-flink/flink-applications/">应用</a>
</li>
<li>
<a class="dropdown-item" href="/zh/what-is-flink/flink-operations/">运维</a>
</li>
<li>
<a class="dropdown-item" href="/zh/what-is-flink/use-cases/">应用场景</a>
</li>
<li>
<a class="dropdown-item" href="/zh/what-is-flink/powered-by/">Flink 用户</a>
</li>
<li>
<a class="dropdown-item" href="/zh/what-is-flink/roadmap/">开发计划</a>
</li>
<li>
<a class="dropdown-item" href="/zh/what-is-flink/community/">社区 & 项目信息</a>
</li>
<li>
<a class="dropdown-item" href="/zh/what-is-flink/security/">Security</a>
</li>
<li>
<a class="dropdown-item" href="/zh/what-is-flink/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">教程</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="/zh/how-to-contribute/overview/">如何参与贡献</a>
</li>
<li>
<a class="dropdown-item" href="/zh/how-to-contribute/contribute-code/">贡献代码</a>
</li>
<li>
<a class="dropdown-item" href="/zh/how-to-contribute/reviewing-prs/">审核 Pull Request</a>
</li>
<li>
<a class="dropdown-item" href="/zh/how-to-contribute/code-style-and-quality-preamble/">代码样式与质量指南</a>
</li>
<li>
<a class="dropdown-item" href="/zh/how-to-contribute/contribute-documentation/">贡献文档</a>
</li>
<li>
<a class="dropdown-item" href="/zh/how-to-contribute/documentation-style-guide/">文档样式指南</a>
</li>
<li>
<a class="dropdown-item" href="/zh/how-to-contribute/improve-website/">贡献网站</a>
</li>
<li>
<a class="dropdown-item" href="/zh/how-to-contribute/getting-help/">获取帮助</a>
</li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link" href="/zh/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="搜索" aria-label="搜索" 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 id="如何参与贡献">
如何参与贡献
<a class="anchor" href="#%e5%a6%82%e4%bd%95%e5%8f%82%e4%b8%8e%e8%b4%a1%e7%8c%ae">#</a>
</h1>
<p>Apache Flink 是由一个开放友好的社区开发的。我们诚挚地欢迎每个人加入社区并为 Apache Flink 做出贡献。与社区交流和为 Flink 做贡献的方式包括:提问题、报告 bug、提议新特性、参与邮件列表的讨论、贡献代码或文档、改进网站和测试候选发布版本。</p>
<h2 id="你想做什么">
你想做什么?
<a class="anchor" href="#%e4%bd%a0%e6%83%b3%e5%81%9a%e4%bb%80%e4%b9%88">#</a>
</h2>
<p>为 Apache Flink 做贡献不仅仅包括贡献代码。下面列出来不同的贡献形式:</p>
<table class="table table-bordered">
<thead>
<tr>
<th>可以贡献的领域</th>
<th>详细说明</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> 报告 Bug</td>
<td>要报告 Flink 的问题,请登录 <a href="http://issues.apache.org/jira/browse/FLINK">Flink’s Jira</a>,然后点击顶部红色的 Create 按钮。<br/>
请提供你遇到问题的详细信息,如果可以,请附上能够帮助我们复现问题的描述。</td>
</tr>
<tr>
<td><span class="glyphicon glyphicon-console" aria-hidden="true"></span> 贡献代码</td>
<td>请阅读 <a href=""/zh/how-to-contribute/contribute-code/">代码贡献指南</a></td>
</tr>
<tr>
<td><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> 帮助做代码审核</td>
<td>请阅读 <a href="/zh/how-to-contribute/reviewing-prs/">代码审核指南</a></td>
</tr>
<tr>
<td><span class="glyphicon glyphicon-thumbs-up" aria-hidden="true"></span> 帮助准备版本发布</td>
<td>
发布新版本包括以下步骤:
<ol>
<li>建立新的候选版本并且在 dev@flink.apache.org 邮件列表发起投票(投票通常持续72小时)。</li>
<li>测试候选版本并投票 (如果没发现问题就 +1,发现问题则 -1)。</li>
<li>如果候选版本有问题就退回到第一步。否则我们发布该版本。</li>
</ol>
请阅读 <a href="https://cwiki.apache.org/confluence/display/FLINK/Releasing">版本测试流程</a>
</td>
</tr>
<tr>
<td><span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span> 贡献文档</td>
<td>请阅读 <a href="/zh/how-to-contribute/contribute-documentation/">文档贡献指南</a></td>
</tr>
<tr>
<td><span class="glyphicon glyphicon-user" aria-hidden="true"></span> 支持 Flink 用户</td>
<td>
<ul class="contribute-card-list">
<li>回答 <a href="/zh/what-is-flink/community/#mailing-lists">用户邮件列表</a> 中的问题</li>
<li>回答 <a href="https://stackoverflow.com/questions/tagged/apache-flink">Stack Overflow</a> 上带有 <a href="https://stackoverflow.com/questions/tagged/apache-flink"><code>apache-flink</code></a><a href="https://stackoverflow.com/questions/tagged/flink-streaming"><code>flink-streaming</code></a><a href="https://stackoverflow.com/questions/tagged/flink-sql"><code>flink-sql</code></a> 标签的 Flink 相关问题</li>
<li>检查 <a href="http://issues.apache.org/jira/browse/FLINK">Jira</a> 上近期发布的 issue 中用户提出的问题</li>
</ul>
</td>
</tr>
<tr>
<td><span class="glyphicon glyphicon-blackboard" aria-hidden="true"></span> 改进网站</td>
<td>请阅读 <a href="/zh/how-to-contribute/improve-website/">网站贡献指南</a></td>
</tr>
<tr>
<td><span class="glyphicon glyphicon-volume-up" aria-hidden="true"></span> 推广 Flink</td>
<td>
<ul class="contribute-card-list">
<li>组织或出席 <a href="https://www.meetup.com/topics/apache-flink/">Flink Meetup</a></li>
<li>贡献 <a href="https://flink.apache.org/blog/">Flink blog</a></li>
<li><a href="/zh/what-is-flink/community/#mailing-lists">community@flink.apache.org 邮件列表</a>分享你的会议、聚会或博客文章,或发 tweet 并 <a href="https://twitter.com/ApacheFlink">@ApacheFlink</a></li>
</ul>
</td>
</tr>
<tr>
<td colspan="2">
<span class="glyphicon glyphicon-question-sign" aria-hidden="true"></span> 如有其他问题请到 <a href="/zh/what-is-flink/community/#mailing-lists">dev@flink.apache.org 邮件列表</a> 寻求帮助!
</td>
</tr>
</tbody>
</table>
<h2 id="延申阅读">
延申阅读
<a class="anchor" href="#%e5%bb%b6%e7%94%b3%e9%98%85%e8%af%bb">#</a>
</h2>
<h3 id="成为-flink-committer-和-pmc-成员">
成为 Flink Committer 和 PMC 成员
<a class="anchor" href="#%e6%88%90%e4%b8%ba-flink-committer-%e5%92%8c-pmc-%e6%88%90%e5%91%98">#</a>
</h3>
<h4 id="如何成为-committer">
如何成为 committer
<a class="anchor" href="#%e5%a6%82%e4%bd%95%e6%88%90%e4%b8%ba-committer">#</a>
</h4>
<p>Committer 是对项目仓库具有写入权限的社区成员,也就是说,他们可以自己修改代码、文档和网站,也可以接受其他贡献。</p>
<p>成为 committer 或 PMC 成员没有严格的协议。新的 committer 候选人通常是活跃的贡献者和社区成员。</p>
<p>新的 committer 候选人由当前的 committer 或 PMC 成员提名,并由 PMC 投票选举。</p>
<p>如果想成为一名 committer,你应该积极与社区互动,并开始以上述任何方式贡献 Apache Flink。</p>
<h4 id="我们寻找什么样的-committer">
我们寻找什么样的 committer
<a class="anchor" href="#%e6%88%91%e4%bb%ac%e5%af%bb%e6%89%be%e4%bb%80%e4%b9%88%e6%a0%b7%e7%9a%84-committer">#</a>
</h4>
<p>作为一名 committer 意味着你被公认为项目(社区或技术)的重要贡献者,并拥有辅助开发的工具。Committer 候选人是社区成员,他们在很长一段时间内做出了优秀的贡献,并且希望继续贡献。</p>
<p>社区贡献包括在邮件列表帮助回答用户的问题、验证候选发布版本、发表演讲、组织社区活动以及通过其他形式推广和建设社区。“Apache 之道”重点关注项目社区,即使从未贡献过一行代码,只要被公认为对社区做出了杰出的贡献,你就可以成为一名 committer。</p>
<p>代码/技术贡献包括贡献 pull request(打补丁)、讨论设计、代码审查、测试以及定位和修复 bug。有建设性和高质量的设计讨论以及帮助其他贡献者是两个尤其重要的指标。</p>
<p>前面几点给出了有望成为候选人的方法,以下是 committer 候选人的“必备条件”:</p>
<ul>
<li>
<p>具备社区意识: 候选人要理解社区管理的精英原则。他们并不总是尽可能地提升个人贡献,而是积极帮助和授权他人做出有意义的贡献。</p>
</li>
<li>
<p>我们相信 committer 候选人会负责任地使用他们对代码仓库的写入访问权限,在没有把握的时候他们会保守地使用该权限。Flink 是一个庞大的系统,committer 必须清楚哪些是自己知道的哪些是自己不知道的。如果遇到疑问,committer 应该寻求帮助,而不是提交他们不太熟悉的部分。(即使是经验最丰富的 committer 也要遵循这个约定。)</p>
</li>
<li>
<p>他们表现出对其他社区成员的尊重并建设性地参与话题讨论。</p>
</li>
</ul>
<h4 id="我们寻找什么样的-pmc-成员">
我们寻找什么样的 PMC 成员
<a class="anchor" href="#%e6%88%91%e4%bb%ac%e5%af%bb%e6%89%be%e4%bb%80%e4%b9%88%e6%a0%b7%e7%9a%84-pmc-%e6%88%90%e5%91%98">#</a>
</h4>
<p>PMC 是项目的官方管控机构。PMC 成员“必须”有能力履行 PMC 的官方职责(认证和培养 committer/PMC 成员)。我们“需要”他们成为对 Flink、技术和社区有远见的人。</p>
<p>并非所有 PMC 成员都需要了解 Flink 发布流程的所有细节(理解要点并知道如何找到信息就可以了)。同样,并非每个 PMC 成员都需要有远见卓识。我们努力建立一个涵盖各方面能力的 PMC,我们了解每个成员具有不同的优势。</p>
<p>理想情况下,我们在活跃的社区成员中寻找候选人,他们能够主动塑造 Flink(技术和社区)未来的方向并且愿意学习官方的工作流程,比如如何创建和验证版本。</p>
<p>PMC 成员也是 committer。候选人如果还不是 committer 则会在加入 PMC 时自动成为 committer。 因此,“我们寻找什么样的 committer” 也同样适用于 PMC。</p>
<p>PMC 成员在项目中拥有很大权力。一个 PMC 成员可以干扰许多决策,能够以多种方式阻碍甚至损害项目。因此,我们必须相信 PMC 候选人头脑冷静、具有建设性、可靠,并且有时能够做到“不同意但执行”。</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.zh/how-to-contribute/overview.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><a href="#如何参与贡献">如何参与贡献</a>
<ul>
<li><a href="#你想做什么">你想做什么?</a></li>
<li><a href="#延申阅读">延申阅读</a>
<ul>
<li><a href="#成为-flink-committer-和-pmc-成员">成为 Flink Committer 和 PMC 成员</a></li>
</ul>
</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="/how-to-contribute/overview/">
<i class="fa fa-globe" aria-hidden="true"></i>&nbsp;English
</a>
</li>
</ul>
</div>
<div class="panel">
<ul>
<li>
<a href="/zh/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>