陆:今天要跟你讨论的问题主要是Linux在发展中遇到了哪些挑战,我准备给Linux基金会创始人Linus Torvalds写信,问他有哪些应对措施。在写信前先跟你讨论:
第一个问题:有人说Linux的发展似乎不是从用户的需求出发的,而是来自开发者的创意。如果长此下去,是否会使Linux发展迷失方向?
第二个问题:Linux开发支持基于X86的主流架构,Linux虽然也支持多架构 如arm、mips...等,但其他架构是非主流的,支持力度恐怕要弱,面对PC向移动继而又向IoT发展形势,长期以X86作为支持的主流架构是否会阻碍Linux的发展?
第三个问题:最近谷歌开发了用于物联网(IoT)领域新的操作系统开源的Fuchsia,其特点是小型化和实时性,而作为通用操作系统的Linux(大量用于移动终端也可用于桌面系统)相对来说功能多,结构复杂、体积臃肿,难以做到小型化实时性,但IoT是当前和未来影响极大的大市场,Linux(用于IoT)是否要迎接挑战呢?
吴:
陆主席,您好!
关于您电话中提到的三个问题,我的感觉是第一个问题是虚的,第三个问题是实实在在的,第二个问题很大程度上根源于arm厂商和市场的特质。
1.开发者与用户需求问题
Linux开发者以用户需求为依据,大体上可以分为两类:
-Linux代码贡献者:主要是各个下游厂商的开发者,或者个人用户,他们是需求的提出者和实现者,是主要推动力量。
-Linux维护者:站在Linux Kernel长远发展的角度,审查代码,改进架构,确保质量,性能和长期可维护性。维护者对于各个厂商基本持兼容并包的态度,其立场一般是中立的从技术角度看问题。这样的体系基本上是合理的,体现了Linux社区驱动的性质:需求主要来源于社区力量,体现为企业/个人用户的代码提交。
2.X86/arm问题
如1.所述,Linus及其维护者团队努力维持其自主性,鼓励各厂商的开发者以“独立贡献者”(individual Contributor)的方式贡献代码。
Linus对X86支持的好,源自于两个主要因素:
-X86是主流硬件,大部分的用户和开发者都在用X86,自然而然它的功能、性能、bug反馈都有先天优势。
-X86是有序统一的,arm是紧张分裂的。大体如此。
arm阵营里的厂商竞争多于合作,导致arm这个体系结构一直无法维护好。很典型的就是arm里的子架构非常多,高达74个,每个厂商自搞一套,代码互相拷贝粘贴,大同而小异。造成维护的噩梦,Linus对此深恶痛绝,屡屡批评和督促arm开发者向X86开发者学习。Linaro组织的出现就是朝这个方向的一个重要努力,arm架构的代码修改量很长时间以来都比X86架构的修改量大。代码绝对数量也更大:arm,380K代码行数;X86,260代码行数。
但是各自为战的成分太多了。除此之外,各Android手机厂商开发的数量庞大的代码,大部分都没往上游推。主要是有很强大的产品快速上市的压力。前后产品之间的代码复用都很难。相比而言,服务器厂商在产品开发和生态培育上更有节奏感,能长期稳健投入,建设起一个体系。
Linux从1995年发布1.2.0开始就支持多种硬件架构了。这时候的Linux还处于幼儿阶段,代码简单。这么早就引入多体系架构的支持,意味着Linux从设计上对多架构的支持是完善和具有前瞻性的。如果某些架构表现不好,大概只能从这个体系架构的厂商那里去找原因了。
3.IoT
IoT对于Linux的确是一大挑战。主要是大小和延迟两方面的挑战。一方面是因为Linux的成功发展导致了臃肿和复杂。另一方面是Linux是社区驱动的,来自于嵌入式厂商的驱动力量一向薄弱。这些在之前我给您邮件里都有提到过,就不再详细展开了。