| <!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: 如何参与贡献</title> |
| <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> |
| <link rel="icon" href="/favicon.ico" type="image/x-icon"> |
| |
| <!-- Bootstrap --> |
| <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/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="/zh/"> |
| <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="/zh/streamprocessing1.html">What is Stream Processing?</a></li> |
| --> |
| |
| <!-- What is Flink? --> |
| <li><a href="/zh/flink-architecture.html">Apache Flink 是什么?</a></li> |
| |
| |
| |
| <!-- What is Stateful Functions? --> |
| |
| <li><a href="/zh/stateful-functions.html">What is Stateful Functions?</a></li> |
| |
| <!-- Use cases --> |
| <li><a href="/zh/usecases.html">应用场景</a></li> |
| |
| <!-- Powered by --> |
| <li><a href="/zh/poweredby.html">Flink 用户</a></li> |
| |
| |
| |
| <!-- Second menu section aims to support Flink users --> |
| |
| <!-- Downloads --> |
| <li><a href="/zh/downloads.html">下载</a></li> |
| |
| <!-- Getting Started --> |
| <li class="dropdown"> |
| <a class="dropdown-toggle" data-toggle="dropdown" href="#">教程<span class="caret"></span></a> |
| <ul class="dropdown-menu"> |
| <li><a href="https://ci.apache.org/projects/flink/flink-docs-release-1.11/zh/getting-started/index.html" target="_blank">With Flink <small><span class="glyphicon glyphicon-new-window"></span></small></a></li> |
| <li><a href="https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.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="/zh/training.html">Training Course</a></li> |
| </ul> |
| </li> |
| |
| <!-- Documentation --> |
| <li class="dropdown"> |
| <a class="dropdown-toggle" data-toggle="dropdown" href="#">文档<span class="caret"></span></a> |
| <ul class="dropdown-menu"> |
| <li><a href="https://ci.apache.org/projects/flink/flink-docs-release-1.11" target="_blank">Flink 1.11 (Latest stable release) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li> |
| <li><a href="https://ci.apache.org/projects/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://ci.apache.org/projects/flink/flink-statefun-docs-release-2.1" target="_blank">Flink Stateful Functions 2.1 (Latest stable release) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li> |
| <li><a href="https://ci.apache.org/projects/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="/zh/gettinghelp.html">获取帮助</a></li> |
| |
| <!-- Blog --> |
| <li><a href="/blog/"><b>Flink 博客</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> |
| |
| |
| <!-- Third menu section aim to support community and contributors --> |
| |
| <!-- Community --> |
| <li><a href="/zh/community.html">社区 & 项目信息</a></li> |
| |
| <!-- Roadmap --> |
| <li><a href="/zh/roadmap.html">开发计划</a></li> |
| |
| <!-- Contribute --> |
| <li class="active"><a href="/zh/contributing/how-to-contribute.html">如何参与贡献</a></li> |
| |
| <ul class="nav navbar-nav navbar-subnav"> |
| <li > |
| <a href="/zh/contributing/contribute-code.html">贡献代码</a> |
| </li> |
| <li > |
| <a href="/zh/contributing/reviewing-prs.html">审核 Pull Request</a> |
| </li> |
| <li > |
| <a href="/zh/contributing/code-style-and-quality-preamble.html">代码样式与质量指南</a> |
| </li> |
| <li > |
| <a href="/zh/contributing/contribute-documentation.html">贡献文档</a> |
| </li> |
| <li > |
| <a href="/zh/contributing/docs-style.html">Documentation Style Guide</a> |
| </li> |
| <li > |
| <a href="/zh/contributing/improve-website.html">贡献网站</a> |
| </li> |
| </ul> |
| |
| |
| <!-- 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> |
| |
| |
| |
| <!-- Language Switcher --> |
| <li> |
| |
| <a href="/contributing/how-to-contribute.html">English</a> |
| |
| </li> |
| |
| </ul> |
| |
| <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> |
| |
| <hr /> |
| |
| <li><a href="https://apache.org" target="_blank">Apache Software Foundation <small><span class="glyphicon glyphicon-new-window"></span></small></a></li> |
| |
| <li> |
| <style> |
| .smalllinks:link { |
| display: inline-block !important; background: none; padding-top: 0px; padding-bottom: 0px; padding-right: 0px; min-width: 75px; |
| } |
| </style> |
| |
| <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>如何参与贡献</h1> |
| |
| <hr /> |
| |
| <p>Apache Flink 是由一个开放友好的社区开发的。我们诚挚地欢迎每个人加入社区并为 Apache Flink 做出贡献。与社区交流和为 Flink 做贡献的方式包括:提问题、报告 bug、提议新特性、参与邮件列表的讨论、贡献代码或文档、改进网站和测试候选发布版本。</p> |
| |
| <h1>你想做什么?</h1> |
| <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/contributing/contribute-code.html">代码贡献指南</a></td> |
| </tr> |
| <tr> |
| <td><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> 帮助做代码审核</td> |
| <td>请阅读 <a href="/zh/contributing/reviewing-prs.html">代码审核指南</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/contributing/contribute-documentation.html">文档贡献指南</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="https://flink.apache.org/community.html#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 style="background-color: #cee0ed; border-color: #cee0ed;">apache-flink</code></a>、 <a href="https://stackoverflow.com/questions/tagged/flink-streaming"><code style="background-color: #cee0ed; border-color: #cee0ed;">flink-streaming</code></a> 或 <a href="https://stackoverflow.com/questions/tagged/flink-sql"><code style="background-color: #cee0ed; border-color: #cee0ed;">flink-sql</code></a> 标签的 Flink 相关问题</li> |
| <li>检查 <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20FLINK%20AND%20resolution%20%3D%20Unresolved%20ORDER%20BY%20created%20DESC%2C%20priority%20DESC%2C%20updated%20DESC">Jira</a> 上近期发布的 issue 中用户提出的问题</li> |
| </ul> |
| </td> |
| </tr> |
| <tr> |
| <td><span class="glyphicon glyphicon-blackboard" aria-hidden="true"></span> 改进网站</td> |
| <td>请阅读 <a href="/zh/contributing/improve-website.html">网站贡献指南</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="https://flink.apache.org/community.html#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="https://flink.apache.org/community.html#mailing-lists">dev@flink.apache.org 邮件列表</a> 寻求帮助! |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <h2 id="section">延申阅读</h2> |
| |
| <h3 id="flink-committer--pmc-">成为 Flink Committer 和 PMC 成员</h3> |
| |
| <h4 id="committer">如何成为 committer</h4> |
| |
| <p>Committer 是对项目仓库具有写入权限的社区成员,也就是说,他们可以自己修改代码、文档和网站,也可以接受其他贡献。</p> |
| |
| <p>成为 committer 或 PMC 成员没有严格的协议。新的 committer 候选人通常是活跃的贡献者和社区成员。</p> |
| |
| <p>新的 committer 候选人由当前的 committer 或 PMC 成员提名,并由 PMC 投票选举。</p> |
| |
| <p>如果想成为一名 committer,你应该积极与社区互动,并开始以上述任何方式贡献 Apache Flink。</p> |
| |
| <h4 id="committer-1">我们寻找什么样的 committer</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 成员</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> |
| |
| |
| |
| </div> |
| </div> |
| |
| </div> |
| </div> |
| |
| <hr /> |
| |
| <div class="row"> |
| <div class="footer text-center col-sm-12"> |
| <p>Copyright © 2014-2019 <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> · <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="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.matchHeight/0.7.0/jquery.matchHeight-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> |