Python程式碼貢獻社群在討論新版本功能或套件工具時,過去常用郵件清單(Mailing List),透過電子郵件將每個人的回覆轉寄給其他貢獻者,現在則更常用Web形式的Python官方論壇。(圖片來源/Python官方論壇)

繼承了ABC程式語言特色的Python,不但沒有走向ABC沒落的結局,反而從全球上百種程式語言中脫穎而出,成為當今全球第三熱門的程式語言之一。Python創辦人Guido Van Rossum認為,將Python免費開源的決定,是一大關鍵。除了開源讓更多人接觸使用,Python一行行程式碼與套件工具,也開放讓社群參與維運,如今,不但仰賴社群力量來迭代更新,也靠社群共識來決定發展方向。

不同於像微軟的C#或Google的Go,是由大企業來主導每個版本的開發,Python完全靠社群來驅動發展。其中,核心負責維持Python開發、運作與推廣的單位,是在2001年成立的Python軟體基金會(Python Software Foundation,PSF),主要任務是開發Python的核心發行版本,保障Python版本的智慧財產權,以及其他PSF持有商標的智財權。

由於PSF是一個非營利組織,這也使Python與企業主導模式的程式語言有本質上的不同。非營利組織並不為特定企業服務,是為了實現特定理念而存在,PSF正是為了推廣、保護並提升Python,同時促進全球多元社群成長而成立的組織,更進一步來說,各大企業無法對其進行併購,確保了PSF的獨立性,也確保了Python未來會一直以開源免費的形式存在,而PSF如今的最高決策小組,不論各自背景是來自哪一家企業,也是以個人名義在社群中活躍,儘管仍有些政治角力的意味在內,但較不易完全被特定企業所把持。

而PSF對於Python版本、相關組織的智財權的保障,也讓許多經由PSF官方認可並註冊商標的組織或活動,不會被隨意使用或冒用,比如Python年度最大技術交流活動PyCon,就是由PSF註冊的商標,也就是說,任何人不得在未經PSF同意的情況下,以PyCon的名義來舉辦活動,若是各國要舉辦地區性的PyCon活動,如臺灣的PyCon TW、英國的PyCon UK等,都需要向PSF申請,經過認可後才能舉行。

不過,PSF雖然擁有主導Python發展方向的權利,同時也是Python社群中的最高決策單位,但不同於企業主導模式是上而下的進行決策,PSF的決策方式,是在社群先達成共識後,下由上的影響決策單位做出官方的認可,除非是具有爭議性的問題,才會由決策單位進行決斷。過去,這個決策的角色就是由Guido Van Rossum擔當,他也因此被稱為「終身仁慈獨裁者(BDFL)」,但在他2018年退位後,BDFL的位置不復存在,改由新組成的五人領導委員會(Steering Council)來進行決策。

社群如何影響Python發展決策?

過去二十多年來,Python靠著一套程式碼貢獻機制,讓有興趣的社群成員能藉由參與程式碼的貢獻,來維持核心程式不斷迭代更新,也就是說,由下而上的來影響每個Python版本的核心程式碼、套件工具等。這套機制就是讓Python龐大的使用社群,能夠無後顧之憂的應用Python,不用擔心程式語言與安裝工具無人維運的關鍵。

臺灣極少數成為Python軟體包官方機構PyPA(The Python Packaging Authority)的活躍貢獻者鍾子屏,以自己的貢獻經驗來分享這套機制的運行方式,他從三年前自行開發了類似於rustup功能的Python安裝快捷工具PythonUp後,接觸到Python的特殊興趣小組(Special Interest Group,SIG),並成為了其中Distutils-SIG的活躍貢獻者,主要在開發Python軟體包管理工具(pip)功能。

鍾子屏表示,Distutils-SIG近期的任務,是在訂定軟體包安裝時的溝通標準,同時也是各專案在建立時的共通格式,來解決Python專案在合併或共享時,可能遇到格式不相容的問題。現在Python軟體包在pip安裝上有一個溝通標準(PEP 517),但尚未包含所有的溝通情境,為了克服這個問題,有些企業會在標準上建立自己的工具,來統一所有專案成一個共通的格式。不過現在,Distutils-SIG正在擴充並推廣新的溝通標準,試圖解決這個問題。

攝影/洪政偉

臺灣一位Python軟體包官方機構(PyPA)的活躍貢獻者鍾子屏,從三年前開始接觸Python的特殊興趣小組(SIG),並成為了其中Distutils-SIG的貢獻者,主要在開發Python軟體包管理工具(pip)功能。

社群提出的新功能,如何成為Python官方建議準則(Python Enhancement Proposals,PEP),再被列入Python未來更新版本的功能。這要從Python開發的溝通方式談起。

