新手如何为OpenJDK提交贡献?

最近因为工作原因,需要给OpenJDK社区提PR(pull merge)刷kpi。

我也是新手,没有给开源社区社区提交过贡献,所以研究了一下流程,在这里记录一下。

主要参考了Koichi Sakata(阪田浩一)在JCConf Taiwan(台湾最大的Java研讨会)2021年的演讲。

目录

前言

贡献方式

提交补丁的流程

如何找到可以修复的bug?方案一

如何构建JDK?

例子

如何找到可以修复的bug?方案二

提交前自测

提交patch

邮件内容

Sign OCA

提交PR

参考


前言

当我们打算为OpenJDK社区提交贡献的时候,先不用考虑技术细节。

我们自己的目标是:

        1. 获取知识。
        2. 提高技能。
        3. 提高知名度。
        4. 交朋友。
        5. 证明对Java的热爱。等等。

贡献方式

不同的贡献方式:

        1. 提交补丁(patch)。
        2. 审查代码。
        3. 分享想法。
        4. 参与讨论。
        5. 做演讲。
        6. 写博客文章。等等。

提交补丁的流程

        1. 查找Bug。
        2. 修复Bug。
        3. 提交补丁。
        4. 收到评论(Receive reviews)。
        5. 发表评论(Address comments)。
        6. patch被合并

如何找到可以修复的bug?方案一

在我们的日常使用中,OpenJDK好像没有什么错误。

如何找到可以修复的部分呢?

我们可以使用新版本的库来构建OpenJDK!包括GCC,Clang,etc。

如果用新版本的库出现了warning或者error,我们就可以尝试修复它了!

如何构建JDK?

在Ubuntu2004上编译JDK8和11的步骤,参考我之前的博客,有问题欢迎评论区留言。

Ubuntu2004的OpenJDK11源码调试-CSDN博客

Linux 编译open-jdk8流程-CSDN博客

例子

作者用gcc-10编译JDK16,遇到了几个可以修复的编译问题。

如何找到可以修复的bug?方案二

在Java Bug System(JBS)上寻找issuse。

JBS页面如下,可以筛选自己感兴趣的issuse,像我这里查找的是fixed的wayland相关issuse。

新手如何为OpenJDK提交贡献?_第1张图片

JBS对没有账号的访客是可读的,无法提交issuse和参与讨论

账号需要Author权限才能得到,Author是社区的一种角色。

成为Author的前提是:给项目至少贡献2个补丁

社区角色相关的内容,知乎已经有大神翻译了,链接在这里。

提交前自测

提交改动之前需要自测相关模块,这里推荐的测试工具是jtreg和gtest(Google Test)。

以下是作者给出的例子,这个工具我不熟悉,不展开了。

# jtreg的例子

$ make run-test TEST=serviceability/sa/TestJhsdbJstackMixed.java 
$ cat./jdk/build/linux-x86_64-server-fastdebug/test-
results/jtreg_test_hotspot_jtreg_serviceability_sa_TestJhsdbJstackMixed_java/text/summary.txt serviceability/sa/TestJhsdbJstackMixed.java Passed.Execution successful

# gtest的例子

$./build/linux-x86_64-server-fastdebug/hotspot/variant-server/libjvm/gtest/gtestLauncher-jdk:./build/linux- x86_64-server-fastdebug/jdk--gtest_filter=LogConfigurationTest.*

Note:Google Test filter =LogConfigurationTest.*

[====]Running 15 tests from 1 test case. 
[-------] Global test environment set-up.
[-------] 15 tests from LogConfigurationTest 
[RUN] LogConfiguration Test.describe_vm 
[OK ] LogConfiguration Test.describe_vm(1ms) 
(omitted)
[====] 15 tests from 1 test case ran. (659 ms total) 
[PASSED ] 15 tests.

提交patch

不要在github上创建 pull request。

所有的issuse都需要提交给JBS,在pull request的标题中应该有JBS的issuse的编号。

PR(pull request)应该先被发送到相关的邮件列表,邮件列表在这里。

邮件内容

一封完整的邮件包括:

  • 详细的issuse描述
  • 解决问题的patch,如果有的话

mail.openjdk.org Mailing Lists这一步可能需要把patch发出去,不要害怕,社区的成员往往礼貌而友好!

Sign OCA

Oracle Contributor Agreement

新手如何为OpenJDK提交贡献?_第2张图片

有类似的字样说明成功。

提交PR

在确认JBS有issuse和OCA申请成功后,就可以正提交PR啦~

最新版本的改动可以提交到:GitHub - openjdk/jdk: JDK main-line development https://openjdk.org/projects/jdk

非最新版本的提交到对应的github仓库里,比如:

GitHub - openjdk/jdk8u-dev: https://wiki.openjdk.org/display/jdk8u

GitHub - openjdk/jdk11u-dev: https://openjdk.org/projects/jdk-updates

PR提交之后需要Reviewer的审查,通过后pr会由sponsor合并。

进行到这一步我们就成功提交了一个pr!

参考

https://www.youtube.com/watch?v=hGciAsYRZPc&ab_channel=JCConfTaiwan

你可能感兴趣的:(Java,java,github,开源)