FreeBSD 中文社区 2025 第二季度问卷调查
FreeBSD 中文社区(CFC)
VitePress 镜像站QQ 群 787969044视频教程Ⅰ视频教程Ⅱ
  • FreeBSD 操作系统研究导论
  • 中文期刊
  • 状态报告
  • 发行说明
  • 手册
  • 网络文章集锦
  • 笔记本支持报告
  • Port 开发者手册
  • 架构手册
  • 开发者手册
  • 中文 man 手册
  • 文章与书籍
  • UNIX 四分之一世纪
  • Unix 痛恨者手册
  • FreeBSD 中文期刊
  • 编辑日志
  • 2025-123 下游项目
    • FreeBSD 发布工程:新主管上任
    • GhostBSD:从易用到挣扎与重生
    • BSD Now 与将来
    • 字符设备驱动教程(第三部分)
    • 学会走路——连接 GPIO 系统
    • FreeBSD 中对 SYN 段的处理
    • FreeBSD 2024 年秋季峰会
  • 2024-1112 虚拟化
    • 字符设备驱动程序教程(第二部分)
    • 面向 Linux 和 Windows 用户的 bhyve
    • Xen 与 FreeBSD
    • Wifibox:一种嵌入式虚拟化无线路由器
    • 嵌入式 FreeBSD:Fabric——起步阶段
    • DGP:一种新的数据包控制方法
    • 会议报告:我在都柏林的 EuroBSDCon 体验
  • 2024-0910 内核开发
    • 字符设备驱动程序教程
    • VPP 移植到了 FreeBSD:基础用法
    • 利用 Kyua 的 Jail 功能提升 FreeBSD 测试套件的并行效率
    • FreeBSD 上的 Valgrind
    • 嵌入式 FreeBSD:探索 bhyve
    • TCP/IP 历险记:FreeBSD TCP 协议栈中的 Pacing
    • 实用软件:实现无纸化(Paperless)
  • 2024-0708 存储与文件系统
    • FreeBSD 中的 NVMe-oF
    • FreeBSD iSCSI 入门
    • 使用 ZFS 原生加密保护数据
    • 嵌入式 FreeBSD:打造自己的镜像
    • TCP LRO 简介
    • 基于 Samba 的时间机器备份
  • 2024-0506 配置管理对决
    • 基本系统中的 mfsBSD
    • rdist
    • Hashicorp Vault
    • 在 GitHub 上向 FreeBSD 提交 PR
    • 悼念 Mike Karels
    • 2024 年 5-6 月来信
    • 嵌入式 FreeBSD 面包板
    • TCP/IP 历险记:TCP BBLog
    • 实用软件:开发定制 Ansible 模块
  • 2024-0304 开发工作流与集成
    • FreeBSD 内核开发工作流程
    • FreeBSD 与 KDE 持续集成(CI)
    • 更现代的内核调试工具
    • 从零开始的 ZFS 镜像及 makefs -t zfs
    • 提升 Git 使用体验
  • 2024-0102 网络(十周年)
    • FreeBSD 中的 RACK 栈和替代 TCP 栈
    • FreeBSD 14 中有关 TCP 的更新
    • if_ovpn 还是 OpenVPN
    • SR-IOV 已成为 FreeBSD 的重要功能
    • FreeBSD 接口 API(IfAPI)
    • BATMAN:更优的可移动热点网络方式
    • 配置自己的 VPN——基于 FreeBSD、Wireguard、IPv6 和广告拦截
    • 实用软件:使用 Zabbix 监控主机
  • 2023-1112 FreeBSD 14.0
    • LinuxBoot:从 Linux 启动 FreeBSD
    • FreeBSD 容器镜像
    • 现在用 Webhook 触发我
    • 新的 Ports 提交者:oel Bodenmann (jbo@freebsd.org)
  • 2023-0910 Port 与软件包
    • 回忆录:与 Warner Losh(@imp)的访谈
    • 在你自己的仓库中定制 Poudriere 源
    • Wazuh 和 MITRE Caldera 在 FreeBSD Jail 中的使用
    • PEP 517
    • CCCamp 2023 旅行报告
  • 2023-0708 容器与云
    • 在 Firecracker 上的 FreeBSD
    • 使用 pot 和 nomad 管理 Jail
    • 会议报告:C 与 BSD 正如拉丁语与我们——一位神学家的旅程
    • 抒怀之旅:与 Doug Rabson 的访谈
    • 基于 Jail 的广告拦截教程
    • 我们收到的来信
  • 2023-0506 FreeBSD 三十周年纪念特刊
    • CheriBSD 近十多年的历程
    • AArch64:成为 FreeBSD 新的一级架构
    • 岁月如梭:我个人的时间线
    • 安装 FreeBSD 1.0:回顾 30 年前
    • ZFS 是如何进入 FreeBSD 的呢?
    • 我不是来自约克郡的,我保证!
    • 回忆录:采访 David Greenman Lawrence
    • FreeBSD 和早期的 Unix 社区
    • 早期的 FreeBSD 移植
    • FreeBSD 30 周年:成功的秘诀
    • FreeBSD 在日本:回忆之旅与今日之实
  • 2023-0304 嵌入式
    • CheriBSD port 和软件包
    • 让我们来试试 ChatGPT
    • GPU 直通
  • 2023-0102 构建 FreEBSD Web 服务器
    • ZFS 的原子 I/O 与 PostgreSQL
    • 虚拟实验室——BSD 编程研讨会
    • ZFS 简介
    • 会议报告:落基山庆祝女性计算机科学家
    • 进行中的工作/征求反馈:数据包批处理
    • 基金会与 FreeBSD 桌面
  • 2022-1112 可观测性和衡量标准
    • 在 FreeBSD 的 DDB 内核调试器中编写自定义命令
    • DTrace:老式跟踪系统的新扩展
    • 基于证书的 Icinga 监控
    • 活动监控脚本(activitymonitor.sh)
    • 实用 IPv6(第四部分)
    • EuroBSDCon 会议报道
    • 实用 Port:Prometheus 的安装与配置
    • 书评:《用火解决问题:管理老化的计算机系统(并为现代系统保驾护航)》Kill It with Fire: Manage Aging Computer Systems (and Future Proof Modern Ones)
  • 2022-0910 安全性
    • CARP 简介
    • 重构内核加密服务框架
    • PAM 小窍门
    • SSH 小窍门
    • 实用 IPv6(第三部分)
    • 书评:Understanding Software Dynamics(深入理解软件性能——一种动态视角)—— Richard L. Sites 著
    • 访谈:保障 FreeBSD 安全性
    • MCH 2022 会议报告
  • 2022-0708 科研、系统与 FreeBSD
    • 在 FreeBSD 上构建 Loom 框架
    • 教授本科生 Unix 课程
    • FreeBSD 入门研讨会
    • 实用 IPv6(第二部分)
    • 在 2022 年及以后推广 FreeBSD
    • 进行中的工作/征求反馈:Socket 缓冲区
    • FreeBSD 开发者峰会报告
    • 支持 Electromagnetic Field 2022
  • 2022-0506 灾难恢复
    • 使用 FreeBSD 构建高弹性的私有云
    • LLDB 14 —— FreeBSD 新调试器
    • 实用 IPv6(第一部分)
    • 利用 netdump(4) 进行事后内核调试
    • 进行中的工作/征求反馈:FreeBSD 启动性能
    • 实用 Port:在 OpenZFS 上设置 NFSv4 文件服务器
  • 2022-0304 ARM64 是一级架构
    • FreeBSD/ARM64 上的数据科学
    • Pinebook Pro 上的 FreeBSD
    • 嵌入式控制器的 ACPI 支持
    • 进行中的工作/征求反馈:Lumina 桌面征集开发人员
    • 实用 Port:如何设置 Apple 时间机器
  • 2022-0102 软件与系统管理
    • 为 FreeBSD Ports 做贡献
    • 使用 Git 贡献到 FreeBSD Ports
    • CBSD:第一部分——生产环境
    • 将 OpenBSD 的 pf syncookie 代码移植到 FreeBSD 的 pf
    • 进行中的工作/征求反馈:mkjail
    • 《编程智慧:编程鬼才的经验和思考》(The Kollected Kode Vicious)书评
    • 会议报告:EuroBSDCon 2021 我的第一次 EuroBSDCon:一位新组织者的视角
  • 2021-1112 存储
    • 开放通道 SSD
    • 构建 FreeBSD 社区
    • 与完美操作系统同行 27 年
    • 进行中的工作/征求反馈:OccamBSD
    • 通过 iSCSI 导入 ZFS ZIL——不要在工作中这样做——就像我做的那样
  • 2021-0910 FreeBSD 开发
    • FreeBSD 代码审查与 git-arc
    • 如何为 FreeBSD 实现简单的 USB 驱动程序
    • 内核开发技巧
    • 程序员编程杂谈
  • 2021-0708 桌面/无线网
    • 通往 FreeBSD 桌面的直线路径
    • FreeBSD 13 中的人机接口设备 (HID) 支持
    • Panfrost 驱动程序
    • 用 Git 更新 FreeBSD
    • FreeBSD 的新面孔
    • 想给你的桌面加点佐料?
  • 2021-0506 安全
    • 七种提升新安装 FreeBSD 安全性的方法
    • copyinout 框架
    • 使用 TLS 改善 NFS 安全性
    • Capsicum 案例研究:Got
    • 对 Jail 进行安全扫描
  • 2021-0304 FreeBSD 13.0
    • 展望未来
    • FreeBSD 13.0 工具链
    • FreeBSD 13.0 中有新加载器吗?
    • TCP Cubic 准备起飞
    • OpenZFS 中的 Zstandard 压缩
    • 会议报告:FreeBSD 供应商峰会
    • Git 不够吗?
  • 2021-0102 案例研究
    • Tarsnap 的 FreeBSD 集群
    • BALLY WULFF
    • Netflix Open Connect
    • FreeBSD 的新面孔
    • 写作学者的 FreeBSD
    • 在世界之巅
  • 2020-1112 工作流/持续集成(CI)
    • FreeBSD Git 快速入门
    • 使用 syzkaller 进行内核 Fuzzing
    • Mastering Vim Quickly 书评
    • 线上会议实用技巧
    • 在控制台上进行网络监控
  • 2020-0910 贡献与入门
    • 采访:Warner Losh,第 2 部分
    • 代码审查
    • 撰写良好的提交消息
    • 如何在不是程序员的情况下做出贡献——成为 FreeBSD 译者
    • 如何成为文档提交者
    • 谷歌编程之夏
    • 为 FreeBSD 期刊撰写文章
    • 你为什么使用 FreeBSD
    • FreeBSD 的新面孔
  • 2020-0708 基准测试/调优
    • FreeBSD Friday
    • 采访:Warner Losh,第 1 部分
    • 构建和运行开源社区
    • 在 FreeBSD 上轻松搭建我的世界(Minecraft)服务器
    • FreeBSD 的新面孔
  • 2020-0506 网络性能
    • 内核中的 TLS 卸载
    • 访谈:Michael W Lucas
    • FreeBSD 桌面发行版
    • 使用 Poudriere 进行 Port 批量管理
    • FreeBSD 的新面孔
由 GitBook 提供支持
LogoLogo

FreeBSD 中文社区(CFC) 2025

在本页
  • 请简要介绍一下自己、你的背景和兴趣
  • 你是如何结识 FreeBSD 的,是什么吸引你加入 FreeBSD 项目的?
  • 你是如何成为提交者的?
  • 加入 FreeBSD 项目后的经历如何?你有什么建议给那些可能也有兴趣成为 FreeBSD 提交者的读者吗?
在GitHub上编辑
导出为 PDF
  1. 2020-0506 网络性能

FreeBSD 的新面孔

上一页使用 Poudriere 进行 Port 批量管理

最后更新于3个月前

  • 原文链接:New Faces of FreeBSD

  • 作者:DRU LAVIGNE

本专栏旨在聚焦那些最近获得提交权限的贡献者,并将他们介绍给 FreeBSD 社区。在本期中,我们聚焦的是 Nick O'Brien,他在 3 月份获得了他的 src 权限;以及 Richard Scheffenegger,他在 4 月份获得了他的 src 权限。

请简要介绍一下自己、你的背景和兴趣

Nick: 我出生,成长于华盛顿州的西雅图,但自 2017 年底以来,大部分时间都住在加利福尼亚州的圣何塞。目前,我在 Axiado 从事嵌入式软件工作,我们使用 FreeBSD 来做 RISC-V 相关的工作。

最初,我进入软件编写这个领域更多是出于需求,而不是对编写代码的直接兴趣。从小学开始,我就需要为不同的个人项目编写软件,每当遇到问题时,我都会 Google“如何……”。经过多年的杂项软件开发后,我开始意识到我真的很喜欢工程中的实际问题解决部分,并且对编写软件的实际技能越来越认真。

在计算机之外,我的一些爱好包括跑步、试图冲浪时被浪头打得七荤八素,以及弹吉他。

Richard: 我现在居住在奥地利维也纳(我的工作场所常常会把它和维吉尼亚州的维也纳搞混),这里也是我的家乡。大约 15 年前,我加入了一家网络存储公司,负责支持他们的新产品——一个缓存的 web 代理。然而,尽管我在这方面有一定的技能,我的简历却被一家专业猎头公司拒绝了。我开始了我的网络职业生涯,当时还是在学校时,使用邮件和 USENIX 网关设置了一个“联网”的 BBS(属于 TrekNet,基于 FIDOnet 技术),那时公众还不知道互联网的存在。这一切发生在 Web 出现之前。我记得当时在大学的计算机房里,Gopher 是最流行的东西。随后,我在一些小公司工作,始终与网络有关。那时,接近千禧年,我是德语国家某供应商特殊网络操作模式的专家——这是一种过早的 TRILL 先驱模式——即使是该供应商的支持人员也多次联系我。但是,我不想跑题,偶然的机会,我的简历被一个在猎头公司实习的员工发现,并且他为我把简历归档到了一个类似的职位上,除了我最初申请的职位之外。

在经过彻底的测试和多次面试后(回顾起来,我认为负责技术部分的人无法弄明白为什么我能如此快速且知识丰富地回答问题,而我的答案在当时的任何搜索引擎中都找不到完全匹配的内容),我于 2005 年开始在 Network Appliance(现在称为 NetApp)工作。那时我的办公室位于阿姆斯特丹的 EMEA 总部,我从事与我之前 IT 专业知识相关的领域工作。NetApp 是为数不多的提供专业大规模 NAS 解决方案的企业级厂商之一。大多数其他大型存储厂商则更加侧重于 SAN,因此,我最终选择 NetApp 也是一个不错的匹配。最终,我开始在公司内部担任一个覆盖 EMEA 区域的角色,并被允许选择我的主要办公室。因此,在德国工作一段时间后,我最终回到了我的家乡。

此外,由于我非常对网络感兴趣——尤其是将数据从 A 传输到 B——这项专业知识在我的雇主处理的设备中显得尤为重要,因为这些设备需要通过多种不同协议(如 NAS 和 SAN)尽可能快地提供数据,而对于 IP 部分,则通过 NFS、SMB 和 iSCSI(NVMe 也即将应用于 IP)。由于我曾受过化学培训,对复杂系统交互的良好理解也有所帮助。

在我的任职过程中,我几乎对消除 IP 协议中的所有延迟源产生了痴迷,这也使得人们在存储领域寻找不同的技术解决方案(例如 SAN 和 IB)。我记得有一次,我想说服时任 CTO 在一个更大的内部论坛上通过一篇准备好的演讲,讲述减少 IP 延迟对我们产品的好处——在与他私下简短交谈后,他同意了我的观点,而这让他感到有些不悦。

