---
# System prepended metadata

title: 2021q1 Homework1 (culture)
tags: [linux2021]

---

# 2021q1 Homework1 (culture)
contributed by < `WayneLin1992` >
###### tags: `linux2021`

## 問題清單
- [ ] free software (自由軟體) 和 open source (開放原始碼) 兩者的理念有何落差？請以創始人的訴求來解讀，儘量引用第一手材料
* free software: Richard Stallman 「我支持自由軟體運動、而非開放原始碼運動的理由，在於我相信有比利益更重要的事情，像是與他人自由合作、組建社群。從我們的生命品質來說，能生活在優良的社會之中，是相當重要的，這就是我的觀點」`(影片時間: 00:48:30 → 00:48:52)`
* open source:Bruce Perens 「我認為一些自由軟體圈的人對於商業化感到有些畏懼。呃，你知道的，成功必然能夠推遲反抗的到來。但我認為商業化是非常重要的，我們想要推廣這個軟體。我和 Richard Stallman 共事，而我不認為我和他有任何哲學理念上的差異，我是《開放原始碼定義》的作者，他則是自由軟體運動的發起人暨組織者。『他認為所有的軟體都必須是自由公開的；而我則認為自由軟體與非自由軟體可以同時存在。』這是我們唯一的差異。」`(影片時間: 00:48:48 → 00:49:51)`
* 由此可以知道 free software (自由軟體)有比 open source (開放原始碼) 有更高的理想性，free software (自由軟體)強調所有的 software 應該都公開，open source (開放原始碼)則強調開發者可以選擇公開及不公開的部分。
:::danger
說好的「第一手材料」呢？無論是 FSF 或 OSI 都有相當可觀的文獻，你查閱了嗎？
:notes: jserv
:::

