开源项目礼节


Google 开发者在线课程 开始学习

以下内容来自 MDN Web Docs:https://developer.mozilla.org/zh-CN/docs/MDN/Community/Open_source_etiquette

开源项目礼节

如果你从未在开源项目(open source project,OSP)工作过,在你开始向 MDN Web 文档(或其他开源项目)贡献之前,我们推荐你阅读这篇文章。这里有一些可供实行的最佳实践,来帮助确保你和其他项目贡献者感到受重视和安心,并保持生产力。

这篇文章不会教到你所有如何为开源项目做贡献的技巧,这篇文章的目标主要是为了让你为开源项目贡献时,有一些好的出发点。

你为什么要为开源项目贡献?

当你开始向开源项目做贡献时,反思一下为什么要做这些贡献。你的回答很有可能就是“我太无聊了,想找点有工作量的事情消磨时间”,这没什么问题,但其实还可以更深一步。

下面这些理由可能会更好:

  • 我总是使用这个工具,并且找到了一个错误,或想要帮助解决它。
  • 我想帮助其他人更加顺利地使用这个工具。
  • 我想帮助其他人更加顺利地向项目做贡献。
  • 我想提升个人技能水平。
  • 我想公开展示我在大学课程中学习到的技能。
  • 我想公开展示我的技能,以便增加找到工作的机会。

有些理由是“自私自利”的——这都没什么问题。如果在花费了一些时间在免费的项目上,期待有所收获才是正道。另外,有了这些明确的贡献理由可以让你更加轻松地决定首先从什么起步。

你在项目中的存在应该是具有成效的,且不应该阻止其他具有成效的工作。

请保持礼貌和友好,避免使用煽动性或冒犯性语言

总而言之,就是”善待他人“。这是我们为任何开始做开源项目贡献的人提出的第一条建议。

善待项目中的其他贡献者,可以营造出和谐而富有成效的氛围。这包含:

  • 感谢那些帮助过你的人。
  • 在适当的时候向人们表示祝贺(例如:他们完成了第一个拉取请求(pull request),或修复了一个难度极高的 bug)。
  • 始终以尊重的态度回应他人,即使你感觉到这些问题的回答是明显的,或者询问人在重复自己的工作。
  • 试着帮助人们下次更好地工作,例如:在拉取请求审查及回答问题时,说”这是错的“或”这是所需的答案“远不如说”这样做没问题,但我觉得如果你尝试像这样做会更好,这里有一篇博文阐述了更多的想法“或”你可以在这里找到答案,也可以查看这个链接,了解更多常见问题的答案“来得有用。

你和其他贡献者在这里(或者说,应该在这里)是因为他们想为项目做出积极得贡献,但除此之外,你不能对他们作任何假设,这包括他们的:

  • 对项目的了解和构建项目用到的技术
  • 性别、性取向、年龄、语言、所在地、政治观点、宗教信仰或其他个人属性
  • 参与开源项目的经验
  • 信任
  • 期待
  • 幽默感

因此,你需要尽可能保证你所写的内容符合主题,远离具有潜在争议的题材,如宗教或政治。即使你不同意某人的观点,或不喜欢他们所做的决定,也要保持支持和尊重的态度。

并且,你要克制住任何脏话及冒犯性的语言,即使它没有明确地指向任何人。参与时不需要这样,且一些人会对此相当敏感。

需要注意的是,任何一个好的开源项目都会有相应的规则来保护它的贡献者,以避免他们在贡献时感到不自在。这在 GitHub 中往往以 CODE_OF_CONDUCT.md 文件的形式给出。

例如,MDN 的代码库受影响广泛的 Mozilla 社区参与准则的管理。通常在 MDN Web 文档库中轻微的攻击性行为(比如持续不合主题的讨论或破坏性行为,或举止粗鲁)会收到一次 repo 内的警告,然后是最后一次警告,最后就是临时或永久的封禁。更加严重的行为问题,如仇恨言论、对其他贡献成员的威胁,将不受容忍,且可能立即遭受封禁处理。

如果你收到任何令你不舒服的内容,总是可以使用行为准则(code of conduct)中提及的机制进行举报。

选择有效的贡献

想清楚你在项目中要做什么。比如,我们会有一个在贡献者任务面板上记录的一些议题(issue)列表,根据任务的种类分开显示。

你也可以通过创建拉取请求来修复在阅读 MDN 文章时一眼扫到的问题。

