Boost C++ 库

...世界上最受尊敬和设计精良的 C++ 库项目之一。 Herb SutterAndrei AlexandrescuC++ 编码标准

Boost 库提交流程

此页面描述了库开发者使库被 Boost 接受所经历的流程。

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

使库被 Boost 接受的步骤

1. 了解 Boost

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

Boost 有一套与之相关的文化,旨在通过讨论和完善的过程来鼓励高质量的库。一些库从最初的概念到通过社区评审不到两年,但大多数需要更长的时间,有时长得多。将库通过评审并纳入 Boost 需要 5 到 10 年的情况并不少见,您应该做好准备迎接所需的个人投入。

2. 确定兴趣

虽然参与其他提交的评审不是将库提交给 Boost 的先决条件,但强烈建议这样做;它将使您熟悉流程和正式评审的情感要求。没有什么比 C++ 社区中杰出的成员批评你的工作更能打击你的自信心的了,但是,这值得!

潜在的库提交者在开始设计新库之前应谨慎研究现有技术。不幸的是,有时人们带着一个他们投入了大量时间的新库来到 Boost,却发现 Boost 已经拥有了该功能,有时甚至已经拥有了数年。候选人还应该研究其他人为 Boost 开发的库 - 如果你有痒处需要挠,通常其他人也一样,并且合作开发他们的库通常比独自一人效率更高。

潜在的库提交者还应谨慎宣传、征求和评估他们库的兴趣,理想情况下在开始之前,但在提交进行评审之前肯定要这样做。即使是设计精良的库,如果主题没有足够的兴趣,也可能无法通过评审;我们只能评审有足够吸引力以形成可行的同行评审的库。确保有足够的人对您潜在的库感兴趣,这将大有帮助。

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

发送到 Boost 开发者邮件列表的消息可能很简单,例如“有人对解决旅行商问题的线性时间库感兴趣吗?”

提供一些进一步的描述或代码片段可能会有所帮助。顺便说一下,邮件列表上消息的首选格式是纯文本;而不是富文本、HTML 等。

避免在邮件列表中发布冗长的描述、文档或代码,并且请勿附加任何附件。提供冗长材料的最佳位置是通过网络链接。诸如 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. 正式评审

在正式评审开始之前,请仔细检查您的库。验证每个代码示例是否有效,所有单元测试是否至少在两个编译器上和至少两个主要操作系统上通过,并使用拼写和语法检查器检查您的文档。

请勿在评审期间修改库的主分支。相反,请修改单独的开发分支以响应反馈和评审。对于较大的工作项目,请在您的错误跟踪器上打开问题,以便感兴趣的人员可以跟踪解决提出的特定问题。

评审经理将考虑社区成员的所有评审,并最终决定是否拒绝、有条件接受或无条件接受您的库。他们将公开发布一份总结决定的报告。如果接受附带条件,您需要实现这些条件,否则将进行额外的正式评审。

8. Boost 网站发布

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

9. 人物页面

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

10. 生命周期

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

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