- [ ] 從最初的 Cygnus Solutions (史上首間透過 free software 實現盈利的公司), Red Hat (收購 Cygnus Solutions), 到 IBM (收購 Red Hat 並將其既有業務作為主軸)，請解釋公司如何透過 free software 及 open source 來獲利？請列出相關的論文和報告
* Cygnus Solutions: 提供開發軟體高質量的技術支援(如:包裝 GCC 並出售)將 GCC 能夠支援各式硬體，當時 GCC 面對到 SUN 的編譯器挑戰，效能比 SUN 來的差， Cygnus 在這方面不斷努力，追上 SUN ，並在1987年，率先提供 C++ 編譯器也是第一個能在本地電腦執行的 C++ 編譯器。[Open Sources chapter 6](https://www.oreilly.com/library/view/open-sources/1565925823/ch07.html)
* 

- [ ] 在 21 世紀初期，Microsoft 一度負面評價 GPL 與 Linux，但為何一旦該公司主推雲端業務後，即宣布擁抱 GNU/Linux 呢？請討論該公司的態度轉變，以及 Microsoft 如何利用 Linux 提高獲利？
* 因為在雲端方面 Apache 上執行 Linux 的表現比 Windows 的表現來的有效率順暢很多，使得雲端業務公司紛紛轉向投入 Linux 懷抱， Linux 使用 Monolithic kernel 設計，這也是為什麼 Linus Torvalds 覺得這就是比當時 Windows 成功的原因。

:::danger
「使用 Monolithic kernel 設計，這也是為什麼 Linus Torvalds 覺得這就是比當時 Windows 成功的原因」這樣的因果關係，不足以說明 Microsoft 在技術投資的變化，你需要更多論證。
:notes: jserv
:::
    
- [ ] Compatible Time-Sharing System (簡稱 CTSS) 是史上第一套分時多工作業系統，請簡述其發展背景和關鍵特徵，又有哪些 CTSS 的特徵被 UNIX 或更晚出現的 Linux 所繼承？
* CTSS 的分時多工系統，使用者通訊 email ，文字編輯器 vim ， password 登入。

- [ ] Richard Stallman 建立 GNU 的訴求是 “GNU’s Not Unix”，儘管 Stallman 博士對於 AT&T 收取 UNIX 高額授權金感到不悅，但為何他採用 UNIX 作為 GNU/FSF 發展的藍圖呢？UNIX 有哪些特徵和文化，很直得延續呢？
在 Linux 問世前，BSD 早已席捲作業系統的生態，但為何在 1990 年代後期，Linux 無論是聲勢和開發活躍度都超越 BSD 家族呢？請舉出量化數據和相關研究報告說明
* GNU 原本想寫出一個沒有著作權問題的 UNIX ，但最後因為在核心 (GNU Hurd) 的發展並不是很順利，而 Linux 又獲得巨大的成功，使得團隊轉向開發 GNU/Linux。
* GNU Hurd 繼承了 UNIX 的 microkernel 的設計
* BSD 因為被 AT&T 認為侵權告上法院，使得 BSD 聲勢下降
:::danger
Research UNIX 並非採用 microkernel 的設計，上方描述有誤，請查閱 CMU Hach 實際影響的作業系統核心。
僅因為「告上法院」，不足以說明 BSD 受波及的程度。歷年有許多擁護 Linux 核心的公司 (如 IBM) 都曾被提告，而且官司曠日費時，但 Linux 生態圈仍相當活躍
:notes: jserv
:::

- [ ] 儘管 Richard Stallman 成立 Free Software Foundation (FSF) 的初衷是打造 GNU 作業系統，但為何他從 gcc 編譯器著手？為了落實他心目中的 free software 生態，這樣的策略有何考量？
* 因為 gcc 是其中的核心，只要 gcc 搞定，就能在使用以前 UNIX 的各種軟體，達到 free software 的生態。

- [ ] FSF 所提倡的 “Copyleft” 概念，和 “Copyright” 是否衝突？在實務上如何達成？free software 和 open source 的授權條款是否符合著作權精神呢？
* 並不衝突，透過授權碼條款來加已限制(如:使用者能使用的範圍及修改程度)，符合著作權精神，因為作者有權做是否願意分享的決定，爾且之後的修改者也必須尊重著作者的權益。

- [ ] GNU Hurd 採用 CMU Mach 微核心作為基礎設計，該途徑與 Linux 核心大相徑庭，請說明這兩種核心設計手法的優劣
* 
* 

- [ ] 1991 年 Linux 核心推出 v0.01，原始程式碼約 1 萬行，到 1995 年的 v1.2 則有 25 萬行，並獲得 50 萬名使用者採納，在 1999 年的 v2.2 則有超過一千萬名使用者，往後的日子，Linux 更是如火如荼，請解釋何以 Linux 能吸引到開發者目光？又，Linux 獲得商業公司採納的考量是什麼？
* Linux 及 Windows NT 性能比較 
    * RAM: Windows NT 需要 12MB Linux 只需要 2MB，假如你想跑得更順暢 NT 需要額外 70MB Linux 只需要 15MB。
    * 檔案管理: NT 有 win16 的支持 ， Linux 也有 x/window 的支持。
    * 技術支援: Linux 因為 open source 的關係，提供方便第三方自行解決問題，而 Windows NT 則由 Microsoft 負責。
    * 成本:
    ![](https://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/027/2734/2734f5.jpg)
    * 結論: 綜觀商業公司考慮使用 Linux 是出於成本因素，因為其他方面， Linux 及 Windows NT 都各有優劣。
    [Linux vs. Windows NT and OS/2](https://www.linuxjournal.com/article/2734)

- [ ] Brian Behlendorf 歸納網際網路是 Apache 與 Linux 得以快速成長的重要因素，請說明自 1990 年代中期，Apache 和 Linux 一類的自由軟體/開放原始碼基礎建設，對整個資訊科技產業帶來什麼衝擊？

- [ ] 20 世紀最龐大的開放原始碼專案是 Mozilla，儘管後者無法挽救 Netscape 公司的命運，但卻使後續的 Mozilla Foundation/Corporation 有穩健的基礎來發展 Firefox 網頁瀏覽器和相關的軟體。請從網頁瀏覽器的發展，討論自 1998 年以來，活躍和一度活躍發展的開放原始碼網頁瀏覽器實作，以及這些實作對於 W3C 一類的標準制定有何影響？

- [ ] GCC 的發展過程中，一度出現以 Cygnus Solutions 為首的開發者建立 EGCS project 分支，挑戰 FSF 的開發策略，但最終 EGCS 成為 GCC 發展主流方向，請說明時代背景，並援引〈教堂與市集〉的模型來解釋
* 在 GCC 1.x 版本後，變得相當穩定，而且 GCC 對於開發嚴格控制(如:教堂)，無法適應當時各類的需求，使得 EGCS (如:市場)開始透過快速地疊帶，使他在特定領域優化，而且又有其他大公司紛紛加入(如: intel 對編譯器在 x86 優化)，最後 GCC2.x 開始已 EGCS 為主。