Dai chou
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
      • Invitee
    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Versions and GitHub Sync Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
Invitee
Publish Note

Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

Your note will be visible on your profile and discoverable by anyone.
Your note is now live.
This note is visible on your profile and discoverable online.
Everyone on the web can find and read all notes of this public team.
See published notes
Unpublish note
Please check the box to agree to the Community Guidelines.
View profile
Engagement control
Commenting
Permission
Disabled Forbidden Owners Signed-in users Everyone
Enable
Permission
  • Forbidden
  • Owners
  • Signed-in users
  • Everyone
Suggest edit
Permission
Disabled Forbidden Owners Signed-in users Everyone
Enable
Permission
  • Forbidden
  • Owners
  • Signed-in users
Emoji Reply
Enable
Import from Dropbox Google Drive Gist Clipboard
   owned this note    owned this note      
Published Linked with GitHub
Subscribed
  • Any changes
    Be notified of any changes
  • Mention me
    Be notified of mention me
  • Unsubscribe
Subscribe
# 交大FOSSAPC 2017 Homework1 戴宏周 ###### tags: `course` `FOSS` :::info Contributor: [戴宏周](https://github.com/Daichou) ::: ## 選擇研究的題材 1. The Code 2. Revolution OS 3. The Unix System: Making Computers Easier to Use 4. A Narrative History of BSD ## [The Code](https://fossapc.hackpad.com/C2-tMmvkW0UtB1) ### * **摘要** * **Linus Torvarlds 的生平與Linux創作背景** 包括家庭背景與當時的社經環境(ex:蘇聯解體)。 因為Minix僅限教育用途,加上當時其他的作業系統過於昂貴(SCO Unix要20000馬克),還有just hobby等因素,開始著手開發Linux。 * **open source精神** 這裡直接節錄 _Richard Mathhew Stallman_ 於片頭所說的話『開放原始碼就像是食譜,當有好的食譜,我們可以與他人分享,其他人可以對食譜加入自己的元素與口味,並將食譜回饋給原本的人或是繼續開放食譜下去。』,除此之外,open source不只是將程式原始碼開放下去這個動作,其背後可能同時創造了一個社群。 * **Free Software VS Open Source** 由 _Richard Mathhew Stallman_ 提出的Free Software觀念與Free Software運動,還有Free Software Foundation對於自由軟體的推廣,讓人們認識到Free Software的意含,但是由於 _Richard Mathhew Stallman_ 與 Free Software Foundation的言論通常較激進,導致齊備一些商人貶低,但是那群人們卻擁抱Open Source觀念(其實包括的軟體多有重疊),所以Eric S.Raymond認為應該倡導Open Source讓人們接受。 * **GNU/Linux對世界的影響** GNU/Linux影響著許多開發者,還有業界一些公司,同時開發中國家的中國與印度的開發人員也對Linux有許多貢獻。Dot com風暴後影響開源軟體的發展與關注度,但是Linux作業系統卻開始進入小型裝置,如:電子鐘、手機等裝置,使一般使用者開始接觸到Linux。 ### * **心得** 由於在高中時有在接觸Linux作業系統加上現在主要都以Linux作為我的筆電預設作業系統,對\<The Code>對於Linux的歷史本身就有一些了解,不過對於Linux創立前的歷史不甚熟悉,不知道有Richard Mathhew Stallman這位在Linux開發出來前就已經開始宣揚自由軟體理念的靈魂人物,還有BSD本身對於開源觀念的殿基,讓我們可以在現今不受拘束的宣揚Open Source與使用Open Source的軟體,而且由於這些Open Source軟體的出現,讓我們這些後人可以研究這些軟體的技術,還可以貢獻所學於這些軟體中,並讓世界更美好。 ### * **Qustion** :::warning * Linus常說Linux kernel的開發人員的組織架構是十分扁平的,大家可以自由的提出意見,但是如果開發出Code,想要commit到Linux kernel中,到底是誰負責審理的? * 為什麼Linux社群最蓬勃發展?同樣是開源的BSD系統還有Minix等專案的能見度卻沒這麼高? * Linus說印度的基礎溝通較不好,所以可能會衍生出在地版的Linux,不知有沒有出現? * 另外印度網路不發達,他們如何養出這麼多軟體工程師?難道是人口基數多造成的錯覺? ::: ## [Revolution OS](https://fossapc.hackpad.com/-Revolution-OS--RrJpYEByzmr) * **摘要** 內容與The Code有所重疊,但對於Linux,GNU,Free software,Open Source的成長其著墨較深,還有各期開發者與使用者加入Linux的情況有所描述。還有開源陣營與Microsft閉源陣營的對抗。主要內容涵蓋: + GNU、BSD、Linux等社群體系的建立 + Linux成長與網路的關聯(apache project) + 開源社群的成長與所被業界接受(cisco採用,Oracle,Sybase等企業的貢獻) + 運用開源的商業模式(**服務**:Redhat、VALinux、Cygnus) + Linux Torvalds對於用Linux賺錢的看法 + Netscape開源與Mozilla + Richard Stallman對於Copyleft與自由軟體理念 + 開源與自由軟體運動的影響 - ex:消費者可以購買不含Windows的電腦,Microsoft對於開源態度的改觀(這部影片當時Microsoft仍有點抗拒,到了Satya Nadella當任CEO時期才正式投入) * **Note** 片中Debian社群提到的Open Source定義[原文link](https://opensource.org/docs/definition.html) + Free Redistribution + Source Code + Derived Works + Integrity of The Author's Source Code + No Discrimination Against Persons or Groups + No Discrimination Against Fields of Endeavor + Distribution of License + License Must Not Be Specific to a Product + License Must Not Restrict Other Software + License Must Be Technology-Neutral * **心得** 這部影片彌補了我對The Code的一些疑問,為什麼Linux可以這麼成功的推廣?除了有Richard Stallman在前頭對自由軟體觀念的奠基外,還有相關社群的助力,套件如gcc、apache,gnome的出現,讓越來越多飛程式設計施予開發者都可以使用這個環境。除此之外,隨著網路泡沫化時期前的網路產業榮景,開源一詞隨這個榮景(還有Linus Torvald登上富比士雜誌),開始出現在主流媒體中,我想這也是Linux在桌上型市場仍有一席之地的原因。而我想Revolution OS這部紀錄片,不僅僅是在作業系統上對閉源商用壟斷的作業系統做出革命,還有對整個軟體生態圈做出革命。這部影片中Microsoft有點像是個壞人,但在開源軟體推廣這麼多年後,Microsoft開始做Open source,同時加入Linux Foundation,我想這也是開源軟體這個活動的一個里程碑吧。 * **Question** :::warning * VALinux後來怎麼了,為什麼現在只能聽到RedHat? - VALinux離開Server服務後,改名為VA Software更專注於軟體開發,後來賣掉Jupitermedia Corporation(動畫公司)與SourceForge Enterprise Edition的版權。後來又改名為SourceForge Inx.,最後更名為Geeknet。[Wiki連結](https://en.wikipedia.org/wiki/Geeknet) * 1992年的Sun OS跑得比Linux慢,硬體又比較貴,為什麼還可以存活這麼久? * Apache是跨平台的,那為什麼大家都愛用Linux+apache? ::: ## [The Unix System: Making Computers Easier to Use](https://www.youtube.com/watch?v=XvDZLjaCJuw) * **摘要** 這部影片主要在介紹UNIX的功能與UNIX的好 + 創造緣由:為了處理電話轉接工作還有解決問題 + UNIX作業系統系統特色 - time-sharing - portable - multi-tasking - hierachical file system - IPC - pipes + UNIX作業系統架構 | 分層 | 描述 | | ------ | ---- | | kernel | 底層與硬體溝通 、管理資源 | | shell | 與kernel溝通的界面 | | utility program | 上層的應用程式 | + utility program範例 - sort - 拼字檢查(超炫的) - 編輯器...等 * **考古** 我有點好奇當時的電腦等級是如何,所以稍微找了一下youtube底下所說的DEC PDP-7規格。 ![DEC PDP-7本尊](https://i.imgur.com/YKUa1vL.jpg) >圖片來源:[wikipedia PDP-7](https://en.wikipedia.org/wiki/PDP-7) 規格: | 參數 | 數值 | | --- | ---- | | 記憶體 | 4K words 可加到 64K words | | CPU | DEC chipset | | 指令速度 | 8 us ~ 1.5 us | | 儲存裝置 | 磁帶 | | 售價 | 72000 USD (當時美金:現在美金 = 1:7.6)| 這台電腦當時被稱作minicomputer,看起來一點都不mini阿。 ref: 1. [Wikipedia - PDP-7](https://en.wikipedia.org/wiki/PDP-7) 2. [The Soemtron Collector](http://www.soemtron.org/pdp7history.html) * **心得** 在1982年那個我還不在世上的年代,微電腦才剛開始普及的年代,就有分時多工的作業系統出現,還可以做拼字檢查這類需要較多資源的程式,而且還可以播出聲音,我真的很佩服前人的程式能力,能夠資源相較現在不這麼充足的環境下創造出一個作業系統,還為其創造如此多的應用程式。而且這個作業系統與為了其而創造出的程式語言C語言到現在還是影響著整個電腦產業。 * **Question** :::warning * 影片中的拼字檢查,是用two finger approach還是用KMP之類演算法做的? * 片中提到他們做出有用的程式,其他實驗室也做出有用的程式,然後彼此間交換使用,這是否是Richard Stallman Freesoftware思想的起源? 為什麼後來幾十年閉源軟體當道? * 片尾的小動畫是用PDP-7算出來的嘛?當時有GUI的觀念嘛? * 當時有Time-sharing的程式,那當時有有處理Race condition的機制嘛? ::: ## [A Narrative History of BSD](https://www.youtube.com/watch?v=ds77e3aO9nA) * **什麼是BSD** + 全名:Berkeley Software Distribution(柏克萊軟體套件) + 類型:作業系統(UNIX-like) + 創立者;Bill Joy + 程式語言:C + license:BSD license + 描述:常用於工作站與伺服器 + 下圖為UNIX譜系 ![](https://i.imgur.com/lcYWy99.png) * **全片大綱** 以下是以影片中Dr. Kirk McKusick的解說分段。 + Bill Joy Era - 在柏克萊大學建立 - Bill Joy時期(1BSD,2BSD)納入的軟體套件:EX(vi),pascal interpreter,C Shell + TCP create - BSD 4以後的TCP/IP建立 - BNN與柏克萊團隊的衝突 + lawsuit of license - 與AT&T的著作權問題 * **BSD歷史與\<A Narrative History of BSD\>提及的對照** 以下是BSD的歷史與影片中的內容相互參照。 + 1BSD - 釋出:1978年 - 由Bill Joy創立,從早期貝爾實驗室的UNIX改寫而來 >原本是Bill Joy對AT&T的UNIX進行修改,雙方彼此間是合作關係,後來Bill Joy版本與AT&T差異加大,Bill Joy因此打包釋出1BSD - 加入ex(vi前身)、Pascal等 - 執行環境:PDP-11 + 2BSD - 釋出:1979年 - 主要仍由Bill Joy開發(後期版本,如:2.9、2.10、2.11等多由別人改寫) > 這些後期版本的釋出時間比3BSD來得晚多是針對在PDP-11下的BSD進行維護與修改,甚至在2.9BSD納入了一些4.1cBSD的code。 - 加入vi、C shell、Network package(Berknet、區網服務) - 執行環境:PDP-11 + 3BSD - 釋出:1979年 - 柏克萊團隊合作撰寫 - 主要是將BSD port到VAX - 這版的BSD開始受到DARPA(美國國防高等研究計劃署)的重視,要求柏克萊成立CSRG(Computer Systems Research Group)來維護BSD。 > * DARPA開始注重BSD的原因是因為當時美國國防部底下的協力廠商使用太多種程式語言與環境,造成統合困難,所以選用BSD。 > * BSD當時效能超越AT&T發行的UNIX,不過因為BSD內含AT&T的程式碼,所以在當時很多購買AT&T license然後使用BSD。 > * VAX + VMS(IBM建立的作業系統)與VAX+BSD的競爭 > > VMS的效能測試(micro benchmark)原本都比BSD好(pipe、取得PID、ping等),後來Bill Joy等人修改至相同(4.1BSD)。另外由於BSD的可移值性比較好所以獲得DARPA青睞。 + 4BSD - 釋出:1980年 - 特色:Job Control、deliver mail、PRAM’list(待查明)、Curses library(ncurese前身,terminal的控制函式庫)、Signal - 開始受到DARPA注資 - 執行環境:VAX + 4.1BSD - 釋出:1981年 - 效能改善 - 4.1a BSD: > 當時DARPA請BNN(Bolt, Beranek and Newman ,BBN Technologies前身)與柏克萊團隊來實做TCP/IP協定,柏克萊負責介面(socket、connect等),BBN負責底層實做。由於Bill Joy進度超前,所以他向BBN的此專案領導Rob Gurvitz要了些雛型程式,並做了Rlogin與RCP在VAX 750上測試,多次測驗後達到該測試環境的上限表現。而這些進度後來納入了4.1a BSD中。 - 4.1b BSD: > * 後來Samuel J Lefflerr加入CSRG,並改寫TCP/IP介面,使得4.1b BSD可以開始支援多個連線。(主要修改為,當建立連線後會回傳一個新的socket,而不是同一個socket重複使用)。 > * 另外影片講者Marshall Kirk McKusick也協助開發新的檔案系統Berkeley Fast File System。 - 4.1c BSD:修改完Signal後,成為4.1中散布最廣版本。 + 4.2BSD - 釋出:1983年 - Bill Joy離開建立Sun公司,Mike Kareks加入 - 納入更完整的TCP/IP程式,造成柏克萊團隊與BBN的紛爭 > 由於BBN的程式未被納入,影響其聲譽,所以釋出可自行編譯版本的TCP/IP程式,造成是市面上有兩種TCP/IP程式實做的BSD,最後在效能評估上由柏克萊團隊勝出,所以4.3使用柏克萊的TCP/IP。 + 4.3BSD - 釋出:1986年 - 實做OSI分層、對虛擬記憶體系統改善 - 用BSD license發行不含AT&T license的BSD,也就是NET/1(Networking Release 1)。 > 趣事:柏克萊釋出NET/1有兩個管道,一是用1000美元購買實體版,二是透過網路下載,結果由超過千人付錢購買。 + NET/2 - 釋出:1991年 - 柏克萊認為他們的BSD已經與AT&T的UNIX原始碼完全不同,所以以低價開始釋出NET/2,但也因此激怒AT&T,造成了BSDi與AT&T得訴訟。 > 最後雙方和解,柏克萊針對有問題原始碼做修正 + 4.4BSD - 釋出:1994年 - 訴訟結束後的clean code與一些修正所作的釋出。 + other distribution - freeBSD,NetBSD等社群版本。 * **名詞解釋與補充** + ZFS lawsuit - 時間:2007年 - 雙方:NetApp , Sun(Oracle) - 內容:NetApp控告Sun開發的自由軟體ZFS(常用於freeBSD、BSD上,擁有snapshot功能的檔案系統)侵權,Sun後來也反訴回去。 - 結果:和解收場 - 其他:Sun贏得訴訟後,將ZFS技術帶到linux,變成Btrfs。 + Sun lawsuit - 影片中Dr. Kirk McKusick提到其為Sun lawsuit專家,指的可能為Sun在JVM上的訴訟。 - JVM lawsuit: + Sun vs Microsoft + 爭端源於MSJVM(微軟開發的JVM) + 結果為和解,但Microsoft結束MSJVM開發 * **心得** + 這影片的資訊量有點大,因為Dr. Kirk McKusick他把三小時課程壓到50分鐘內說完,而且幾乎完整敘述了BSD的歷史,還有在這歷史中衍生的TCP/IP開發事件與BSDi和AT&T的法律訴訟。從這個BSD的歷史,可以了解BSDi與AT&T訴訟的源頭。而從UNIX分出來的BSD最後也影響整個資訊產業生態。BSD對於可移植性的要求,也讓BSD仍存活於世上。 + 我覺得Dr. Kirk McKusick對於Bill Joy的描述很有趣。他形容Bill Joy是一個可以快速找到處理一件事情的最短路徑,程式寫的很快,問題一下就解決了。不過他的code有點亂,所以需要後人的維護。沒想到早年的程式設計大師也有程式碼不易維護的問題。 + Dr. Kirk McKusick好喜歡用at any rate這片語喔,整片大約說了50幾次吧。 * **Question** :::warning + BSD前期(1BSD、2BSD、3BSD)的license採用BSD license與AT&T license,這個混亂的授權是AT&T許可的嘛? + 為什麼BSD開發到BSD 4.4 lite2就停了?變成其他發行版本? + DARPA為什麼會讓柏克萊以開源釋出BSD,而不是讓這些變成國防部的祕密武器? ::: + 有些縮寫如PMAC、PRAM找不太到只得是甚麼

