#操作系统

回复一个网友的问题,为什么做操作系统一定要做硬件? 一个做系统的团队,如果不做硬件,长时间来说是活不下去的,为什么? 1. 成本因素:操作系统的发展是需要非常多高级工程师的,高级工程师意味着非常高的研发成本,如果不做硬件,无法赚取利润让操作系统团队正常维持,一般超过5年就要出事。从用户的利益看,如果一个操作系统厂商做了5年就倒闭了,反而是坏事 2. 硬件适配:硬件不光是利润的来源,更是标准化硬件的重要方式,为什么标准化硬件很重要?对于Linux系统来说,CPU + GPU + 网卡固件是非常重要的适配组合,特别是网卡固件,一般要穷举测试后才能知道最稳定的版本,根据我的经验,太老的版本不行,太新的版本也不行,固件版本选错就不稳定。而最新的CPU一般都需要最新的内核。当CPU和网卡驱动对内核的版本不一样时,就会发生非常多奇奇怪怪的问题,这还仅仅是硬件适配的冰山一角。软硬件产品只有两种模式: 一、微软 + 整机厂商模式,硬件适配由整机厂商负责;二、就是苹果模式,硬件自己做,质量做到最好。而操作系统 + 整机厂商这种模式也很难持续了,微软的主要营收现在是 office + 云服务,操作系统基本上都不赚钱 3. 售后服务:操作系统的玩法太多了,如果没有专业的售后服务,很多技术不强的用户,基本上玩到一半就要吃灰。而开放硬件意味着,大多数用户没有享受到产品的乐趣,而浪费大量的时间在硬件适配上。标准的硬件 + 高品质的售后服务可以给用户带去物有所值的体验。这也是苹果为什么这么成功的原因 很多用户,特别是喜欢那些免费下载的系统,从用户的利益角度出发,免费下载当然好。只可惜这样的模式注定不持久,原因有几个: 1. 软件收费很难,一般用户出个100~200块就顶天了,上1000块的软件费用想都不用想。我原来做deepin linux的时候做过实验,很多用户空喊的时候非常凶,真的要付出时,钱包很诚实 2. 开放硬件没法维护:用户自己的硬件千奇百怪,如果你全免费,用户没啥说,自己折腾,用户也不要期望官方可以保证解决问题,因为官方没有收费。如果在开放硬件的前提下,收取了软件费用那就更惨了,收取的100~200块根本就无法解决开放硬件的适配的问题,工程师一天工资都不够。很多朋友又会说,微软出系统,联想就适配硬件,是的,因为联想赚了你硬件的钱。系统 + 硬件要稳定的逻辑是,谁收了你硬件的钱,谁就负担兼容性适配的问题 3. 叫好不叫座:免费的软件策略会吸引非常多的下载量,但是也导致用户的质量参差不齐。你只要坚持一天免费,用户就叫好,但是,只要你一开始收费,90%的用户都会离你而去,这就是操作系统免费策略的巨大陷阱 我上一次创业做了 deepin linux, 为爱发电了10多年,我太明白 “操作系统免费” 是多么失败的选择,为爱发电的最大矛盾是,很多白P的用户的开心是建立在高级工程师贫穷的痛苦之上的,高级工程师不赚钱的更大影响是家人跟着一起受苦,这种美好乌托邦的商业模式不可持续。
你们还是喜欢听故事 今天给你们讲我认识十多年的X先生的代码故事 X先生是我2012年的时候招募的,面试时是一个眉清目秀的小伙子,那天问了几个问题,基础技术还是很扎实的,就是有点腼腆 他入职的第一天,我们刚好又又又搬家了,他第一天报道的时候,非常吃惊,你们公司怎么搬到我读书的学校里面来了呀?(对,就是那个寒假需要绳降到一楼最后放假一个月的学校) 最开始,我只是把他当作应届生来看,我那时主要用Cairo在做自己的Linux图形库,我给他安排了一个任务,任何控件右边都做一个浮动滚动条,鼠标晃动的时候才显示,不晃动的时候自动隐藏。这个题目看起来简单,但是如果你没有深厚的图形功底和图形事件循环经验,很难做出来的。当时我的预期就是想考察他一下技术水平,给他一个月的时间。没想到这家伙3天就整出来了,我问他怎么弄的,他说看了一下Cairo API,可以用compose混合器的技术来实现图层显示的时候又不影响控件的事件循环。 嗯,这个小伙子可以啊,比我想想的厉害很多 后面又安排了几个任务,他都在我规划的时间的1/10内完成了任务,那时候我在忙着做操作系统版本发布和开发,X先生的学习速度太快了,我安排任务的时间都快跟不上他搞定任务的时间。 实在没空了,我来了一个狠的,我说现在Gnome在推动Mutter,但是社区的显卡驱动跟不上,每天都有用户反馈花屏闪屏,你写一个窗口管理器吧。我当时想这个任务你不要整个一年?这样我这一年就可以好好的攻克我要做的事情。 没想到这家伙,1个月以后,写了一个完整的桌面环境,Dock、Alt Tab、窗口混合、窗口管理器、登录界面都搞好了,虽然细节差很多,但是原理都没问题,天啊,这学习速度太恐怖了吧? 剩下的故事你们都知道了,当年WebOS,改造浏览器内核引擎,用浏览器技术做桌面环境就是出至他一人之手。 基本上2年以后,他的技术水平已经完全超过我了,而且他不像我这种野路子程序员,科班出身,计算机基础比我好,到第3年,操作系统的研发架构师的工作就从我身上移交给他。 这家伙写代码非常快,极度的专注,科学家的风格,他写代码不用调试器,一般就靠目测,很多工程师搞了半个月没搞定的bug,让他过去,他也不编译不运行,调试器也不用,就过去看代码,看了10分钟以后,手指了一下显示器,说:这行代码有问题。就走了 无数次的神奇bug都是靠X先生目测修好了的,我们所有人都猜测他很少用调试器的原因是,他脑袋就是一个调试器,代码都在他脑袋里编译运行。 当年桌面环境后端之所以用golang就是这位X先生主推的,懒猫微服操作系统的后端也是用golang写的。 这家伙太猛了,平常就手指一下,团队就开始干活。他无聊,就给国产芯片实现了LuaJIT编译器,开发过JIT编译器的同学都知道,从零给一个芯片做这个活有多难,他,3个月就结束战斗了。 在搞LuaJIT的过程中,他还发现了gccgo有一个严重的bug,在多线程竞争条件下软件会随机崩溃,这次他用调试器了,跟踪了半个月,最后发现是gccgo运行时,golang编译器的多线程实现有bug,编译器会产生一个非常严重的线程竞争条件的问题,简单来说,编译器不改,所有golang生成的代码在多线程都会产生很多随机bug, 这家伙,分别给cgo和gcc这两个项目提交了修复补丁。 当时维护golang编译器的大佬Ian Lance Taylor确认bug,但是不知道怎么写测试用例去做CI,哈哈哈哈。 Google的HR还是非常专业的,一旦看到有人给Golang编译器提交补丁,招募邮件就过来了,给X先生发了一封邮件:Google全球的办公室你可以随便选 X先生也挺逗的,他回了一封邮件给HR:我看你很专业,我们团队是做操作系统的,要不你加入我们团队来给我们招募技术大牛? 好了,喜欢听我创业故事的朋友,欢迎点赞转发 喜欢我们团队的朋友,欢迎购买懒猫微服,私信我购买有优惠!