Boost C++ 程序库

...世界上最受尊敬和专业设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

Boost 库提交流程

此页面描述了库开发者为了使其库被 Boost 接受而需要经历的流程。

有关内容问题,请参阅 Boost 库要求和指南 页面。

使库被 Boost 接受的步骤

1. 了解 Boost

关注 主要开发者邮件列表 中的帖子一段时间,或浏览 存档。探索 网站。了解 要求。阅读此页面的其余部分以了解流程。在网上搜索以了解将库引入 Boost 所需的投入。

Boost 有一种文化,旨在通过讨论和改进的过程来鼓励高质量的库。一些库从最初的概念到通过社区复审不到两年,但大多数库需要更长的时间,有时会更长。五年到十年才能使一个库通过复审并进入 Boost 并非闻所未闻,您应该为所需的个人投入做好准备。

2. 确定兴趣

虽然参与其他提交的复审不是向 Boost 提交库的先决条件,但强烈建议这样做;它将使您熟悉正式复审的流程和情感需求。没有什么比 C++ 社区的杰出成员批评您的工作更令人泄气的了,但是,唉,这是值得的!

潜在的库提交者在开始设计新库之前,应仔细研究现有技术。不幸的是,有时人们带着他们投入了大量时间的新库来到 Boost,却发现 Boost 已经拥有该功能,有时已经拥有多年。候选人还应研究其他人正在开发的、旨在用于 Boost 的库 - 如果您有迫切的需求,通常其他人也有,并且协作开发他们的库通常比单独进行效率更高。

潜在的库提交者还应注意宣传、征求和评估对其库的兴趣,最好在开始之前,但肯定在提交复审之前。即使是设计精良的库,如果对主题 matter 没有足够的兴趣,也可能无法通过复审;我们只能复审那些有足够吸引力以形成可行的同行复审的库。确保有足够多的人对您潜在的库感兴趣,对于确保这一点大有帮助。

有很多地方可以宣传和征求对库的意见。Boost 开发者 邮件列表 应该是您评估对可能的新的 C++ 库的兴趣的第一站。准备好调整您的设计和重点,直到您提议的库找到吸引力。其他可用于评估对库的兴趣的地方可能是 Reddit/r/cpp

给 Boost 开发者邮件列表的消息可以很简单,例如“是否有人对在线性时间内解决旅行商问题的库感兴趣?”

更详细的描述或代码片段可能会有所帮助。顺便说一句,邮件列表消息的首选格式是纯文本;而不是富文本、HTML 等。

避免在邮件列表中发布冗长的描述、文档或代码,并且请勿添加附件。提供冗长材料的最佳位置是通过 Web 链接。像 sourceforge、github、google code 和 bitbucket 这样的项目托管服务非常适合此目的。

3. 开始开发

如果对初始查询的回复表明有兴趣,那么务必公开您的库(如果您尚未这样做)。

请将您的代码提交到版本控制系统(如 Git),并在公共网站(如 Github)上以 HTML 格式提供您的文档。强烈建议使用问题跟踪器,例如 Github 提供的跟踪器。

您的库应包含材料,就像它在 boost.org 网站上一样。您的库越接近网站的最终目录结构和格式越好。这使得复审者可以简单地将您的代码复制到 Boost 发行版中进行测试。

请验证您的库在至少两个编译器下编译和运行。这可以消除明显的移植性问题。

建议您在 Boost 软件许可下发布您的代码;有关更多信息,请参阅 要求 页面。

4. 改进

讨论、改进、重写。重复直到满意。

此过程的确切细节差异很大。通常它是公开的,在邮件列表中,但经常在私人电子邮件中进行讨论。对于某些库,该过程很快结束,但对于其他库,该过程会持续数月。这通常具有挑战性,有时会转向完全出乎意料的方向。

过去的邮件 存档 是了解此过程如何为其他 Boost 库工作的一种方法。

要了解现有 Boost 库中脚本和代码的一些最佳实践示例,请参阅 Boost wiki 上的 最佳实践手册

5. 获得复审附议

