看板 Gossiping
作者 jserv (松鼠)
標題 Re: [問卦] 原來上 ptt 可以學 linux 操作..
時間 Fri Apr 23 00:01:26 2021


※ 引述《freertos (@@)》之銘言:
: 今天在玩 pi
: 開始看 linux 指令
: 要修改檔案, 使用 nano
: 然後就是要存檔...  噹噹
: 是 ctrl+x
: 哇~~~~~
: 原來上 ptt 就已經預習了 linux 操作.
: 真的棒! 履歷上可以寫 熟悉 linux 了吧~

這恰好連結台灣特有的 BBS (電子布告欄) 文化及早期 Linux (和 BSD) 文字編輯器的
關聯。也讓我想起一年前過世的陳昇瑋博士,他的舊名是陳寬達,並以 Xshadow 的名號
馳名於早期的台灣資訊科技圈。為了懷舊和區隔他近期在資料科學、人工智慧,及金融
科技領域的成就,以下我用 Xshadow 稱呼陳博士,強調他在國立清華大學就讀大學部和
碩士班時期,對於台灣 BBS 界做出的顯著貢獻。


台灣的 BBS 站台一度到 1000 個的規模 [1],如今仍有效的站台數量已大幅減少 [2],
清華楓橋驛站 BBS 是其中最知名的站台之一,並直接影響許多 BBS 站的技術發展。
Xshadow 曾投入 MapleBridge BBS (寓意「楓橋」) 的開發,這個專案可簡稱為 Maple
BBS,以 GNU GPL 授權條款釋出,儘管部分程式碼的授權有爭議 [3],仍獲得廣大採納
並由若干富有才華的高手 (多為當時的大學生和研究生) 改進,其中包含陽光沙灘(英文
名: Sun of Beach,簡稱 SOB) BBS [4],後者是台灣大學校內第一個由學生架設的 BBS
站台,而 Ptt BBS 則演化自 SOB BBS [5]。

Xshadow 一干高手並非從無到有打造 BBS,而是修改 Phoenix BBS (交大資工鳳凰城
資訊站),後者又修改自 Eagle BBS (作者為 Raymond R. Rocker 及 Dominic B. Tynes)
[9]。1990 年代初期,當時 BBS 是命令式的操作界面,玩 BBS 必須要輸入各種命令,
交大資工系的高手將 Eagle BBS 改為選單式界面,使得 BBS 上的網友們只要按上下左右
鍵就可享受豐富的 BBS 功能。由於交大資工站名叫「鳳凰城資訊站」,這套廣泛被採用
(包含中華人民共和國境內的大學院校 BBS 站台) 被稱為 Phoenix BBS。


許多現今我們熟悉的 BBS 功能,如 KTV 包廂式聊天室、線上 Call-in (在後繼的 SOB
BBS 稱為「水球」)、動態看板等等,可追溯到清華楓橋驛站提出的實作,可惜那年代
人們不常用版本控制系統,否則我們應該可瞻仰 Xshadow 的程式修改歷程。


Eagles BBS 起源於 Pirate BBS (有時也書寫為 Pirates BBS)。1992 年,台灣國立中山
大學的陳年興教授改寫 Pirates BBS,成為世界上第一款中文版本的 Telnet BBS,在
校園推廣結果一炮而紅,也就是中山大學美麗之島站,陳教授將原始碼回饋給 Pirates
BBS 原作者 [6]。

正因為 Pirates BBS 採用 GNU GPL 授權釋出,上述累積的成果才得以公開協作和分享。
Maple BBS 在 Xshadow 等人的投入,逐步成為今日我們熟悉的操作介面和風格,但裡頭
仍保有 Eagles BBS 的影子,我們可瀏覽 Eagles BBS 的程式碼 [7],以 ebbs-3.1.1

(即 Eagles BBS v3.1.1) 為例,檔案 "README" 聲明:
: It is the successor to Eagles BBS version 2, which was built upon Ed Luke's
: Pirates BBS package

