# 2021q1 Homework1 (culture) contribute by < `jameshuang890902` > ## 作業要求 * 閱讀以下指定報告和材料: - [從 Revolution OS 看作業系統生態變化](https://hackmd.io/@sysprog/revolution-os-note): 非常珍貴的紀錄片,從早期的黑客挖掘的第一手材料 - 《[The Unix System: Making Computers Easier to Use](https://www.youtube.com/watch?v=XvDZLjaCJuw)》: 來自 AT&T 早期的 UNIX 介紹影片,在 35+ 年前就達到的技術水平 * 編輯「[作業區](https://hackmd.io/@sysprog/linux2021-homework1)」,嘗試回答上方「問題清單」裡頭的問題,儘量引用第一手材料和權威文獻來解說 * 針對上述材料所提到的所有影片、影片解說和對應資料,紀錄自己的疑惑和心得 - 若發現 [從 Revolution OS 看作業系統生態變化](https://hackmd.io/@sysprog/revolution-os-note)共筆中存在失效的超連結 (dead links),請回報和嘗試修正 - 不能只是「摘要」,必須詳述自己研讀上述材料的啟發並且「充分提問」(沒有笨問題,同學的提問彙整後,會成為後續課程的參考) * 截止日期: * Mar 7, 2021 (含) 之前 ## :question: 問題清單 ### free software (自由軟體) 和 open source (開放原始碼) 兩者的理念有何落差?請以創始人的訴求來解讀,儘量引用第一手材料 >by Richard Stallman The terms “free software” and “open source” stand for almost the same range of programs. However, they say deeply different things about those programs, based on different values. The free software movement campaigns for freedom for the users of computing; it is a movement for freedom and justice. By contrast, the open source idea values mainly practical advantage and does not campaign for principles. This is why we do not agree with open source, and do not use that term.https://www.gnu.org/philosophy/open-source-misses-the-point.html 我的理解是 Free software 所著重的是「用戶使用的方式」,其用戶可以自由運行、複製、分享、學習,更改和改進軟件;而 Open source 是著重利用許可證於軟體的開發方式。 :::danger 第一手材料寫很多,但你的見解卻這麼有限?是不是理解出問題了呢? :notes: jserv ::: 下面是詳細定義上的說明。 如果程式的用戶具有以下四個基本自由,則該程序是自由軟件 。參考 https://www.gnu.org/philosophy/free-sw.html: 1. 出於任何目的自由運行程式的自由(自由0)。 2. 研究程式的運作方式並進行更改以自由進行電腦運算的自由(自由1)。前提條件是要能存取到原始程式碼。 3. 重新分發副本(拷貝)的自由,以利於幫助他人(自由2)。 4. 將修改版本的副本(拷貝)分發給他人的自由(自由3)。通過這樣做,整個社群都有機會從您的更改中受益。前提條件是可存取到原始程式碼。 而 Open source 要符合下面十項條件: 參考 https://opensource.org/docs/osd 1. Free Redistribution 2. Source Code 3. Derived Works 4. Integrity of The Author's Source Code 5. No Discrimination Against Persons or Groups 6. No Discrimination Against Fields of Endeavor 7. Distribution of License 8. License Must Not Be Specific to a Product 9. License Must Not Restrict Other Software 10. License Must Be Technology-Neutral --- ### 從最初的 Cygnus Solutions (史上首間透過 free software 實現盈利的公司), Red Hat (收購 Cygnus Solutions), 到 IBM (收購 Red Hat 並將其既有業務作為主軸),請解釋公司如何透過 free software 及 open source 來獲利?請列出相關的論文和報告 [影片](https://www.youtube.com/watch?v=vWwvh3036Fw&t=191s)中 Richard Stallman 的觀點是,可以透過對特定軟體提供技術支援的方式,還賺取收益。 Cygnus 這個名字就來自 “Cygnus, Your GNU Support”。 #### Red Hat 如何從社群開發的 Open source 賺錢? 一般 Open source 社群可以非常快速的開發,但除了快速開發外,還需要一定程度的一致性與穩定性。社群開發軟體通常具備上面兩個性質,所以也就成了 Red Hat 的商業機會。Red Hat 透過整合最新開發的 Open source sortware 來解決客戶問題、維護安全性並確保新的程式更動不會影響客戶的使用。其客戶是透過訂閱機制來取得 Red Hat 的技術支援。 參考:https://www.redhat.com/rhdc/managed-files/cp-open-source-software-communities-faq-f22225pr-202002-en.pdf >The key to Red Hat's subscriptions success is that it is not possible to get a compiled and certified version of RHEL without purchasing appropriate units of support. What differentiates Red Hat is its “unit of support” is not restricted to the traditional per server or per CPU and can be priced according to CPU bands. Complimentary sources of revenue for Red Hat also include training and training material as well as certifications and migration services, amongst others. The bulk of its revenue, however, come from subscription services which continue to grow every year, with nearly half of its top deals coming from new customers [29]. 參考: [The Adoption of Open Source Software in Business Models: A Red Hat and IBM Case study](https://researchspace.csir.co.za/dspace/bitstream/handle/10204/3879/Munga1_2009.pdf?sequence=1&isAllowed=y) #### IBM 如何透過 Open source 賺錢? 由於 Opne source software 的價格低於 IBM 以往的專有軟體,為 IBM 提供了製作與銷售特別應用的平台,同時也有利於讓更多 Open source software 能在 IBM 的硬體與平台上執行。 為了得到更好的系統,且不需關心改善系統成本。 IBM意識到,與其維持自己的自己的軟件,它可以採用 Open source software 並提供該產品所需的改進。 :::danger 舉出實際商務案例說明。 :notes: jserv ::: 參考: [The Adoption of Open Source Software in Business Models: A Red Hat and IBM Case study](https://researchspace.csir.co.za/dspace/bitstream/handle/10204/3879/Munga1_2009.pdf?sequence=1&isAllowed=y) --- ### 在 21 世紀初期,[Microsoft 一度負面評價 GPL 與 Linux](https://www.zdnet.com/article/microsoft-once-called-linux-a-cancer-and-that-was-a-big-mistake/),但為何一旦該公司主推雲端業務後,即宣布擁抱 GNU/Linux 呢?請討論該公司的態度轉變,以及 Microsoft 如何利用 Linux 提高獲利? 從客戶只希望可以工作,無論是在 Windows 或 Linux 上運行的願景來看。Microsoft 的雲端服務如果兩者兼容才能獲得更大的市場,這也代表了更多的獲利。 Microsoft 與 Linux 合作已經有很多年了,自2009年以來,System Center Operations Manager 就開始提供 Linux 和 UNIX 監控。在 Hyper-V 上運行 Linux guest 虛擬機的驅動程是在2010年的許多發行版中廣泛使用,甚至還提供了在 Hyper-V 上運行 FreeBSD guest 虛擬機的驅動程序。Microsoft Azure在2013年Azure IaaS全面上市的「第一天」就提供了Linux VM。如今 Microsoft 已經建立了將 Linux 與 Microsoft 產品一起使用的重要客戶群。 今天 System Center 管理著數十萬台 Linux 和 UNIX 生產中使用的服務器,最大的客戶管理著將近10,000台 Linux 服務器。客戶如 Ancestry.com 、 Equifax 、英國政府 FCO 服務和 Europcar 使用許多運行 Linux 的 VM 在運行 Hyper-V 和 System Center 的本地運行 Microsoft 雲。 Azure IaaS 中超過20%的 VM 正在運行 Linux 。除了在 Windows 上運行之外, Azure 還提供了在 Linux 上運行的 HDInsight(Hadoop)服務。而且,如果您更廣泛地看, Microsoft 在基於Linux和基於BSD的客戶端操作系統(例如 iOS 、 Android 和 macOS)上提供了關鍵的生產力軟件,例如 Office365 、 Skype和 RDP 客戶端。 雲幾乎歸 Linux 和開源技術所有。像亞馬遜和谷歌這樣的巨頭不僅在 Linux / Open Source 上運行,而且還以 PaaS 或 IaaS 服務的形式提供這些共享技術。就連 Microsoft 也承認 「 Azure 上5個虛擬機中有1個正在運行 Linux 」。所以如果 Microsoft 不擁抱 Linux 可能就會面零失去雲端產業的高獲利。 參考:[Microsoft Loves Linux ](https://cloudblogs.microsoft.com/windowsserver/2015/05/06/microsoft-loves-linux/)、[What Does Microsoft’s Love Mean for Linux?](https://www.linux.com/news/what-does-microsofts-love-mean-linux/) --- #### [Compatible Time-Sharing System](https://en.wikipedia.org/wiki/Compatible_Time-Sharing_System) (簡稱 CTSS) 是史上第一套分時多工作業系統,請簡述其發展背景和關鍵特徵,又有哪些 CTSS 的特徵被 UNIX 或更晚出現的 Linux 所繼承? --- #### Richard Stallman 建立 GNU 的訴求是 "GNU's Not Unix",儘管 Stallman 博士對於 AT&T 收取 UNIX 高額授權金感到不悅,但為何他採用 UNIX 作為 GNU/FSF 發展的藍圖呢?UNIX 有哪些特徵和文化,很直得延續呢? 影片中提到,在當時 UNIX下的標準介面都已經算完備了。我推測是由於 kernel 相較於一班程式來的不易開發, 所以才會先發展 UNIX 相容的程式,直到GNU 的作業系統核心 (kernel) 完成後便可延用之前的程式。因此 GNU 是個與 UNIX 相容的作業系統。 Shell 中常見的 Bash 是 ‘Bourne-Again SHell' 的縮寫,Bourne shell 是斯蒂芬·伯恩(Stephen Bourne)最初編寫的傳統Unix shell。所有的Bourne shell內置命令都可以在Bash中獲得。評估和引用規則取自POSIX 規範中的“標準” Unix shell。上面就是 UNIX 特徵延續的例子。 參考:[GNU 專案](https://www.gnu.org/gnu/thegnuproject.zh-tw.html)、[3 Basic Shell Features](https://www.gnu.org/software/bash/manual/html_node/Basic-Shell-Features.html) --- #### 在 Linux 問世前,BSD 早已席捲作業系統的生態,但為何在 1990 年代後期,Linux 無論是聲勢和開發活躍度都超越 BSD 家族呢?請舉出量化數據和相關研究報告說明 --- #### 儘管 Richard Stallman 成立 Free Software Foundation (FSF) 的初衷是打造 GNU 作業系統,但為何他從 gcc 編譯器著手?為了落實他心目中的 free software 生態,這樣的策略有何考量? 1984年在 Richard Stallman 開始GNU項目之前不久,他聽說 Free University Compiler Kit ,其縮寫為 VUCK. (荷蘭文的 "free" 開頭是 V.),這是一個可以編譯多種不同語言的編譯器,也能使用在不同的機器上。 當 Richard Stallman 寫信詢問作者是否 GNU 能使用該編譯器時,卻得到 "stating that the university was free but the compiler was not" 這個帶點嘲諷的回覆,看來他搞錯了免費的對象。但正因為如此他決定第一支給 GNU 的程式要是一個多平台、多語言的編譯器,因此造就了 gcc 編譯器。 參考:[A Brief History of GCC](https://gcc.gnu.org/wiki/History) --- #### FSF 所提倡的 "Copyleft" 概念,和 "Copyright" 是否衝突?在實務上如何達成?free software 和 open source 的授權條款是否符合著作權精神呢? 兩者應該是沒有直接衝突的。我的理解是 Copyright 是限制作品要經過作者的許可才能拷貝、散佈與銷售。如果作者添加了 Copyleft 就是先授權使用者在 License 的規範下使用、修改、重新散佈的權利,但僅有當 License 保持不變時,因此也確保了 Source code 與法律是不可分割的。 Copyright 、 Copyleft 可以兩者同時存在,藉由 License 達到實務上的實踐。但是 Copyleft 也限制了 Source code 和所有修改都必須是自由的。 參考:[3. Copyright vs. Copyleft](https://www.gnu.org/gwm/libredocxml/x53.html) --- #### GNU Hurd 採用 CMU Mach 微核心作為基礎設計,該途徑與 Linux 核心大相徑庭,請說明這兩種核心設計手法的優劣 --- #### 1991 年 Linux 核心推出 `v0.01`,原始程式碼約 1 萬行,到 1995 年的 `v1.2` 則有 25 萬行,並獲得 50 萬名使用者採納,在 1999 年的 `v2.2` 則有超過一千萬名使用者,往後的日子,Linux 更是如火如荼,請解釋何以 Linux 能吸引到開發者目光?又,Linux 獲得商業公司採納的考量是什麼? --- #### Brian Behlendorf 歸納網際網路是 Apache 與 Linux 得以快速成長的重要因素,請說明自 1990 年代中期,Apache 和 Linux 一類的自由軟體/開放原始碼基礎建設,對整個資訊科技產業帶來什麼衝擊? Apache 和 Linux 所帶來最直接的影響便是在私服器方面。在架設私服器時會需要考量到成本、效能,然而架設 Linux 和 Apache 比 Microsoft IIS 跟 NT 更低,而且許多外掛模組使 Apache 性能強大。當時的大學生普遍對 Linux 都有接觸,所以也不會有不熟悉 Linux 環境的問題。Apache 也因為可以做到在一台主機上架設多個網站,而受到網路供應商的親睞。 --- #### 20 世紀最龐大的開放原始碼專案是 Mozilla,儘管後者無法挽救 Netscape 公司的命運,但卻使後續的 Mozilla Foundation/Corporation 有穩健的基礎來發展 Firefox 網頁瀏覽器和相關的軟體。請從網頁瀏覽器的發展,討論自 1998 年以來,活躍和一度活躍發展的開放原始碼網頁瀏覽器實作,以及這些實作對於 W3C 一類的標準制定有何影響? --- #### GCC 的發展過程中,一度出現以 Cygnus Solutions 為首的開發者建立 [EGCS project](https://en.wikipedia.org/wiki/GNU_Compiler_Collection#EGCS_fork) 分支,挑戰 FSF 的開發策略,但最終 EGCS 成為 GCC 發展主流方向,請說明時代背景,並援引〈[教堂與市集](http://crazyangelo.github.io/Cathedral-and-Bazaar/)〉的模型來解釋