當前位置:
首頁 > 知識 > Django意欲改革管理機構和模式

Django意欲改革管理機構和模式

Django意欲改革管理機構和模式

如果你不是那種密切關注Django開發內部細節的人,那麼你可能不知道有一份提議草案要徹底改變該項目的管理。GitHub和郵件列表上一直在討論這個問題,但是今天我想花點時間來解釋一下這個提議是做什麼的,以及它試圖解決哪些問題。就讓我們一探究竟吧。

Django怎麼了?

Django這個web框架做得非常好。它是一個穩定的、流行的軟體。Django開源項目目前還不錯,但是有一些問題需要解決。最大的問題是大多數大型開源項目遲早都會遇到的一個問題:難以招募和留住足夠多的活躍貢獻者。

一些大型的開源項目通過有效地獲得企業贊助來規避這一問題: 藉由依賴這些開源軟體的公司員工幫忙維護項目以確保持續發展。我想Django早期也是以這種方式生存,因為它是由其開發公司開源的,而且幾個關鍵的貢獻者後來在那裡工作了一段時間,但是這並沒有真正成為一個長期的計劃。

這意味著Django完全依靠滿腔熱情的貢獻者,他們中的大多數人並沒有從此項目中獲得報酬,而這些貢獻者人數也越來越少了。近幾年,隨著Django項目越來越成熟,一些簡單的Bug修復或小功能添加的需求已經越來越少了,而這些操作本來是吸納新貢獻者的一個很好的途徑,這也就是說,Django的成功也是造成其貢獻者短缺的原因之一。

這並不意味著Django現在的狀況很糟糕,但它確實意味著Django在未來可能會很糟糕;一段時間以來,該項目未能以足夠的速度引入新的提交者,來取代那些變得不那麼活躍甚至完全不活躍的提交者,而且這種情況完全是不可持續的。

除此之外,Django在從整個用戶群中吸引貢獻者方面做得並不好。Django本身在全世界很受歡迎,這歸功於多種多樣的免費研討會和課程,這些研討會和課程是一種為發展中國家萌芽期程序員進行的關於軟體開發的一般介紹,以及頻繁地對許多決定開始技術生涯的婦女介紹編程。然而,目前活躍提交者的名單一點也體現不出這點,只有少數婦女曾經是Django的重要技術貢獻者,更不用說提交者了,而且目前沒有一名婦女是活躍的,並且目前活躍的提交者名單似乎完全來自歐洲、北美和澳大利亞。

這是一個強烈的信號,表明該項目沒有很好地將使用Django的開發人員轉變為從事於Django的開發人員。從整個Django用戶群體中獲取貢獻是此項目長期生存的必要條件,也是避免單一文化團隊容易遇到的問題的關鍵。

有些事情需要改變,這就是為什麼這個提議會存在,以及為什麼改革/重組Django核心團隊在過去幾年裡一直是各種與Django有關的郵件列表上的一個常見主題;我正在描述的這個提議是試圖把討論推進到實際行動。這不是靈丹妙藥,也不會在一夜之間解決Django的所有問題。但是我相信這是解決這些問題的第一步。

一點背景知識

要理解所提議的內容,了解Django中角色和管理的一些歷史是很有用的,因為Django一直運行到現在。

起初,Adrian、Jacob、Simon和Wilson為他們的僱主(堪薩斯州一家名為Lawrence Journal-World of Lawrence的報紙)開發了一些工具,使快速構建web應用程序變得容易。他們獲准在BSD許可證下將其開源,並將其命名為「Django」,並於2005年中旬向公眾公開。隨著社區貢獻的蜂擁而來,他們將提交權利授予了更多的一些人,對第一任管理結構進行了合併:Adrian和Jacob擔任「BDFLs」(仁慈的獨裁者,借鑒了Python語言中Guido van Rossum的頭銜),但是他們大多情況是在其他任何方式無法做出決定時進行拍板。還有一些提交者可以隨意添加或修改Django中的代碼,並幫助分類、審查和合併來自更廣泛社區的貢獻代碼。

2014年,Adrian和Jacob宣布他們打算從BDFL卸任。這並沒有顯著改變Django的管理,因為很少需要他們行使決策權,但是作為一種死鎖避免的措施,他們被一個新的小組取代:Django技術委員會。技術委員會由提交者組成,由提交者選出,每個發布周期選舉一次。技術委員會填補了BDFLs過去所扮演的角色,充當了最終的裁判和決策者,並擁有向Django添加新提交者的否決權(該權利從未行使過)。

Journal-World最初擁有Django,因為它是第一個公開發布版本代碼的商標和版權的持有者(Django的貢獻者擁有自己的貢獻代碼,並同意許可將這些貢獻代碼在Django中使用; Journal-World只擁有原始代碼)。但是對於一個開源項目來說,被盈利性公司擁有是一個尷尬的局面,所以在2008年,Journal-World幫助成立了一個501(c)(3)非營利組織——Django軟體基金會——它可以作為Django知識產權資產的管理人和所有者。DSF還參與籌款,並利用這些資金在世界各地贊助與Django有關的活動,以及促進Django本身的發展。

最終,DSF在2014年確立了「Django Fellow」的地位。Django Fellows是資助Django開源項目日常維護和運行的承包商。他們對票據進行分類,審查推送請求(原文:pull requests),製作和公布發布包,在郵件列表上回答問題,以及處理項目中的許多其他重要事情。

出於披露和背景的考慮,我了解這一切,並提出了改變它的提議,因為我在Django項目和更廣泛的社區中擔任過很多職務。其中包括:從2007年開始,我擁有一個提交位;我已經在技術委員會進行了五次版本發布;過去三年我一直是Django軟體基金會的董事會成員。

關於本提議

