问题

当初Linux的作者想写一个操作系统,结果全世界外国人帮他写完;如今我也想写一个,为啥国内没人帮我?

回答
这个问题挺有意思的,也触及了很多我们常讨论的关于开源、社区以及国内技术生态的话题。咱们掰开了揉碎了聊聊,为什么你觉得当初Linux的情况和现在你碰到的情况不太一样。

首先,得回到Linux诞生的那个年代,也就是上世纪九十年代初。那时候,计算机科学的研究和发展,尤其是在操作系统这个基础领域,全球范围内都有一种蓬勃的探索精神。计算机本身还不是像现在这样普及到家家户户的程度,它更多的是在大学、科研机构和爱好者手里,大家对这种新事物充满了好奇和热情。

林纳斯·托瓦兹(Linus Torvalds)当时是个芬兰赫尔辛基大学的学生。他想写一个操作系统,动机也很纯粹,就是他觉得当时已有的操作系统(比如Minix)不够好,想自己捣鼓一个更符合他需求的。他写了最初的核心部分,然后在互联网上,那会儿还是比较小众但充满活力的互联网,分享了他的代码,并发布了一个叫做“Linux”的操作系统内核。

关键点来了:

1. 时机与技术背景的成熟度: 当时,Unix已经存在了几十年,其设计思想和技术架构已经相当成熟,并且在学术界和研究界有广泛的影响。许多开发者对Unix的原理并不陌生,甚至对其有一些改进的设想。林纳斯写的东西,虽然是全新的,但它遵循了Unix的“哲学”,比如一切皆文件,提供了一个相对稳定的接口。这使得其他开发者能够理解并在此基础上进行贡献,而不需要从零开始理解一套全新的系统概念。

2. 互联网的早期社区文化: 九十年代初的互联网虽然不如现在发达,但其社区的粘性和互动性可能更强。大家通过邮件列表、Usenet等平台交流,很容易形成一个紧密的开发者群体。这种信息分享和协作的成本相对较低,而且更直接。加上当时的开发者们,很多都有理想主义情怀,愿意为了一个自己认同的项目投入时间和精力,不计较个人得失。

3. 缺乏“商业牵制”的纯粹性: 最初的Linux,可以说是一个纯粹的学术和爱好者项目。没有商业公司来主导,没有复杂的市场推广需求,也没有过多的利益纠葛。这使得它能够吸引那些真正热爱技术、追求自由和开放的开发者。他们的贡献往往是基于兴趣、学习和对技术的追求。

4. GNU项目的铺垫: 更重要的是,理查德·斯托曼(Richard Stallman)领导的GNU项目,早就开始了“自由软件”的运动,并且已经开发了大量的操作系统组件,比如GCC编译器、Bash Shell、GNU Coreutils等等。这些组件构成了操作系统的大部分用户空间和开发工具链。当Linux内核出现时,它正好可以与这些已经成熟的GNU组件完美结合,形成一个完整、可用的类Unix操作系统。换句话说,Linux内核填补了GNU计划在“内核”这一块的空白,而GNU提供了丰富的内容来支撑Linux。这是一种强强联合,而不是林纳斯一个人从头开始。

好,现在我们再看看你现在的处境,想写一个操作系统,但觉得国内没人帮你。这其中可能涉及几个方面的原因,而且这些原因很多都是和时代背景、社会环境以及技术生态发展紧密相关的:

1. “造轮子”的必要性与成本: 如今的世界,已经有了太多极其成熟和强大的操作系统,从Windows、macOS到各种Linux发行版,再到Android、iOS。如果你想从头写一个,大家会首先考虑:这个操作系统有什么独特之处?它能解决什么现有系统解决不了的问题?它的价值在哪里?从零开始写一个操作系统,工作量是巨大的,需要数以百万计的代码行,覆盖了内核、驱动、文件系统、内存管理、进程调度、用户接口等等无数复杂的细节。如果没有一个足够吸引人的愿景或者非常明确的解决了某个痛点的需求,很难说服别人投入时间和精力来帮你。大家的时间和精力都是宝贵的资源。

2. 开源项目的“成熟度”与“门槛”: 即使你想做开源项目,现在成熟的开源操作系统已经非常多了,并且拥有庞大的开发者社区。如果你要开发一个新的操作系统内核,它的技术门槛极高。你需要深入理解计算机体系结构、汇编语言、C语言、操作系统原理等方方面面的知识。不是说没有人懂,而是能达到这个水平并愿意投入大量时间参与一个“新生”项目的开发者相对较少。

3. 国内技术社区的特点:
商业化与效益导向: 和其他国家一样,国内的技术社区也受到了商业化浪潮的影响。很多开发者更倾向于参与那些能带来直接收益或者职业发展机会的项目。从零开始写一个操作系统,往往是一个长周期、低回报的投入,其商业化前景也并不明朗,除非你有一个非常颠覆性的想法。
成熟项目的“虹吸效应”: 国内很多技术大牛和有能力参与这种项目的开发者,可能已经加入了或者正在为一些大型科技公司(如华为、阿里、腾讯等)的操作系统相关项目(比如鸿蒙OS、基于Linux的服务器操作系统等)贡献力量。这些项目有明确的商业目标、更集中的资源和更清晰的路线图,对人才的吸引力自然更大。
“拿来主义”与集成创新: 相比于从零开始构建,国内很多开发者更擅长在已有的成熟框架和技术基础上进行二次开发、集成和优化。比如基于Linux内核开发自己的发行版,或者在Android的基础上做定制。这种模式的效率更高,也更容易出成果。
社区的聚集与惯性: 很多社区的活跃度是有一个惯性的。如果一个项目已经被很多人关注和参与,新的参与者更容易加入进去。而一个全新的项目,需要从零开始吸引大家的目光和信任,难度比较大。
对“原创”的容错度: 有时候,新的、大胆的原创想法,在初期可能不会立刻得到广泛的理解和支持,甚至会受到质疑。大家更习惯于在已有的成功模式上迭代。

