姓名 | 组织 |
---|---|
Sameer Agarwal | Deductive AI |
Michael Armbrust | Databricks |
Dilip Biswal | Adobe |
Ryan Blue | Databricks |
Joseph Bradley | Databricks |
Matthew Cheah | Palantir |
Felix Cheung | NVIDIA |
Mosharaf Chowdhury | University of Michigan, Ann Arbor |
Bryan Cutler | IBM |
Jason Dai | Intel |
Tathagata Das | Databricks |
Ankur Dave | Databricks |
Aaron Davidson | Databricks |
Thomas Dudziak | Meta |
Erik Erlandson | Red Hat |
Robert Evans | NVIDIA |
Wenchen Fan | Databricks |
Huaxin Gao | Apple |
Max Gekk | Databricks |
Jiaan Geng | NetEase |
Joseph Gonzalez | UC Berkeley |
Thomas Graves | NVIDIA |
Martin Grund | Databricks |
Stephen Haberman | |
Mark Hamstra | ClearStory Data |
Seth Hendrickson | Stripe |
Herman van Hovell | Databricks |
Liang-Chi Hsieh | Databricks |
Yin Huai | Databricks |
Shane Huang | Intel |
Dongjoon Hyun | Apple |
Kazuaki Ishizaki | IBM |
Xingbo Jiang | Databricks |
Yikun Jiang | Huawei |
Holden Karau | Fight Health Insurance |
Shane Knapp | UC Berkeley |
Cody Koeninger | |
Andy Konwinski | Databricks |
Hyukjin Kwon | Databricks |
Ryan LeCompte | Quantifind |
Haejoon Lee | Databricks |
Haoyuan Li | Alluxio |
Xiao Li | Databricks |
Yinan Li | |
Yuanjian Li | Databricks |
Davies Liu | Juicedata |
Cheng Lian | Databricks |
Yanbo Liang | |
Jungtaek Lim | Databricks |
Sean McNamara | Oracle |
Xiangrui Meng | Databricks |
Xinrong Meng | Databricks |
Mridul Muralidharan | |
Andrew Or | |
Kay Ousterhout | LightStep |
Sean Owen | Databricks |
Bingkun Pan | Baidu |
Tejas Patil | Meta |
Nick Pentreath | Automattic |
Attila Zsolt Piros | Cloudera |
Anirudh Ramanathan | Signadot |
Imran Rashid | Cloudera |
Charles Reiss | University of Virginia |
Josh Rosen | Databricks |
Sandy Ryza | Databricks |
Kousuke Saruta | NTT Data |
Saisai Shao | Datastrato |
Prashant Sharma | IBM |
Gabor Somogyi | Apple |
Ram Sriharsha | Pinecone |
Chao Sun | OpenAI |
Maciej Szymkiewicz | |
Jose Torres | Databricks |
Peter Toth | Cloudera |
DB Tsai | Databricks |
Takuya Ueshin | Databricks |
Marcelo Vanzin | Cloudera |
Shivaram Venkataraman | University of Wisconsin, Madison |
Allison Wang | Databricks |
Gengliang Wang | Databricks |
Yuming Wang | eBay |
Zhenhua Wang | Huawei |
Patrick Wendell | Databricks |
Yi Wu | Databricks |
Andrew Xia | Alibaba |
Reynold Xin | Databricks |
Weichen Xu | Databricks |
Takeshi Yamamuro | NTT |
Jie Yang | Baidu |
Kent Yao | NetEase |
Burak Yavuz | Databricks |
Xiduo You | NetEase |
Matei Zaharia | Databricks, Stanford |
Ruifeng Zheng | Databricks |
Shixiong Zhu | Databricks |
要开始为 Spark 贡献,请了解如何贡献——任何人都可以向项目提交补丁、文档和示例。
PMC 根据活跃贡献者对 Spark 的贡献,定期增加新的提交者。新提交者的资格包括:
一个明显以某种排他方式偏袒某个特定供应商的社区,通常会劝退来自竞争供应商的新贡献者,这会影响项目的长期健康发展。
所考虑的贡献类型和级别可能因项目领域而异——例如,我们非常鼓励主要致力于文档或主要致力于特定操作系统、存储系统等平台支持的贡献者。
PMC 还会增加新的 PMC 成员。PMC 成员应履行Apache 指南中描述的 PMC 职责,包括协助发布投票、执行 Apache 项目商标、负责法律和许可问题,并确保项目遵循 Apache 项目机制。PMC 定期将那些表明理解并能协助这些活动的提交者纳入 PMC。
所有贡献都应在合并前进行审查,如贡献 Spark 中所述。特别是,如果您正在处理不熟悉的代码库区域,请查看该代码的 Git 历史记录,了解之前是谁审查了补丁。您可以使用git log --format=full <filename>
来完成此操作,通过检查“Commit”字段来查看谁提交了每个补丁。
除非涉及公共漏洞的关键安全修复等问题,否则拉取请求不应在活跃的、与主题相关的讨论期间合并。在特殊情况下,拉取请求可以在活跃的、与主题无关的讨论期间合并,并将讨论引导到更合适的场合。在合并之前应给予参与对话的人员时间来解释他们是否认为讨论与主题相关。
懒惰共识要求留出时间让讨论平息,同时理解人们可能不会将 Spark 作为全职工作,并且可能会休假。我们相信通过这样做,可以限制人们行使否决权的频率。
所有附带理由的“-1”都值得讨论。来自非提交者的“-1”只有在多名提交者输入的情况下才能被推翻,并且必须为任何提交者提供适当的时间来提出异议。来自无法联系到的提交者的“-1”需要根据 ASF 投票规则由 PMC 进行共识投票,以在ASF 代码否决指南内确定后续步骤。
这些政策旨在重申核心原则:代码不得在存在待决否决或未达成共识(无论是懒惰共识还是其他共识)之前合并。
PMC 希望否决权仍然不常发生,并且当它们发生时,所有各方都会在进一步的功能开发之前花时间建立共识。
成为一名提交者意味着在与持有不同观点的人们组成的社区中工作时,需要运用您的判断力。当您不确定时,寻求第二(或第三或第四)意见并没有错。感谢您对 Spark 项目的奉献;Spark 的开发者和用户对此表示赞赏。
希望这些指南不会减缓开发;相反,通过消除一些不确定性,目标是让我们更容易达成共识。如果您对如何改进这些指南或其他 Spark 项目操作程序有想法,您应该在 dev@ 邮件列表中提出以开始讨论。
推送到 Apache master 分支的更改无法移除;也就是说,我们不能强制推送到它。所以请不要添加任何测试提交或类似的东西,只添加真正的补丁。
要使用下面描述的merge_spark_pr.py
脚本,您需要添加一个名为apache
的 git 远程仓库,地址为https://github.com/apache/spark
,以及一个名为apache-github
的远程仓库,地址为git://github.com/apache/spark
。
apache
(PUSH_REMOTE_NAME
环境变量的默认值)是用于推送压缩提交的远程仓库,而apache-github
(PR_REMOTE_NAME
的默认值)是用于拉取更改的远程仓库。通过为这两个操作使用两个独立的远程仓库,可以通过在PUSH_REMOTE_NAME
变量中指定您的分支来测试merge_spark_pr.py
的结果,而无需将其推送到官方 Spark 仓库。
克隆您的 Spark 分支后,您已经有一个名为origin
的远程仓库指向那里。因此,如果正确,您的git remote -v
至少包含以下几行:
apache git@github.com:apache/spark.git (fetch)
apache git@github.com:apache/spark.git (push)
apache-github git@github.com:apache/spark.git (fetch)
apache-github git@github.com:apache/spark.git (push)
origin git@github.com:[your username]/spark.git (fetch)
origin git@github.com:[your username]/spark.git (push)
对于apache
仓库,您需要设置 GitHub 的命令行认证。这可能包括设置 SSH 密钥和/或个人访问令牌。请参阅:
要检查是否已授予必要的写入权限,请访问GitBox。
如果您在这些步骤中遇到问题,或者需要第一次合并的帮助,请咨询dev@spark.apache.org
。
所有合并都应使用dev/merge_spark_pr.py脚本完成,该脚本会将拉取请求的更改压缩为一个提交。
该脚本相当简单明了,会以交互方式引导您完成步骤和选项。
如果您想在合并前修改提交——这应该用于微小的修饰——那么只需让脚本在询问您是否要推送到 Apache 时等待。然后,在另一个窗口中,修改代码并推送一个提交。运行git rebase -i HEAD~2
并“压缩”您的新提交。紧接着编辑提交消息以删除您的提交消息。您可以使用git log
验证结果是一项更改。然后恢复另一个窗口中的脚本。
此外,请记住在 JIRA 解决时,如果适用,设置指派人。脚本在大多数情况下可以自动完成此操作。
一旦拉取请求合并,请在拉取请求上留下评论,说明它已合并到哪个分支。
来自pwendell
回溯时的权衡是,您可以将修复交付给运行旧版本的人员(太好了!),但您可能会在维护版本中引入新的甚至更糟糕的错误(糟糕!)。决策点是当您有一个错误修复时,不清楚是否值得回溯。
我认为以下几个方面很重要,需要考虑:
对我来说,这些的结论是,我们应该在以下情况下进行回溯:
在相反的情况下,我们倾向于避免回溯: