> For the complete documentation index, see [llms.txt](https://freebsd-journal-cn.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://freebsd-journal-cn.bsdcn.org/2023-1112-freebsd-14.0/xin-de-port-ti-jiao-zhe-oel-bodenmann-jbofreebsd.org.md).

# 新的 Ports 提交者：Joel Bodenmann (

* 原文：[New Ports Committer: Joel Bodenmann](https://freebsdfoundation.org/our-work/journal/browser-based-edition/freebsd-14-0/new-ports-committer-joel-bodenmann/)
* 作者：**Tom Jones**

![Joel Bodenmann](https://430908880-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAl0aZXzJcYVyK5yrIo4q%2Fuploads%2Fgit-blob-aaf3f0a8be065db138e75445a20c626446e71941%2Fxin-de-port-ti-jiao-zhe-1.jpg?alt=media)

**TJ：** 你好，Joel，欢迎你加入 FreeBSD 项目。能否介绍一下你自己和你喜欢从事的技术项目？

**JBO：** 我是电子工程师，主要从事嵌入式系统。通常，我喜欢处理为执行特定任务而设计的系统，而非通用计算。

**TJ：** FreeBSD 并不以嵌入式系统开发著称，你尝试过在 FreeBSD 上工作或做项目吗？

**JBO：** 我不敢苟同。我之所以选择 FreeBSD，正是为了将其用作嵌入式系统开发平台。虽然在过去几年，“嵌入式”世界发生了巨变，但我通常处理的嵌入式系统是资源相对较低、实时性强的系统（即典型的基于微控制器的系统，CPU 速度 < 120MHz；RAM < 128kB）。因此，这些系统并非直接设计用于运行 FreeBSD；而且实际上，也不会运行什么 Linux（亦不符合要求）。

你仍然需要一台（桌面）主机系统做实际开发，以及周围的支持基础设施。我通常参与的这些嵌入式项目，从首次会议到部署产品可能要花几年的时间。我对作为开发平台的 Linux 不满之处在于，Linux 生态系统始终处于不断动荡的状态。你在基于 Linux 的系统上配置好开发工作流程和环境，仅仅几个月后，就不得不升级，这就需要重新验证所有的工作流程。

FreeBSD 以其稳定性和连贯性而闻名。FreeBSD 不会因为旧的系统或组件“不够好”就从头实现新的系统或组件，而是努力使这些系统和工具具有可维护性和可扩展性，从而大大减少了开发系统管理的开销。

对于某些项目，我的确需要非微控制器系统，微控制器系统与之通信（即长期数据记录，编排等）。在这种情况下，FreeBSD 同样具有这些优势：你设置和验证系统一次，然后，在接下来的几年里，只需做几次较小的维护任务，而对于基于 Linux 的系统来说，我从来不知道第二天会遇到什么情况。

粗略来说，我喜欢把时间花在实际开发和工程上，而不是因为底层的 `init` 系统、音频子系统、hypervisor 和最流行的容器系统（或类似系统）在两年内变了三次，就一直在更新、调试和重新验证我的开发平台。FreeBSD 满足了所有这些要求。自从我将所有服务器、网络基础设施和工作站迁到 FreeBSD 后，我再也不用猜测第二天进入办公室后，我的开发基础设施是否仍然可以正常启动和工作。FreeBSD 稳如磐石。

**TJ：** 你是否在 Ports 中有特定的关注领域？

**JBO：** 到目前为止，我主要专注于处理“伸手就能解决的东西”，这样做的想法是让我熟悉 Ports 系统的基础知识和工作流程及基础设施。与此同时，这也释放了更有经验的 Ports 提交者的资源，让他们可以将精力专注于更复杂的事务。

随着我越来越熟悉，我希望在接下来的一年里承担更复杂的任务，比如更新拥有许多用户的库的 Ports。

因此，我对你的问题的回答是：不，我尽力帮忙。我毫不怀疑，随着经验的丰富，我很快就会找到更大的工作来做 🙂

**TJ：** Ports 非常庞大，许多小工具能承担繁重的工作。到目前为止，你做过的一些容易上手的 Port 是什么？你有什么建议可以帮助其他人找到容易上手的 Port 和更容易的首个 Port 吗？

**JBO：** 就我个人而言，迄今为止，我认为有两种容易上手的目标：

1. 带有已获维护者批准补丁的 PR，这些补丁将现有 Port 更新到新的上游次要版本。在这里，我建议刚开始时避开那些有大量依赖 Port 的“基础”Port，以减少触发大规模故障的风险。我的理由是简单的上游次要版本升级几乎不会出错，维护者倾向于小心避免破坏他们的 Port，而且他们已经有经验，知道要特别注意他们的上游相关事项。
2. 引入新 Port 的 PR。这些 PR 往往是“低优先级”，因此压力相对较小，不必急于让它们落地。此外，我认为这是了解 Ports 框架提供的各种系统和机制的绝佳途径，这些我可能之前尚未接触过。

截至目前，我所做的工作：我有意尝试触及各个领域的各种 Port。我不专注于特定类别或类型的 Port。相反，我尝试处理这样的 PR——对应的 Port 依赖了我尚未接触过的东西。这是熟悉各种 `Mk/Uses/*` 脚本的绝佳方式。

**TJ：** 当你展望 FreeBSD 的未来时，从维护者的角度来看，你认为项目的主要优先事项应该是什么？

**JBO：** 我认为使 FreeBSD 对各种用户如此具有吸引力的重要原因是我们通常遵循更传统的原则。FreeBSD 项目倾向于采取“稳扎稳打”的方式，而不是不断跳上最新的炒作列车重新造轮子。当然，这种方法也有缺点。例如，Ports 框架可能缺少一些被现代标准视为“基本”的功能，例如子包，推荐可选安装等。但我认为，正是因为这些事情不急于求成，我们最终得到了更稳定和易于维护的系统。

因此，与其回答你的问题并给出需要完成的具体步骤和目标清单，我强烈建议忠于这种方法。任何最终被证明是必要的事情都会发生，但通常会以非强制的方式发生，以便做适当的设计、实施和测试，从而有效利用我们有限的人力。

只要不急于求成，不强求进展，就能规避很多子弹。在我看来，“慢就是顺，顺就是快”这句话在这儿适用。

***

**Tom Jones** 是 FreeBSD 提交者，专注于保持网络堆栈快速运行。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://freebsd-journal-cn.bsdcn.org/2023-1112-freebsd-14.0/xin-de-port-ti-jiao-zhe-oel-bodenmann-jbofreebsd.org.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
