惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Azure Blog
Microsoft Azure Blog
Cloudbric
Cloudbric
I
InfoQ
V
V2EX
博客园_首页
The Register - Security
The Register - Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
S
Secure Thoughts
Vercel News
Vercel News
Forbes - Security
Forbes - Security
云风的 BLOG
云风的 BLOG
PCI Perspectives
PCI Perspectives
L
LINUX DO - 最新话题
D
DataBreaches.Net
H
Hacker News: Front Page
Application and Cybersecurity Blog
Application and Cybersecurity Blog
B
Blog RSS Feed
A
About on SuperTechFans
N
News and Events Feed by Topic
Apple Machine Learning Research
Apple Machine Learning Research
Help Net Security
Help Net Security
Attack and Defense Labs
Attack and Defense Labs
N
Netflix TechBlog - Medium
Spread Privacy
Spread Privacy
F
Full Disclosure
Recorded Future
Recorded Future
AWS News Blog
AWS News Blog
博客园 - 【当耐特】
The Cloudflare Blog
T
Threatpost
T
Tor Project blog
Google DeepMind News
Google DeepMind News
C
CXSECURITY Database RSS Feed - CXSecurity.com
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
M
MIT News - Artificial intelligence
A
Arctic Wolf
C
Check Point Blog
Stack Overflow Blog
Stack Overflow Blog
T
Threat Research - Cisco Blogs
Security Archives - TechRepublic
Security Archives - TechRepublic
Hacker News - Newest:
Hacker News - Newest: "LLM"
WordPress大学
WordPress大学
Cyberwarzone
Cyberwarzone
小众软件
小众软件
C
Cyber Attacks, Cyber Crime and Cyber Security
P
Proofpoint News Feed
Security Latest
Security Latest
The Last Watchdog
The Last Watchdog

胡涂说

当心流量别被 Agent 都吃了 当 AI 构建自己 阿嬷 ā mó Bun 要从 Zig 迁移到 Rust ? 好奇心周刊第25期: 如何让AI写好代码 好奇心周刊第24期: 关于AI编程的一些体会和设想 云何降伏其心 好奇心周刊第23期: Claude Code 氛围编程初体验 好奇心周刊第22期: 纳瓦尔谈人生 不确定性世界的生存策略 好奇心周刊第21期: 推理模型的构建与未来 好奇心周刊第20期: 从四个方面了解Palantir 周刊第19期: 一起学习 MCP 周刊第18期: 什么是理工科思维 周刊第17期: 如何构建智能体(Agent) 周刊第16期: Andrej Karpathy 讲 AI 读《毛泽东传》对个人的启发 周刊第15期:Nat Friedman 和 Derek Sivers 的自我介绍 周刊第14期:罗振宇和《罗辑思维》 我看《哪吒》 为什么写作? 心猿意马 从铁幕到硅幕 银弹飞过先锋大厦 从神经网络到 Hugging Face 在大理,听打雷 Git 纪元 凡所有相,皆是虚妄 马斯克的故事与模式 纳瓦尔的智慧 当魔法消失时 人生无论怎么度过都像是浪费 我们都是新穷人 代码、法律和自由软件 乾隆的性格 当下我们还需要启蒙吗? 云门胡饼赵州茶 上海周末骑行:从浦东到外白渡桥 如何选择图书译本? No.13: 周刊的周刊 读书日,推荐些童话和小说 学习邓小平的智慧 自建博客 Nginx 基本配置 给博客换了套新评论系统 我所理解的存在主义 心经说了什么 觉悟之道就是活在当下 巨人的笔记 从零到百亿美金之路 人生如逆旅,我亦是行人 和自己非暴力沟通 听斯蒂芬·金谈写作 行不尽,行不尽,一路青山 周刊第12期:第一次十字军东征 周刊第11期:玄奘之路 周刊第十期:敦煌 周刊第九期:卡片盒笔记法 爸爸是最聪明的 Ruby 编程语言入门 影响人类命运的是什么? 周刊第八期:如何应对公开错误 周刊第七期:如何学习 周刊第六期 周刊第五期 只买书:一个失败的微信小程序产品 改变世界的一次代码提交 如何成为一名黑客 空山不见人 如何做好演讲 “人生在世,永远也不该演戏作假” 周刊第四期 大卫四岁读的书 宇宙就是一个蛋 周刊第三期 周刊第二期 周刊开刊 阅读开源代码小技巧 重学C语言 英国随记 变成神的动物 人类伟大的时刻 最著名的黑客 《巨婴国》读后 若为自由故 买房记 答案在风中飘 陪产记 自由的代价 谈一谈英语学习 读《霍乱时期的爱情》 简洁 嵌套的梦 四月莎士比亚 七律三首 从明天起,做一个Scrum Master 不能承受的生命之轻 我是丽莎呀 爱美丽、黑暗王子和豌豆公主 诗歌与烟台
通往开源之路
胡涂说 · 2020-09-13 · via 胡涂说

