PEP 541:Python包名衝突了怎麼辦?
Python部落(python.freelycode.com)組織翻譯,禁止轉載,歡迎轉發。
PEP 541 –包索引名的保留
PEP: | 541 |
標題: | 包索引名的保留 |
作者: | ?ukasz Langa |
BDFL-代理: | Mark Mangoba |
討論發布處: | distutils-sig |
狀態: | 最終 |
類型: | 流程 |
創建時間: | 2017 年 1 月 12 日 |
發布歷史: | |
解決方案: | https://mail.python.org/pipermail/distutils-sig/2018-March/032089.html |
內容
摘要
背景
審批流程
說明
實施辦法
可達性
廢棄的項目
廢棄項目的繼續維護
廢棄項目的刪除
活動項目的命名衝突解決方案
無效項目
知識產權策略
Python Software Foundation 的角色
現有技術
否決的提案
參考
版權
聲明
摘要
本 PEP 提議擴展包索引[2] 的使用條款 [1],闡明包所有者對包索引中的包名稱,尤其是有關衝突解決方案中的所有權的期望。
現有的包庫,如 CPAN [3], NPM [4],以及 GitHub [5] 將作為該領域的現行措施進行研究。
背景
由於目前索引中的包名稱共同使用單一的扁平命名空間,因此唯一名稱將是有限的資源。隨著包索引使用時間越來越久,有關同一名稱的現有用法與建議的不同用法的衝突不斷湧現。
該文檔旨在為大多數此類典型衝突提供一個總體的指導。
審批流程
由於該規定的應用可能對 Python Software Foundation 產生潛在的法律後果,所以審批的流程比其他大多數 PEP 要嚴格。
不同於以往直接接受 PEP,指定的 BDFL 代理需要將接受的意向推薦給 PSF 的打包工作組。諮詢過 PSF 的總法律顧問後,是否採用該規定將由工作組投票決定。
該正式審批流程將適用於首次採用的規定以及未來的任何修訂。
說明
本文檔背後的主要思想是包索引服務於社區。請每個用戶根據使用條款將內容上載到程序包索引,並了解這完全由用戶承擔風險。
雖然包索引不是備份服務,但包索引的維護者會盡最大努力以其發布的形式無限期地保持該內容的可訪問性。但是,在極少數情況下,較大社區的需求可能超過個人對包名稱所有權的期望。
本文檔包含的使用情況如下:
廢棄的項目:由一組不同用戶負責繼續維護,或者從索引中刪除以備其他項目使用。
活動的項目:解決針對某一名稱的爭議。
無效項目:受知識產權侵權保護的項目。
有關擴展使用條款的提案,會在本文檔的實施辦法部分詳細闡述。該提案將會作為一個單獨的文檔發布在包索引中。可通過首頁頁面腳註部分的現有使用條款旁的鏈接跳轉到該文檔。
實施辦法
可達性
包索引的使用者僅需要承擔以下責任,即當其項目出現問題時,包索引維護者可聯繫到該用戶。在任何需要聯繫用戶的情況下,維護者將至少嘗試以下三種方式與用戶聯繫取得聯繫:
包索引中用戶個人資料中電子郵件地址;
上傳到索引的已有項目的作者欄位中列出的電子郵件地址;以及
在索引上的已有項目文檔中或在主頁中所能找到的任意電子郵件地址。
六周後,維護者將不再嘗試聯繫用戶。
廢棄的項目
當項目滿足以下所有條件時將被視為廢棄的項目:
無法聯繫到所有者(請參照上面的可達性部分);
在過去 12 個月之內沒有發布任何內容;
主頁上項目所有者沒有任何活動(或未列出主頁)。
其他所有項目將被視為活動項目。
廢棄項目的繼續維護
如果申請者希望繼續維護廢棄的項目,如果以下所有條件都滿足,則索引名稱將被轉移:
根據以上規則,涉及項目已被視為廢棄;
申請者能夠證明其聯繫現有的所有者所做的嘗試均失敗;
申請者能夠證明其在自己項目分支上所做的改進;
申請者能夠證明為什麼其項目分支不能使用其他名稱;以及
包索引的維護者沒有收到任何其他預約。
在任何情況下都不得違背可聯繫上的所有者的意願將名稱重新分配給他人。
廢棄項目的刪除
項目不會僅因為廢棄而從包索引中刪除。上傳到包索引的項目具有其內在的歷史價值。
當以下所有條件均滿足時,可將廢棄的項目轉移給新的所有者以重新利用其名稱:
根據以上所述規則可將項目認定為廢棄;
申請者能夠證明其聯繫現有的所有者所做的嘗試均失敗;
申請者能夠證明其建議重複使用該名稱的項目已經存在,並符合顯著性要求;
申請者能夠證明為什麼其項目分支不能使用其他名稱;以及
包索引中現有包的下載數據統計顯示該項目已不再使用;以及
包索引的維護者沒有收到任何其他預約。
活動項目的名稱衝突解決方案
包索引的維護者不是活動項目爭議的仲裁者。有關活動項目名稱的爭議有許多可能的場景,下面列出了一些現實中的實例,這些實例不具有排他性。下列實例均不滿足包名稱轉移的條件:
用戶 A 和用戶 B 共有項目 X。經過一段時間後,二人分開並且二人均希望以 X 繼續該項目。
用戶 A 擁有項目 X 但未上傳到包索引。用戶 B 在包索引中創建了以 X 命名的包。經過一段時間,A 希望在包索引上發布項目 X 但發現該名稱已經被佔用。即使 A 用戶的項目已經非常有名而 B 用戶的項目並不出名,也是如此。
用戶 A 在包索引中發布了項目 X。經過一段時間後,用戶 B 提交了修復 Bug 的提議但用戶 A 並沒有發布新版本。即使用戶 A 開始同意發布新版本但之後反悔,並且即使用戶 B 所做的更改已經更新到項目 X 的源代碼池中,也是如此。
再次申明,以上實例不具有排他性。包索引維護者建議用戶通過相互尊重的方式溝通解決問題(請參照PSF 行為守則 [6])。
無效項目
在包索引上發布的項目滿足以下任意一條即被視為無效並將從索引中刪除:
項目未遵守使用條款;
項目是惡意軟體(旨在利用或損害系統或用戶);
項目包含非法內容;
項目違反版權、商標、專利或許可;
項目非法佔用名稱(包不具備任何功能或為空);
項目名稱、描述或內容違反行為守則;或者
項目濫用包索引。
包索引維護者會預先聲明某些包名稱由於安全原因不可用。
知識產權策略
對於第三方有關知識產權侵權行為的索賠,Python Software Foundation 及包索引維護者的策略是適當回應。對上傳的包進行任何類型的知識產權侵權的篩選並非 Python Software Foundation 及包索引維護者的策略。
對於可能存在侵權行為的包可報告給 legal@python.org, Python Software Foundation 的法律顧問將給予適當的回應。Python Software Foundation可自行決定將軟體包刪除或轉讓給新所有者,以解決侵權索賠。
在包裝索引上發布的項目符合下列任何一項,可被視為侵權,可從索引中刪除或轉讓給新的所有者:
項目包含來自第三方的未經許可的受版權保護材料,並根據 DMCA 進行適當的索賠;
項目未按照規範和正當使用規定的方式使用第三方商標;
項目明顯涉及專利系統或流程,並且是投訴的對象;或者
項目處在活動的訴訟中。
如果發生知識產權侵權投訴,投訴副本將發送給包所有者。在某些情況下,包索引維護者可能會在所有者響應之前採取操作。
Python Software Foundation的角色
Python Software Foundation [7] 是一個非贏利性法律實體,它將包索引作為社區服務提供。
在問題不夠清楚的情況下,包索引維護者可將本文檔中所述問題上報給打包工作組以更好解決問題。有些決定,特別是涉及違反行為守則或法律要求的決定,需要董事會做進一步判決。董事會所提供建議將發送給打包工作組 [8] 審閱。
打包工作組在本文檔涉及的任何爭議中擁有最終發言權,即使未滿足此處列出的所有要求,也可以在仔細考慮後決定重新分配項目或從包索引中刪除項目。
現行措施
NPM 包含一個可從首頁包名稱爭議鏈接處跳轉到的單獨部分。該部分被稱作「活文件」,截至 2017 年 1 月,其內容可概述如下:
禁止非法佔用包名;
希望重新利用項目名稱的用戶需要聯繫該名稱的現有作者,並抄送給support@npmjs.com;
所有聯繫人必須遵守 NPM 行為守則;
經過幾周後仍未有解決方案的,npm inc.擁有該問題的最終話語權。
CPAN允許任何用戶上傳具有相同名稱的模塊。PAUSE是一個相關的索引,它僅列出由主要維護者或列出的共同維護者上傳的模塊。CPAN文檔不處理其他爭議。
GitHub 的服務條款包含不符合一般使用條件的行為的詳盡列表。雖然 GitHub 沒有明文規定,但其確實同意用戶通過歸檔廢棄的帳戶並允許其他用戶或組織重命名其帳戶來收回已放棄的帳戶名稱。該行為是在個案基礎上進行的。
否決的提案
最初的方法是持積極的態度,希望在沒有明文規定的情況下實時解決問題。但這種方法不能持續。缺乏關於解決名稱衝突的普遍可用的書面規定正在造成不必要的緊張局面。從用戶的角度來看,包索引維護者在沒有書面規定的情況下所做的決定可能顯得武斷。從包索引維護者的角度來看,由於缺乏明確的規定可能造成無意的傷害,解決名稱衝突變成了一項壓力巨大的任務。
參考
[1] | Python 包索引使用條款 (https://pypi.org/policy/terms-of-use/) |
[2] | Python 包索引 (https://pypi.org/) |
[3] | The Comprehensive Perl Archive Network (http://www.cpan.org/) |
[4] | Node Package Manager (https://www.npmjs.com/package/left-pad) |
[5] | GitHub (https://github.com/) |
[6] | Python 社區行為守則 (https://www.python.org/psf/codeofconduct/) |
[7] | Python Software Foundation (https://www.python.org/psf/) |
[8] | Python 打包工作組 (https://wiki.python.org/psf/PackagingWG/) |
版權
此文檔已放在公共域中。
聲明
Distutils 和 Catalog SIG 的眾多參與者多年來貢獻的想法。
※最新的10個優質Python開源項目
※在Python 3.5中通過零用戶空間內存的套接字進行文件傳輸
TAG:Python部落 |