Open Source 為什麼很重要

唐鳳:開源吃掉全世界
https://read01.com/7D33G4.html

在這一篇訪談形式的文章中,唐鳳談了一些關於 Open Source 的看法,我重新整理成方便自己閱讀重點並增加了相關參考資料連結的文章。

維基百科中關於被稱為「台灣電腦十大高手」之一的唐鳳生平簡介:


主流的開發平台(包括 Oracle Java 及 Microsoft .NET Core)全部開源化之後,軟體開發社區與開源模式之間已經高度重疊,幾乎沒有差別了。作業系統更是以 Linux 與 BSD 為大宗,多年前的專屬式授權系統也較為少見。

加上 GitHub 等社區網站的興起,以開源方式做系統,已經為大部份IT工作者所接受。


GitHub在開源社區中扮演什麼樣的角色,有哪些因素使GitHub成為開源的匯集地?

GitHub 首先是藉由易用的 Web 介面,普及了 Git 的分散治理模式,幾乎完全取代了以 Subversion 為代表的集中模式。

此外,GitHub 將源碼、修訂、瑕疵回報等開發過程的產物定址成鍵連資料,進而將它們轉化成社會物件,因此取得了類似新興社區媒體的網絡效應,使 Google Go 和 Microsoft .NET 團隊都放棄了自家的源碼平台,移轉到 GitHub 上開發,以爭取社區支持。

GitHub 和 OpenStack 都是現代開源治理模式的好例子,前者是基礎建設,後者則體現了具體的模式運作。

OpenStack 使運算平台的提供者與使用者,能有效合作出開源的各式基礎建設。

Docker 生態系,以及同樣基於 Linux Container 架構的 Sandstorm 社區這類的「容器」技術,大幅簡化了開源系統的部署:無論架設開發環境、串接網路服務、甚至整套系統的升級(如 Ubuntu Snappy)等,都較以往方便許多。

這讓社區開發者可以花更多心思在「應用接口優先(API First)」的架構設計上,在節省技術支持時間的同時,也使「參與者」成為「貢獻者」變得更加容易。


在整體IT層面與商業模式運作上會產生什麼影響?

降低參與社區的門檻,並且持續簡化維運後,程式教學和服務業,將會變得非常分散。

在 20 年前,我們有所謂「結蛹期」的概念。這是黑客詞典 Jargon Files 裡的一個詞。它說,基本上要成為一個專業的程式員或黑客,你必須花三、四年的時間沉迷於電腦當中,你會完全打亂你的睡眠模式,一次寫 20 個小時的程式。然後,到了某個點,你就會頓悟。這其實很像禪宗的想法。

一旦你到了那個點,所謂「零的轉移、巫術的權勢」,基本上你就成為一個巫師。一旦你成為巫師,正如松本行弘所說,所有關於性別、種族、年齡、國籍的差別都會消失。這就像《駭客任務》中 Neo 把一切都看成是綠色數字的一幕。到了那個階段,沒有東西能夠影響你的客觀判斷。這也是一個非常禪宗的概念。

可是這算是一個神話,主要是因為那個時候如果沒有網路社區,要學習程式是非常困難的事。

現在有 RailsGirls 和類似的社區,我們就有了一個緩坡。你可以非常舒適地留在斜坡上的任何一點,還有很多人會在同一級階梯上互相支持,不一定需要兩三年的密集時間。用這種方式,你可以學上五、六年 —— 你甚至可以一天睡 8 個小時也不會退步。這會大幅改變市場,因為除了業餘愛好者和專業人士之外,階梯上的每一點還會有細分的市場,這樣市場和社區都會變大很多。


台灣 Open Source 之前主要由軟體工作者參與,但隨著創用 CC、自造文化的開展,現在文字、硬體、音樂、影像、設計、教育、政治工作者,也都開始參與開放文化,Source 的範圍愈來愈廣闊了。

文字如Wikimedia,硬體如Arduino/Thingiverse,音樂如Blend/SoundCloud,影像如YouTube/Flickr,設計如Behance,教育如Khan Academy/OCW,科學如arXiv,政治如g0v等。


目前這個充分IT化的世界,已經進入匱乏/分配/科層等交換模式難以為繼的時代。此時開源社區提供了一個示範,由「向不特定人分享」開始,經過「集合眾人貢獻」的過程,使能夠永續、接力與共享的創造得以發生。

有了網際網路,人們可以直接聯繫到任何一個人,而發行給十萬人跟一百萬人時,成本並不會增加。但 WWW 的特性除了發布之外,更重要的是交互連結:「每個人做出的超連結,都是慷慨無私的展現,邀請讀者離開作者的頁面,去看看其他人是怎樣看世界的。」

