参与其中
作者:Dru Lavigne
作为开源项目,FreeBSD 依靠活跃社区源源不断的贡献和多元技能,才能打造并维护满足用户需求的软件。或许你曾想过为 FreeBSD 项目出力,却不知从何入手;又或许你已是贡献者,希望带动更多人加入。
本文概览如何以及为何开始为 FreeBSD 项目做贡献,并解答新贡献者常见的疑虑和问题。
但我不会写代码!
没错:FreeBSD 项目构建的操作系统主要由 C 语言编写。开发者始终不可或缺,但这并不意味着项目只接受 C 代码形式的贡献。非代码贡献的例子包括但不限于:
文档: FreeBSD 项目提供 man 页(含可用示例)和详尽的 FreeBSD Handbook。文档是一个不断变化的目标,因为新版本会加入新功能,用户也会发掘软件的新用法。要使文档保持实用和及时,需要多方贡献:撰写者创建新文档,编辑审阅并精细调整文档变更,用户报告过时或错误的文档。
翻译: FreeBSD 是国际化社区,许多用户的母语并非英语。若文档能以母语呈现,将显著缩短新用户的学习曲线。若英语非你的母语,可考虑协助将 Handbook 翻译成你的母语,此举将影响你所在地区的用户。
事件与新闻: FreeBSD 网站主页通常是人们接触 FreeBSD 的第一站。提交新闻条目和即将举办的活动,是确保该内容反映项目动态和覆盖范围的有效途径。
已移植的应用程序: 庞大的 Ports(即经过测试可在 FreeBSD 上运行的软件)是 FreeBSD 的核心卖点之一。应用程序数量已超过 24,400 个且仍在增长,显然需要众多用户参与测试,并在新版本发布时及时更新。维护现有 Port 或为尚未在 FreeBSD 上提供的应用程序创建新 Port,既能为其他用户保留这些软件,也能提升你自身的开发或脚本技能。
使用案例与用户故事: 你的公司是否使用 FreeBSD?你是否以 FreeBSD 谋生?项目始终乐于展示 FreeBSD 在何处、如何以及为何被使用。
用户支持: FreeBSD 项目提供多种资源让社区成员互相帮助,包括论坛、邮件列表和 IRC 频道。花时间回答你已知答案的悬而未决的问题,或为新用户指引所需资源,看似微不足道,却能建设强大的社区。
社交媒体: 你是否常驻 Twitter?可考虑用 #freebsd 标签发布 FreeBSD 用户感兴趣的内容。你在用 FreeBSD 做有趣的事,或在学习 FreeBSD 时尝试新事物?可考虑将你的实践写成博客,其他 FreeBSD 用户会感兴趣,同时丰富“是的,你可以在 FreeBSD 上做某事,方法如下”的集体知识。若你更愿说而非写,可联系 bsdnow.tv 或 bsdtalk.org 的工作人员,安排一次简短采访。
资金支持: 若你现在太忙无法贡献时间,但仍想助力项目?可考虑向 FreeBSD 基金会捐款,资金将用于支持项目。捐款前,先查看雇主是否有捐赠匹配计划,或是否有意成为基金会的财务赞助方。
布道: 你是否参加技术会议或本地技术用户组?可考虑就你在 FreeBSD 上的工作做一次演讲、闪电演讲或 BoF(Birds of a Feather)分会。若演讲被接受,发邮件至 freebsd-doc 邮件列表,以便将活动信息列入 FreeBSD 网站。
开发: 本节着重介绍非代码贡献,但开发者的贡献仍不可或缺。作为完整的操作系统,FreeBSD 提供大量编码机会:设备驱动、网络协议、文件系统、API、硬件子系统等等。
但我不是专家!
希望上述某些贡献领域引起了你的兴趣。但你可能在想:“我对 FreeBSD 还很新,要学的太多!是不是该等到成为专家再开始贡献?”简言之,答案是“不,别等”。你可以用现在掌握的知识开始贡献,贡献的类型和深度会随经验积累而扩展。
FreeBSD 项目确实有许多在各自领域造诣深厚、被誉为专家的贡献者。这可能让有意贡献的新手或轻度用户感到畏惧,担心自己的贡献太小或太基础,无足轻重。若有这种感觉,别忘记社区比你熟悉的名字要大得多,相当一部分社区成员边学边做,依赖其他用户的贡献。
为何参与?
这是个好问题,因为有时贡献开源项目看起来像是单向付出。免费使用东西当然应该回馈,但每个人的时间和精力都有限。实际上,回馈任何开源项目都有许多令人信服(甚至完全利己)的理由。具体原因因人而异,以下是一些适用于开源贡献的通用例子:
学生、失业或半失业者,以及希望改善就业前景的人,需要在就业市场中找到差异化优势。开源贡献(尤其是持续性的)可以展示主动性(我在业余时间做了这些)、向资深技术专家学习、提升技术能力(这里是我贡献的在线清单)、锻炼软技能(我曾在大型、有组织项目的流程中与他人协作)、并与领域专家建立联系。
这很有趣!还有哪里能让你与全球恰好和你一样热爱某块开源技术的人交流?尤其当你是家人、工作场所或城镇中唯一听过那项开源技术的人时,能与同好共事而不必先费力解释术语,是一种解脱。
这是免费的!还有哪里仅凭一根网线和你业余的时间,就能了解操作系统的内部组件及其演进?FreeBSD 尤其适合这一目的。它文档完善,自 1993 年项目成立以来,代码和提交历史一直公开。
没有玻璃天花板。开源贡献通过互联网提交,无人需要知道你的年龄、性别、种族、经济状况或性取向。贡献者凭借贡献质量和贡献领域为人所知。坚持一段时间,你会发现自己已成为所在细分领域的受人尊敬的专家。
基于开源技术开发产品或服务的组织很快会体会到维护自有分支的痛苦。即便开源许可证不要求回馈补丁和改进,这样做的开发资源节省很快就会累积起来。此外,寻求竞争优势的组织应努力与所用项目建立合作关系:作为活跃参与者,当项目考虑新功能和开发路线图时,你的声音更可能被听到。
为何选择 FreeBSD?
上一节概述了回馈开源的普遍优势。既然有成千上万的开源项目在寻找贡献者,为何偏偏选择 FreeBSD?
在为任何开源项目贡献之前,先研究它擅长什么,确保与你的兴趣和目标相符。FreeBSD 在许多技术领域表现出色,包括:
网络: FreeBSD 继承了原始 Berkeley Software Distribution 优秀的网络遗产,并持续在网络领域创新。例如,你是否知道 BSD sockets 提供了 TCP/IP 的原始 API?或者 FreeBSD 提供了首个纯 IPv6 网络栈?近期的创新包括作为模块化 TCP 拥塞控制算法的研究平台,以及开发 netmap 用于测试高性能直达硬件的数据包 I/O。
安全: FreeBSD 以安全操作系统著称,并与安全研究人员紧密合作,作为新安全框架的参考平台。自 2000 年起,Jail 就提供了轻量级隔离和操作系统虚拟化,并持续改进,如精细化的资源限制。Capsicum 参考平台正在定义扩展操作系统安全性的新方法。
文件系统: 文件系统创新始于 BSD(FFS 引入了柱面组),并延续至今。例如,SUJ 为 UFS 增加了日志软更新,HAST 通过 TCP/IP 提供同步的块级复制。多名 FreeBSD 开发者活跃于 OpenZFS 社区,这一现代文件系统内建于 FreeBSD。
开发工具: FreeBSD 项目是 Coverity Prevent 的早期采用者,也是 CLANG/LLVM 工具链的早期采用者。FreeBSD 内置 DTrace,用于系统性能分析。
此外,FreeBSD 项目在若干非技术领域也表现出色:
许可证: 两条款 BSD 许可证鼓励代码复用。这让商业产品厂商可以专注于自身的“独门秘方”,并促进新标准的广泛采用。
文档: 项目提供多种文档资源,帮助新用户和新贡献者快速上手。包括 FreeBSD Handbook、FAQ、开发者手册、Porter’s Handbook、文档项目入门指南,以及内置的 man 页。
导师制度: 项目的流程和文化围绕导师环境展开。新的代码、文档和 Ports 贡献者会被指派多位导师,审阅并提交他们的补丁,并帮助他们学习项目的代码/文档规范和最佳实践。
社区: 就开源项目而言,FreeBSD 社区友好、鼓励人、见多识广。专业领域和经验水平多样,文化上注重学习和专业精神。
流程: 作为一个成熟(21 年)的社区,FreeBSD 项目组织严密,流程文档齐全。设有多个组织团队,包括由选举产生的核心团队(协助设定方向和解决争议)、安全官和安全团队(管理安全公告)、发布工程师和发布工程团队(管理软件发布)、文档工程团队(管理文档基础设施)、Ports 管理团队(管理 Ports),以及多个基础设施团队(管理项目网站、仓库及其他基础设施)。
如何开始?
为 FreeBSD 贡献代码或文档,可以简单到发现某件令你感兴趣或困扰你的事,并提交一个让事情变得更好的补丁。本节就这一说法展开,提供一些与项目互动的有用建议。
举个例子,假设你在 man 页中发现一个拼写错误,或者你有一个补丁能让某个损坏的 Port 成功构建。前往 bugs.freebsd.org,创建一个新账户并确认账户创建邮件。然后你可以用快捷链接创建 bug 报告并附上补丁。关于如何创建有用的 bug 报告的更多细节,参见 freebsd.org/support/bugreports.html。理论上,会有人审阅你的补丁,可能询问更多信息,并为你提交变更。一旦提交,你的贡献即“上线”,能惠及其他 FreeBSD 用户。又快又轻松!
如果你不满足于只是偶然发现并修补小问题的零星补丁,而是有更大的抱负呢?此时,你需要开始融入社区。通常的做法是订阅与你的兴趣相匹配的邮件列表。根据列表的技术性质和你的舒适程度,你可以自我介绍并陈述兴趣,或先潜水一段时间,以体会讨论的氛围,并更好地了解谁在做什么。
提交补丁后,若未立即得到审阅,不要沮丧。原因可能有几个。若补丁相当长或复杂,开发者需要花时间消化并理解补丁,以及它如何融入更大的图景。若补丁相当简单,仔细检查你是否在提交中包含了所有必要信息,补丁的效用是否明显且不太冷僻。若过了一周左右仍无反馈,可礼貌地向相关邮件列表发邮件,询问是否还需要提供什么以协助补丁审阅者。务必及时响应所请求的任何信息,以加快补丁审阅。记住,你的补丁提交给的是由真实的人组成的社区,他们生活繁忙、业余时间有限。他们与你同样热爱 FreeBSD,愿与尊重他们时间和能力的人合作。
另一个贡献例子是公司希望回馈补丁。这种情况下,最佳情形是至少有一名员工与 FreeBSD 社区有联系,或恰好是 FreeBSD 开发者。最坏情形是把一大块代码丢进 bug 报告——任何开发者都知道,测试和整合大块他人代码到现有代码库既困难又耗时。若组织与社区尚无关系且希望建立,基金会可协助引荐合适的开发者,并可能安排与组织的工程和管理团队会面,进一步讨论协作目标。
作为个人,与 FreeBSD 社区互动时请记住以下几点:
不要害羞。你的贡献很重要。找到你感兴趣的领域,提交优质补丁,与审阅者互动,从他们的建议中学习。
注意,社区会留意那些坚持留下、尊重他人、愿意学习、持续贡献的人。某天若有人问你是否有意接受指导,不必惊讶。这是好事。
附加资源
下述资源涵盖多种贡献类型:
提交代码、Port 或文档补丁,或报告 bug:bugs.freebsd.org
提交活动列表和新闻条目:lists.freebsd.org/mailman/listinfo/freebsd-doc
协助新用户:forums.freebsd.org
讨论创建使用案例/用户故事,或请求公司引荐或基金会访问,发邮件至 board@freebsdfoundation.org
在 Twitter 发布 FreeBSD 相关博客文章新帖时加上 @freebsdblogs
在 https://freebsd.org/docs.html 查找更多文档
Dru Lavigne 自 1997 年起将 FreeBSD 作为主要平台,是基于 FreeBSD 派生的 PC-BSD 和 FreeNAS 项目的首席文档撰写者。她是《BSD Hacks》《The Best of FreeBSD Basics》和《The Definitive Guide to PC-BSD》的作者。她是 BSD 认证小组(BSD Certification Group Inc.)的创始人兼现任主席,该非营利组织致力于制定 BSD 系统管理员认证标准,并担任 FreeBSD 基金会董事。
最后更新于