因為找不到人一起寫 code ,所以辦了臺灣程式路跑

臺灣程式路跑是我和子期舉辦的活動(還要靠很多朋友和導師的幫忙啦),希望傳承台灣現有自由開源軟體開發者的經驗給新進者,讓更多人接觸自由開源軟體開發。這篇文章說明一下我為什麼想要辦這個活動背後的脈絡。

——

最一開始其實是我去柏林參加兩次 ownCloud 黑客松回來之後產生的想法。感覺,對於這些歐洲開發者(裡面大概一半是歐洲其他地方來的)來說,寫開源專案好像只是「空閒時間跟朋友進行的休閒活動」而已,可能跟我們會約朋友一起打球很像。就算一開始不認識,也會透過 IRC 上面的閒聊(通常不會在 GitHub 或是 mailing list 上面閒聊)互相認識,而且大概又因為是屬於相近的文化圈和時區,本來的同質性就高,所以到最後多半可以互相認識。——感覺有點像在臺灣參加社群研討會籌辦一樣,大家一開始不認識,但是在為了同個目標工作的過程熟悉了彼此。

「貢獻自由開源軟體在歐洲是一件稀鬆平常的事情」,也跟風氣脫不了關係。很多人都在做,所以不覺得有什麼稀奇。在臺灣除了一開始貢獻的人數就比較少,二方面是,貢獻者之間的連結似乎沒有像在歐洲那麼強,很容易只知道自己的專案,不知道有其他人在寫、在寫些什麼,所以感覺上自由軟體貢獻者更少了。而自由軟體貢獻者在臺灣的稀少性,更強化了「貢獻自由軟體的人都很厲害」、「要很厲害的人才能貢獻自由軟體」的想法,無形中產生了心理上的門檻。

——

我也是那種新奇想法很多,但是很少堅持到底完成一個專案的人。我的興趣變的太快,幾乎每一天都在變,今天想 hack 某個專案,明天想讀另一個專案的程式碼,後天想研究什麼東西的架構。更別說每個禮拜還會突然發現某個功能很重要,為什麼沒有,甚至在洗澡的時候冒出超酷炫新專案的構想。構想的實現速度永遠比不上增加的速度還有在不同計劃之間 context switch 的時間。

計劃這麼多,卻因為自己似乎對什麼都有興趣,什麼都想學,反而沒什麼實際產出。這個問題苦惱了我很久,直到鳳梨酥計劃開始之後我才發現解法就是找人一起來。

鳳梨酥計劃的開始,還有高中的時候和同學整個暑假開發學校網站的經驗很類似。鳳梨酥計劃一開始只不過是因為我們都覺得在 OpenStack 上面跑 FreeBSD 很麻煩,於是隨口在社辦約了黑客松,另一個人看到我們的黑客松也說要加入,就形成了這樣的三人團隊。裡面正好我搞 OpenStack ,負責手動測試我們的 code ,Iblis 寫骯髒的 shell command ,Apua 寫 Python 。我們只花了大概三四次黑客松就把最基本的功能完成。每一次黑客松都很開心,大家遇到哪裡卡住馬上可以問另一個人,馬上測試也可以讓寫 code 的人有馬上的回饋,然後最後大家再說說笑笑去吃宵夜。高中的時候則是,我記得整個暑假我們不是泡在社辦(還用櫃子在角落隔出一個空間,裡面鋪上學校新採購電腦主機的大片包裝用塑膠軟墊,讓我躲在裡面睡午覺),就是整天掛在 Skype 上面 cowork 。

有朋友一起寫程式,不只是比較好玩、有人可以討論,對於我這樣三分鐘熱度每天轉移焦點的人,為了不和朋友失約,可以約束自己專注在一個專案比較久而不會分心去玩其他東西。

所以從這兩次的經驗,我瞭解到要做長久的專案,一定要找到志同道合的朋友。

——

既然如此,下一步很簡單,我就想辦法找人一起寫我覺得很有趣的專案就好了,一開始我一廂情願地覺得我只要跟他們解釋這個專案的願景,還有我發現他們現在沒有的功能、可以從哪裡參考類似的實作、有了這個功能之後世界是多麼美好,就可以說服他們一起來跟我寫 code 。——顯然我錯了,出乎當時的我的意料之外,我講的幾乎每一個構想,朋友們聽了之後的回應大多都是「哦,我覺得還好啊」。

這時候我才意識到,即使同為程式設計師,人之間的興趣還是有如此鴻溝般的差異。