現在我終於可以解釋提議的內容了。請記住,這是一個高度概括,省略了許多細節。如果你想要完整的提議和所有的細節,請閱讀DEP草案。

從理論上講,Django開源項目的當前管理結構是任何人都可以提出更改或提交補丁,但是關於Django的所有決策都是由提交者(「Django核心」)做出的,技術委員會是他們的後盾。提交者基本上可以對Django進行任何他們喜歡的更改,並且只對彼此和技術委員會負責。

實際上,很少有提交者真正使用他們的提交位。決策是通過協商一致做出的,包括提交者和未提交者在Django開發人員列表上的輸入,對Django主倉庫的大多數實際提交都是由會員(原文:Fellows)做出的。即使是擁有自己的提交位的人員,他們有權直接將更改推入Django,通常也會使用推送請求(原文:pull request)和徵求討論,並且許多提交者(大約有40人)是不活躍的。

與此同時,作為Django提交者(「核心開發人員」、「Django核心」或你喜歡怎麼稱呼它)仍然被視為一個高聲望的頭銜,提交者會受到來自更廣泛的社區的尊重。由於實際的日常維護工作很少依賴於具有某種特殊權力或威望的提交者,這是一個問題,特別是因為它似乎會對潛在的貢獻者造成一種印象:他們不是「足夠好」來匹配這些八面威風的泰坦尼克號人(請注意諷刺:我跟八面威風一點也不挨邊)。

因此,我建議解散「Django核心」,撤銷幾乎所有提交位。反正它們大多都沒用過!

為了代替提交者,兩個新的角色形成了——合併者和發布者——它們分別將推送請求(原文:pull requests)合併到Django以及包/發布版本中。但這些並不是全能的決策者,而是官僚角色;沒有一個人有權自己補寫代碼並將其推入Django。最初設置的合併者相當於當前設置的Fellows,而類似的事情也將發生在發布者身上。

管理將完全公開地在Django開發者郵件列表中進行,來代替(在理論上)由提交者進行決策,任何想要真誠參與的人都可以自由地這樣做,包括投票支持或反對任何有爭議的更改。這已經基本上就是事情運行的方式。

作為最終的裁判層,技術委員會將被保留,並擁有一些它目前沒有的額外決策權(主要是在必要時參與合併者/發布者角色的選擇,並確認Django的新版本已經準備好進行發布)。與現在相比,技術委員會的選舉頻率將會降低(可能只在每個主要發行版系列選舉一次,而不是每個次要發行版選舉一次),但是考慮到技術委員會的人員流動率已經很低,這似乎不是一個問題。對技術委員會以及Django其他管理層的選舉投票, 將對Django開發人員名單上誠信參與的開發者保持開放,而DSF將在技術委員會選舉中扮演一個中立的管理員角色(有權力拒絕不誠信的選民;當然,擔任技術委員會候選人的DSF董事會成員將被要求迴避與這些選舉有關的事宜)。

目標和依據

我希望,消除像上帝一樣的「提交者」和普通貢獻者之間的區別將有助於項目對任何人的貢獻都更加開放,特別是通過將代碼提交給Django的行為變成一項官僚任務,並使Django開發人員郵件列表中的所有聲音都保持平等。這本身並不能解決招募足夠多新貢獻者的問題,也不能解決他們之間缺乏多樣性的問題,但我認為這將使我們有更好的基礎來解決這些問題。

保留技術委員會作為解決僵局決定的後盾可能是必要的。給它一點比目前擁有的更大的權力,如發行的最終批准發布——並不理想,但是我認為這將有助於平息那些對本提議第一反應是「Django會陷入某種混亂的暴民統治中」的人們的恐懼。技術委員會的被選舉資格目前要求被選舉者是一個Django提交者;今後,它仍然需要對該框架作出有記錄的歷史貢獻。

讓DSF在技術委員會選舉中發揮監督作用是一個很實際的問題。需要有人來做這件事,而DSF是最適合的一個中立的團體,儘管它很關心Django的長期生存(事實上,這是DSF存在的合法目的之一,正如其公司章程中所規定的那樣)。賦予它廣泛的權力來監控選民名冊,可以防止惡意分子、塞選票者和其他不滿分子(儘管我仍然擔心他們)。

最後,我認為這將使對Django管理的正式描述更加符合項目的實際運行情況和過去幾年中的運行情況,這種運行方式一直是很不錯的。

接下來的步驟

還在制定中的完整細節在DEP倉庫中的提議草案中(DEP是Python的PEP的Django等效版本)。我仍在收集反饋意見,並根據反饋意見對提議進行調整,但我希望提議能在下月之內得到合理的投票結果。

從此以後,要實現這一點,必須出現許多官僚主義:

  • Django核心團隊必須對該提議進行投票。對Django開源項目組織和管理機構的改變需要五分之四的多數票才能通過。

  • Django技術委員會-----它對改變組織和管理具有絕對否決權- -必須審議這項提議,而不是否決它。

  • Django軟體基金會必須考慮該提議,其董事會必須投票接受DSF在新的管理結構中的角色,並提供任何必要的資源。

  • 最後,提議必須實施,包括關閉目前的django-core郵件列表和#django-core IRC通道;撤銷一串提交位和其他許可權;並建立新的管理流程。

當然,所有這些都需要時間。但我希望,到明年年中,Django能夠在這種管理結構下運行,更好地解決剩餘問題。

如果你收到了反饋,請隨時在DEP倉庫的推送請求中(原文:pull request)留下評論,或者私下與我聯繫。


英文原文:https://www.b-list.org/weblog/2018/nov/20/core/
譯者:浣熊君( ????? )

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python部落 的精彩文章:

Web緩存投毒實戰(四)
打包python庫

TAG:Python部落 |