Python程式碼貢獻主要採用GitHub,但溝通則仍靠郵件清單(Mailing List),只要寄到這個清單上的任何訊息,都會自動轉寄給名單上所有人的電子郵件帳號。鍾子屏表示,核心程式碼貢獻的社群中,上百位成員都是年紀資深的貢獻者,熟悉用郵件清單溝通。不過,現在有越來越多的開發者,比如SIG社群成員,就更常在Web形式的官方論壇中交流,「以我來說,論壇差不多三天看一次,郵件清單比較少,差不多一個禮拜看一次。」

許多新功能的誕生,可能源自於一兩位SIG成員的點子,由成員先實作出初始版本後,再放到郵件清單或官方論壇中討論,若獲得多數成員認同、取得初步社群共識,就會請發起人寫成PEP向決策委員會提案,同時將專案轉移到GitHub上來協作開發。決策委員會收到提案後,也會指派一位核心開發者來擔任PEP代理人(delegate),去衡量這個PEP提案在各個社群中的討論度。

一旦代理人判斷已經達成社群共識,最後就會由委員會決定,是否成為有效的PEP,並在新版本中加入成為標準。鍾子屏表示,PEP提出來後,約有8成機率會被通過,「因為Steering Council是民選的,如果絕大多數人都同意這個功能,通過的可能性就非常大。」

不過,鍾子屏也指出,每個功能從取得社群共識到成為PEP的過程都很不容易,「這就跟在立法院提案是差不多困難的事情,超級麻煩。」再加上,就算真的將提案變為標準化的工具,還是會有人不買單,「因為社群自主性很強,有點像多頭馬車到處拉。」這些原因,都導致只有非常少數的提案,成功由下而上驅動成為Python正式標準。

比如說,由於許多語言中都有支援泛型函數(Generics),比如Java、C#,但因Go沒有支援,社群中長久以來一直有要求Google增加支援的聲浪。鍾子屏表示,Google過去一直沒有採納意見,直到最近才改變心意,將這個功能的開發提上日程,如果將Python的決策比喻為民主政治,那Go語言就像是寡頭政治,「因為開發者與決策者是同一群人。」

鍾子屏也分析,以程式語言本身的存續來說,Python的維運方式比較能永續發展,「就算Core Developer哪天不想做了,還是會有新的人接下去維運,只要有人願意做,程式語言就會持續下去。」不過,對單純寫程式無貢獻想法的人來說,企業主導開源的模式還是較有保障,只是當企業宣布要停止維運時,需要及早轉換新語言來使用。

臺灣Python社群也開始獲得國際關注

PyCon大會是Python社群中最重要的交流形式,社群同好能一同分享最新的Python專案,交流Python在各領域的應用。PyCon年會中,規模最大的是PSF在美國舉辦的PyCon US,每年參加人數約有3,000人,來自世界各地。

PyCon US今年的會議也剛在四月中結束,因應武漢肺炎疫情改為線上會議舉行,後續主辦單位也連同主要議程、Tutorials、Workshop在內,將超過五十多場線上演講分享到官網。

而其他國家或地區,每年也都有舉辦在地的PyCon活動,比如臺灣,今年的PyCon會議將在今年9月登場,從2012開始舉行至今,已經邁入第9個年頭,規模從200多人,成長到今日已經有800人,僅靠一群Python社群的志願者來協助籌備。臺灣Python社群的元老級人物胡崇偉,也從2012年首屆就積極參與PyCon籌備。

臺灣PyCon年會從2012年開始正式賣票來舉行,從2016年起更與臺灣開放文化基金會OCF合作,由OCF來協助執行財務、法務相關作業,比如開發票、借場地、收費等。如此一來,原先籌備小組成員就能聚焦處理更擅長的技術相關作業,比如網站開發、講者投稿與邀請、制定議程等,以此來進行分工,維持臺灣PyCon的舉辦。

在2014、2015年,臺灣PyCon更擴大辦理成年度國際性活動,以PyCon APAC的名義來舉辦亞太區的PyCon會議,胡崇偉說:「我們2014年找了Jupyter Notebook的原始作者來演講,大家都非常興奮,沒想到後來Jupyter Notebook會紅的不得了!」而這兩年大規模宣傳、辦理PyCon,加上Python在這段期間的快速成長,也為臺灣PyCon知名度打下基礎,「2016年在沒什麼宣傳卻還是滿座的情況下,我們知道,PyCon在臺灣算是站穩腳步了。」