这次互动促使我积极参与了 IETF,并且我至今仍在交通领域,尤其是 TCP 方面,保持着浓厚的兴趣。短暂一段时间内,我还曾担任过(较新的)AQM 工作组的共同主席,致力于推动比 RED 更现代的队列管理机制的采用。我参与 AQM 的原因是我对显式拥塞通知(ECN)产生了浓厚的兴趣,这是一种让 TCP 在不丢包的情况下根据网络的(瞬时)能力和容量进行调整的方式。通常人们认为,大多数网络设备实现的——如果它们实现了除 drop-tail 以外的机制——在完成这一任务时都是相当不充分的。

然而,由于我们位于欧洲,距离我们的工程团队在美国和印度的办公室相当远,因此我关心的领域中我们产品的改进速度较慢。在某个时候,当我提供了另一个关于 TCP 的详细缺陷报告,来解决我观察到的一些客户在运行存储流量通过 TCP/IP 时遇到的问题时,我被告知:“一旦有 FreeBSD 补丁解决这个问题,我们就可以将其引入。”

于是,我真正开始参与 FreeBSD 项目,借助我现有的联系人并努力成为一名贡献者(提供带有测试用例的补丁,解释问题所在,并提交了一些缺陷报告),最终被接受为提交者。

你是如何结识 FreeBSD 的,是什么吸引你加入 FreeBSD 项目的?

Nick: 我曾在一段时间里听说过 FreeBSD,也许甚至使用过它,但直到 2018 年加入 Axiado 后,我才真正开始深入了解 FreeBSD。那时,我们开始着手解决如何让 FreeBSD 在 RISC-V 硬件上启动的问题。我喜欢为 FreeBSD 编写代码,但我也非常喜欢这个专注、紧密的社区。感觉它是一个相对较小的社区,但却在产生着不小的影响。最后,我不想错过与这么多聪明人一起工作的机会。

Richard: 很难说;我至少在过去 20 年里肯定听说过 BSD 系列。我的第一次真正接触 FreeBSD 是通过成为 https://reviews.freebsd.org/rS206456 的一部分。我对 TCP ECN 感兴趣,并发现 BSD 系列中的原始 ECN 实现存在一个疏漏(并且 RFC3168 中没有充分记录的行为),导致它无法按预期工作。由于 FreeBSD 深深嵌入了我雇主的某些商业产品,尤其是 ONTAP 数据管理软件,因此我越来越有兴趣改善那里的情况。特别是因为 FreeBSD 曾经缺少一些重要特性(如 DSACK),这些特性在与云系统接口时非常重要,或者其某些特性并未完全达到生产级别(例如 CUBIC)。后者对于在长距离传输中提供良好的性能至关重要。NetApp 提供的解决方案基于跨越广泛距离的同步数据复制,称为 MetroCluster,这是我的产品专长。尽管 CUBIC 已经推出了一段时间,但存储类别流量仍然有一套独特的挑战。首先,存储 IO 是非常事务化的——客户端发出非常详细的请求。此外,存储 IO 通常受应用程序限制——数据仅按应用程序能处理的速度请求,而服务器无法尽可能快速地传输大对象,因为这完全取决于 TCP 和网络的限制。这与 TCP 的典型架构使用案例(无限数据、传输速度受网络/接收方限制)大不相同,也不会出现在更以 Web 为主的环境中。

你是如何成为提交者的?

Nick: Kristof Provost(kp@)和 Philip Paeps(philip@)在 Axiado 做 FreeBSD 咨询工作。在与他们合作了一段时间后,并且在我与 RISC-V 社区在 Phabricator 上互动之后,他们邀请我参加了 2019 年 10 月在圣何塞英特尔举办的我的第一次开发者大会!那次经历非常棒,那真的是我第一次看到一个团队为了一个开源项目齐心协力。再过了几个月,在 Phabricator 上的互动后,他们提出了给我一个提交权限。我简直兴奋不已!