MDN 上的很多工作围绕于文档及示例代码的编写,不过,通过这些方式也可以作出贡献:

  • 对议题分流进行分类。
  • 修正错别字。
  • 改善语法,让页面内容更加易于理解。
  • 指导人们如何进行修复。

每个修复都是有用的,无论多么琐碎,我们都不会拒绝。尽管如此,尽量确保你的修复工作是有成效的。我们不建议做这些种类的贡献:

  • 出于自己的喜爱更新代码样式。
  • 出于自己的喜爱更新语言样式。
  • 将页面中的美式英语修改为英式英语。
  • 在没有任何问题的情况下,添加或移除一批标点符号。
  • 出于自己的偏好修改我们正在使用的测试框架。

在许多情况下,开源项目中存在的事情是有原因的。如果它有风格指南,你应该阅读;如果对某件事情是否有效有疑问,一定要先问清楚!

阅读手册

好的开源项目总会让贡献者文档随时可供查阅。对于 GitHub 项目,内容往往存在于仓库的 CONTRIBUTING.md 文件中,或者项目的 README.md 文件中。作为文档类项目,MDN content 有一个 README 文件和一整套对于网站本身的贡献者文档(请参阅为 MDN Web 文档做贡献)。

不要害怕寻求帮助,但总是尝试在提问之前,先自己寻找答案。这样可以让自己独立积累对项目的知识,而且不会给其他贡献者带来不必要的负担。

当然,文档并不总是完美的,如果某项解释很难查找,或者描述得不够出色,请提出 issue,或者创建拉取请求来尝试自己去修复它。

在哪里提问呢?

要始终弄清楚哪里是问问题的最佳地点。好的开源项目总会在它们的文档中明确指定这一点(请查看取得联系一节)。如果你想问一些普遍意义上的问题,请使用这些频道。不是所有问题都适合使用 GitHub issue,不合适的 issue 会使项目变得杂乱(请查看下述“要取得进展,不要捣乱”章节)。

要取得进展,不要捣乱

仔细思考你在项目中沟通的方式,确保它是有用的,且不会使其他贡献者的工作更加困难。提交拉取请求来修复 bug 是好事,但它们真的有用,且方便审查吗?提出 issue 和加入其他对话是好的,但你的 issue 和评论是符合主题的,还是只是徒增杂乱?

通常情况下,要:

  • 在每个议题(issue)中仅讨论一个主题,这样可以让议题集中且有效。
  • 在每个拉取请求(PR)中仅修复一个议题(issue):对你来说,这可能要多花点功夫,但审查一个明确的修复方案要容易得多。
  • 如果你有一个有用的观点,或能回答别人的问题,请向其他主题投稿。
  • 如果你不确定某样东西是否有用或有一个简单的问题,可以使用其他机制,如聊天室或论坛来提问。
  • 在提出问题之前,先阅读手册,尝试自己回答这个问题。

不要:

  • 试图同时讨论多个话题,或发表离题的评论,使问题复杂化。
  • 把多个修正塞入一个拉取请求(pull request)中,这使得审查难度增加,并引起怀疑(有些人可能试图在有效的更改中隐藏一些恶意代码)。
  • 开启很多个议题(issue),问一些含糊不清的问题。
  • 在询问之前不尝试自己解决问题。

开源项目(几乎)是民主的

开源项目是相当民主的,很多决定是投票得出的,而且只要你不妨碍其他人的贡献,可以自由地做出任何想要的贡献。

然而,有些事情将主要由一小群核心贡献者决定。你可以自由地提出反对任何决定的理由,但有时核心贡献者会做出与你的意见相反的决定,你需要尊重并接受这些决定。

了解项目中的核心贡献者是很有用的,这样你就可以知道在诸如拉取请求(pull request)或提出的议题(issue threads)中应该向谁寻求帮助。

耐心点、及时点

记住,很多人在用他们的业余时间运营于开源项目中,没有收入,且一般工作在开源项目的人都非常繁忙。如果你在等待拉取请求审查(pull request review)或问题的解答,请耐心一点。

合理的做法是等待几天,然后礼貌地与某人取得联系,询问他们是否有时间去看它。如果他们碰巧太忙,最好再等一个星期,然后再尝试跟进他们。

在一开始就苛求一些东西,如快速回复,是不合理的。

如果有人在等你为他做什么,你也应该得到同样的礼遇,但同时要尽量及时回应。如果你真的找不到时间,让他们知道,并要求维护者帮助你找到其他人来完成这个任务。