从自由软件到开源软件

在计算机时代的上古年代,软件是作为计算机硬件的附属而存在,而且一般是附带源码,便于用户做修改或定制。而且在学术界和黑客社区,分享源码并在此基础上修改、添加功能是非常自然的事情。可以说,自由软件是计算机行业的传统,一直到1970年代中期前,软件是被鼓励自由拷贝的。这一切到了1970年代末,形式开始变化,比尔·盖茨的一封《致爱好者的一封信》标志着软件开始走向商业化和专有化。1978年,施乐公司提供给 MIT 人工智能实验室的打印机没有像往常一样附上源码,这个举动让当时在 MIT 工作的 Richard Stallman (以下简称 RMS) 愤怒了,同时他也感叹“一个时代结束了”。但他并没有对此妥协,在1984年 RMS 辞去 MIT 的工作,发起了 GNU (GNU's not Unix) 计划,并成立了自由软件基金会(FSF),开启了他对抗专有软件之路。RMS 提出了自由软件的概念,并定义了四种自由(参见《若为自由故》)。RMS 还提出了 Copyleft 的授权方法,也也就是我们所熟知的 GPL 协议。除了这些概念上的创新,RMS 开始打造完全自由的软件系统 —— GNU: 从 emacs 编辑器,到 GCC 编译套件,以及各种软件工具和开发库,GNU 将 Unix 系统上的专有软件替换的差不多了,唯独还缺少了操作系统内核 —— Hurd.

而到了1991年,一位芬兰的大学生 Linus Torvalds 开始基于教学用的操作系统 Minix 打造他自己的玩具操作系统 —— Linux, 这一切都是为了好玩(参见《最著名的黑客》)。在发布了第一个版本0.01后,Linus 决定接受 RMS 的建议,采用 GPL 协议授权发布 Linux, 使它成为一个自由的操作系统软件。Linux 受到自由软件社区的追捧,而另一方面,以 Linux 内核制作发行版的商业公司也如雨后春笋般出现,这里面最知名的是红帽 Redhat 公司,他们发行了 Redhat Linux 并出售商业版及服务,取得巨大成功,公司于1999年上市。

相对于 RMS 对于自由软件哲学的执着,Linus 本人并不关心自由软件运动,而他管理下的 Linux 社区却日益发展壮大,Linus 本人也成为了新的黑客领袖。老牌黑客 Eric Raymond (以下简称 ESR) 在研究了 Linux 的开发过程后,发现 Linux 的成功并非是所谓的自由软件哲学,而是 Linus 采用了一套与以往软件开发都不同的模式 —— 无论是专有的 Windows 或 Unix, 还是自由的 GNU emacs 或 GCC, 都是由一个人或一个团队控制着整个软件的开发过程,这种模式 ESR 称之为大教堂模式;而 Linux 则是更加开放并借助互联网协作的集市模式。ESR 将此总结成《大教堂与集市》文集并发表,在社区得到了极大的关注,网景公司因此将他们的主要软件代码开放,也就是今天的 Firefox; 而 ESR 又与他的同伴们一道,发起了对计算机行业影响重大的“开源软件运动”。

the cathedral and the bazaar

大教堂与集市

《大教堂与集市》探讨了两种软件开发模式 —— 大教堂模式和集市模式。因为当时还没有“开源软件”这个名词,文集中写的是自由软件,但现在大家一致认为这本书就是开源软件运动的“圣经”。在此之前,研究软件工程的圣经当属《人月神话》,特别是《人月神话》Brooks 定律 —— “延期的软件项目中添加人手,只能让项目更延期。”成为了形容软件开发过程极其复杂的经典定律。不过 ESR 指出《人月神话》中的这句定律在传统的开发团队中成立,而在互联网沟通的时代,加上类似 Linus 这样的权威仲裁者,那么开发人力应该是越多越好。他也因此总结了一个 Linus 定律:只要眼球足够多,所有 bug 都好捉。

ESR 在研究 Linux 项目的同时,还在他的新项目 fetchmail 上付诸实践了这种集市开发模式,并总结的19条经验之谈。以下直接摘抄翻译原文,我将自己觉得更有价值的条目加粗标识:

  1. 所有好的软件都源于解决开发者本人的痛点问题
  2. 好的程序员知道要写什么,伟大的程序员知道要如何重写与重用。
  3. “计划好抛弃一个,无论如何,你总会扔掉一个。” (摘自《人月神话》)
  4. 如果你有正确的态度,有趣的问题自然就来了。
  5. 如果你对一个项目失去了兴趣,你最后的职责就是把它交给一个称职的继承者。
  6. 把用户当做合作开发者是快速改进代码和有效调试的最佳方法。
  7. 尽早发布,经常发布,并听取用户意见。
  8. 如果 beta 测试者和合作开发者的群体足够大,几乎所有的问题都会快速现形,也会被人快速解决。
  9. 优秀的数据结构和丑陋的代码远比反过来的组合好。
  10. 如果你以“最有价值的资源”来对待你的 beta 测试者,那么他们就真的成为你的“最有价值资源”。
  11. 仅次于拥有好点子的就是识别出来自于用户的好点子,有时候后者更好。
  12. 最有突破和创新的方案往往来自于你意识到把问题的概念弄错了。
  13. “完美的设计不是不能再增加什么东西,而是不能再减少任何东西。” (摘自《小王子》)
  14. 任何工具都应达到预期的用户,但真正伟大的工具会带来从未预想到的用处。
  15. 在写任何网关软件的时候,尽量不要干扰数据流 —— 除非用户强迫,否则不要扔掉任何信息。
  16. 当你的语言不像是图灵完备时,语法糖是个好东西。
  17. 所谓安全的系统,只有在其不为人知的时候才是安全的。当心伪安全。
  18. 要解决一个有趣的问题,首先得找到有趣的问题。
  19. 如果开发的协调者有至少跟互联网一样好的沟通媒介,以及懂得不通过强迫方式去管理的领导,那么人力越多越好。

第14条也让我印象深刻,比如 Git, 就是一款带来远超预期想象的伟大工具,有机会后面我再写它。《大教堂与集市》是一本理解开源软件的必读之书,可以说是通往开源之路的指南针,它揭示了 Linux 等开源软件的成功秘诀。在 ESR 的网站上可以阅读全文。1

魔法大熔炉

《大教堂与集市》集结成书时,包含了五个章节:

  1. “黑客文化简史”: ESR 以黑客视角讲述黑客文化和历史。
  2. “大教堂与集市”: 对 Linux 开发模式的探索和用集市方式实践 fetchmail 的社区协作开发。参加本文上一部分。
  3. “开拓智域”: ESR 结合社会学、经济学理论,研究黑客们参与开源贡献的动机。ESR 发现,与 Locke 土地产权理论所代表的“交换文化”所不同的是,黑客参与开源社区的背后是“礼物文化”。在这种文化下,黑客们更加关注“声望”(reputation), 这是参与开源贡献的精神动力。
  4. “魔法大熔炉”: ESR 探讨了开源软件的商业模型,给出了一些开源软件的赚钱模式:如通经过广告、服务、附加产品、内容等方式获取利润。
  5. “黑客的反击”: 在这个章节里,ESR 则吹响了《共产党宣言》式的革命号角,号召黑客们采取自上而下的战略方针,通过游击战的市场策略,通过开源认证等实施方式,夺取财富500强,让开源软件攻占工业界。回头看,二十年前的星星之火,现在已成燎原之势。

ESR 在二十多年前写的这些文章,现在看来很有先见之明。与 RMS 对于自由软件的狂热近乎原教旨所不同的是,ESR 对于自由软件理念的那套理论并不认同,他认为如果想要让自由软件/开源软件获得更广阔的发展空间,需要拥抱商业公司。因此他在“魔法大熔炉”中总结了商业公司利用开源软件可能的获取利益的多种方式,这也为接下来二十年开源软件的繁荣发展奠定了理论基础。黑客精神结合商业价值,用魔法大熔炉烹制出美味的软件盛宴。

但实际上,现在开源软件的商业价值已超出了他当年的预计,越来越多的大公司不仅仅因为贩卖服务、内容来获取开源软件的价值。在十年前,参与开源社区(特别是 Linux 社区)的大公司多为硬件产品为主公司,如 IBM、Intel 等,其目的很明显,为了在内核中预埋特性来提升他们的硬件竞争力。而近十年,我们看到越来越多的软件及互联网巨头参与开源,如微软、Google、Facebook 等。这些软件巨头根本就没想利用开源软件来卖硬件或服务,而是利用开源来构筑事实标准,从而建立生态甚至垄断行业,比如 Google 的 Android、kubernetes;而微软的 VSCode 更是吸引了大量的开发者用户,这跟微信免费是类似的道理。

对于个人来说,黑客或者说开发者在开源社区的贡献也不单单是义务的付出,开发者获得的“声望”是个人在社区建立的影响力和个人品牌。而开源对于个人开发者的更大的好处在于:如果把软件技术和知识看作是软件劳动者的生产资料的话,那么开源正是打破了软件巨头垄断,让生产资料真正掌握在劳动者的手里。因此,从某种意义上说,开源也是一场“共产主义”运动(虽然 ESR 曾经在采访中驳斥了开源是共产主义的说法)。2


Footnotes

  1. The Cathedral and the Bazaar: http://www.catb.org/~esr/writings/cathedral-bazaar/

  2. 本文最早于2020年8月18日发表在公司内网 Hi3ms 社区和心声社区,为给 CodeConf 大会做广告宣传。