我们的使命#

scikit-image 旨在成为 Python 中科学图像分析的参考库。我们通过以下方式实现这一目标:

  • 易于使用和安装。我们在引入新依赖时非常谨慎,有时会剔除现有的依赖,或者将它们设为可选。我们API中的所有函数都有详细的文档字符串,明确说明预期的输入和输出。

  • 提供一个一致的API。概念上相同的参数在函数签名中具有相同的名字和位置。

  • 确保正确性。测试覆盖率接近100%,代码在被纳入库之前至少由两名核心开发者审查。

  • 关心用户的数据。我们有一个 [功能性 API][functional],除非明确指示,否则不会修改输入数组。

  • 推广图像处理教育,提供广泛的教材文档。

我们的价值观


  • 我们是包容的。我们继续欢迎并指导那些正在做出首次贡献的新人。

  • 我们是社区驱动的。关于API和功能的决策是由我们用户的需求驱动的,而不是由核心团队的突发奇想决定的。(参见 SKIP 1 — scikit-image 治理和决策制定。)

  • 我们主要服务于科学应用,而不是像 Photoshop 或 GIMP 这样的“消费者”图像编辑。这通常意味着优先支持 n 维数据,并拒绝实现那些科学价值不大的“炫目”滤镜。

  • 我们重视简单、可读的实现,而不是追求极致的性能。易于理解的可读代码,无论是对新加入者还是维护者,都使得贡献新代码以及预防错误变得更加容易。这意味着,例如,如果我们能将代码行数减少一半,即使会导致20%的性能下降,我们也会选择这样做。

  • 我们重视教育和文档。所有函数都应该有 NumPy 风格的 [docstrings][numpydoc],最好带有示例,以及展示该函数在科学应用中如何使用的图库示例。核心开发者积极参与完成文档示例。

  • 我们不做魔术。我们使用 NumPy 数组而不是花哨的外观对象 [1],我们更倾向于教育用户而不是替他们做决定。这并不排除 [合理的默认值][defaults]。

本文档#

与 [Python之禅][zen] 和 PEP8 指导大多数 Python 代码的风格和实现细节的方式类似,本指南旨在指导关于 scikit-image 未来的决策,无论是代码风格、是否接受新功能,还是是否引入新依赖,等等。

参考文献#

要了解更多关于本文档历史的详细信息,请阅读以下内容:

  • [原始博客文章][blog]

  • [GitHub 问题][issue]

  • [The image.sc 论坛帖子][forum]

  • [SKIP GitHub 拉取请求][skip_pr]