Import from clipboard

Paste your markdown or webpage here...

Advanced permission required

Your current role can only read. Ask the system administrator to acquire write and comment permission.

This team is disabled

Sorry, this team is disabled. You can't edit this note.

This note is locked

Sorry, only owner can edit this note.

Reach the limit

Sorry, you've reached the max length this note can be.
Please reduce the content or divide it to more notes, thank you!

Import from Gist

Import from Snippet

or

Export to Snippet

Are you sure?

Do you really want to delete this note?
All users will lose their connection.

Create a note from template

Create a note from template

Oops...
This template has been removed or transferred.
Upgrade
All
  • All
  • Team
No template.

Create a template

Upgrade

Delete template

Do you really want to delete this template?
Turn this template into a regular note and keep its content, versions, and comments.

This page need refresh

You have an incompatible client version.
Refresh to update.
New version available!
See releases notes here
Refresh to enjoy new features.
Your user state has changed.
Refresh to load new user state.

Sign in

Forgot password

or

By clicking below, you agree to our terms of service.

Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
Wallet ( )
Connect another wallet

New to HackMD? Sign up

Help

  • English
  • 中文
  • Français
  • Deutsch
  • 日本語
  • Español
  • Català
  • Ελληνικά
  • Português
  • italiano
  • Türkçe
  • Русский
  • Nederlands
  • hrvatski jezik
  • język polski
  • Українська
  • हिन्दी
  • svenska
  • Esperanto
  • dansk

