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 陣列而不是花哨的門面物件[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://scipy-docs.dev.org.tw/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/