胡崇偉也分享,臺灣PyCon還延續了美國PyCon的一個有趣傳統,也就是所有的參加者,包括籌備小組成員、志工、甚至講者在內,都要付門票費,「在剛開始實施的時候,覺得難度很高,要常常跟別人解釋原因。」這與臺灣大多數的會議都不同,尤其邀請講者不但沒給鐘點費,反而還要收錢,「與不知道這項傳統的人之間,會有些觀念碰撞。」

因此,臺灣PyCon也決定延續另一個美國PyCon的傳統——財務補助,來作為一種變通的方法。胡崇偉指出,每個人都有權利去提出財務補助的申請,過去臺灣社群成員到美國參加PyCon,向PyCon申請財務補助後,也都獲得很好的回饋,所以臺灣也在第二屆PyCon就開始跟進這個做法。近年來,籌備小組也將財務補助作為一種代替購票的變通方式,「我們已經調整到說,假如事先邀請到某個講者已經很不容易了,那我們就主動申請財務補助,折抵門票錢或交通住宿費用。」

近年來,Python在資料科學領域興起後,臺灣PyCon的演講主題也有顯著的改變。鍾子屏表示,大約從2017年開始,ML主題的投稿量顯著增加,一年比一年更夯,「去年收到三分之一的投稿都是ML主題。」他也觀察,ML主題投稿者多是以企業名義投稿,相對的,Web領域的投稿則大多以個人名義,因為ML的開發通常需要投注大量資源,大企業較能提供資源來互相競爭,而網站開發的族群以散戶或一般新創居多。也就是說,大企業的力量正在逐漸改變Python社群生態。

 新浪潮  大企業帶來Python社群3變革

Python在資料科學領域崛起後,開始有更多大企業的力量進入社群,帶來不少轉變。從應用面來看,交大AI學院副教授魏澤人歸納出三種改變,其一,是大企業會挹注資金來改良或擴充Python套件,同時回饋給社群,企業開發的套件也會開始支援Python,比如TensorFlow、Facebook的Pytorch 都是以Python優先。

其二,則是大企業有制式的開發流程標準,比如Google大量應用Python作為手稿語言,而後也開源了Python程式碼的編寫準則,提供小企業或個人參考。其三,則是大公司先採用Python來開發,能提供其他開發者信心,「對於社群的茁壯會有幫助。」

若從套件工具的使用方式來看,臺灣極少數成為Python軟體包官方機構(PyPA)的活躍貢獻者鍾子屏,也觀察到社群心態上的轉變。他說,許多Python使用者,過去對於開發環境、軟體包或專案的管理工具,都是靠自己開發順手的工具來使用,分別下指令或寫腳本去執行,「大家都有一套自己的做法,覺得不錯就口耳相傳。」但在資料科學領域的使用者進入社群後,會開始期待有一站式、整合式的標準化工具,協助開發者更快速、便利的一次執行管理功能,「在心態上轉變為集中化的思維。」

也因原先Python的社群生態較自由分散,程式設計初學者在學習過程也會有一定的挑戰,比如質疑:「為什麼要學這麼多工具才能學程式?能不能學一套工具就好?」鍾子屏表示,對使用者來說,只用一個工具來開發,一定比較方便,但如此一來,也會因此犧牲掉開發方式的多樣性,較難透過競爭來進步。

 新浪潮  Python女力崛起!女性自學社群現身

圖片來源/臺灣Pyladies

在臺灣程式設計的領域中,大家似乎已經對男多女少的現象習以為常,在臺灣PyCon中,能夠擔任講者來分享技術的女性角色,似乎又更少了一點。但是,美國PyCon早在2016年,女性講者比例就成長到40%,Python核心開發社群的女性比例也在持續增加中,甚至,Guido van Rossum更在一場演講中直說,「Show your bias! 在兩個能力一樣好的男女性中,我會優先考慮給女生機會。」

也許Guido van Rossum的態度,某種程度上影響了女性參與Python的踴躍度程度,不過,Python社群中的女性推廣組織Pyladies,更是重要的幕後推手。Pyladies與PyCon相同,都是PSF認可的Python官方社群組織,2011年於美國成立,而後逐漸落地到全球上百個在地社群中,成立9年來,不僅在推動女性參與開源社群的活動上不遺餘力,也讓更多女性能共同精進Python實力,或讓初學者跨入程式設計的領域。

而臺灣的Pyladies社群也不例外,2013年舉辦第一次活動至今,除了前三年組織較鬆散、辦理活動較少,2016年改由三位主辦人陳姿君、翁子婷、卓家璘接手後,平均每年可辦30~40場活動,從初階系列課程到進階的特別活動、工作坊都有舉行,也會根據技術的流行趨勢來更換課程內容。而且,為了確保每場活動的課程品質,臺灣Pyladies還有講師課前試教、助教的制度,就是要維持作為技術交流社群的定位。

