大家好,我是良许。
最近有小伙伴问我,GNU到底是啥?和Linux又有啥关系?
这个问题看似简单,背后却藏着程序员圈子里的一段故事,今天就来聊聊,让你多一个和同事聊开源的谈资。
一场自由软件的革命
上世纪80年代,商业化浪潮席卷软件界,Unix这类原本活跃在学术圈和黑客圈的操作系统,被各大公司闭源收费,想用要掏钱,想改没门路。
理查德·斯托曼看不下去了,彼时他在MIT人工智能实验室工作,眼看着热爱的自由软件文化被吞噬,1983年他发起了GNU计划,目标是打造一个完全自由的类Unix操作系统。
GNU是"GNU's Not Unix"的递归缩写,满是程序员独有的浪漫。
GNU的耕耘与Linux的登场
斯托曼和团队开始马不停蹄地开发工具:编译器GCC、文本编辑器Emacs、调试器GDB、Bash Shell,还有grep、sed、awk等一众命令行工具,一个个相继问世。
到90年代初,GNU项目几乎完成了操作系统的所有组件,唯独缺了核心——内核。
他们自研的Hurd内核开发进度极慢,至今未能成熟。
就在这时,芬兰大学生林纳斯·托瓦兹出现了。
1991年,林纳斯因买不起商业Unix,又不满教学用的Minix系统,索性自己写了个内核玩。
他把内核发到新闻组,称只是做个免费的爱好项目,不会像GNU那样庞大专业。
可谁也没想到,这个"小玩具"迅速走红,全球黑客纷纷贡献代码,Linux内核飞速成长。
更关键的是,Linux采用GPL许可证,和GNU理念高度契合,GNU工具链+Linux内核,一套完整的自由操作系统就此诞生。
一场关于命名的争论
严格来说,我们日常用的"Linux系统",本该叫"GNU/Linux"——因为除了Linux内核,其余绝大部分工具和软件都来自GNU项目。
斯托曼对此格外较真,每次演讲都强调要叫"GNU/Linux",他认为GNU多年的付出不该被忽视;但林纳斯和多数用户并不在意,大家习惯了简洁的"Linux",这场命名之争持续数十年,至今没有定论。
自由软件的价值与开源的胜利
其实名字之争的背后,是自由软件运动的核心精神:斯托曼坚持的不只是代码自由,更是用户的自由——有权使用、修改、分发软件,不被任何人和公司限制。
Linux的成功,实则站在GNU的肩膀上:没有GCC,林纳斯连编译内核的工具都没有;没有Bash和各类命令行工具,再强大的内核也无从使用。
如今我们能用上免费的服务器操作系统,享受云计算时代的开源红利,都离不开GNU和Linux的共同功劳。
这个故事也折射出开源世界的真实:GNU耗时十年,只差一步就能完成梦想;Linux内核短短几年就成了明星项目,有时候时机确实比单纯的努力更重要。
但这也是开源精神的胜利——不同的人、不同的项目,因共同的理念汇聚,最终成就了改变世界的操作系统。
下次在服务器敲命令时,不妨想想:ls、grep、gcc来自GNU,让这些工具运转的内核是Linux。
它们是两个项目,却也是一个整体。
至于叫Linux还是GNU/Linux,随你喜欢,重要的是我们都在享受自由软件带来的便利,这才是最核心的。