在开源领域,有些真实发生的故事是如此得传奇,能使得我的脑海里浮现出星球大战版震撼人心的开头片段,丝毫不逊于我们能够在电影大片中看到的情节,作为“代码英雄”系列故事的开篇,我们将讲述一个关于操作系统的故事,这个故事开始于一个剑拔弩张的时代……
比尔.盖茨和史蒂夫.乔布斯正统领着自己的商业帝国展开了一场难以避免,关于专有系统(Priority System) 的战争。微软与IBM形成了强大的联盟关系, 然而乔布斯拒绝做出任何让步,授权苹果操作系统的许可证。当时,只要掌握了操作系统就能掌管电脑,掌控人们交流和获取信息的方式。毫不夸张的说,只要控制了操作系统,那你就能成为这个新世界的国王。于是他们展开了这场史无前例的战争。然而,令他们意想不到的是,一个开源操作系统新星正在他们如火如荼的激烈战争中,消无声息的冉冉升起……
开源操作系统的崛起
苹果与微软的操作系统走的是截然不同的两条道路。苹果专注于用户体验,致力于打造独一无二的生态系统。而微软相比较就更加偏向实用主义,更加符合商业模型来使用。苹果是一家十分独立的公司,不准备跟别的公司合作,他们想通过自己全权掌控从硬件到软件,所运行的应用程序,提供支持的操作系统的各个细节,从而创造最棒的客户体验,而这种极佳的用户体验,使得苹果收获了大量的“果粉”。
而微软操作系统Windows的雏形在很大程度上借鉴了苹果的macOS操作系统,实际上,在早期,微软一直都是苹果关键的同盟者。苹果在当时根本就没有考虑过对方是竞争对手,甚至授权微软可以使用苹果图形用户界面的一些元素。然而在1985年的秋天,微软在没有告知苹果的前提下发布了Windows操作系统。这导致乔布斯异常生气,他觉得这是背叛。
随着新的Windows系统发布,苹果和微软展开了一场旷日持久的诉讼,从此,苹果和微软分道扬镳,从亲密的合作伙伴变成了水火不容的敌人。而当微软发布Windows 1.0 系统的时候,这场操作系统的战争真正打响了。后来的结果,想必大家已经知晓,微软主导了操作系统市场,占据了90%的市场份额,并且成为整个个人计算机端标准化的配置,而苹果,在1987年,几乎破产。
1997年,伴随着乔布斯创办的NeXT被苹果收购,乔布斯再次回到了苹果。在 Macworld Expo的主题演讲中,乔布斯出人意料的宣布了与微软新的协定合作关系,因此也迎来了在座观众的阵阵嘘声,而这次合作,实际上也宣告了两大操作系统之战最终以苹果的惨败而告终。
而与此同时,在远方的大陆,开源的力量正如星星之火,渐渐燃起。将自由软件付诸于实践的“起义者”Richard Stallman ,想要使用 Free 的软件和社区,来替代价格高昂的专有系统。于是他决定自己来开发,他主导了GNU项目并且开发了GPL (General Public License) ,允许人们免费运行,修改和分享代码。然而,整个80年代,鉴于内核的无限期停滞,始终没有一个可用的操作系统产生。
这个叫做 Kernel Unix 的类Unix的操作系统,可以免费使用并且分享。而这一行为激起了开发Unix系统的AT&T Bell Laboratories和UNIX System Laboratories的强烈反对,他们威胁并起诉任何有查看Unix源代码后开发自己系统的公司,甚至声称任何有功能上的相似,尽管没有使用Unix代码,都违反了版权。
在这种情况下,历史上最出名的一位“代码英雄”诞生了,一位21岁刚刚完成计算机学位的学生碰巧改变了一切,这个来自芬兰的叫做 Linus Torvalds男孩成为了我们“代码英雄”系列故事中的第一位主角。Torvalds是一名赫尔辛基大学的学生, 有天赋、很幸运而且具有宏大的想象力,就像其他的代码英雄会感觉到的一样,在使用Unix的时候,他觉得十分沮丧,他想把三个ADC处理器功能加到他的新电脑里,他对安装在IBM Clone上的MS-DOS印象很深刻, 但是他无力支付高达5000美元的Unix软件费用。
于是,在1991年的春天,Torvalds基于MINIX构建了一个操作系统,这个操作系统以他自己的名字命名,而这就是日后大名鼎鼎的开源操作系统——Linux的雏形。
实际上在刚开始的时候,Torvalds只是想以一种方式去边玩边学习实践,当时有很多的操作系统,他所关注的这个叫做MINIX的系统本来是给学生用来学习怎么开发操作系统用的,Torvalds发现这个事情很有意思,因为他确实想要建立自己的操作系统,他就开启了一个亲手实践的学习项目,这就是一切是怎么开始的。一个男孩儿尝试着从项目中学习,边学边做,而在这个事情中的不同之处就是Linus既有足够的天赋,又足够坚持,而且足够友善,这使得人们在看到他这个项目之后可以支持他,参与到其中,27年后的今天,Linux的发展已经越来越快,完全超乎了他本人的想象。
1991年的秋天,Torvalds 已发布了一万行代码,世界各地的人们开始通过评论,编辑,分享的方式进行参与这个项目。这在今天可能听起来很正常,但是记得在当时那个年代,开放式合作处在和专有系统抗争的前沿,而专有系统领域,微软、苹果、IBM这些科技巨头已经取得了很高的成就,Torvalds 对于Linux使用了Stallman开发的可以免费使用的GPL,也奠定了Linux的免费基础,这一举措真正地保证了Linux可以永久免费使用。可以说Linux的出现,对于所有的开发者们打开了新世界的大门。
另外,GPL 的第二版本中要求使用者如果打算销售或者推广软件必须要分享源代码,所以如果你对代码有任何的提高改进,仅仅简单说明改进是不够的,而是需要把所有的改进源代码体现出来,然后他们就会评估考虑是否部署在Linux中,这种开发哲学也渐渐变得流行起来。
当微软、苹果、IBM决定建立自己的软件城堡,打造护城河的时候,Linux却选择了建立一个魔幻的气泡城,而这个气泡城要比城堡有趣好玩儿得多,而在当时真正吸引人的是开发者终于可以掌控自己的程序世界了。
当Linux刚开始出现的时候,所有的系统都是专有系统,如果你不通过这些系统甚至都不能添加一个打印机,你不能自行决定添加硬件从而更好地提高自己电脑的性能,你也不能放入一个DVD,然后进行复制,建立在专有系统上,你对于此没有控制权,更不能自由地开发创新更出色的产品和功能。这就是为什么开源系统软件在刚开始变得至关重要的原因了。关键是开发者们需要在协作的环境下才能开发出更好,更强大的产品。
Linux 在起初的时候听起来像是是一个纯粹的乌托邦,不是说 Linus Torvalds 一己之力改变了一切,但是确实是他促进了革新,成千上万的开发者加入负责管理Linux Kernel 的不同部分,然后也因此建立了初期的信任。改变可能来自于任何地方,但是共同点是批判和好奇心。
这一切是如此得不可思议,Torvalds是如此低调,巧合地通过一个DIY项目而发起。当 Torvalds 做这个项目的时候甚至没有任何的线索,当时他只有21岁,在尝试第一次开放代码后人们开始给他反馈,数十个,成百的,成千上万的贡献者就这么渐渐加入进来。尽管有这样低调的开始,但Linux的疯狂的成长也没有用太长的时间,Liunx在高速发展着,而微软因此而担忧。
到了2006年,Linux变成了第二大操作系统,仅次于Windows 。全世界大概有5000名开发人员一起开发着Linux,还记得比尔.盖茨发给乔布斯的提醒吗,他强调和他人合作的重要性,结果证明开源的Linux把这种方式带到了一个全新的高度,通过比尔.盖茨永远难以预见的方式。
企业领域的开源之战
虽然Linux之火已经燎原,但比尔.盖茨的微软帝国仍然控制着90%的电脑计算机用户系统,完全标准化的电脑系统看起来是毫无疑问的了,然而互联网的出现把战场从个人计算机带到了企业领域,当时商业计算机用户都想拥有自己的服务器,与此同时,Linus Torvards和他的开源开发团队正在不断改进着试验版本的Linux系统,并发布了免费的Linux电脑系统,开始了开源革命。
上次我们说到微软和苹果尝试着占据电脑系统市场,但最后微软占据了绝对优势。因为互联网的出现,开发者的敌人也因此随之而来,所以互联网把战火从PC端一把烧到了动辄几千台服务器的企业市场,这是一个巨大的资源迁移,这也意味着很多本来准备袖手旁观的公司,突然一下要为服务器买单,建立自己的网站,他们同时还需要自己集成软件去跟进资源使用,管理数据库等等,这将需要很多的开发者来帮助他们实现这些功能。
现在想象下你是1991年的微软,你感觉很棒对吗,很有自信,主导着整个行业以及与其他公司的合作关系,但还是一定程度上忽略了开发者、编程人员、系统管理员的力量,但实际上这个领域却是快速成长的沃土。Linus Torvards 和他的团队以及开源开发者们将Liunx迅速发展壮大到微软不能再忽视的地步,Linux第一版发布于1991年,刚开始的时候只有一万行的代码,但是十年过后这个数字增长到了300万,到现在是2000万。
对于很多人来讲,Linux都是他们全新体验的开始。回到20世纪80年代, Linux还没有发展成为我们现在看到的样子,只是一个罕见的系统模式,虎视眈眈地眺望着系统行业的战场,然后极客和世界各地的黑客都爱上了它,发现了Liunx就好像找到了进入一个神奇的社区的秘密,朋友们之间会相互分享Linux,就像朋友间分享音乐的方式一样。
有位开发者讲述他是如何在16岁的时候发现并喜欢使用Linux的,“我当时和家里人去海边潜水度假,那是非常美丽的地方,但是那周我正好生病了,非常严重,我是不能离开酒店的,我唯一有的就是一台刚装了 Linux的笔记本电脑,之前只是听说过,所以我跃跃欲试。所以不可避免得,我想用这整个星期去探索这个陌生的系统,我玩弄着终端,建立了主页,因为我当时完全没有任何主意怎么使用,犯了很多错误,但是渐渐地我开始明白了命令行是什么”。
在2017年Linux开发者大会上,一个开发者回忆说到,“Linux给了我源代码,我感觉对系统有了更多的控制,1995年的时候我看 Linux内核编辑,并为此着迷”。另一个开发者说道:“我在当时在寻找便宜的软件,找到了4个CD,上面的内容看起来很有趣,我回家之后就安装到了第二台电脑上。开始运行起来,我真得感觉到很兴奋,因为两件事,第一,不是运行在Windows上;第二,Linux开源的本质。”这种方式的来源可以保证Linux一直在那里,在开源时代到来前,总是有完全掌控的愿望。
再回到这场操作系统战争前的年代里,在微软和苹果战争之前,还是有代码英雄的。保罗教授是在线实验室的负责人,他在此之前是一名开发人员,那个时候的互联网偏好是倾向于较少的客户服务器,起初的设计是用于同行间交流的,IBM所做的正相反,他们占据着终端,仅有部分用于交互界面,但是没有留下足够的空间让你在终端做任何你想做的事情。
当变成经常用户后,对于工程师和程序开发者来说,事情却朝着相反的方向发展。对于在Linux之前,20世纪70年代80年代,很多需求都聚焦在请求获得命令行控制,但只有Linux在20世纪90年代做到了别的系统所做不到的事情,所以早期的Linux和其他的开源软件是先锋者,我们现在是站在巨人的肩膀上前进。
一直到1998,事情渐渐发生了变化,史蒂芬是一个在ZDnet.com工作的开发者,他已经在科技商业应用方向笔耕不朔几十年了,他描述了Linux是怎么变得流行,加入的新的开发者远比想象的要多,甚至多于微软的开发人员。Linux开始没有抢夺微软的用户,这也是一开始被微软忽视的原因,当业务开始上线,每个人都需要一个独一无二的程序解决方案,1993 Windows Antique发布,这个系统用意是跟其他的服务器系统竞争,但当时开发者们想的是我为什么要花钱购买,而不选择便宜的Linux,关键是关于Linux所有的一切都可以在网上看到。
微软意识到Linux出乎意料地开始触及他们的业务,不只是电脑桌面端,而是在商业服务器方面,随后展开了行动,利用不确定性质疑Linux可能不是很好,不够稳定,不能相信这些技术。这种宣传持续了一段时间,整个行业开始对抗这个新手。与此同时,微软意识到需要持续进行开放和革新,他们也不知道改变将会是什么。但真正担心的是接下来的一年。
2000年 , IBM 宣称将在2001年投入数亿美金于Linux ,IBM尽管不在做PC业务但是还没有完全出局,他们认为Linux将会是未来服务器和电脑的主框架,Linux将会主宰服务器的市场。这不仅仅是黑客喜欢的命令行故事——他们可以通过Linux赚钱,同时也是众多开发者感兴趣的事情,也是商业公司所关注的方向,有些公司十分警觉,当他们听到开源的时候就宣称“开放”听起来就不够稳定,这将会有很多的问题,从而导致混乱的局面。
但是经济利益会通过很有趣的方式让人们克服偏见和阻碍,甚至对于那些需要网站的小型业务,这个问题都浮现了出来,考虑到使用便宜的Linux系统的成本相比于其他的专有系统是有压倒性优势的。如果你是一个店主雇佣人去建一个网站,从这个角度考虑你就是会先考虑使用Linux 。
20年之后,Linux已经在世界上的绝大多数网站上运行着、承载着,它彻底征服了服务器的网络服务世界,那么接下来,它将在移动领域大放异彩,因为移动的时代来临了。
开源令对手变成朋友
2007年,苹果推出了史诗般的智能手机——iPhone,借助移动互联的普及浪潮以及“操作起来如丝般润滑”手感的操作系统IOS,iPhone一举占据了智能手机很大一部分市场,也引领了智能手机操作系统的发展。微软希望可以从中分一杯羹,Linux也摩拳擦掌,跃跃欲试。然后,安卓系统诞生了,安卓基本就是建立在Linux上的,后来被谷歌收购,现在运行支持着世界上最多的移动手机端,Linux有这个能力去克服复杂性问题,建立庞大的系统生态,同时成本几乎为零,微软错过了这次机会,至少从操作系统的角度来说,格局悄然发生了改变。
微软在跌落的边缘努力着,Jone是微软的首席架构师,他依然记得当时公司对此的困惑,就像很多其他的公司一样,那些用开源的人们直接可以复制粘贴他们需要的代码而不需要任何的授权;他们也很困惑于开源的发展模式和商业模式,也就是说所有的软件都是免费的,人们不用付钱,如何盈利?所有投资于专有系统的公司都在担心着发生的一切,特别是当你的发展威胁到一些耳熟能详的公司的时候。
然而,到了2013年。一切都改变了,微软云Azure上线,令人惊讶的是,Azure竟然从第一天开始就提供Linux的虚拟机,微软之前的CEO Steve Ballmer ,那个曾经把Linux称为”癌症“的人,出局了。另一个更具有前瞻性的CEO Satya Nadella 进入了公司,他来自于更年轻的一代,对于Linux 和开源也持有非常不同的观点,来自微软Azure团队的负责人说 :“大概在四年前,我们把对Linux的支持加入到Azure中了,这是考虑到实用的原因,如果你去任何企业级的用户那里,你会发现,他们不会是在选择 Windows 、Linux或是Java之间纠结,他们很早之前就已经做出决定了。15年前可能会有争论,但是现在每个我所看到的企业都是混合应用 Linux,Java, Windows,Oracle 等等的,既有专有系统软件也有开源的产品。他们想要引入云技术,从而可以把业务建立在云技术之上,你是不能告诉他们应该用这个或者那个软件的。”
到2014年秋的时候,已经有大约20%的Linux是运行在Azure的虚机之上,微软总是有第一梯队的服务针对这些Linux用户,对于很多人来说,这个转折点是十分令人吃惊的,但也是顺理成章的。
史蒂芬是一个技术新闻工作者和作家,“你知道当你踢足球的时候,如果感觉踢得费力,你可能会更换一双鞋袜,这就是他们做的,有些聪明的人学会了接受现实,并且意识到这个世界就是这样子运转的,不计前嫌,尽管可能会有些许的尴尬,但是之前的申明是不应该影响到现在去做一个明智的决定的”。
看到微软放下了自己的高傲,你就可能会明白当年苹果为什么会在一年之后转而和微软成为合作伙伴。现在是微软做出了相似的和解选择。多年的开源的战争,他们重新革新了自己,这是一个不改变就可能消亡的时代,微软很难跟成千上万的开发者去竞争,所以他们会选择跟Linux进行合作,这样很难得,之前微软的CEO讨厌Linux,因为他认为GPL的授权就像癌症一样,但是当微软换上新的领导层后,他们认为趋势是很难阻挡的,应该携手Linux而不是与之为敌。
微软和Linux的携手是一个皆大欢喜的方式,尽管很多Linux开发人员还是怀疑微软的动机,但是今天的微软已经不是往昔的微软,特别是2017年的微软已经不是Steve Ballmer掌管的公司,或者是比尔盖茨创办的微软,这已经是一个完全不同、采取不同策略、更加开放、更加包容的微软。
你肯定知道,一旦开始使用开源,将很难再推倒重来。开源技术已经重新塑造了IT行业,那些没有听过Linux的人,也许可能没有听过Linux,但是每次他们上脸书的时候,其实都是运行在Linux之上,每一次使用谷歌的时候也在使用Linux,每一次试用安卓手机的时候也是在使用Linux。Linux已经无处不在,任何人也无法阻止。开源的支持者可能会担心微软是引狼入室,但是事实上是开源的本质决定了Linux就是来阻止绝对垄断的,没有任何一个公司可以通过任何一种方式完全控制Linux。
Grand 是Linux基础代码的贡献开发者之一 “每一个开发者通过自我利益驱动的方式贡献者代码,他们这么做是因为他们想要解决自己所面对的问题,硬件出问题或者他们想到了新的点子可以去实现一些新功能,或者找到了新的方向可以发展成为新的产品,这是很棒的方式,因为每个人都能从中获益,每个人都可以使用这些代码,因为这些无私的贡献,公司不会出于私利去控制。”
微软发现在云的未来,Linux是通往云世界关键的梯子,Linux和开源技术不再是对手而是像空气一样无处不在,微软也加入了Linux,并成为众多的贡献者之一,他们甚至成为了Github排名第一的贡献者。2017 年的9月份,他们还加入了The Open Source Initiative组织,也推出了很多基于开源技术的授权产品。
“我们不会去计算对社区的贡献量,到现在.net Framework 上超过50%的贡献,来自于微软之外,更多的是来自于个人开发者的贡献”。回顾一下之前的微软,再看看现在这个开放的微软,你就会明白开源所产生的力量是无法想象的!
代码英雄的下一个战场
在本期的故事里,我们了解了这场涉及到上亿万用户的史诗级的系统战争,我们看到开源技术的胜利正在使其占据着更多的市场份额,我们也看到在成千上万的开源英雄的努力下,改变了IT行业的格局。
现在,很多大企业也基于开源合作的方式,通过协作、拿来主义,取长补短,就像苹果从Zeorx得到了图形用户界面的设计灵感,微软又从苹果得到启发,Linux从Unix得到启发,这个世界的进化也持续发生着,开源在持续转变着,变成了其他技术角逐的战场,开源的方式变得不可避免,云端的战争,开源技术的战争不可避免,正如Stephen所说:“ 简单来说,我们现在有4-5家公司正在尝试着努力在人工智能方向,比如苹果、微软、谷歌、三星、亚马逊,我们看到这些战争不可避免得转移到了其他的方向,AI 有可能渗透到我们生活中的各个方面,这五个公司都围绕着AI技术在竞争。但是当你看脸书,谷歌背后的另一场战争,仔细分析就会发现,发动一场真正意义上的战争,变得越来越难,企业发展大都有规模优势,但规模优势的本质是,之前是直线的发展,现在是指数级的扩张,所以一旦你在这些方面有了刚开始的竞争优势,对于新加入的企业将变得越来越难跟上,我觉得对于互联网公司来说,这是完全成立的,当公司存储数据作为比较竞争优势的来源之一的时候,你会吸引更多的客户,与此带来更多的数据资源,你就会遥遥领先于第二名,我觉得在云计算领域也是一样的道理。”
这个故事开始于一个个的代码英雄,像乔布斯和比尔盖茨,但是科技的进步把集体的能量放大了,带到了一个全新的阶段,很有趣的是,Linux的发明者,当他开发Linux kernel的时候,他甚至是没有一个计划的,可以肯定的是他是一个年轻的有天赋的开发者,就像在最酷时代潮流中最前沿的波浪,带动的革新是不可避免的。
如果要做一个专有系统的公司,想要用之前传统的方式,开发出同样的Linux技术产品需要花费超过100亿美金;这就体现出了开源的神奇力量。专有系统是对抗不了开源的力量的,成功的公司必须要保持开放,这是从这个战争中我们学会的最大的教训,还有些事情我们需要记得的是,当我们在一起协作的时候,我们成长创新的可能就会变得无限,我们不需要安排事项,我们只需要思考新的开发者,通过分享编程的乐趣来学习,当知道没有人能建立想要东西的时候,做出了自己需要的东西,不管能力来源于哪里,我们联合在一起总有能力去建立下一个有着巨大影响力的产品,只要有开放的命令行,机会可能就是无限的。
这样的开发哲学也改变了我们的数字生活,从个人电脑到企业服务器再到云技术,我们发现之前的竞争对手,现在变成了亲密的合作伙伴,云间的协作更加释放了新的更多的可能,我们知道还有无数的代码英雄,他们的故事我们无法在这里一一为您讲述,但我们可以为您分享其中最精彩的故事。接下来的内容将是围绕着当今的代码英雄的事迹,描述科技战场的动向以及这些科技创新是如何代入我们的生活之中的。我们下一集的故事,将是容器战争,希望你不要错过!