简而言之:所有问题的根源在于存在得太久……
许多人未曾察觉,微软并非与当下人们熟悉的科技公司处于同一时代。
微软与苹果同属一个时代,它们的商业模式亦颇为相似。
我们显然不会对比苹果和Google的技术实力,也不会对苹果的iOS使用专有技术提出质疑。试想,若苹果有一天达到了Windows的市场占有率,那将会怎样?相信我,那将是一场更大规模的灾难。
微软的商业模式与程序员追求的自由理念背道而驰。本质上,传统软件公司的商业模式是通过限制软件使用(通过授权)来迫使用户付费,这显然与自由精神相悖。
在此,可以简要提及开源运动的起源。开源实际上是程序员对抗软件公司霸权的一种手段。从知识产权角度来看,程序员在公司编写的任何代码的知识产权都归属于公司,这带来了一个问题:许多代码与业务没有直接联系,但业务需要这些代码作为基础支撑。
从某种意义上说,这些代码是不可避免的,根据知识产权法,这些代码的知识产权仍然归公司所有,导致程序员无法脱离公司编写任何可用的代码。因此,开源本质上是对抗软件公司知识产权霸权的一种运动,通过将基础库开源,解放程序员,促进整个行业的繁荣发展。当然,最初这种矛盾并不突出。因为除了微软,还有许多其他软件公司,如IBM、Sun、Apple、Sybase、Oracle等。
微软并不是最受吐槽的公司,甚至微软提供的生产力工具(廉价的操作系统,对,你没听错,廉价的操作系统,微软的产品一直以物美价廉著称,因为当时其他公司的都比微软的贵)受到许多开发者的支持。但随着时间推移,情况发生了变化,除了微软之外的软件公司基本都被微软击败了。
这带来了两个问题:
1、微软逐渐成为软件公司的唯一代表。
2、大量程序员因微软而失业。
事实上,微软一直是性价比的代名词,其击败其他软件公司的策略基本相同:提供更便宜的产品。但商业模式是原罪,尽管微软产品的售价与其提供的功能相比几乎可以忽略不计。这种商业模式导致微软与开源社区产生裂痕。开源社区认为所有基础工具都应该是Copyleft的,以避免程序员被版权束缚。但微软的商业模式决定了,它可以廉价甚至免费提供基础工具,但无法开放版权。
一旦开放版权,微软的商业模式将无法获得商业收入,这是由传统软件公司商业模式决定的。如果Linux只是一个小众操作系统,微软并不会将其视为威胁。但问题在于,那些被微软击败的软件公司中的一部分率先完成了商业模式的转型,他们不再依赖销售软件产品的使用授权来获取利润,而是通过提供技术支持和咨询服务来获得收入。这对微软来说是降维打击,软件著作权变得不再重要。
在IBM、Google、Sun等大公司的支持下,Linux社区开始蓬勃发展,甚至开始侵蚀微软的企业软件服务市场。企业软件服务是微软的命脉,虽然微软操作系统在消费市场占有垄断地位,但主要收入还是来自企业软件服务。在这种情况下,时任微软CEO的鲍尔默将Linux视为一种癌症。
最终矛盾激化的顶点是微软试图控告Linux侵犯了自己操作系统的某些代码的著作权。这显然是一个昏招。在这之后,微软的技术和Linux社区开始背离:
一方面,微软希望通过技术护城河饿死Linux社区,通过廉价高效的软件产品来碾压Linux社区。这导致这些软件技术不能外泄到Linux社区,并通过著作权和专利护城河确保Linux社区不能简单仿制相关功能。
另一方面,为了避免不必要的官司,Linux社区也开始主动避开微软的技术模型。这显然不符合社会发展的方向,技术壁垒的出现只会阻碍技术的自由交流。
要解决这一问题,实际上只有两种途径:
1、微软破产倒闭或陨落。正如IBM为代表的传统计算机制造商的陨落造就了开放兼容PC的空前繁荣。
2、微软找到新的商业模式,与开源社区和解。幸运的是,事情朝着第二条途径开始发展。
在鲍尔默执政的后期,微软发生了巨大改变。最显著的改变是商业模式从出售软件使用授权转变为企业订阅制。在订阅期间,企业可以获得所有软件的更新和所有技术支持,甚至包括非微软技术栈的技术的技术支持。微软也开始拥抱开源社区,C#从第一个版本就开放了所有语法设计并成为ECMA标准,.NET Framework提出了公共语言运行时的概念,使不同程序设计语言可以互操作,并制定了跨语言互操作规范。从微软的历史我们可以看到,时代不会停下来等待任何一个公司,如果你不改变,就会被时代抛弃。另外,苹果真的是个怪物,无法用正常商业逻辑理解……
最后顺便纠正几个错误的刻板印象:
1、微软的软件产品很贵。事实上,在同类型产品中,微软的软件几乎一定是最便宜的。
2、微软总是放弃老的技术。如果这是真的,你现在应该无法打开记事本,这是Windows 3.0时代的产物。
微软给人这种印象的根本原因是:这公司活太久,以及微软商务部需要时不时创造新概念让企业来买单。微软的技术从OLE->COM->.NET没有发生大的路线变化。GUI方面,从MFC->VB->Delphi->WinForm也没有变化。至于WPF则是HTML->HTA->(XUL)XAML路线的产物。
最后的最后,我想说的是,有些资深软黑是很可怜的。他们讲的很多东西是事实。但作为一个老程序员,我想强调的是,我们写程序的目的是什么?
我不知道别人,反正我是为了赚钱。
所以你要赚钱,就要创造价值。
你要创造价值,却在整天研究哪个玩意儿更开放,哪个玩意儿更符合标准?你是在写程序还是在玩政治?
在我看来,所有商业公司都是以利益为导向的。你要讲标准,XmlHttpRequest是哪门子的标准?当年难道不是IE独享的技术?Google要像你们那样,这玩意儿不开放,这玩意儿会跟微软深度绑定,这玩意儿是ActiveX Object。那AJAX不就没了,Gmail没了,SPA也就没了。
你看人家Google,给IE开发工具栏,给IE做Google Gears的时候,一点儿也不妨碍自己给Mozilla注资给W3C塞人,另起炉灶搞WHATWG。再说ES4,你们说微软从中作梗,你完全可以把它踢了呀,为什么非要看微软的脸色呢?NetScape引入JavaScript的时候找微软商量了还是找W3C商量了?
说白了当年IE市占率97%,纯粹就是一群人说我们要给JS添加这些功能,微软你去弄吧……
不服气自己弄浏览器啊,没有WebKit和后面的Chromium,JS怎么发展呢?站在微软的角度,这个没有前途的(当年来看)莫名其妙的叫做Java的脚本语言,我为什么要在上面下大力气更新?
我为什么不推动强大得多的ActiveX和OLE技术的发展?你说这些技术缺少可移植性,但是我浏览器可没要你一分钱……是,ES的发展是落后了,但是前端组件化这个来应该在几十年前就完成事情到现在还没影。
当年微软的HTA、HTC路线错了吗?VB可是1991年发布的玩意儿,到今天前端都没把GUI组件化的事情给弄好。有些东西说出来真的很好笑,大家都是商业公司,每一个行为都是商业行为,公司要赚钱的。所谓委员会,就是一群商业公司在里面勾心斗角,如果这是正确的发展方向。
Java早就应该全平台制霸了,而不是到今天还要想办法说服大家升级JDK8……就算是当年微软的鲍尔默说Linux是癌症的时候,也没妨碍IIS去支持PHP和MySQL之类的技术……更别说现在的WSL和WSA……纠结哪个东西是标准,哪种技术是主流,是资本家要去考虑的问题。什么叫做标准?什么叫做主流?是一群所谓的专家决定的吗?是由使用者决定的。
所以,为什么要这个东西?因为什么东西用的人多,那么这个东西可以招到的标准化程序员就多。技术趋同是资本家喜闻乐见的事情,而百花齐放是对真正的程序员有利的事情。
但是不论是资本家也好还是程序员也好,最终,你是要用技术去创造价值的。如果一种技术,他很普及,程序员市场供给非常充分,但是这种技术的开发效率不高。资本家会充分权衡,因为市场供给充分,所以程序员可以随时扩充和裁掉,并且因为内卷可以压低薪酬。
这样综合算下来,虽然开发效率差一点儿,或者说维护性差一点儿,总体来说还是更有利的。而站在程序员的角度,因为标准和主流去搞政治斗争,是我见过的最愚蠢的事情……
人家黑微软是因为微软的技术栈损害了它的商业利益,你跟着瞎起哄的意义在哪里?程序员,你要关注的是:你创造价值的效率。如果你看到一个新的东西或者新的技术,你第一反应不是:咦,这个东西有什么用?为什么会发明这玩意儿?这东西能解决什么问题?
我能用他来提高我的开发效率吗?而是:这玩意儿是开源的吗?这玩意儿符合标准吗?这玩意儿以后还会更新维护吗?这玩意儿用的人多吗? 恕我直言:您做程序员屈才了……