# 2021q1 Homework1 (culture)
contributed by < ch1p98 >
## Question
1. free software (自由軟體) 和 open source (開放原始碼) 兩者的理念有何落差?請以創始人的訴求來解讀,儘量引用第一手材料
根據[開放軟體][1]的內容,開放軟體包括以下十項主要特色:
>1. 自由再發布,不論此行為是否涉及營利。
>2. 發佈內容包括原始碼,任何形式的轉換都是不允許的。
>3. 允許修改原始碼以及製作以原始碼為基礎的衍生作品。
>4. 如果軟體允許使用者為其製作patch,則可以限制修改的形式以及規範其名稱、版本號等。
>5. 不可以針對團體或個人進行差別待遇。
>6. 不可以針對使用軟體的目的或其領域進行限制;例如商業或學術目的等。
>7. 任何間接取得軟體的人都自動享有相同權利。無須另行協定。
>8. 附加在程式上的權利不能受限於程式是特定產品的一部分。
>9. 不能限制與授權軟體一起發布的其他軟體。
>10. 授權的提供不能以任何的技術或介面為前提。
>
與此相對,[自由軟體][2]則著重在"*尊重使用者的自由,以及社群的自由。粗略地講,它代表使用者擁有執行、複製、發布、研究、更動和改善該軟體,以及發布包含修改的內容的自由*"。另一個重點是,Free Software的Free與價格無關。自由軟體允許且鼓勵收費,而能不能夠賺到錢,全看購買者的意願。根據[GNU][3]的說明,他們鼓勵稱之為"為散布收費"而非"銷售"。
[1]:https://opensource.org/docs/osd
[2]:https://www.gnu.org/philosophy/free-sw.html
[3]:https://www.gnu.org/philosophy/free-sw.html
2. 從最初的 Cygnus Solutions (史上首間透過 free software 實現盈利的公司), Red Hat (收購 Cygnus Solutions), 到 IBM (收購 Red Hat 並將其既有業務作為主軸),請解釋公司如何透過 free software 及 open source 來獲利?請列出相關的論文和報告
軟體的營利方式不只有銷售(或者近年越來越流行的訂閱:本質上仍然是銷售),技術支援、專業諮詢也是可能的營收來源。專有軟體因為原始碼掌握在發行商的手上,支援僅能夠由發行商提供。自由軟體因為其原始碼的自由性,其技術支援同樣可有更多不同的來源。
Red Hat[2019年財報][4]顯示,其營收約為33.6億美元,其中約63%為RHEL本身以及相關產品的訂閱服務,OpenStack, OpenShift等開源雲計算訂閱服務約佔24%,其他則是諮詢、人員訓練等。可見即使是Open source software,依然能夠帶來豐厚的收入,關鍵只是應用適當的商業模式。
[4]:https://www.annualreports.com/HostedData/AnnualReports/PDF/NYSE_RHT_2019.pdf
3. 在 21 世紀初期,Microsoft 一度負面評價 GPL 與 Linux,但為何一旦該公司主推雲端業務後,即宣布擁抱 GNU/Linux 呢?請討論該公司的態度轉變,以及 Microsoft 如何利用 Linux 提高獲利?
4. Compatible Time-Sharing System (簡稱 CTSS) 是史上第一套分時多工作業系統,請簡述其發展背景和關鍵特徵,又有哪些 CTSS 的特徵被 UNIX 或更晚出現的 Linux 所繼承?
5. Richard Stallman 建立 GNU 的訴求是 “GNU’s Not Unix”,儘管 Stallman 博士對於 AT&T 收取 UNIX 高額授權金感到不悅,但為何他採用 UNIX 作為 GNU/FSF 發展的藍圖呢?UNIX 有哪些特徵和文化,很直得延續呢?
6. 在 Linux 問世前,BSD 早已席捲作業系統的生態,但為何在 1990 年代後期,Linux 無論是聲勢和開發活躍度都超越 BSD 家族呢?請舉出量化數據和相關研究報告說明
7. 儘管 Richard Stallman 成立 Free Software Foundation (FSF) 的初衷是打造 GNU 作業系統,但為何他從 gcc 編譯器著手?為了落實他心目中的 free software 生態,這樣的策略有何考量?
8. FSF 所提倡的 “Copyleft” 概念,和 “Copyright” 是否衝突?在實務上如何達成?free software 和 open source 的授權條款是否符合著作權精神呢?
9. GNU Hurd 採用 CMU Mach 微核心作為基礎設計,該途徑與 Linux 核心大相徑庭,請說明這兩種核心設計手法的優劣
10. 1991 年 Linux 核心推出 v0.01,原始程式碼約 1 萬行,到 1995 年的 v1.2 則有 25 萬行,並獲得 50 萬名使用者採納,在 1999 年的 v2.2 則有超過一千萬名使用者,往後的日子,Linux 更是如火如荼,請解釋何以 Linux 能吸引到開發者目光?又,Linux 獲得商業公司採納的考量是什麼?
11. Brian Behlendorf 歸納網際網路是 Apache 與 Linux 得以快速成長的重要因素,請說明自 1990 年代中期,Apache 和 Linux 一類的自由軟體/開放原始碼基礎建設,對整個資訊科技產業帶來什麼衝擊?
12. 20 世紀最龐大的開放原始碼專案是 Mozilla,儘管後者無法挽救 Netscape 公司的命運,但卻使後續的 Mozilla Foundation/Corporation 有穩健的基礎來發展 Firefox 網頁瀏覽器和相關的軟體。請從網頁瀏覽器的發展,討論自 1998 年以來,活躍和一度活躍發展的開放原始碼網頁瀏覽器實作,以及這些實作對於 W3C 一類的標準制定有何影響?
13. GCC 的發展過程中,一度出現以 Cygnus Solutions 為首的開發者建立 EGCS project 分支,挑戰 FSF 的開發策略,但最終 EGCS 成為 GCC 發展主流方向,請說明時代背景,並援引〈教堂與市集〉的模型來解釋
{%youtube XvDZLjaCJuw %}
Video: UNIX: Making Computers Easier To Use -- AT&T Archives film from 1982, Bell Laboratories
One of the most challanging mission for operating system in early 80s was to make programming more efficiently. There were motley work for softwares in computer to do, crucial or trivial. One equivalently challanging part of the job was to keep them working fine. The best way to do so is to split one complicated mission to many simpler mission, like sorting, lowercase, etc. At that time, most operating system could not do this well due to limitations in such as memory and file system, causing a lot of repeated and tedious work. UNIX made everything reusable and highly communicative. Programming and more fundamentally perhaps, using computer, are available to more people.