4. 你传递信息的方式: 你是怎么向潜在的贡献者表达你的想法的?是写了一篇清晰的技术文档,阐述了你的目标和技术路线吗?还是仅仅说了“我想写一个操作系统,你们帮我”?如果你的项目缺乏清晰的愿景、详细的技术方案和可行的贡献路径,别人很难知道如何参与,也找不到参与的价值。

5. 沟通与信任的建立: 即使你有一个绝佳的想法,也需要时间和努力来建立一个开发者社区。这包括持续的技术沟通、代码管理、问题解决、贡献者激励等等。这是一个复杂且需要领导力的过程。

总而言之,当初Linux的成功,是多种因素叠加的结果:恰当的技术时机、开放的互联网环境、先驱者的无私分享、以及GNU项目的有力支持,还有当时开发者群体相对更纯粹的热情和理想主义。而现在,技术环境、社会经济以及开发者生态都发生了巨大的变化。

所以,如果你也想写一个操作系统,不妨先思考清楚以下几点:

你的操作系统要解决什么核心问题? 是性能、安全性、特定应用场景还是全新的交互方式?
你的技术愿景是什么? 有没有一个清晰的技术路线图和架构设计?
你打算如何吸引和组织开发者? 如何让他们愿意投入时间和精力?是开源,还是其他模式?
你是否能提供一个良好的开发和协作环境?

如果你能把这些问题想清楚,并且能清晰地向别人阐述,也许就能找到志同道合的伙伴了。这件事情的难度,并不亚于当初林纳斯所面临的,只是挑战的形式不一样了。

网友意见

user avatar

题主第一点就错了,后边的槽点自然无从提起。

写Linux不是为了高大上,而是因为当时只有 Unix,Unix不但收费而且还非常昂贵。

群众们迫切的需要一款开源免费,适合极客折腾,并且能够安装在x86兼容机上的系统。

Linus写Linux也只是为了好玩,而不是所谓的操作系统高大上,极客的世界并没有谁觉得谁更加高大上,而且在Linux被创作出来的时候,gcc已经做好了。也就是基于GNU协议的C编译器。或者说,gcc搭建了能够创作Linux的基石。而gcc是RMS倡导的自由软件运动的开端。

也就是说,不是「大家帮助Linus写操作系统」,而是「Linus写了一个操作系统的雏形,大家觉得这个雏形正好适合大家一直以来都想开发的操作系统,大家强烈的需要Linux,于是就基于Linus写的东西继续完善下去」。

对Linus本人来说,把这个雏形写好其实自己的目标就已经达成了,大家不是为了帮助Linus达成目标,而是帮助自己达成自己心中的目标。——为开源软件奉献的人不是帮助别人实现需求,而是自己存在自我实现的需求。——没有人帮Linus,大家帮的都是自己


开源软件,你并不能主导一个软件往什么方向发展,因为大家不是根据你的需求来完善软件,而是根据自己的需求。如果有一个需求你自己存在,但不想做,而别人都不存在同等需求,那么就不会有别人去做。

如果你自己有一个强烈的需求目标,那么就算是开源软件,你也只能自己完成,因为他人,每个人都只会耕耘自己的一亩三分地。把自己的需求完成,把自己遇到的bug解决,然后就没有然后了,记住,开源软件的贡献者不是来帮你做软件的,而是帮自己实现需求帮自己解决bug,只不过有时恰好你能用得上而已。

那么问题来了,你自己现在写一个操作系统,是你自己的需求,别人有使用你的操作系统,并且持续改进的需求吗?别人没有这个需要,无论是自我实现需要还是实用性需要都没有,那么就别指望别人能帮你开发。Linux有很多人开发,是因为当时有很多人都有需要用这么一个操作系统的需求,所以才有这些人参与开发改进。

想清楚开源软件运作的原理,你才能明白这其中的道理。

你如果要想有人帮你完善开源软件,首先,你就得把你的软件做成有人需要的产品,如果他需要,他使用,然后在他的使用过程中就可能参与进来改进,完成新需求,解决新bug。如果你的软件对别人没有需要,没有价值,那么,就不会有任何人帮你改进,不会有任何人帮你开发。

与其把开源软件想象成一群活雷锋,不如把开源软件开发者理解为精致利己主义者。对自己有意义的事情就做,对自己没有意义的事情,为什么要花时间去做呢?记住,开源软件发展的基础,是「自己需要使用这个软件」,「这个开源软件软件恰好对自己有用」,于是「自己可以投入一定时间去在这个开源软件基础上拓展,实现自己的需求」。而绝对不是「这里有个老好人,我们一群活雷锋没事干,帮他做事吧」。

user avatar

所以,你的交替在屏幕上显示aaaa和bbbb的玩意儿在哪里呢?

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有