舊有的文化交換模式,例如「製作大英百科全書很耗時,所以要賣很貴」(匱乏)、「學校沒有那麼多經費,大家要輪流到圖書館借百科全書」(分配)、「借閱規則要由校方制定」(科層)等等,與上述交互連結的文化相比,顯然是蒼白而緩慢的。


Open Source 早期主要是與工業時代的「軟體製造」模式相互對抗,但隨著「軟體即服務」概念被廣泛接受,現在在軟體界推行開源模式已經沒有特別困難之處。延伸到其他社區時,可能也會經過類似的過程。

在「軟體製造」模式下,販賣套裝軟體後的維護成本較低,而初次開發成本較高,所以會把軟體視為資產。

反之,在訂閱式的「軟體即服務」模式下,幾乎所有成本都花在回應訂閱者和新環境帶來的需求,也就是維護和支持工作上。此時任何未充份元件化的軟體都是持續的技術負債,並非資產。

而若要促進軟體元件化,並找人分攤維護、支持的工作,開源社區是目前所知最有效的模式。


Open Source人應該具備什麼能力?

語文溝通、邏輯思維的能力是必要的,其他只要保持好奇心即可。


給想進入開源社區的新手建議?

想做到什麼,就動手去做。真心想做一件事時,全宇宙的「沒有人」都會來幫你的。


新手的第一步應該從哪裡開始?

把自己的想法放到某個空間,讓其他人可以看到,並且歡迎大家提出改進。
不用怕想法不完整,也不用覺得有瑕疵很丟臉。
誠如 Leonard Cohen 所說:「萬事萬物都有缺口,缺口就是光的入口。」


傳統上,有三種為人熟悉的交換或市場營銷行為。其中一種是內團體(In-group),就像我們同在一個家庭,或者是處於同一個「社區」里,當中有分內團體(In-group)和外團體(Out-group)。家庭或是這些內團體的成員,他們會共享一切、交換一切,可是他們不會跟外人,比如說非我族類(「外來人」)分享。這是其中一種交換模式。

第二種交換,就是我們在政府或者是其他層次結構中看到的,我們只會跟梯子上方或下方的人進行交換。比如說,我只會向我的經理報告,然後我的經理會跟他們的經理報告,再往下分配資源。這種交換是完全科層式的。

第三種就是我們跟任何有錢的人交換。我們向有錢的人提供服務或貨品,然後我們用這筆錢再與別人交換,與其他向我們賣東西的營銷者交換。基本上就是使用貨幣交換。以上是世界上三個主要的交換模式。

可是,以行銷者的身份參與開放源碼(像 Ruby 社區),就能學會世界上第四種交換模式,也就是說,可以自由地跟世界上任何人,為了任何目的而交換。這是一個非常革命性的想法:我不在乎你是否跟我來 自同一個族群;我不在乎你是不是台灣人。我不在乎你是不是老闆或經理;我不在乎你有沒有錢。我想向你提供我的服務,我就慷慨給你。

我們已經證明了,這種行銷方式(像 Linda Liukas 的 Kickstarter 活動)比起前三種傳統交換模型,能夠更有效地在更短的時間內接觸到更多的人。這將會是 21 世紀的潮流。參與開源社區,你會親眼看到它如何運作,以及掌握它的運作方式。


未來開源發展的趨勢?

可能主要會靠「更多元化的參與者」、和「更跨領域的項目」,來觸及生活的更多層面。


「更多元化的參與者」、和「更跨領域的項目」運作模式和現在有什麼不一樣的地方?

在參與者方面,隨著紀錄、發布、版本追蹤成為表現活動的一部份(例如這份訪談),只要有溝通或創作意願,即使只有零星的時間也能進入社區協作,不再只是少數嫻熟工具、時間充裕的創作者才能參與。

在跨領域方面,輸入工具的普及(觸控、聲音、手勢、情感訊號等)讓愈來愈多的類比表意訊息進入數位世界,與之相應的協作空間操作門檻也持續下降,再沿著新的輸出方式(立體印製、擴增實境、可程式化物質)進入生活。這樣一來,開源項目的內容也將不受平面影音文字媒材的局限。


在開源世界裡逼自己成長:https://read01.com/enRdOe.html


程式語言編年史

程式語言編年史原文 下面這張圖片描繪了整個程式語言的歷史。包括各種程式語言的發明人、程式語言的特點和適用領域、被什麼網站或公司使用等 (檢視 完整高清圖 )。 之所以會有那麼多不同的程式語言是因為設計程式語言的初衷不同、對語言學習曲線的追求不同、不同程式之間的執行成本差異...