除了以豐富的課程內容為特色,臺灣Pyladies社群的意義,更是要提供自我認同為女性者,一個更舒服自在的環境來學習。卓家璘就以自身經歷表示,由於臺灣資工界男女比例懸殊,「在純女性社群的空間中,讓我覺得很舒服,不管在學習或交流上都更輕鬆,也比較敢問問題。」

團隊成員也觀察到,近年來,Python在資料科學領域興起,許多參加Pyladies的學員都反饋,想學資料科學相關課程,比如網路爬蟲、資料探勘,或與機器學習、AI相關的內容,同時也因Python易學、好上手的特質,學員更有一半的人數非資工本科系出身,而是其他科系來跨領域學習程式語言,雖然真正轉職為工程師的人還是少數,但也反應了Python的熱度只增不減。

另一個現象,則是臺灣願意參與如Pyladies女性社群的人數,有逐年提升的趨勢,整體來說,女性學習程式、投入工程師工作的風氣有比較開放,但是成長幅度不明顯。尤其當今校園與職場中,資工背景的男性還是遠大於女性,在臺灣PyCon年會中,女性參與比例也沒有明顯增長,都顯示了臺灣女性在程式設計領域的參與,還有很大的成長空間。

未來,臺灣Pyladies也將持續推動Python女力的成長。

 新浪潮  臺灣中學教育開始夯Python

近年來,臺灣各大專院校的資訊相關科系中,Python已經成為選修、必修的重點課程,甚至,連商學院科系也開始教Python,Python可說已經滲透到大專院校的教育場景。

而這股趨勢,現在也吹進了臺灣的高中教育。臺灣從108課綱開始實施了程式教育後,以Scratch作為入門的程式設計語言,透過類似於拖拉式的物件組合出一段程式,以互動介面來呈現程式執行結果,藉此讓學生了解程式語言的基本概念。不過,除了課綱明訂的Scratch,也有老師開始設計Python課程來教學。

比如臺北市南港高中,就成立了數位科學實驗班,從108課綱開始實施以Python為主的程式設計課,三年下來共有18學分。這門課以Scratch入門,但主要是介紹Python在各種不同的應用,課程設計者高慧君,同時也是發起這門程式教育課程的老師表示,雖然現在程式教育多用Scratch來上課,「但是Scratch是積木,Python是文字,Scratch再厲害也只是一個玩具,還是要用學會文字來表達。」

高慧君認為,Python是個適合在高中教育普及的程式語言。她在2014年接觸到Python之後,發現Python的語法簡潔易讀、好上手,學生以Python入門後,再去學習其他程式語言會更容易,而且,就實用性而言,Python搭配不同的套件工具,就能開發不同類型的應用,學生未來的應用機率很大。

因此,在科學實驗班的課程中,高慧君不只教Python基本概念及語法,也著重應用Python來實作。為期三年的課程,除了培訓學生具備程式檢定的能力,高二開始也開始引進如樹莓派、Jet Bot機器人等硬體,並結合影像辨識等深度學習的應用來教學。

為了加速中學程式教育的推廣,臺灣也從2018年開始試辦大學程式設計先修檢測(APCS),測驗內容除了考C語言觀念題外,也要考實作題,讓學生自由選用C、C++、Java、Python等語言來解題。

APCS除了測驗學生的程式語言能力,許多大專院校資訊科系,也將檢定成績列入申請入學評分,因此,APCS在一定程度上帶動了學生學習程式語言的意願,更已經有補習班看準商機,開設了Python檢定課程。

不過,高慧君也說,108課綱推動的程式教育,還需要一段時間去普及,因為,臺灣過去的資訊教育仍是以C語言為主,老師不一定有程式教學的經驗,再加上,「程式設計不像體育課大家都有動就好,而是教一種解決問題的方法,除錯能力很重要,不是短期就能訓練。」因此,108課綱是一個目標,在落實之前,還需要克服許多挑戰。

除了體制內的教育,體制外的實驗教育,也開始開設Python程式教育課程。臺灣實驗教育是採取「想學什麼,自己組隊找老師」的精神,全臺約3,000多人的實驗教育學生中,也有人會有資訊教育的需求,因此,Python愛好者胡崇偉與實驗教育推動者丁志仁,近一年來開始規劃Python課程,預計要先在雙北招收相當於國高中年紀的體制外學生,不過受到疫情影響,具體招生時程還在研議當中。

 相關報導  AI時代開發語言新主流Python


Advertisement

更多 iThome相關內容