# Jan 23, 2017 開源系統軟體文化與重要性
- [ ] Jan 17, 2017 開源系統軟體文化與重要性
主講人: Jim Huang (黃敬群) a.k.a. "[jserv](http://wiki.csie.ncku.edu.tw/User/jserv)"
地點:台灣大學
簡報網址: https://hackmd.io/s/SyDglcYIe
- [ ] [Linus Torvalds 在 TED 2016 的訪談](http://www.ted.com/talks/linus_torvalds_the_mind_behind_linux?language=zh-tw)
![](https://i.imgur.com/PYHZ8h0.png)
「我不是願景家,我是工程師。我對那些四處遊蕩、望著雲端的人沒有任何意見。但是我是看著地面的人,我想修補就在我面前的坑洞,以免跌進去。」
## Twitter 選錄
* [「世界上有七十億人口,但我們認識的世界,卻是靠身旁大約數百人所建構出來的」](https://twitter.com/ltsart/status/792908441891119104)
* ["The value of open source is not free code, but multiples of engineering investment."](https://twitter.com/xatierlikeLee/status/767192438544879617)
## 觀念澄清
在 2016 年,我們不需要「推廣」open source,因為後者早已走入資訊社會之中,但我們應該要「澄清」誤解和成見,像是以下:
* 「搞 open source 的人要怎麼過活?source code 都給人看光光,要賺什麼錢?」
* 「聽說使用 open source 都要把 source code 吐出來,要怎麼避免?」
* 「一旦被 GPL 感染,source code 都得攤在陽光下,這麼恐怖 ,還是不要拿 open source 來作產品」
* 「只要不要被人發現我們使用 GPL 軟體,應該就沒事吧?」
* 「我又沒有拿 open source 來賺錢,所以可以把網路上找到的軟體拿來改,甚至把作者的著作權標示都抹除,是嗎?」
## Ecosystem (生態系統)
* [Open Source Ecosystem](https://www.dropbox.com/s/w08qfynqox73upp/open-source-ecosystem.pdf?dl=0)
* [WebKit 發展史及開源條款授權分析](https://www.youtube.com/watch?v=i3yuZ9QMd1U)
* P. McCoy Smith 和 Wayne R. Chang 論文[The Evolution of Business Models Using Open Source Software](https://wiki.oulu.fi/download/attachments/58197330/ossd_2015_luu_li_dong_samodelkin.pdf?version=1&modificationDate=1448956483000&api=v2) (2011 年)
* [Open-Source Business Models](http://events.linuxfoundation.org/sites/events/files/slides/lfcs15_hall.pdf) (2015 年)
## 向歷史學習的重要
![](https://i.imgur.com/H4PRfsR.png)
上圖取自流傳相當廣泛、連 Android 系統都使用的 XML parser 函式庫: expat,其中 expat/lib/expat.h 檔案包含以下貌似奇特的巨集 (macro) 定義,為什麼呢?
因為 VMS (含之後的 OpenVMS) 作業系統裡頭的 C 編譯器不允許變數或函式長度超過 32 個字元,所以,為此 expat 只好自行縮短長度。這個案例個訴我們,為了 portability,不可不注意不同軟硬體平台的落差。
![](https://i.imgur.com/ScLutIP.png)
2016 年,啟發 Linux 核心的 MINIX 系統已滿 30 歲。
MINIX 之父 Andrew S. Tanenbaum 撰文回顧 MINIX 開發的時空背景,像是阿波羅登月計畫裡頭使用的多人多工作業系統 CTSS,以及其後的 Multics (第一版所需的記憶體比 GE645 硬體上面僅有 288kB 的 RAM 還大)。1973 年 Multics 首度商業運轉,那年 Bell Labs 的 UNIX 正以 C 語言重寫,而 Multics 採用比 C 語言更高階的 PL/1 程式語言來開發。
(Research) UNIX 第 6 版又稱為 V6 (UNIX),在 1975 年被許多大學院校採用,售價為 USD $300,廣泛運作於相對低廉的 PDP-11 硬體上。1977 年澳洲的新南威爾斯大學的講師 John Lions 針對 V6 UNIX 原始程式碼進行註解,集結成冊後,獲得廣泛流傳,又叫做 Lion's Book。
1979 年的 V7,和廣泛流通的 V6 相比, AT&T 以嚴格的授權條款發布。阿姆斯特丹 Vrije Universiteit (VU) 的 Andrew S. Tanenbaum 利用閒暇時間,重新在 IBM 相容個人電腦 (PC) 上實做 V7,稱為 MINIX,早期 MINIX 系統需要 640 KB RAM 和兩張 360 KB 軟碟片。
* 延伸閱讀: [Lessons Learned from 30 Years of MINIX](http://cacm.acm.org/magazines/2016/3/198874-lessons-learned-from-30-years-of-minix/fulltext)
## 思考時事
* [看AT&T購併時代華納,談電信業者新出路的策略思考](https://rocket.cafe/talks/80114)
* AT&T所擁有的龐大用戶基礎,是可以被活化利用的,大數據的珍貴之處,不再於只是數量龐大,而是可以找到一個數據應用的出海口。時代華納會是AT&T大數據資產活化的出海口嗎?可以透過AT&T的數據分析,為時代華納找到更精準的內容題材嗎?可以有更精準的行銷廣告搭配嗎?
## 開放原始碼比較好嗎?
![](https://hackpad-attachments.s3.amazonaws.com/fossapc.hackpad.com_2016-Week-1_p.131666_1456111087190_undefined)
被「___ 壟斷我們每天使用的資訊系統」有什麼問題 (底線可以換成過去的 MS-Windows 或者一堆產品),但看這張照片,大概就能體會「有選擇」的重要。 [ [source](https://www.facebook.com/photo.php?fbid=10102665120179591&set=a.529237706231.2034669.) ]
開放原始技術不見得比較強大,但可以讓我們「有選擇」,知道裡頭的設計和實做機制,同時引出新的商業機會。
## 開放原始碼專案的商業應用
* [開放原始碼專案獲利指引](https://github.com/jserv/lemonade-stand)
* 捐贈按鈕
* 懸賞
* 群眾募資 (一次性)
* 群眾募資 (持續性)
* 賣書及周邊
* 廣告
* 受雇於公司並持續開發專案
* 在職時啓動專案
* 補貼
* 咨詢服務
* SaaS
* 雙重授權條款
* 免費增值授權
* 開放核心
* 基金會
* 風險投資
自由軟體成功的地方,向來都是擁有健全的產業生態鏈,絕不只是因為「免費」而成功的。
你會因為山林中有很多可自由採集的野菜,你會在家不用任何人動手就天天可以免費吃到嗎?
自由軟體如同山林中可自由採集的野菜,你得自己花時間自己去採集去學習怎麼料理,或是找個專家/餐廳來幫你採集與料理服務,有人(不論是內部或外部)提供專業服務,這樣的才吃的順口不壞了腸胃。若只是仗著免費,又隨便胡亂餵送的話,等著看大家會如何倒胃吧。
英國真實 LibreOffice 成功案例: [Collabora deal will provide savings on Open Source office software](https://www.gov.uk/government/news/collabora-deal-will-provide-savings-on-open-source-office-software)
微軟Office靠賣軟體授權維生,而 Collabora 公司則靠賣技術支援與專業服務維生,UK 政府拿民眾納稅的錢跟 Collabora 簽了軟體合作合約,Collabora 依 UK 政府使用需求,客製開發政府需要的功能私有雲端 LibreOffice 功能,當政府使用上發現軟體問題,Collabora 公司可以在第一時間內替 UK 政府修正軟體問題。UK 政府養活了具有專業能力的 Collabora 公司,而本來就是開放原始碼的 LibreOffice 的臭蟲被大量快速修正了,實質不僅 UK 政府受惠,還有更多民眾與世界上其他人也跟著受惠。
延伸閱讀: [LibreOffice 發展史與開源授權分析](https://fossapc.hackpad.com/B1-UcT9fOX8jLR)
Q: 開放原始碼若商業化,在商業化過程中,若使用免費的元件,則後續版本的更新與維護該如何運行?
A: 這就屬於「開放核心」和「諮詢服務」的範疇
Q: 開放原始碼軟體的盈利模式是否是以後期服務為主,重點並不在前期出售軟體獲利,而是藉此打開市場獲得市場份額,在軟體項目的部署與定制以及後續的檢修升級過程盈利?
A: 這是 1990 年代 Cygnus Solutions (第一間以自由軟體獲利的公司) 實際採用的方式,但之後 Red Hat 就靈活採用上述獲利方式的組合,實現持續獲利。
Q: 對於開放原始碼生態系統的安全性有沒有相關的防護措施?
A: 有,而且專注這方面的公司不算少。[Black Duck Software](https://www.blackducksoftware.com/) 是開放原始碼軟體管理的全球領導廠商,協助企業降低開源碼版權與資安的風險。Synopsys 旗下的 [Coverity](https://www.coverity.com/) 提供程式碼靜態分析工具,免費分析開放原始碼專案的程式碼品質。
## 授權條款與模式
* 影片: [USL v. BSDi 官司](https://www.youtube.com/watch?v=LLtj41eyvcA)
* [自由軟體授權分析](https://www.dropbox.com/s/yx2xsh0c0aosl0i/20160307.pdf?dl=0),林誠夏
* 權利
* 使用權
* 修改權
* 散佈權
* Note. 商用軟體只有『使用權』。
* 自由或開放原始碼軟體的特性
* 非專屬授權(專屬授權類似『賣斷』)
* 不可撤回
* 免授權金(但可收費)
* 授權金 (對象、時間、範圍)
* 使用GPL Licence時,程式碼可以以工本費之價碼收取費用(例如光碟、文本印製等等)
* 不附隨擔保
* 不限制目的、時間、地域
* 現在這個世界是開源跟私有(proprietary)的結合
* 商業策略:開放 binary 和 source code,但是針對行業專屬的 know-how 或操作指南,只提供給生意夥伴或付費訂閱會員(不違反 GPL 原則)
* [Make Your Open Source Software GPL-Compatible](http://www.dwheeler.com/essays/gpl-compatible.html)
* by [David A. Wheeler](http://www.dwheeler.com/contactme.html)
![](https://hackpad-attachments.s3.amazonaws.com/fossapc.hackpad.com_WjZwF2NUZWl_p.131666_1463617017491_undefined)
![](https://hackpad-attachments.s3.amazonaws.com/ntuoss.hackpad.com_NlSuiXIWfYP_p.545670_1456726129823_fork.jpg)
* ["fork" 的具體展現](https://twitter.com/Crazyinnasia/status/818065655761092608)
## Fork in Free / Open Source Software Projects
* 影片: [WebKit 發展史及開源條款授權分析](https://www.youtube.com/watch?v=i3yuZ9QMd1U)
* [解說共筆](https://fossapc.hackpad.com/WebKit--XqghAl17WNT)
* F/OSS 專案的特性之一,就是開發者 "fork" 專案的自由 (不損害商標的前提)
* 技術報告: [Forks in Open Source Software Projects](https://wiki.oulu.fi/download/attachments/28092087/ossd_2012_kuusirati_seppanen.pdf?version=1&modificationDate=1353314930000) (2012)
* 技術報告: [Forks have created some of the best projects in Free Software, but their origins are usually controversial and messy](https://www.linuxvoice.com/issues/006/fork6.pdf) (2009)
* 論文: [Understanding Code Forking in Open Source Software](https://helda.helsinki.fi/bitstream/handle/10138/153135/287_978-952-232-275-3-1_v2.pdf) (2015)
* 電子書: [Software Development Using Open Source and Free Software Licenses](http://www.oreilly.com/openbook/osfreesoft/book/ch07.pdf) (Page 171)
* OpenSSL => LibreSSL, BoringSSL
* [LibreSSL](http://www.libressl.org/) (OpenBSD 開發者主導): [Only a few days old, OpenSSL fork LibreSSL is declared 「unsafe for Linux」](http://arstechnica.com/security/2014/07/only-a-few-days-old-openssl-fork-libressl-is-declared-unsafe-for-linux/) (2014 Jul)
* [BoringSSL](https://boringssl.googlesource.com/boringssl/) (Google 工程師主導): [Google unveils independent 「fork」 of OpenSSL called 「BoringSSL」](http://arstechnica.com/security/2014/06/google-unveils-independent-fork-of-openssl-called-boringssl/) (2014 Jun)
* 起因: 2014 年 OpenSSL 的重大安全問題: [Heartbleed Bug](http://heartbleed.com/)
* 事實上,2009 年就有 OpenBSD 開發者 Marco Peereboom 不滿 OpenSSL 的 API 設計,fork OpenSSL 而提出 [assl (Agglomerated SSL)](https://opensource.conformal.com/wiki/assl)
* 截至 2014 年,全球 66% 的伺服器使用 OpenSSL
* 其他相關開源專案: [GnuTLS](https://en.wikipedia.org/wiki/GnuTLS) (LGPL), [NSS](https://en.wikipedia.org/wiki/Network_Security_Services) (MPL; Mozilla project)
* OpenSSL 授權和 GPL 的不相容議題 [廣告條款]: [PostgreSQL, OpenSSL, and the GPL](https://lwn.net/Articles/428111/); [The OpenSSL License and The GPL](https://people.gnome.org/~markmc/openssl-and-the-gpl.html)
* XFree86 => Xorg
* 關鍵人物: Keith Packard
* 從「教堂」模式轉化「市集」模式
* The XFree86 president, David Dawes, decided to change the XFree86 license in 2004 to one that wasn’t GPL-compatible, primarily to give developers more credit. The problem wasn’t giving credit; the problem was GPL incompatibility. This attempted change led to a mass exodus from XFree86, as nearly all developers and users immediately abandoned XFree86.
* XFree86's popularity declined rapidly, and by 2009 it was effectively dead. Meanwhile X development picked up pace as it moved away from XFree86.
* OpenOffice => LibreOffice
* gcc2 => egcs => gcc3
* Emacs => Xemacs
* FreeBSD => DragonFlyBSD
* RHEL => CentOS
* MeeGo => Sailfish OS (Jolla)
**The effect of the right to fork **
code forking 對一個專案可能造成的影響正反面都有可能,但從宏觀的角度來看,code forking 可說是開源軟體永續發展的隱形推手。code forking 所產生的影響分成下面三種等級:
* **Software Level**
* 這邊所強調的一點是商業手法中非常常見的「計劃性淘汰」。舉例來說,故意減少燈泡的壽命來增加銷售量、在印表機中設一個「死亡開關」,即使機台都沒壞掉,只要印了一定數量的文件就會無法再運作,⋯⋯等。而在軟體產業中,常見的計劃性淘汰就像是軟體升級後不支援舊版作業系統、甚至是推出新的作業系統宣布不再維護舊版作業系統等手法。
* 然而開源軟體因為授權的特性,天生就免疫這種情況的出現。因為每個人都有 fork 的權利,沒有人能故意用計劃性淘汰的手法來逼迫大家放棄現有的軟體,只有可能讓大家一起將軟體升級、改善相容性和讓軟體更好而已。
* **Community Level**
* 對於開源社群來說,因為每個人都有 fork 的權利,為了避免不必要的 fork、將使用者和開發者分散掉,整個社群變得更團結。然而當專案領導人 (概念重於頭銜本身) 和整個社群的期望相違背時,fork 也能讓整個社群確保專案可以朝著多數人的目標和期望前進。同時,fork 也能避免軟體公司「綁架」了整個軟體。
* 有趣的是,開源軟體公司和開源軟體社群有著根本上不同的地方:軟體公司可能會賣掉、然而社群不會。因此若開源社群的大部分開發者不贊同某個決定時,他們大可直接 fork 一個版本出去而不甩決策者、統合認同自己的人們再繼續進行開發。
* 不過這邊值得一提的是,單單 fork 程式碼其實是相當簡單的(在GitHub上僅僅是一個按鈕的事情),以上所提及的 fork,**困難的挑戰**往往都是在建立開源社群、開源社群、使用族群、穩定收入和有效的支援與服務。
* **Business Ecosystem Level**
* 開源商業模式之所以變成現在的型態,"fork" 可說是其中最關鍵的機制。fork 讓公司們「可以」做到某些事,同時也讓這些公司們「不可以」去做某些行為。
* 舉例來說,MariaDB Foundation 和 Oracle 的商業行為注定不可能一樣。**由於 MariaDB 是從 GPL 2.0 的 MySQL fork 出來的,因此會被 GPL 2.0 給限制**、無法使用和 Oracle 一樣的定價策略。然而 Oracle 是目前 MySQL 的擁有者、握有兩種授權,因此他可以使用 Dual Licensing 的方式來作為其商業模式,而 MariaDB Foundation 則辦不到。
* 另外關於Business Ecosystem Level有趣的一點是,fork出來的軟體其實只會在散佈時觸發Open Source License。因此要是公司只拿來作為內部使用,則fork出來的軟體經過修改後滿足需求,將可節省大量成本。只不過這種方式的缺點是無法得到眾人們的debug以及原軟體更新時將有可能和公司自己調整的版本不相容。
* 在商業的開源生態中,許多公司一起合作是很常見的模式。舉例來說,許多遊戲開發商有可能一起合力開發一款遊戲引擎,而自家的遊戲就可以使用這款引擎又可以節省開發遊戲引擎的成本。一個更好的引擎可以讓所有廠商都獲利,因此而促進了大家的合作。
* 另一個例子是WebAssembly,由 Mozilla、Google、Microsoft、Apple 等四家公司合作開發,目標是改善現在網頁的效能、讓未來Web Application能夠增加更多的可能性。這些例子就和高速公路一樣,在基礎建設上大家共同來進行開發、加速整體產業的發展,讓大家一起獲利。
* 一句話總結各公司在開源合作的模式:
:::info
"Open source software is commonly developed to **support** what is unique about the business, rather than to **be** what is unique about the business."
:::
## 創新的趨力和趨利
* [從「下町火箭」談開放原始碼](https://medium.com/@c9s/%E5%BE%9E%E4%B8%8B%E7%94%BA%E7%81%AB%E7%AE%AD%E8%AB%87%E9%96%8B%E6%94%BE%E5%8E%9F%E5%A7%8B%E7%A2%BC-5f64c6404548#.kd7cgh6jb)
* 創新,重點在於打破既有框架、既有想像,讓事物以新的樣貌重生。 不管是多小多小的創新,都是在改變世界。
* 開放原始碼在商業策略上的利基在於:
* 版權還是在原作者或發起公司手上
* 程式碼是開放了,但專利不是你的
* 專案主導掌控權不在你手上,只有參與合作的企業有機會參與決策
* 企業共利,降低獨立開發成本
* 淘寶年營收成長速度之高,已經到了沒有現成的商業軟體可完美解決該公司面對的技術問題,只好重頭改善開放原始碼的技術,以符合自身需求有商業方案
* 原本採用 IOE
* I: IBM (server)
* O: Oracle (database)
* E: EMC (storage)
* Microsoft 一開始 (2001) 否認 Open Source,認為它是一個軟體產業的「Cancer」,後來自己也推行一套 Open Source 的授權(2007)。
* 要去思考我們需要解決什麼樣的問題,如果沒有解決任何問題,則不會有商機。
* Open Source 提供一個高度可見的協作框架,吸引大公司的關注
* Open Source 作為公共財的形式,刺激了基礎軟體設施
* [Symbian](http://en.wikipedia.org/wiki/Symbian): Symbian 作業系統的授權金行情價是台幣一億元,顯示在當時非開源的手機系統的開發成本極高無比
* 但是,Android 完全顛覆這樣的模式,把價值上億元的手機系統原始碼,當作廣告來免費放送
* 高通的專利傘
* 規定高通的客戶彼此之間不能互相提起法律訴訟
* 但這規則在去年消失了
* 這專利傘造成的封閉市場存在了十幾年
* [小米還有更壞的事? 恐失「高通傘」保護 | 即時新聞 | 20141216 | 蘋果日報](http://www.appledaily.com.tw/realtimenews/article/new/20141216/524954/)
* [OpenStack](http://en.wikipedia.org/wiki/OpenStack) - [](https://www.openstack.org/)[https://www.openstack.org/](https://www.openstack.org/)
* Nokia 各種手機軟體從頭到腳都是自己開發,Android 這個 Open Source Project 的出現造成整個手機生態的改變。
延伸閱讀
* [從 Revolution OS 看作業系統生態變化](https://fossapc.hackpad.com/-Revolution-OS--RrJpYEByzmr)
## 最後送大家一句話
"Work Until You No Longer Have to Introduce Yourself"
![](https://i.imgur.com/VrZNtOl.jpg)
[ [source](https://www.facebook.com/photo.php?fbid=10105912195265103&set=a.10100927720771943.2974750.1210499) ]