也差不多是同個時期,我正在為自己維護的開源專案感到心煩,一個承諾已久的重大功能。雖說是重大功能,實在提不起動力實作,不是因為難度太高,而是因為完全沒有技術創新性,總覺得不過就是 API 接一接這樣簡單的事情。這樣一拖就拖了兩年了, ownCloud 都裂成兩半變成 Nextcloud 了。

我想到,有這麼多人想要踏入開源軟體的開發,也有許多開發者因為必須要開發那些不算是重複但是技術不有趣的必要功能感到厭煩(像我一樣),這兩者是不是可以結合,讓這些原本的維護者懶得寫的 code 作為新進開發者熟悉專案的練習?

這就是程式路跑活動的初步想像。

——

我和子期也開始進行很多討論,尤其是:我們到底要找哪一些專案的導師來?

一開始的想法很模糊,大概是「不要找那些商業型的開源專案」,有很多公司將專案開源只是為了行銷並且獲得免費的開發人力,舉個最極端的例子就是 MIUI ,早期很熱門的 Android 第三方韌體,一開始是開源的,因為漂亮的界面吸引了很多人,開發者免費幫他們把 ROM 移植到不同裝置上面,使用者則是開開心心地體驗了小米公司的軟體,順便幫忙推廣給親友。後來知名度高了,小米公司就拋棄開源的 MIUI 維護,不再釋出新版 MIUI 的源碼。高明的行銷。(順帶一提,我感覺以後 Deepin Linux 也會這樣,中國沒有什麼軟體公司真的有社群精神或是社會責任的,一切以賺錢為優先,大概是競爭激烈的文化氛圍所造就的吧)

另一種商業型的開源專案則像是 OpenStack ,OpenStack 能夠維持開源同時維持熱門,主要的原因就只是對於這些參與 OpenStack 開發的公司來說,開源是能夠創造最大利益的選項,雖然無法排除競爭者從原始碼得利,但大家一起合作寫 code ,這些比較小的公司也才有機會和大型競爭對手 VMWare 甚至是 AWS 競爭,他們可以基於這個共同的開源平臺開發專屬的、不開源的武器,因為只要是相容於 OpenStack 的就可以使用,拉近了這些小公司和大型競爭對手的距離,然後再用專屬的武器突圍。

OpenStack 這樣的專案絕對堪稱是開源軟體的典範——但我們還是不希望程式路跑納入 OpenStack ,原因是一般的個人使用者幾乎不可能會直接用到 OpenStack ,而既然程式路跑以純粹個人的背景出發,我們考量的也是廣大個人用戶的利益,引用自活動的 FAQ:

有許多 FOSS 軟體背後有企業支持,如 OpenStack, Tensorflow ,有企業支援,這些專案要找到貢獻者相對容易,相對來說有許多得不到企業支持的 FOSS 軟體,只能靠現有貢獻者的熱情,甚至捐獻金錢才得以繼續,身為一個保持自由開源理念、駭客精神的個人,我們(主辦人)想要將我們的一己之力集中在沒有企業支持的 FOSS 軟體。

這樣的選擇,也是出自於一個疑問:臺灣這麼多 Linux/FreeBSD 桌面環境的使用者,其中有不少具有相當的程式能力,為什麼一些重要的桌面環境開源專案,像是 GNOME, KDE, ibus-chewing, Firefox 的臺灣開發者還是這麼少?(甚至是 bug report 來自臺灣的都很少?)

選擇開源桌面環境的使用者,我想或多或少都抱持一點理想性,認為自由軟體才能帶來使用資訊科技時真正的自由。而這點理想性,是我們以學生、年輕人,還不必負擔太多社會現實的身份負擔得起的,所以我們花時間精力舉辦的程式路跑,希望集中力量在這樣的自由軟體上面。

——

這個活動非常高興能夠獲得各方支持,尤其是幾位導師,Tim, Weicheng, 呂行, Mark, Acelan, Franklin, 4$ ,幾乎什麼都沒有問的馬上就答應支持,中華民國自由軟體協會慷慨的經費贊助,還有師大資訊社阿哲幫我們弄到場地。

我覺得活動算是蠻順利,結果也很成功,大家都有作出貢獻,幾個 bug report, patch 。也真的有產生出我想要的那個氛圍——坐在教室,真的有那麼一刻,我以為我回到 ownCloud 黑客松那時候柏林工業大學的教室裡面,大家吃東西討論 code ,很歡樂的黑客松的感覺。

希望真的有幫到臺灣的自由軟體和開發者就是。

(跳過八月的文章沒寫這次居然寫了三千多字,就當作是補償吧,發了之後 WordPress 告訴我這是這個部落格第兩百篇文章啦,真是值得慶祝)

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s