Eagles BBS 裡頭涉及到全螢幕文字編輯的程式碼,在檔案 pbbs/vedit.c 中,其中
"pbbs" 就指 Pirates BBS,授權聲明如下:
: This program is free software; you can redistribute it and/or modify
: it under the terms of the GNU General Public License as published by
: the Free Software Foundation; either version 1, or (at your option)
: any later version.

亮點是採用 GNU GPL 第 1 版釋出 [8],後者是在 1989 年由自由軟體基金會 (FSF) 所
頒訂,但 Pirates BBS 釋出於 1990 年,GNU GPL 第 2 版要到 1991 年才釋出,恰好
是 Linux 核心對外發布的年份 (但早期 Linux 核心不是透過 GNU GPLv2 發布,是技術
社群朋友建議下,才用 GPLv2 發行至今)。


讓我們繼續研究 Eagles BBS 的原始程式碼 pbbs/vedit.c: (前方數字為行號)

581 |          case CTRL('X'): case CTRL('W'):
582 |            clear() ;
583 |            foo = write_file(filename);
584 |            if (foo != KEEP_EDITING) return foo;

不難發現,在 Eagles/Pirates BBS 中,Ctrl-X 和 Ctrl-W 都有儲存目前文章到檔案的
作用,且這樣的按鍵操作延續到現在的 Ptt BBS。同一個原始程式碼另一處:

422 |  prints("Type Ctrl-Z for help\n") ;

原來 Ctrl-Z 印出編輯器的操作指引,是三十年前就存在的慣例。繼續閱讀程式碼:

