1991年8月25日,芬兰赫尔辛基。
一个21岁的学生在Usenet新闻组上发了一条消息:
“大家好,我正在做一个(免费的)操作系统(只是个爱好,不会像GNU那样大而专业)……我想听听大家的意见……”
他叫林纳斯·托瓦兹。他刚刚发布了Linux的第一个版本——0.01版。
他只是想做一个操作系统,在大学里学习操作系统课程。他没想到这个"爱好项目"会改变世界。
林纳斯的爱好 #
林纳斯1970年出生于芬兰赫尔辛基。他从小就对计算机着迷。
1991年,他在赫尔辛基大学学习计算机科学。课程要求他学习操作系统,但学校使用的Minix操作系统功能有限。
林纳斯想:为什么不自己写一个操作系统?
他买了一台386电脑,开始写代码。他先写了一个终端模拟器,然后添加了磁盘驱动、文件系统、进程调度……
几个月后,他有了一个可以工作的操作系统内核。
他把代码发布在FTP服务器上,邀请感兴趣的人下载和测试。
GNU项目 #
在Linux之前,已经有一个类似的项目:GNU。
1983年,理查德·斯托曼发起了GNU项目,目标是创建一个完全自由的操作系统。
斯托曼是麻省理工学院的程序员。他相信:软件应该是自由的——任何人都可以使用、修改、分发。
GNU开发了操作系统的许多组件:编译器(GCC)、编辑器(Emacs)、shell(Bash)、库(glibc)……但缺少一个核心:内核。
GNU正在开发一个叫Hurd的内核,但进展缓慢。
Linux填补了这个空白。Linux内核加上GNU工具,形成了一个完整的操作系统:GNU/Linux。
开源的定义 #
斯托曼提出了**自由软件(Free Software)**的概念。
他定义了四种自由:
- 自由0:以任何目的运行程序的自由
- 自由1:研究程序如何工作,并修改它的自由
- 自由2:重新分发副本的自由
- 自由3:分发修改版本的自由
注意,“自由"指的是自由,不是免费。斯托曼的名言是:“Think of ‘free’ as in ‘free speech’, not as in ‘free beer’.”
1998年,一群开发者提出了**开源(Open Source)**的概念。开源强调的是开发模式——公开源代码,协作开发——而不是哲学理念。
开源更容易被商业公司接受。今天,“开源"比"自由软件"更广为人知。
Linux的发展 #
Linux发布后,开发者们开始贡献代码。
他们修复bug、添加驱动、移植到新硬件、开发新功能。代码通过邮件列表提交,林纳斯审核后合并。
这种分布式开发模式非常高效。成千上万的开发者协作,Linux快速进化。
1994年,Linux 1.0发布,已经支持多种硬件架构,功能相当完善。
1999年,Linux 2.2发布,支持对称多处理(SMP),可以运行在多CPU服务器上。
今天,Linux是世界上使用最广泛的操作系统内核:
- 服务器:全球约96%的Web服务器运行Linux
- 超级计算机:世界前500名超级计算机100%运行Linux
- 移动设备:Android基于Linux内核
- 嵌入式设备:路由器、智能电视、汽车系统……
- 云平台:AWS、Azure、Google Cloud的底层都是Linux
Linux发行版 #
Linux内核只是核心。要成为一个可用的操作系统,还需要很多组件:桌面环境、应用软件、包管理器……
不同的组织把这些组件打包,形成发行版:
- Debian:社区维护,稳定可靠
- Ubuntu:基于Debian,用户友好,桌面流行
- Red Hat Enterprise Linux(RHEL):企业级,商业支持
- CentOS:RHEL的免费版本
- Fedora:前沿技术试验场
- Arch Linux:滚动更新,极客最爱
每种发行版有自己的特点和目标用户。
开源改变商业 #
开源最初被商业公司视为威胁。微软高管曾说Linux是"癌症”。
但开源最终改变了商业,而不是摧毁商业:
Red Hat:销售Linux企业版和支持服务,2019年被IBM以340亿美元收购。
Google:开源Android,成为移动操作系统霸主。
Facebook:开源React、PyTorch,建立技术影响力。
Amazon:开源各种工具,贡献社区。
今天,几乎所有科技公司都参与开源。开源成为行业标准,闭源成为例外。
开源的优势 #
为什么开源能成功?
第一,质量更高。 成千上万的开发者审查代码,bug更容易被发现和修复。“Given enough eyeballs, all bugs are shallow.”
第二,更安全。 源代码公开,安全漏洞更容易被发现。闭源软件依赖"隐秘式安全”,一旦被破解就危险了。
第三,避免锁定。 使用开源软件,不会被供应商锁定。如果供应商倒闭或涨价,可以自己维护或找其他供应商。
第四,促进创新。 开源降低了创新的门槛。开发者可以站在巨人的肩膀上,不需要从零开始。
第五,降低成本。 开源软件通常免费,降低了软件成本。
开源的挑战 #
开源也面临挑战:
商业模式:如何从开源软件赚钱?Red Hat卖服务,MongoDB卖企业版,GitHub卖托管……
可持续性:很多开源项目依赖志愿者维护,缺乏资金支持。Log4j漏洞事件暴露了这个问题。
治理:谁决定项目的发展方向?林纳斯仍然控制Linux内核,但很多项目缺乏明确的治理。
许可证:有几十种开源许可证,条款各不相同,容易混淆。
林纳斯的故事 #
林纳斯现在在Linux基金会工作,全职维护Linux内核。
他仍然拥有内核的最终决定权。他审核代码、解决争议、决定发布时间。他的风格直接坦率,有时甚至尖锐。
他说:“我只是一个工程师。我关心的是代码是否正确,不是政治正确。”
Linux没有让他成为亿万富翁。他没有像比尔·盖茨或史蒂夫·乔布斯那样创办公司。他把代码给了世界。
但Linux让他成为科技界的传奇。他获得了图灵奖(与日本科学家一起),被《时代》杂志评为最有影响力的人之一。
下一步:云计算 #
Linux统治了服务器,但服务器的使用方式正在改变。
越来越多的公司不再购买服务器,而是租用云服务。亚马逊、微软、谷歌的云平台,让任何人都可以按需获取计算资源。
明天,我们来讲云计算时代。
今日知识点 #
开源软件(Open Source Software) 源代码公开的软件,任何人都可以查看、修改、分发。开源强调协作开发和开放标准。Linux、Python、Firefox都是开源软件。
内核(Kernel) 操作系统的核心,管理硬件资源和调度程序运行。Linux是一个内核,不是完整的操作系统。Linux内核加上GNU工具和其他组件,形成完整的GNU/Linux系统。
发行版(Distribution) 把Linux内核和软件包组合成的完整操作系统。Ubuntu、Debian、Fedora、RHEL都是Linux发行版,各有特点和目标用户。
思考题 #
- 斯托曼说"软件应该是自由的"。你觉得软件应该开源吗?有没有应该闭源的情况?
- Linux成为服务器和超级计算机的主流,但在桌面市场只有约2%份额。你觉得为什么?
明天预告:云计算时代——亚马逊AWS如何改变IT行业,让"租服务器"取代"买服务器"?