楼主:
jserv (松鼠)
2021-04-23 00:01:26※ 引述《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/
[3] 可见 http://processor.tfcis.org:8080/bmost?itoc&4607
gslin 汇整相关的授权议题讨论:
https://blog.gslin.org/archives/2006/02/12/365/
[4] 最初的程式码由清大枫桥驿站移植过来,由于当初台大 (除了校方的 BBS 站) 未有
学生自行架站的经验,因此架站的过程发生许多困难,当时有位站长随口说出:
"Son of Bitch",没想到 BBS 站台竟然架设成功,后来由骆子逸提议将站名以谐音
"Sun of Beach" 取为“阳光沙滩”,这便是站名的由来。
[5] 参见“台湾前期 BBS 与 maple 发展史”:
https://www.ptt.cc/bbs/BBSview/M.1187798691.A.DD1.html
[6] 台湾 Telnet BBS 的沿革:
https://www.facebook.com/DannyLin8/posts/10156904689480975
[7] Eagles BBS 和早期 BBS 的原始程式码:
https://github.com/bbsmirror/BBSmirror/tree/master/EaglesBBS
[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
[11] Ptt BBS 的全萤幕编辑器原始程式码:
https://github.com/ptt/pttbbs/blob/master/mbbsd/edit.c
[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
作者:
shiyeh (shiyeh)
2021-04-23 00:02:00首推
作者: Cinor (疯狂的小丑) 2021-04-23 00:03:00
先推在睡
作者:
sx4152 (呵呵)
2021-04-23 00:03:00是教授
作者:
DemonDeath (Beethoven Virus)
2021-04-23 00:03:00推
作者:
haman (...)
2021-04-23 00:03:00推
作者:
Su22 (装配匠)
2021-04-23 00:04:00推
作者:
watashiD (watashiD)
2021-04-23 00:04:00这篇文章值1000P币...
作者:
LeafLu (小叶)
2021-04-23 00:04:00是教授欸
作者:
ohyafone (何妨淫笑且徐行)
2021-04-23 00:05:00推
作者: crimson11 (crimson) 2021-04-23 00:05:00
推
作者:
kkb512sk (James)
2021-04-23 00:05:00推推
作者: fdgkhdkgh 2021-04-23 00:07:00
推推超赞老师
作者:
ymx3xc (U文多多)
2021-04-23 00:07:00太神啦
作者:
gamaqqq (4x最帅了)
2021-04-23 00:07:00推!
作者: nopetw (pom-poum) 2021-04-23 00:08:00
推
作者:
askacis (ASKA)
2021-04-23 00:08:00有神快拜,请收下我的膝盖
作者: Aequanimitas (Paranoia) 2021-04-23 00:09:00
太猛了
楼主:
jserv (松鼠)
2021-04-23 00:10:00我想到今年还没在八卦板发文广告课程,就发篇废文(116特色)
作者:
jubilee (Liang)
2021-04-23 00:10:00推!
作者:
k1400 (德州家康)
2021-04-23 00:10:00Holy
作者:
CSMUck (人氏言周)
2021-04-23 00:11:00娘子快出来看上帝
作者:
yoyodiy (废文心得文大师)
2021-04-23 00:11:00推
作者: q456456w (我会长大) 2021-04-23 00:12:00
推
作者:
cpz (我是闪亮亮的钻石)
2021-04-23 00:12:00我以为这里只有废文...
作者:
Henry658 (adreN.)
2021-04-23 00:13:00推
楼主:
jserv (松鼠)
2021-04-23 00:14:0023 年前,Xshadow 在内的众多高手讨论 BBS 的未来:
作者:
iam0718 (999)
2021-04-23 00:14:00推
作者:
nejoy (杂货店小开)
2021-04-23 00:15:00朝圣推!
作者:
xhung (xhung)
2021-04-23 00:15:00推 感谢分享 太神了
作者:
lpoijk (↗ 老 爷 ↙)
2021-04-23 00:15:00老师,umn.edu 初四啦!!!
作者:
Rsew (のうねんれな)
2021-04-23 00:15:00朝圣
作者: happyblack 2021-04-23 00:16:00
这只能推了
作者:
ubcs (觉★青年冒险盖)
2021-04-23 00:16:00推 等等m
作者:
bobispig (正咩费雯其实是我的马子)
2021-04-23 00:17:00有神快拜
作者: ben870818 (YCW) 2021-04-23 00:18:00
类推jserv 还有老师写不完的练习...
作者:
et84121 (焦糖玛琦屎)
2021-04-23 00:18:00推推
作者: yen1214 (golang) 2021-04-23 00:18:00
妈我在这
作者:
fr75520 (几味)
2021-04-23 00:19:00推
作者:
hiojvd (hiojvd)
2021-04-23 00:19:00推
作者:
jyunwei (jyunwei)
2021-04-23 00:20:00怎么没推爆?
作者:
kevinyin (kevin5566得第一)
2021-04-23 00:21:00推
作者:
kronioel (éµå¦¹å英)
2021-04-23 00:22:00专业
作者: ringil (Ringil) 2021-04-23 00:22:00
推推
作者:
lucas (鲁脚斯)
2021-04-23 00:24:00推
作者: hkai (虚) 2021-04-23 00:24:00
专业推
作者:
furbyyeh (萤火虫的夜晚)
2021-04-23 00:25:00Xshadow过世了唷? RIP
作者: NVCat (在下鲁宅) 2021-04-23 00:26:00
神
作者:
qq0101889 (Morning9487)
2021-04-23 00:27:00哇靠 太猛了吧
作者: annicore (卿卿) 2021-04-23 00:28:00
哇,太厉害了推推
作者:
ihfreud (旅行,是后天的混血)
2021-04-23 00:28:00辛苦了 谢谢你们
作者: Gcow8 (焗烤8) 2021-04-23 00:28:00
感动推
作者: phyBomber (茅野爱衣我老婆) 2021-04-23 00:28:00
啊啊 假装自己看懂惹
作者:
FaySan7 (肥山雅治)
2021-04-23 00:28:00推
作者: MaGicumom (MaGicUmom) 2021-04-23 00:29:00
SW QQ
作者:
Two4 2021-04-23 00:29:00Push
作者: lolmap (休伊yo) 2021-04-23 00:30:00
跪了
作者:
ZaneLin (不发废文呦)
2021-04-23 00:32:00太神了...跟无线电那篇一样 跪着看
楼主:
jserv (松鼠)
2021-04-23 00:34:00@furbyyeh, 是的,整整一年前
作者: GooglePixel (谷哥批索) 2021-04-23 00:34:00
老师晚安
作者:
Busufu (不太舒服)
2021-04-23 00:35:00老师晚安
作者: johnlin35 (林宗) 2021-04-23 00:35:00
推
作者: wrath1 (玥) 2021-04-23 00:36:00
棒
作者:
friand (ff0210)
2021-04-23 00:36:00跪
作者:
iGao (Olala)
2021-04-23 00:37:00板主还不快把这篇M起来,在混腻?
作者: relaughter (好好笑) 2021-04-23 00:39:00
架过 MapleBSS 推推
作者:
HowLeeHi (处处留心皆正妹)
2021-04-23 00:39:00push
作者:
sumsum (simon)
2021-04-23 00:39:00推qq
作者: ryama (XD) 2021-04-23 00:40:00
看不懂但是推
作者:
Mimmature (Musicians Immature)
2021-04-23 00:40:00老师好
作者:
foxey (痴呆小咖)
2021-04-23 00:40:00好多好久未曾听到的熟悉站名啊
作者:
STi2011 (鸟王达)
2021-04-23 00:42:00吓死我了 看不懂
作者:
ss88812 (zzz)
2021-04-23 00:43:00跪着看这篇
作者: simon90113 (Simon Wu) 2021-04-23 00:43:00
只能推了!!
作者: snake1204 2021-04-23 00:44:00
推
作者:
power41 (好饿欧)
2021-04-23 00:45:00推
楼主:
jserv (松鼠)
2021-04-23 00:45:00@gx9900824, 我116,我发废文我骄傲
作者: joke3547 2021-04-23 00:46:00
你要开课喔?
作者:
leon4287 (左边的一阵风)
2021-04-23 00:46:00推
作者:
ikaros35 (堕落的ikaros)
2021-04-23 00:47:00朝圣
作者: h311013 2021-04-23 00:47:00
先跪
作者: sss101010127 (faechen) 2021-04-23 00:48:00
挖靠
楼主:
jserv (松鼠)
2021-04-23 00:49:00@TISH12311, 欢迎呛我,反正现在是下课时间
楼主:
jserv (松鼠)
2021-04-23 00:51:00@joke3547, 我一直想开关于开放原始码“文化”的通识课程
作者: reemir 2021-04-23 00:51:00
老师我会努力写作业的 QQ
作者:
ltytw (ltytw)
2021-04-23 00:51:00推
楼主:
jserv (松鼠)
2021-04-23 00:52:00所以我只好开“教学生准备科技公司面试”的大学课程,无奈
作者: basslife (hitagi) 2021-04-23 00:53:00
现在会写底层的都是神人了
作者:
jiajia1 (jiajia)
2021-04-23 00:54:00推
作者:
dces4212 (flawless)
2021-04-23 00:54:00老师好!
作者:
crazydj (萍水相逢~..~)
2021-04-23 00:54:00原来是c语言,我还以为是c罩杯~
楼主:
jserv (松鼠)
2021-04-23 00:55:00@crazydj, 这两者我都熟悉呀 (笑)
作者:
windalso (windalso)
2021-04-23 00:55:00推
作者: ibki (ibki) 2021-04-23 00:55:00
推
楼主:
jserv (松鼠)
2021-04-23 00:57:00@lpoijk, 你去发文推坑,让我可介绍UMN和Linux核心的大事
作者: CCNK 2021-04-23 00:59:00
有神出现了
作者: bookstar07 (书星零柒) 2021-04-23 01:00:00
靠原来老师有参与pcman开发 !
楼主:
jserv (松鼠)
2021-04-23 01:00:00@mystina43, Xshadow 当然是资工大神
作者: arbteiff 2021-04-23 01:00:00
推
楼主:
jserv (松鼠)
2021-04-23 01:01:00@reemir, 好,欢迎送 pull request 过来
作者:
pr9558 (Alpha-Whiskey)
2021-04-23 01:01:00考古文好猛
作者:
sbflight (舰娘在手 天下我有)
2021-04-23 01:01:00推
作者:
weboau (那年夏天.灿烂耀眼)
2021-04-23 01:01:00老师好 辛苦了 请多保重身体
作者: maxxpme 2021-04-23 01:02:00
推推
作者:
lcw1995 (冷死我)
2021-04-23 01:02:00推 奇怪最近专业文很多
作者: thirtyto 2021-04-23 01:05:00
推 考古
作者:
gwofeng (宫山洋行)
2021-04-23 01:06:00跟我想的一样
作者: tony313 (tony313) 2021-04-23 01:06:00
推
作者: chiahong1227 (Chiahong) 2021-04-23 01:06:00
推
作者:
bill0205 (善良的小孩没人爱)
2021-04-23 01:10:00推 写底层程式真的都好神QQ
作者:
von912 (我的智齿很可爱)
2021-04-23 01:11:00哭了 感动