Documents

Help & Tutorial

How to use Book mode

Slide Example

API Docs

Edit in VSCode

Install browser extension

Contacts

Feedback

Discord

Send us email

Resources

Releases

Pricing

Blog

Policy

Terms

Privacy

Cheatsheet

Syntax Example Reference
# Header Header 基本排版
- Unordered List
  • Unordered List
1. Ordered List
  1. Ordered List
- [ ] Todo List
  • Todo List
> Blockquote
Blockquote
**Bold font** Bold font
*Italics font* Italics font
~~Strikethrough~~ Strikethrough
19^th^ 19th
H~2~O H2O
++Inserted text++ Inserted text
==Marked text== Marked text
[link text](https:// "title") Link
![image alt](https:// "title") Image
`Code` Code 在筆記中貼入程式碼
```javascript
var i = 0;
```
var i = 0;
:smile: :smile: Emoji list
{%youtube youtube_id %} Externals
$L^aT_eX$ LaTeX
:::info
This is a alert area.
:::

This is a alert area.

Versions and GitHub Sync
Get Full History Access

  • Edit version name
  • Delete

revision author avatar     named on  

More Less

Note content is identical to the latest version.
Compare
    Choose a version
    No search result
    Version not found
Sign in to link this note to GitHub
Learn more
This note is not linked with GitHub
 

Feedback

Submission failed, please try again

Thanks for your support.

On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

Please give us some advice and help us improve HackMD.

 

Thanks for your feedback

Remove version name

Do you want to remove this version name and description?

Transfer ownership

Transfer to
    Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

      Link with GitHub

      Please authorize HackMD on GitHub
      • Please sign in to GitHub and install the HackMD app on your GitHub repo.
      • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
      Learn more  Sign in to GitHub

      Push the note to GitHub Push to GitHub Pull a file from GitHub

        Authorize again
       

      Choose which file to push to

      Select repo
      Refresh Authorize more repos
      Select branch
      Select file
      Select branch
      Choose version(s) to push
      • Save a new version and push
      • Choose from existing versions
      Include title and tags
      Available push count

      Pull from GitHub

       
      File from GitHub
      File from HackMD

      GitHub Link Settings

      File linked

      Linked by
      File path
      Last synced branch
      Available push count

      Danger Zone

      Unlink
      You will no longer receive notification when GitHub file changes after unlink.

      Syncing

      Push failed

      Push successfully