参见

  • 如何为开源项目贡献
  • freeCodeCamp 提出的“How to contribute to open source”资源列表
  • 开始为开源项目做贡献

 


相關推薦

2023-02-16

Denis 颇有感慨,于是起笔后他用了很大篇幅来讲述自己的开源经历和遭遇,以及心态变化。 core-js 是 JavaScript 标准库中最流行和最普遍使用的 polyfill,它为最新的 ECMAScript 标准和提案提供支持,能够让低版本浏览器兼容现

2023-01-13

来源:中国经济网 责任编辑:李方 自2022年中国开源创新大赛于去年11月在乌镇互联网大会上发布以来,大赛得到国内开源生态的广泛支持、备受关注,活动影响力空前。截至1月10日报名结束,组委会共收到来自十个省份170多

2024-10-17

一些在开源软件社区拥有丰富经验的专家分享了关于如何维持这一关键生态系统的看法。 世界已经开始依赖数百万熟练的软件开发人员-- FOSS 项目的维护者--的免费工作。但是,世界却没有给他们一点小费。诚然,许多开源

2023-04-01

现代基础设施依赖于各种开源项目,为了帮助维护和支持这些项目和项目背后的开发者,很多公司和非营利组织都有推出开源基金,让公司的员工能够提名他们每天依赖(或参与)的开源软件项目。开源基金借此可以确定对公司

2023-11-21

最近几个月,开源 AI 项目的创始人 Max Woolf 经历了一场关于自己的工作的 “存在危机”。 他表示自己对 AI 的负面抵制情绪日益强烈,以及 AI 行业进展神速,Max 发现自己无法跟上进度,陷入了对开源工作的质疑。在此期间,他

2022-11-06

,在2022云栖大会一体化大数据智能峰会上,由开放原子开源基金会、X-lab开放实验室和阿里巴巴开源委员会联合出品的《2022年开源大数据热力报告》重磅发布。 开放原子开源基金会副秘书长刘京娟女士对报告进行了深度解读。

2024-06-27

截至2024年6月25日9:00,FIT2CLOUD飞致云旗下开源项目——1Panel开源Linux服务器运维管理面板GitHub Star数超过20,000个! 继Halo和JumpServer之后,1Panel成为飞致云旗下第三个GitHub Star数量超过20,000个的开源项目,也是飞致云旗下最快达成20,

2024-10-18

日 地点:北京・中关村国家自主创新示范区展示中心 由开源社主办的 COSCon'24 中国开源年会暨开源社 10 周年嘉年华将在北京隆重举办。作为国内开源界的年度盛会,本次大会汇聚了大量开源爱好者、技术专家和行业领袖,共同

2023-03-04

2020 年,谷歌联合开源安全基金会 (OpenSSF) 推出"Criticality Score",这是一个能够通过具体指标来量化开源项目重要性/关键性的评估工具。这些指标包括开源项目创立时间长度、贡献者数量、提交频率、过去一年的发版数量、过去 90

2023-03-15

者 Sebastian Bergmann 已将该项目的信息上传到 OSS Compass 开源生态评估平台了,用于对 PHPUnit 的社区生态进行状态评估。 PHPUnit 是一个轻量级的 PHP 测试框架,它是在 PHP5 下面对 JUnit3 系列版本的完整移植,是 xUnit 测试框架家

2022-10-10

在开源大数据技术飞速发展的十数年,我们见证了多元化技术的兴起和变迁。如何从海量数据中,通过数据处理和可视化的手段,对开源大数据技术的过去、现在和未来,做出深刻洞察?如何为开发者在开源大数据技术领域的学

2024-09-21

2024年9月20日,中国领先的开源软件公司飞致云宣布,其在代码托管平台GitHub上Star数超过10,000个的开源项目已经达到六个。这六个开源项目分别为:1Panel开源面板、JumpServer开源堡垒机、DataEase开源BI工具、MeterSphere开源持续测试工

2024-06-29

全中心合作,制作了一份联合指南,为企业提供有关选定开源软件 (OSS) 中内存安全风险规模的调查结果。 “本指南以内存安全路线图为基础,为软件制造商提供了一个创建内存安全路线图的起点,包括解决外部依赖项(通常

2023-02-24

估量有尺,开源有道。2 月 21 日,开源指南针 OSS Compass 发布会在北京顺利举行。OSS Compass 的发布,标志着我国首个开源生态健康评估平台正式诞生。发布会上介绍了 OSS Compass 的理论研究及实践成果,公布了 OSS Compass 开源社区治