SKIP 2 — scikit-image 宣言#
- 作者:
Juan Nunez-Iglesias <juan.nunez-iglesias@monash.edu>
- 作者:
Stéfan van der Walt <stefanv@berkeley.edu>
- 作者:
Josh Warner
- 作者:
François Boulogne
- 作者:
Emmanuelle Gouillart
- 作者:
Mark Harfouche
- 作者:
Lars Grüter
- 作者:
Egor Panfilov
- 作者:
Gregory Lee
- 状态:
活跃
- 类型:
流程
- 创建:
2018-12-08
- 解决:
- 决议:
- skimage-版本:
0.16
摘要#
scikit-image 应采用以下文档作为其宣言。此宣言将在 scikit-image 首页和自述文件以及贡献者和核心开发者指南中占据突出位置。有关 API 和库未来的决策将参考此文档。(请参阅 SKIP 1 — scikit-image 治理和决策。)
2018 年 7 月,我(Juan)发布了一篇博文,广泛概述了我对 scikit-image 路线图的期望 [1],但在最终确定之前请求了社区的意见。我认为我们已经收集了足够长的意见,可以继续正式采纳。大多数评论都是积极的,因此在下文中,我将仅在“被拒绝的想法”下总结“负面”评论。
详细说明#
(或:此提案解决了什么问题?)
在过去的几年里,scikit-image 变得有点“漂泊不定”,新的和旧的贡献者不断涌现,在当时添加他们需要的小部分内容,然后又消失一段时间。这很好,我们希望鼓励更多这样的贡献,但它也缺乏方向。此外,如果没有集中努力的路线图,许多贡献就会被搁置一旁,因为新贡献者很难达到我们严格(且大多未写成文字)的代码标准。
实现#
我们的使命#
scikit-image 旨在成为 Python 中科学图像分析的参考库。我们通过以下方式实现这一目标
易于使用和安装。我们在承担新依赖项方面非常谨慎,有时会剔除现有依赖项,或者使它们成为可选的。我们 API 中的所有函数都有详尽的文档字符串,阐明了预期的输入和输出。
提供一致的 API。从概念上讲,相同的参数在函数签名中具有相同的名称和位置。
确保正确性。测试覆盖率接近 100%,并且代码在包含在库中之前至少由两位核心开发者审查。
关注用户数据。我们有一个功能性的 [2] API,并且除非明确指示,否则不会修改输入数组。
通过广泛的教学文档促进图像处理方面的教育。
我们的价值观#
我们具有包容性。我们继续欢迎和指导正在做出首次贡献的新人。
我们以社区为导向。关于 API 和功能的决策由用户的需求驱动,而不是由核心团队的意愿驱动。(请参阅 SKIP 1 — scikit-image 治理和决策。)
我们主要服务于科学应用,而不是类似 Photoshop 或 GIMP 的“消费级”图像编辑。这通常意味着优先考虑 n 维数据支持,并拒绝对科学价值较低的“炫目”滤镜的实现。
我们重视简单易读的实现,而不是追求极致的性能。易于理解的易读代码,对于新手和维护者来说,都更容易贡献新代码并防止错误。这意味着如果它可以将代码行减少两倍,例如,我们更倾向于接受 20% 的速度下降。
我们重视教育和文档。所有函数都应具有 NumPy 风格的文档字符串 [3],最好有示例,以及展示该函数如何在科学应用中使用的图库示例。核心开发者积极参与完成文档示例。
我们不做魔法。我们使用 NumPy 数组而不是花哨的 façade 对象 [12],并且我们更倾向于教育用户而不是代表他们做出决定。这并不排除合理的默认值。 [4]
本文档#
与 Python 之禅 [5] 和 PEP8 指导大多数 Python 代码的样式和实现细节一样,本指南旨在指导有关 scikit-image 未来决策,无论是代码风格、是否接受新功能,还是是否承担新依赖项等。
参考文献#
要了解更多有关本文档历史的信息,请阅读以下内容
脚注
向后兼容性#
此 SKIP 正式化了 scikit-image 未成文的文化,因此它不会引起任何向后兼容性问题。
替代方案#
原始讨论中的两个主题最终被拒绝,详述如下
处理元数据#
在我的原始帖子中,我建议 scikit-image 应该在 1.0 之前具备某种形式的元数据处理功能。Mark Harfouche、Curtis Rueden 和 Dan Allan 等人建议 (a) scikit-image 可能不需要处理元数据,而是可以专注于成为一个强大的低级库,另一个像 XArray 这样的库可以使用它来包含元数据处理,以及 (b) 无论如何,元数据支持可以在以后添加,而不会破坏 1.0 API。我认为这些都是非常好的观点,此外,元数据处理非常困难,我不介意暂时将此问题排除在外。
魔法思维#
Philipp Hanslovsky 建议 [9],关于“做魔法”,在某些情况下是可取的,一个好的解决方案是在非魔法层之上构建一个魔法层。我同意这种评估,但是,在 1.0 之前,scikit-image 应该保持非魔法层。
讨论#
请参阅下面的参考文献。
参考文献#
https://ilovesymposia.com/2018/07/13/the-road-to-scikit-image-1-0/
https://docs.scipy.org.cn/doc/numpy/docs/howto_document.html
https://forum.image.sc/t/request-for-comment-road-to-scikit-image-1-0/20099/4
https://forum.image.sc/t/request-for-comment-road-to-scikit-image-1-0/20099
https://forum.image.sc/t/request-for-comment-road-to-scikit-image-1-0/20099/3
CC0 1.0 通用 (CC0 1.0) 公共领域奉献, https://creativecommons.org/publicdomain/zero/1.0/
版权#
本文档根据知识共享 CC0 许可证 [10] 奉献给公共领域。根据 CC0+BY [11],在适当情况下鼓励署名此来源。