Richard: 在 IETF 会议期间,我与许多 FreeBSD 项目的提交者有所接触。进行 TCP 改进的工作通常也意味着最终要实现并部署这些改进。因此,我已经开始编写代码来改进基于我的建议的 SACK 丢失恢复,这些建议完全在 RFC6675 中得到了实现,称为“救援重传”。大部分代码被存放在私有构建中,并未广泛发布。为数据公司工作还让我接触到与许多其他供应商提供的设备和软件的接口,其中一些供应商也在他们的软件中使用了 FreeBSD 或其部分组件。我想为 FreeBSD 的其他用户贡献缺陷修复和改进——最终也能使我的雇主和这些其他供应商的共同客户受益——通过改善商业 IT 架构中仍然典型的复杂异构环境中的行为、稳定性和互操作性。在提供了大约 40 个补丁(大部分是 bug 修复和一个重要特性——DSACK——这个特性得到了其他贡献者的广泛认可)之后,我被邀请成为提交者,rgrimes@ 和 tuexen@ 成为我的导师。我仍然对能得到如此高水平的过程和技术支持,帮助我改进对项目的贡献感到敬畏。

加入 FreeBSD 项目后的经历如何?你有什么建议给那些可能也有兴趣成为 FreeBSD 提交者的读者吗?

Nick: 这真是一次非常棒的经历,但也是一个稍微奇怪的时刻,因为有很多奇怪的世界事件发生。到目前为止,我最喜欢的部分是与世界各地的 FreeBSD 开发者们互相交流想法。每个人似乎都愿意倾听,所以我觉得自己真的有了发声的机会。我也从我的同伴们身上学到了很多!

我给那些想要成为提交者的读者的建议是,要明白这并不遥不可及。你不需要被闪电击中才能成为提交者。只需从决定自己想要贡献的领域开始,关注 Phabricator 上的上游工作,联系那些已经在做这些工作的其他人,并在自己能够的地方提供帮助!当我告诉他我有兴趣成为提交者时,我记得 philip@ 说过类似的话:“这并不像你想的那么遥远。”当时,我甚至觉得这几乎不可能,但他是对的;几个月后,我真的成了提交者!我们都是一个团队,每个人都在这里提供帮助,所以要感激那些支持你的人,并尽量利用这个机会!如果你真心想成为提交者,相信我,总会有人注意到你的。

Richard: 好吧,核心的 transport@ 小组(主要处理 TCP、一部分 SCTP 和相关方面)每隔一周开一次电话会议。当我开始在 reviews.freebsd.org 上提交真正的 diff 时,我就开始参与这些会议了。这些电话会议在讨论问题和解决方案时非常有帮助,也有助于建立声誉。正如你可以想象的那样,处理像 TCP 这样重要的内容有着非常高的要求,不能引入任何回归或性能下降。话虽如此,我早期的一个提交确实有一些意外的副作用,所以我很快就学会了如何从 HEAD 撤销提交。那里的审查过程非常严格,补丁在被接受之前会进行充分讨论。简而言之,如果一个人更想了解在开源项目中工作的流程,而不是专注于学习 TCP 基础,我并不推荐他选择 TCP 堆栈作为重点领域。然而,我找到的同行和导师都非常优秀,给出了很好的反馈。算上我最初在 ECN 问题上的间接贡献,直到我成为贡献者花了约 10 年时间。就我个人而言,我的雇主一直非常支持,因为从产品的角度来看,提升网络领域的传输现状是很重要的——即使这个过程非常缓慢,以确保不会出现任何问题。但我成为提交者所花的时间是非典型的,更多的是与我贡献的领域有关。我知道一些提交者,在他们的硕士论文期间就开始间接为 FreeBSD 项目做贡献——当时他们的教授支持他们——直到今天他们仍在继续贡献。由于硕士论文通常在一年内完成,这种情况才是更常见的。


DRU LAVIGNE 是《BSD Hacks》和《The Best of FreeBSD Basics》的作者。