当您认为您的库已准备好进入 Boost 时,您需要找到至少一位(最好是几位)Boost 社区成员,他们愿意公开支持您的库进入 Boost。实现此目的的一个简单方法是在 Boost 开发者邮件列表 上发布您库的简短描述、指向其 github 和文档的链接,以及对支持的请求。

预计那些支持库进行复审的人员至少会对库是否适合 Boost 进行粗略检查,包括文档、与 Boost 其余部分以及有用性的契合度。公开支持库进行复审意味着从初步来看,他们相信该库有合理的机会在正式复审期间被接受。期望这些支持者自己将在正式复审期间对库进行复审,但这并非强制性的。

一旦您有了公开支持您的库进行复审的人员列表,请发送电子邮件给 复审向导,请求将您的库添加到 复审队列,其中将显示以下信息

  • 提交
  • 提交者
  • 源代码链接 (GitHub)、文档(HTML 网站)和任何孵化器条目
  • 支持此提交进行复审的成员姓名
  • 复审经理
  • 复审日期

为了避免任何利益冲突,潜在的复审经理应向 Boost 社区披露他们是否与库的作者或库本身有任何关系。

6. 寻找复审经理

为了安排正式复审,作者必须找到一位有能力的志愿者来管理复审。这个人应该对库领域有知识,并且有复审过程的经验。有关复审经理的职责,请参阅 正式复审流程

作者可以通过在开发者列表上讨论库来找到对管理复审感兴趣的社区成员。如果没有人主动承担管理复审的责任,则可以联系对库表现出兴趣的经验丰富的 Boost 成员。请考虑到管理复审是一项严肃的承诺;因此,最好在线下联系该成员。

如果在上述方法中使用 3 周后仍找不到复审经理,并且您的提交目标是最终标准化,则有一份 Boost 常客名单,他们也是 WG21 委员会成员,他们自愿在这种情况下担任复审经理。请按列出的顺序尝试他们。他们是:Zach Laine、Micheal Caisse、Matt Calabrese、Edward Diener、Louis Dionne、Vinnie Falco、Glen Fernandes 和 David Sankel。

一旦确定了潜在的复审经理,请 联系复审向导 以获得批准。向导根据复审经理在 Boost 社区中的参与程度来批准复审经理。

复审向导将与作者和复审经理协调,以安排对双方都方便的日期。

有关详细信息,请参阅 正式复审流程

7. 正式复审

在您的正式复审开始之前,请对您的库进行双重、三重和四重检查。验证每个代码示例都有效,所有单元测试都在至少两个编译器和至少两个主要操作系统上通过,并使用拼写和语法检查器检查您的文档。

请不要在复审期间修改主分支上的库。相反,请修改单独的 develop 分支以响应反馈和复审。对于较大的工作项,请在您的问题跟踪器上打开问题,以便感兴趣的人可以跟踪已提出的特定问题的修复情况。

复审经理将考虑社区成员的所有复审意见,并就您的库是被拒绝、有条件接受还是无条件接受做出决定。他们将公开发布一份总结该决定的报告。如果接受附带条件,您将需要实施这些条件,否则将进行额外的正式复审。

8. Boost 网站发布

一旦接受的库准备好包含在 Boost 网站上,提交者通常会被授予 Boost 存储库写入权限,并期望在那里检入和维护库。如果您需要写入权限或无法直接使用存储库,请联系版主。

9. 成员页面

如果 boost.org 网站上还没有您的个人简介和照片(可选,最好是不太严肃的照片!),请将它们发送给 Boost 网站管理员。是否在简介中包含您的电子邮件地址或其他联系信息由您决定。首选图片格式为 .jpg,但其他常用格式也是可以接受的。首选图像尺寸为 500x375,但网站管理员拥有照片编辑软件,可以在必要时进行图像准备。

10. 生命周期

库是软件;如果不维护,它们会随着时间的推移而失去价值。在 Boost 开发者或用户邮件列表上的帖子可以提醒您潜在的维护需求;请计划长期维护您的库。如果您不再能够或希望维护您的库,请在 Boost 开发者邮件列表上发布消息,请求新的维护者自愿接管,然后花时间帮助他们接管。

孤立的库将由 社区维护团队 负责。