# 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) ]