712 | char *helptxt[] = {
713 |  "\01General Commands:",
714 |  "Ctrl-X  Save and Exit (or Ctrl-W)",
715 |  "Ctrl-L  Redraw Screen",
716 |  "Ctrl-Z  Call up this help screen",
717 |  "",
718 |  "\01Cursor and Movement Commands:",
719 |  "Ctrl-F  Forward character",
720 |  "Ctrl-B  Backward character",

有沒有發現現在用的 Ptt BBS 是「活化石」呢?上方程式碼定義的快速鍵,實作於名為
vedit 的程式碼中。Maple BBS 改寫源於 Eagle BBS 的 Phoenix BBS 程式碼,保留已有
的組合按鍵,將全螢幕編輯器稱為 ve [10],儘管兩者資料結構和處理邏輯已截然不同,

但 vedit 到 ve 的演化痕跡仍在。截至發文時間,Ptt BBS 關於全螢幕編輯器的原始
程式碼 [11] 最後一次修改於 2019 年五月,裡頭仍存在 "vedit" 函式名稱。

大致說明 Ptt BBS 和此前台灣 BBS 系統的沿革,我們來看 GNU nano [12]。1999 年該

軟體釋出時,使用 TIP 這名稱,模仿 GNU 是 GNU's Not Unix 的簡稱 [13],這個 TIP
表示 "TIP Isn't Pico",其中 Pico [14] 是華盛頓大學為了開發 Pine [15] 郵件客戶
端軟體,一併實作的文字編輯器,首度釋出於 1989 年。Pico 就是 Pine composer 的
簡稱,允許使用者全螢幕進行文字編輯,而由於 Pine 和 Pico 並非採用自由軟體授權
條款發行,所以才有 GNU nano 這項專案的誕生。2007 年華盛頓大學重寫 Pine,

加上 Unicode 支援和若干新特徵,以 Apache License 釋出新軟體 Alpine [16],此時
GNU nano 已是廣泛散佈的軟體,但仍保有 Pico 相容的操作 [17]。

對比 1989 年釋出的 Pine/Pico 和 1990 年發布的 Pirates BBS,我們可見 Ctrl-X
作為離開 (exit) 編輯器,Ctrl-B/F 分別表示 backward 和 forward,和 Ctrl-K 作為
cut (也有刪除列的作用) 等組合鍵有著相似的行為,或許反映那個年代的慣例。

Linux 其實只是作業系統核心,正如 Linus Torvalds 在紀錄片 "Revolution OS" [18]
提及的說法:
: 「作業系統就是你永遠不會看到的東西,因為沒有人直接使用作業系統,人們使用的是
:   程式。在他們的電腦上,作業系統唯一的使命就是,幫助其它程式執行,所以作業
:   系統從未獨立運行,而僅是默默等待程式,來向它要求現有資源、某個存在硬碟上的
:   檔案或要求其它程式將這個程式連接到外面去,然後作業系統再一步步地,試著讓
:   人們寫程式容易一些」

無論是 Ptt BBS 的 mbbsd (BBS 文字模式主程式) 抑或 GNU nano,都是 Linux 這個
核心之上的應用程式,你我現在可在 Ptt BBS 上對話,就持續驗證 Linux 核心的作用,
說「熟悉」Linux 的運作狀況,是合理的,只是通常公司行號會期待招聘到「可延伸
Linux 核心的模組和系統呼叫,從而解決特定工程問題」的工程師。

Ptt BBS 運作在 GNU/Linux 作業系統之上。歡迎對 Linux 核心內部運作原理有興趣的
朋友,關注全台灣唯一探討最新 Linux 核心技術的大學課程「Linux 核心設計」,所有
教材都公開釋出,並提供對應的講解錄影:

    http://wiki.csie.ncku.edu.tw/linux/schedule

 

[1] 台灣的 BBS 發展相當早,並在 1990 年代創造出豐富多元的生態,但可惜隨著關鍵
    經營者的淡出,不易追溯完整歷史並作出統計。可參考「電子佈告欄與現代生活」:
    http://ant.comm.ccu.edu.tw/course/100_Communication_life/network21/bbs.pdf
[2] 已知現存中文 BBS 站台:
    https://bbslist.github.io/
已知現存中文 BBS 站台 | Telnet BBS List (2021/2/28)
Lists for Telnet BBS sites (especially in Big5/GBK encoding) ...

 
[3] 可見 http://processor.tfcis.org:8080/bmost?itoc&4607

 
    gslin 彙整相關的授權議題討論:
    https://blog.gslin.org/archives/2006/02/12/365/
Maple3 的軟體授權問題 – Gea-Suan Lin's BLOG
好像每一陣子就會被拿出來講...。 現在大家所看到的 Maple3 並不是 opus (Original author) 或 Thor 親自釋出的。而是透過兩個管道流出,一個是從 woju 的 FromZero (從零開始):(Re: NTHU-CS Maple 3. ...

 
[4] 最初的程式碼由清大楓橋驛站移植過來,由於當初台大 (除了校方的 BBS 站) 未有
    學生自行架站的經驗,因此架站的過程發生許多困難,當時有位站長隨口說出:

    "Son of Bitch",沒想到 BBS 站台竟然架設成功,後來由駱子逸提議將站名以諧音

    "Sun of Beach" 取為「陽光沙灘」,這便是站名的由來。
[5] 參見「台灣前期 BBS 與 maple 發展史」:
    https://www.ptt.cc/bbs/BBSview/M.1187798691.A.DD1.html
補充台灣前期 BBS 與 maple 發展史 - 看板 BBSview - 批踢踢實業坊
不是啥重要的東西 不過我覺得現在許多 BBS 都拿掉版權宣告 實在有點可惜 到秘密情人 資訊站為止 可謂 Maple 家系的前身 Pirate Bulletin Board System Version: 1.00 Copyright (C) 1990 Edward A. Luke Eagles Bulletin Board System Version: 2.00-3.00
[6] 台灣 Telnet BBS 的沿革:
    https://www.facebook.com/DannyLin8/posts/10156904689480975
[7] Eagles BBS 和早期 BBS 的原始程式碼:
    https://github.com/bbsmirror/BBSmirror/tree/master/EaglesBBS
BBSmirror/EaglesBBS at master ·  bbsmirror/BBSmirror ·  GitHub
[圖]
mirroring sources about Big5 telnet BBS (If there's any copyright problem, please contact us ASAP) - bbsmirror/BBSmirror ...

 
[8] Old versions of the GNU General Public License:
    https://www.gnu.org/licenses/old-licenses/old-licenses.html#GPL

 
[9] Linux Journal 在 1994 年刊載由 Eagles BBS 作者撰寫的 "The Birth of Eagles
    BBS" 一文:
    https://www.linuxjournal.com/article/2789

 
[10] ve 原始程式碼和平台相關的修改:
     http://mirror.sars.tw/FreeBSD_Chinese_HOWTO/ve.html

 
     https://github.com/clamtestbbs/ve
GitHub - clamtestbbs/ve: NTHU-CS Maple BBS 2.36 BBS-like editor (patched for linux)
[圖]
NTHU-CS Maple BBS 2.36 BBS-like editor (patched for linux) - clamtestbbs/ve ...

 
[11] Ptt BBS 的全螢幕編輯器原始程式碼:
     https://github.com/ptt/pttbbs/blob/master/mbbsd/edit.c
pttbbs/edit.c at master ·  ptt/pttbbs ·  GitHub
[圖]
PTT BBS source code. Contribute to ptt/pttbbs development by creating an account on GitHub. ...

 
[12] GNU nano:
     https://www.nano-editor.org/
[13] GNU's Not Unix:
     https://www.gnu.org/gnu/gnu-history.html

 
[14] Pico text editor:
     https://en.wikipedia.org/wiki/Pico_(text_editor)
[15] Pine email client:
     https://en.wikipedia.org/wiki/Pine_(email_client)
[16] Alpine (email client):
     https://en.wikipedia.org/wiki/Alpine_(email_client)
[17] GNU nano 發展沿革和功能簡述:
     https://www.nano-editor.org/history.php
[18] 從 Revolution OS 看作業系統生態變化:
     https://hackmd.io/@sysprog/revolution-os-note
從 _Revolution OS_ 看作業系統生態變化 - HackMD
[圖]
這部紀錄片《==_Revolution OS_==》在 21 世紀的第一年發布,是刻畫自由軟體和開發原始碼的經典,為了教學需求,我們透過共筆,選錄部份內容作資訊更新和補充 ...

 

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.246.163 (臺灣)
※ 文章代碼(AID): #1WWPtdhW (Gossiping)
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1619107303.A.AE0.html
shiyeh: 首推1F 04/23 00:02
Cinor: 先推在睡2F 04/23 00:03
james732: 有神快拜3F 04/23 00:03
sx4152: 是教授4F 04/23 00:03
DemonDeath: 推5F 04/23 00:03
haman: 推6F 04/23 00:03
blackofdeath: 優文推一個7F 04/23 00:03
Su22: 推8F 04/23 00:04
zero11995: ...9F 04/23 00:04
watashiD: 這篇文章值1000P幣...10F 04/23 00:04
shadowdio: 講中文11F 04/23 00:04
LeafLu: 是教授欸12F 04/23 00:04
watashiD: 是jserv...13F 04/23 00:04
tommytgm: 這篇是PTT史料等級了吧14F 04/23 00:05
ohyafone: 推15F 04/23 00:05
crimson11: 推16F 04/23 00:05
kkb512sk: 推推17F 04/23 00:05
roy384921: 專業推18F 04/23 00:06
james732: 看完再推19F 04/23 00:06
hellopiggy: 專業!20F 04/23 00:07
lianpig5566: 玉山金科技長QQ21F 04/23 00:07
fdgkhdkgh: 推推超讚老師22F 04/23 00:07
ymx3xc: 太神啦23F 04/23 00:07
gamaqqq: 推!24F 04/23 00:07
deeeplove: 有神快拜25F 04/23 00:08
vincent8914: 太神啦26F 04/23 00:08
kbjent80459: 推27F 04/23 00:08
nopetw: 推28F 04/23 00:08
askacis: 有神快拜,請收下我的膝蓋29F 04/23 00:08
Aequanimitas: 太猛了30F 04/23 00:09
mmonkeyboyy: 推~31F 04/23 00:09
jserv: 我想到今年還沒在八卦板發文廣告課程,就發篇廢文(116特色)32F 04/23 00:10
jubilee: 推!33F 04/23 00:10
k1400: Holy34F 04/23 00:10
jserv: 順便緬懷 Xshadow 博士...35F 04/23 00:10
※ 編輯: jserv (140.116.246.163 臺灣), 04/23/2021 00:12:17
CSMUck: 娘子快出來看上帝36F 04/23 00:11
Howardlin88: 神37F 04/23 00:11
yoyodiy 
yoyodiy: 推38F 04/23 00:11
q456456w: 推39F 04/23 00:12
happysorry34: 教授好40F 04/23 00:12
cpz: 我以為這裡只有廢文...41F 04/23 00:12
Henry658: 推42F 04/23 00:13
jserv: 23 年前,Xshadow 在內的眾多高手討論 BBS 的未來:43F 04/23 00:14
Ikaros1110: 推 是教授耶44F 04/23 00:14
iam0718: 推45F 04/23 00:14
nejoy: 朝聖推!47F 04/23 00:15
joesex1003: 今天晚上兩篇專業文ㄟ48F 04/23 00:15
xhung: 推  感謝分享 太神了49F 04/23 00:15
lpoijk: 老師,umn.edu 初四啦!!!50F 04/23 00:15
Rsew: 朝聖51F 04/23 00:15
happyblack: 這只能推了52F 04/23 00:16
ubcs: 推 等等m53F 04/23 00:16
rey123123: 唉,好想你啊 陳老師54F 04/23 00:16
bobispig: 有神快拜55F 04/23 00:17
DarkerDuck: 朝聖56F 04/23 00:17
viclee313: 讚57F 04/23 00:18
ben870818: 類推jserv 還有老師寫不完的練習...58F 04/23 00:18
robertchun: 專業推59F 04/23 00:18
et84121: 推推60F 04/23 00:18
yen1214: 媽我在這61F 04/23 00:18
fr75520: 推62F 04/23 00:19
hiojvd: 推63F 04/23 00:19
xxoooxx34567: 推64F 04/23 00:19
MorganLee: 有神快拜65F 04/23 00:20
jyunwei: 怎麼沒推爆?66F 04/23 00:20
jackwula9211: 每個字都看得懂,組合起來是什麼67F 04/23 00:21
kevinyin: 推68F 04/23 00:21
soccer103: 推69F 04/23 00:21
TokyoHard: 等一下,陳寬達走了?70F 04/23 00:22
Brucy704: 我當作我看懂了71F 04/23 00:22
kronioel: 專業72F 04/23 00:22
ringil: 推推73F 04/23 00:22
lice0225: 先推再看74F 04/23 00:23
horse0323: 我到底看了神麼75F 04/23 00:24
lucas: 推76F 04/23 00:24
hkai: 專業推77F 04/23 00:24
manic7058463: 推78F 04/23 00:24
furbyyeh: Xshadow過世了唷?  RIP79F 04/23 00:25
NVCat: 神80F 04/23 00:26
abian:81F 04/23 00:26
qq0101889: 哇靠 太猛了吧82F 04/23 00:27
annicore: 哇,太厲害了推推83F 04/23 00:28
thelittleone: 娘呀,快出來一起拜神84F 04/23 00:28
ihfreud: 辛苦了 謝謝你們85F 04/23 00:28
Gcow8: 感動推86F 04/23 00:28
phyBomber: 啊啊 假裝自己看懂惹87F 04/23 00:28
FaySan7: 推88F 04/23 00:28
MaGicumom: SW  QQ89F 04/23 00:29
Two4: Push90F 04/23 00:29
lolmap: 跪了91F 04/23 00:30
ZaneLin: 太神了...跟無線電那篇一樣 跪著看92F 04/23 00:32
jserv: @furbyyeh, 是的,整整一年前93F 04/23 00:34
longlyeagle: push94F 04/23 00:34
GooglePixel: 老師晚安95F 04/23 00:34
melissalewis: 讚讚讚讚96F 04/23 00:35
Busufu: 老師晚安97F 04/23 00:35
hotmailcom: 神98F 04/23 00:35
johnlin35: 推99F 04/23 00:35
voirvoila: 拜jserv508F 04/23 09:23
qwdqaq3321: 推推推509F 04/23 09:25
gargamel: 現在才知道陳博就是Xshadow...510F 04/23 09:29
laytomall: 大神511F 04/23 09:31
a120463: 專業推512F 04/23 09:31

--
--
(jserv.): Re: [問卦] 原來上 ptt 可以學 linux 操作.. - Gossiping板