魏永明。 “自主”操作系统

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




作者:魏永明(飞漫软件CEO)

1 引言

近一个月是个多事之秋(2012年9月),IT 和互联网领域也不平静。阿里云操作系统受到谷歌的打压,华为任正非提出要开发自己的操作系统,中兴也宣布今年第四季度将发布自己的操作系统。一时间,微博上有关自主知识产权操作系统的讨论如火如荼。这样的讨论,就如同“水木清华”某些板面上的“月经贴”一样,每隔一段时间就要火一次。但大部分讨论其实讨论不到点子上,就如同“瞎子摸象”一般,大家基本上只是站在自己的立场,基于自己的经验在判断孰是孰非。这样的讨论效率低下,本人认为有必要写一篇科普性的文章,从政治、技术、工程、法律等几个方面给“自主”操作系统来一个比较清晰的定义,并尝试给出一些技术、工程等方面的建议。

1.1 作者的资格

为了说明本人有足够的资格来写这篇文章,给大家介绍一下本人的经历。本人码农出身,1993到1998年期间主要在微软平台上做程序开发,曾编写过 DOS、Win32、MFC 程序,期间涉及 C/C++ 语言,SQL 数据库、网站后台等。从 1998 年底开始专注于 Linux 和嵌入式系统。主要作品为大名鼎鼎的 MiniGUI。在创办飞漫软件的近十年时间里,作为企业创始人和研发负责人,组织研发团队持续开发 MiniGUI,开发了多个版本的嵌入式浏览器产品,也曾和美国公司合作,开发过类似 Android 这样的移动操作系统,还将 Android 运行在了 MeeGO 上(也就是国际上有点名气的 ACL,飞漫是主要开发者)。除了极其丰富的软件开发、管理经验之外,本人还编写过几本操作系统相关的书籍,不过比较老了,比较出名的是本人主持翻译的《Linux 设备驱动程序》第二版、第三版。有这些经历和相关经验做基础,我相信本文所述将是比较客观和完备的。希望本文对政策制定者、大型企业的决策者、自主操作系统的开发管理者,以及一般的码农们或多或少有一些帮助。

1.2 限制和定义

操作系统的类型很多,粗粗算起来,从小到大,有针对嵌入式系统的实时操作系统,比如 VxWorks、Nucleus 等;有现在大家熟知的针对移动终端的 Android、iOS、Windows Phone 等;有 Windows、Ubuntu Linux 等针对 PC 的操作系统;还有针对服务器的操作系统,比如 Windows NT 等。

从技术上讲,操作系统的概念可大可小。小的话,一个内核就可以称为一个操作系统,比如 Linux 内核、BSD 内核、Minix 内核等;大的话,则通常指的是整个软件平台,比如 Android、iOS、Windows Phone,有时还会将软件商店、开发社区等包含在内,从而外延到整个生态系统。

本文所指“操作系统”,以及大家近期讨论的操作系统,其实基本上被限制在移动终端领域当中,就是指能够和 Android、iOS、Windows Phone 等相提并论的操作系统,主要用于智能手机、平板电脑,而不是实时操作系统、操作系统内核或者服务器操作系统——准确讲,应该是指一个针对智能手机和/或平板电脑的软件平台以及对应的生态系统。不过,我们当前还是把它称为“操作系统(OS)”吧。

2 到底要不要“自主”操作系统

对此问题,不同的人有不同看法,但其实都很偏颇。码农,尤其是喜欢 Google 的码农,通常会说,Android 是完全开源的,没有必要重复造轮子;企业决策者或者政策制定者,则往往会认为必须有自主的操作系统。其实两者都有道理,但两者都没有看到事物的本质。

2.1 “自主”操作系统的不必要性

在谈“自主”操作系统的必要性之前,笔者先谈谈“自主”操作系统的不必要性。

在开源软件大行其道的今天,操作系统不再那么神秘,任何有足够财力的企业,依赖现有的开源软件,都可以比较容易地推出一个能够运行的操作系统。出于此观点,很多人认为有 Android 这样的开源操作系统,就没有必要再开发一个自己的操作系统了,到底谁拥有开源操作系统的知识产权,是无所谓的事情。

这个说法是有一定道理的。

从法律(指开源软件许可证)和技术上讲,就算 Google 不打算开源新的 Android 版本,不允许某些厂商使用 Android,我们一样可以在已经开源的 Android 之上继续发展自己的 Android 系统——只要遵循已经开源的 Android 的许可证约束即可,而 Android 系统主要使用的开源软件许可证有 GPL(Linux 内核)、LGPL(各种运行时函数库)、Apache(Dalvik 虚拟机及 Java 类库),其实是非常宽松的。

这个说法的不足之处在于,未考虑到可能的专利(软件相关的专利通常和实现无关,就是说,你重写一段代码,并不表示你可以规避对应的专利),以及是否有能力自行发展 Android 的问题。

前者非常要害。谷歌在开发 Android,尤其是 Dalvik 虚拟机以及 Java 类库的过程中,肯定积累了大量专利,而这些专利是凌驾于软件的著作权和许可证之上的。也就是说,如果你基于现有的 Android 派生了一个分支,要想将运行有这个 Android 派生版本的软件放到自己的手机里边销售,谷歌马上可以拿出专利大棒来限制你。当前,谷歌尚未拿出专利大棒来限制各种派生于 Android 的系统。拿阿里云 OS 和谷歌最近的争论当中来看,谷歌也只是说阿里云 OS 导致 Android 不兼容。但一旦有厂商真的使用了阿里云 OS,谷歌马上就会拿出专利大棒,这将毫无疑问。

至于有没有能力来自行发展 Android 的问题,在中国有大量码农基数的基础上,只要有源代码,就可以在短时间内组织团队自行发展 Android。

2.2 “自主”操作系统的必要性

强调需要“自主”操作系统的主要有两类人:政府中的政策制定者以及大型企业的决策者。

对政策制定者来讲,面向未来由中美两国主导的国际环境,作为两极世界中的中国,有没有自主的芯片、有没有自主的操作系统,关系到两个层面的东西,一个是国家安全,一个是面子。在这样的认识下,“核高基”的出现自然而然,其目的是支持国内企业发展核心电子器件、高端通用芯片及基础软件产品。我们暂且不谈核高基项目在实施过程中存在的制度性问题,它表明的国家是在战略上的一种布局,是一种国家意志,涉及到政治领域。

作为企业决策者,没有自主的操作系统,他将在很多方面受制于人。就拿阿里云和谷歌的争议事件来看,宏碁受到了来自谷歌的压力,然后就乖乖投降了。这里边有两个值得思考的地方:(1) 既然 Android 这么好,为什么宏碁还要和阿里 OS 合作?后者肯定没有 Android 成熟啊。(2) 为什么谷歌一施压,宏碁就放弃了和阿里 OS 的合作呢?显然,宏碁有动机选择另一个 OS 给自己的智能手机,可能的原因无外乎两种:阿里给钱了或者宏碁不希望被谷歌控制;另外,宏碁又那么容易地被谷歌搞定,说明谷歌能带给宏碁的利益远远大于阿里。

另外联想到微软向 Android 厂商收取专利许可费的事情,像宏碁这样的厂商,肯定也会被微软勒索,也包括中兴、华为等国际化的 Android 手机厂商,无一例外。对企业决策者来讲,这很难受——给别人做嫁衣啊,有时候还两头受气!所以,小的厂商需要投靠大树来庇护自己(大多数乖乖就范于谷歌或微软),大的厂商就要考虑是不是开发一个“自主”的操作系统来抗衡了。

这样的思路下,华为、中兴等大的智能手机厂商,开发“自主”操作系统的动机非常强。

像阿里这样的公司,开发OS,其目的是要复制 Google 的商业模式,加上阿里 OS 又没有撇清和 Android 的关系,受到 Google 的打压就在情理之中了。

2.3 “自主”应强调在“有效知识产权保护下的自己主导”

根据上面的分析,看来我们还真的需要有“自主”的操作系统。但是,“自主”到底是自主什么呢?

在功能手机和实时嵌入式系统领域,我们不是没有“自主”的操作系统,比如 MTK 或者展讯的操作系统,以及诸如早期的 Hopen、道系统等。在通用操作系统领域,国家也长期支持了诸如麒麟操作系统、红旗 Linux、中标 Linux、新华 Linux 等多家本土操作系统厂商。但市场表明,国家支持的这些操作系统都将消亡或者正在消亡。

本人认为,国家支持下进行“自主”操作系统的开发有合理之处,毕竟开发操作系统是一件比较困难的事情。但是,这里边有一个重要的误区和制度设计上的错误,就是只强调了“自有知识产权”,而没有强调“自己主导”。

在强调“自由知识产权”的情况下,政府对受资助企业的“自主”操作系统进行考核时,大部分情况下考核的是企业有没有获得对应的知识产权,就是软件的著作权和/或对应的专利,而并没有考核能否主导一个产业链。就如同 Google 那样可以控制这个产业链一样,受资助的企业,能不能做到让别人用了你的操作系统,就没法不继续用?在这样的思路下,政府需要在更长的周期内,考核受资助企业的市场份额是否有扩大,是否建立了良好的生态系统,让使用者、开发者欲罢不能,而不是简单的著作权证书和专利数量,或者是否达到了一个给定的出货量(因为出货量是可以作假的)。

也就是说,我们应该重新定义“自主”这两个字,从“自有知识产权”向“有效知识产权保护下的自己主导”转移。

为什么这里强调“有效知识产权”呢?这是因为,在开源软件成为趋势的情况下,构建一个自己的操作系统,可以使用很多已有的开源软件,我们没有必要所有代码都自己编写,而且越底层的代码就越没有必要自己重写一遍。这如同一只桃子,好吃的是果肉,而不是果核。像内核、基础库、常用运行时函数库等等,都不必自己重新开发。而且这么做几乎没有任何潜在的法律问题,当然,前提是你要告诉大家你用了哪些开源软件,而且你也尊重了这些开源软件的许可证。这样下来,一个操作系统的软件著作权已经不再重要,重要的是相关的专利、自己独有的创新以及围绕操作系统建立起来的生态系统。

3 “自主”操作系统应该具备的特征

那么,“自主”操作系统应该张什么样?要回答这个问题,我们先看看假的“自主”操作系统张什么样。所谓假的“自主”操作系统,就是那些号称“自主”操作系统,但其实:

  • 只是在已有的开源操作系统之上加了一层皮。比如各种基于 Android 的第三方 ROM,比如 MIUI、Flemy 等。这种操作系统仅仅在 UI/UE 上做了一些工作,就如同一个人换了一身衣服那样,实质上这个人不会因为换了一身衣服而从张三改叫成李四。
  • 修改了已有开源操作系统的内部代码,做了一些优化或者去掉了别人的一些东西,添加了一些自己的内容。比如阿里 OS 就属于这种,或者哪些号称深度定制的 Android 系统也属此类。这种做法如同整容,的确动了些刀子,甚至改变了性别,但人还是那人,改了名字或性别也还是那人。

这么类比下来,读者应该就知道了,真的“自主”操作系统,必须要有自己的灵魂,只有这样,不管换什么衣服、是不是经过了整容,那人还是那人;通俗一点讲,只有换了脑袋的才能是一个全新的个体。

那么在操作系统当中,什么东西是灵魂?这个问题回答起来蛮难的。我们先看看哪些东西肯定不属于灵魂:

  • 无法形成有效知识产权的软件组件,或者说,满世界有很多(开源的)实现的软件组件。比如内核、基础函数库、网络协议、图形库、浏览器引擎等等。这些东西可以看成是形成一个智能动物(比如“人”)的骨架或者躯体、甚至心脏,但远远算不上脑袋或者灵魂。这也是为什么笔者主张在“自主”操作系统中要尽量使用现有的成熟开源软件、而且不建议再行发明此类轮子的原因。

要知道哪些东西是灵魂,我们分析下 Google 在和阿里 OS 争论的过程中主要维护的是什么东西:

  • Google 的说法:阿里 OS 采用了 Android 的虚拟机和 Framework,但又不兼容 Android,破坏了 Android 的生态系统。这个说法可能还不是 Google 打压阿里 OS 的最关键原因,但起码说出了他们的担忧:阿里 OS 是想借 Android 打造自己的一个生态系统!另外,Google 对那些只换衣服的 Android 系统采取听之任之的态度,和他们一贯以来标榜的“只要兼容,我们欢迎”的态度一致——也就是说,这些系统没有从根本上动摇 Google 的生态系统。

所以,真正的“自主”操作系统的灵魂,就是那个背后的、无形的生态系统,一个看似开放但其实封闭的生态系统。一旦加入这个生态系统,你就很难下来——正所谓“上了贼船下不来”。

这就是我的回答:一个真正“自主”的操作系统,必须建立自己的生态系统,一个开放的,但在某种程度上又封闭的生态系统。

操作系统生态系统?这名词大家说了很多年了,一个生态系统具体应该是什么样子?笔者从如下几个方面解释一下:

  • 技术层面。操作系统必须通过某种技术将自己和其他的操作系统区隔开来。比如 Android 采用 Java 语言,但使用了不同于 Sun(现在是 Oracle) JDK 的 API;iOS 采用了 Object C 语言,为应用程序提供的接口和框架甚至有别于苹果自己的 Mac OS X;Windows Phone 采用了 C# 语言,在 .Net 框架下进行开发。为什么这些操作系统不使用 C/C++ 这类语言呢,C/C++ 尤其是 C 可是这些操作系统内核的编程语言啊!?这里有如下几个原因:
    1. 操作系统开发者不希望普通的应用程序通过使用比较低级的编程语言来控制系统或设备,毕竟操作系统是给智能手机、平板电脑这种消费类的电子设备使用的。
    2. 通过采用更加高级的语言来简化编程和开发人员的学习难度。
    3. 通过对看起来非常复杂的框架的持续演进,达到牵着开发者和厂商鼻子走的效果。
    4. 便于形成依附于某个操作系统的独有的开发者社区和文化。
  • 法律层面。操作系统必须通过创建自己的有效知识产权体系来保护自己。前面已经说过,越底层的软件组件越没有市场价值(码农们可能不喜欢听这话,但现实就是这样的)。通过建立全新的、包裹在底层操作系统之上的框架、编程接口、编程语言等基础设施,操作系统开发商才有可能建立起有别于他人的有效的知识产权保护体系。也就是说,如果连框架、编程语言、编程接口等都抄袭他人(就算是开源的、许可证允许的),那永远也无法形成一个可以有效保护自己的知识产权体系。
  • 市场层面。通过和上下游企业的合作,建立某种联盟或者许可、授权机制,让操作系统的用户(芯片厂商、手机厂商、平板厂商)能够从中获益。比如 Android 开放联盟,做的就是这个事情。
  • 开发者社区。一个好的操作系统之生态系统,要充分照顾开发者的利益,具体有如下几点:
    1. 要有好的开发工具,便于开发者学习、开发和调试软件。
    2. 要有好的文档或者教程,帮助开发者迅速掌握相关开发技巧。
    3. 最重要的,要能够让开发者赚到钱。

看到这里,相信大家都会意识到:这也太难了吧!的确,这非常难,这也是为什么 Moblin、MeeGo、Bada、WebOS 等操作系统相继失败,而到目前,只有 iOS、Android、Windows Phone 这三种操作系统的原因。

但是,世上无难事只怕有心人。接下来我告诉你如何搭建一个真正的“自主”操作系统。

(14个打分, 平均:4.64 / 5)

雁过留声

“魏永明。 “自主”操作系统”有45个回复

  1. oj 于 2012-09-19 4:36 上午

    沙发?

  2. oj 于 2012-09-19 4:55 上午

    没看完,不过题目给人了一种感觉:为了操作系统而操作系统。
    我的一点愚见,当别人做出一个东西来,我们从心底觉着“哇,这东西真是好啊”,然后就在心里想着,改天自己也要做一个出来。这种思维模式只会被别人牵着鼻子走。
    我觉得可以换个方向来考虑。
    首先,想一下我们需要的究竟是什么,我们作为单个个体需要的是什么,我们作为一个群体需要的又是什么?我们只有做我们真正想要的东西,那么这种东西才会有生命力。
    其次,这种需求要怎么才能满足。通过提出新的方法,通过去不断实践,不断解决过程中遇到的问题和挑战。
    最后,等到我们满足了我们的需求,解决了我们遇到的问题和挑战,那么我们的创新方法和思路必然是有极大的价值的。这种方法或者思路有可能不只表现为一个OS系统,一种架构基础,也可能是一种IT潮流,一种生活方式。

  3. 过客 于 2012-09-19 5:57 上午

    任正非的讲话通篇都在强调“不要自主创新,自主就会封闭”,为了表达自己的观点把别人的观点强拉进来,太牵强。

  4. 新手0 于 2012-09-19 6:47 上午

    原来是LDD的译者啊,久仰!

    单位有N多同事为楼主支付过版权税,呵呵

    期待下文

  5. aaa 于 2012-09-19 6:53 上午

    呵呵,LDD,n多人买了基本没看。

  6. 理客 于 2012-09-19 7:10 上午

    作为一般的商业公司,做OS/CPU是傻瓜;
    作为业界leader尤其是大国,不做基础的OS/CPU是傻瓜;
    做不做本身没有对错,对错在谁做。
    任教主的思路其实很清楚。

  7. hh 于 2012-09-19 7:37 上午

    讲得真好,学习了

  8. aaa 于 2012-09-19 7:45 上午

    研发出来的OS,对国家基础学科人才储备要求不说,最重要的恐怕得占有一定市场,且能不断自我更新保持市场地位才能存活,这个市场地位靠行政或国内公司联盟硬推估计挺不了多长时间,只能正面和Unix-like/win/…之desk/mob/svr/…竞争了。否则也就只能用在任总说的:【关键时刻】。

  9. 哈哈 于 2012-09-19 8:11 上午

    神龙金康的广告都坐到弯曲上了. 信首席,买金康,得永生!

  10. alrn 于 2012-09-19 8:14 上午

    动嘴皮子风险最低!有本事默默无闻的做点东西就好了!

  11. TX 于 2012-09-19 9:36 上午

    应该尊重别人表达自己想法的权力。这也是脱离青涩和具备起码合作能力的表现。

  12. TekTea 于 2012-09-19 9:45 上午

    基于商业利益的自主才是可持续发展的,如果仅仅是某研究所研发的,那是在骗经费!!!

  13. lcn 于 2012-09-19 11:03 上午

    2.1节“‘自主’操作系统的不必要性”里面讨论专利的作用根本就没绕出来嘛。既然人家是以专利的形式来赚钱,那你写个别的软件实现同样是很难绕开的——除非你刻意避开专利。问题是,专利这个东西,虽然不排除有一些灌水的、垃圾的,基本上都还是提高计算实现效率、促进生产力的,刻意绕开的时候,或者带来使用上的不自然,或者是造成效率上的降低。阿里等真要有本事,就自己搞专利研究来真正为效率提高做贡献好了。

  14. 知迷不悟 于 2012-09-19 5:07 下午

    然!
    这位飞漫MiniGUI教主和LDD精神传播者完全有资格来写这篇文章!只是,坐在国家发改委和工信部、科技部的一些人,坐在高高的资本运作公司办公室里的那些人,他们此时是在想,而且是看得懂这些么?这大概才是我们的悲哀啊。

  15. 大头 于 2012-09-19 5:47 下午

    1、没提UNIX;
    2、感觉任正非没想搞完全自主的操作系统;

  16. jixu 于 2012-09-19 5:59 下午

    看来开发东西相对简单,以开发出来的东西建立一个可持续发展的生态环境,这个才是困难的。

    在公司里,普通的码农很难做到高层,但是做推广销售的却能够比较快地做到高层,有关联

  17. 沙加 于 2012-09-19 5:59 下午

    我觉得2楼没看懂这篇文章

  18. tomqq 于 2012-09-19 8:26 下午

    写的非常有道理,来源于实战,这是中国目前关于OS最靠谱的一篇文章了

  19. playmud 于 2012-09-19 8:51 下午

    从作者开发minigui的立场来讲不用看下文也知道作者的态度了,干嘛非举着自主知识产权的大旗。明明是圈地运动非扯东扯西,跟钱有关,跟技术基本就不贴边。

  20. cracked 于 2012-09-20 12:46 上午

    任总为什么要开发自己的芯片,任总讲的很清楚。OS也应该类似吧。

  21. 妖怪 于 2012-09-20 1:38 上午

    魏总说的很靠谱。搞魏总所说的OS是不可能由一两家企业完成的,必然是由一个核心企业带动产业联盟完成。

    PS:BS回帖不看帖的

  22. iCAVIUM 于 2012-09-20 2:10 上午

    CAVIUM之家,多核技术研讨群,群号:141470935,多核开发技术讨论,欢迎大牛加入。

  23. aaa 于 2012-09-20 2:17 上午

    任总说自己的芯片和OS都要做好备胎

  24. 几楼楼长 于 2012-09-20 6:15 上午

    完全某有必要啊。
    用就是了。

  25. zcgen 于 2012-09-20 6:40 上午

    长见识了~

  26. anonym 于 2012-09-20 8:12 上午

    “主要作品为大名鼎鼎的 MiniGUI”。
    MiniGUI这东西是他们改来的。

    本文讨论的操作系统定义通篇都不一致。大致的想法就是改改人家的东西,然后在上面推广自己的应用和平台而已。

    一个连nasm都没抠过的人还懂操作系统的灵魂??吹牛也别太过了吧。

  27. 路过 于 2012-09-20 4:37 下午

    2楼是够愚的,没看完就敢喷

  28. 知迷不悟 于 2012-09-20 5:18 下午

    22楼的评论出发点不妥。

    建议22楼把MiniGUI源代码中是改动部分大致说说再发表意见吧,再说,讲别人“NASM有没有抠过”也得有证据吧?

    回归正题,WJM文里没有只论“自主OS”,而是要创建一个“自主OS生态系统”的观点,我认为是正确的,也是非常重要的。至于这个生态系统如何创建,以及如何能够得到发展,尚无表述。

    ——————-
    需要说明的是,我本人不是WJM的客户,也不曾有机会使用他公司的产品,我只是在一个偶然的时间里对MiniGUI早期版本做过一点了解,根据我对源程序的阅读理解,我可以说,早期版本肯定不是别人项目改出来的。之后再发展出来的东西,象浏览器之类的,我没有发言权。

  29. kevint 于 2012-09-20 8:22 下午

    这是比较狭义的操作系统吧
    国家投资应该在超算的系统上面,尤其是调度器,资源管理等
    比如输光5000A装的windows server,感觉就是个大笑话

    至于民用系统,应该切断一切国家投资。在一个生态环境里,存活下载的绝对不是最强的,而是最和谐的。而且应该牢记一点,这个世界仍旧是在白人控制下的。虽然不好听,但是目前,不要叫板

  30. 山东李 于 2012-09-20 9:05 下午

    此类文章作为自己公司决策会议上说服其他人的材料还可以。拿出来分享一下也凑合。只是大家不必当真罢了。
    只有做出来的东西才有资格被别人评价。

  31. 一帘幽梦 于 2012-09-21 3:23 上午

    视角不错,继续深入或许能形成共识,推动真正的自主技术进步。

  32. 素里太守 于 2012-09-21 3:44 下午

    俺感觉这是一篇逻辑混乱,不知所云的文章,起码在论据和部分论点上。

    1.生态系统(ecosystem)是一个被IT界滥用的词。生态系统的建立不难,难的是建立一个大规模的生态系统.如果不片面追求大规模(比如几亿,如几十亿的用户),生态系统的建立不算特别难(相对而言)。自然界如此,IT界同样如此。

    2.“从法律(指开源软件许可证)和技术上讲,就算 Google 不打算开源新的 Android 版本,不允许某些厂商使用 Android,我们一样可以在已经开源的 Android ……。也就是说,如果你基于现有的 Android 派生了一个分支,要想将运行有这个 Android 派生版本的软件放到自己的手机里边销售,谷歌马上可以拿出专利大棒来限制你。……但一旦有厂商真的使用了阿里云 OS,谷歌马上就会拿出专利大棒,这将毫无疑问。”

    “为什么这里强调“有效知识产权”呢?……,而且这么做几乎没有任何潜在的法律问题,当然,前提是你要告诉大家你用了哪些开源软件,而且你也尊重了这些开源软件的许可证……”

    一方面说Google可以拿出专利大棒来限制各种派生的Android,而另一方面说“使用开源软件几乎没有任何潜在的法律问题”,这TND不是坑爹吗?难不成Google用的是养肥猪模式?猪们,好好吃,食物免费。哪个先吃肥,老子就宰哪个!这种事情在大宋发生过。60年前某党说斗地主分田地当主人打老蒋,老蒋被打跑后被合作化,被人民公社,现在被土地转让,被拆迁。

    如果Google这样做,Google就会被开源社会鄙视,Android生态系统一定大难来临;如果startup成天想的是使用开源代码被专利诉讼,那基本上是创新的丧钟;如果码农写代码时成天想的是使用开源代码被专利诉讼的公司开除,那基本上是就是在写浆糊代码。

    3.宏碁为什么轻易地被谷歌搞定?作者简单地使用利益来解释显然是隔靴搔痒。没错,Android是开源软件,那是对普罗大众,对大大小小所有的公司。对宏碁这样的公司,拿到Android源码的时间(比某个版本正式开源早多了)和谷歌在某种程度上的技术支持才是关键。否则,产品的推出速度将落后主要竞争对手N个月,这N个月是决定产品生死的关键!同类产品尤为如此。

  33. 理客 于 2012-09-21 6:49 下午

    好像是这样:
    如果在版权或者产权license明确声明参与开源或者标准的个体意味着放弃其知识产权如专利,那么其专利权在这个开源代码或标准中就失去保护,但是如果一个开源系统或者标准用了非参与者的专利,那么你不能强行剥夺别人的专利权,这就是android虽然开源,但仍然需要给某些人付专利费的原因。如果不想掏腰包,那么可以不使用这些专利范围内的方法,或者使用了,但不以商业盈利为目的,虽然理论上可能还是侵权,但实际不一定会付出多少代价。为什么会有这种情况发生,因为对为达到同一要求的系统,有些方法是很难绕过去的,或者即使有绕过去的方法,但不适合商用,所以此类专利被称为基本专利或者核心专利,这些专利是最优价值的专利主要部分。现在绕过基本专利越来越难,因为专利申请越来越专业,也就是专利机构会通过逻辑描述,尽可能覆盖所有可能的范围,要尽可能减少被人钻空子的漏洞,所以如果你看一个专利的技术实现实例,常不是很难看懂,但如果你直接看其专利申请书,可能会奇快的发现一些描述很绕口,难于理解,此时,一般都是为了通过更好的逻辑描述去覆盖更大的可能范围。
    对于标准,即使是参与者,但是在标准公布的方法前已经申请了专利,那么即使标准发布了,专利仍然有效,这叫专利预埋,所以在网络设备里,虽然大家遵循相同的标准,但还是有专利费用产生,就是这个原因。
    不是很清楚开源代码中GPL等是否也有类似专利预埋的情况,但如论如何,非参与者的专利是一定要被保护的,google也是商人,对于商人,永远都不要把它想得太善良太简单。

  34. Qingye Jiang (John) 于 2012-09-22 6:04 上午

    魏老师文中所述“一旦有厂商真的使用了阿里云 OS,谷歌马上就会拿出专利大棒”这个观点我不能认同。

    Android的主要授权协议是Apache 2.0。这个协议的特点之一就是缺省地授予遵守该授权协议者使用相关专利的权利。

    参考资料:
    http://www.oss-watch.ac.uk/resources/apache2.xml

  35. promise 于 2012-09-23 3:04 上午

    好文!不管是OS还是数据库还是其他的基础软件,生态链是要建立的,否则都是一盘散沙,成不了气候。但是要做的话怎么推动?没有项目资金支持,纯靠研究?米过还能通过与高校等研究机构合作(真正的产学研),国内咋办?很期待下文!!!

  36. oj 于 2012-09-23 7:52 下午

    看完了。首先向作者和大家道歉一下,没看完就发表评论,是对作者的不尊重。
    首先,本文的目的是“一篇科普性的文章,从政治、技术、工程、法律等几个方面给“自主”操作系统来一个比较清晰的定义,并尝试给出一些技术、工程等方面的建议”。但接下来,作者把 “自主”操作系统限制在了智能手机和平板等一类消费电子产品的应用上了。我认为这是很偏狭的。不能因为现在这类产品很火就把原本很普适的概念给限定在一个很小的范围内。毕竟还是有很多其他的操作系统曾经或者现在很风光的。但从另一个角度来看,用来作为案例分析,还是有意义的。
    接下来的讨论引出了生态环境概念。总结就是好用好推广不易被偷。不过有一点不同意“操作系统开发者不希望普通的应用程序通过使用比较低级的编程语言来控制系统或设备,毕竟操作系统是给智能手机、平板电脑这种消费类的电子设备使用的。”不是操作系统开发者不希望,而是应用需求决定了用哪种编程语言(比如Android的NDK就是一个很好的例子)。另一方面,这句话本身就不对。实际上,是操作系统已经帮助我们控制系统和设备了(这正是操作系统的主要任务之一),我们应用程序能做的只是使用操作系统提供的接口而已,跟我们用什么语言无关。
    最后,可能跟我一开始刚看到题目对文章期望过高有关,有点失望:这篇文章确实只是一篇科普性闲聊文章。某些动不动就说别人喷的人,可能被前面的背景介绍和作者资历给楞住了吧。

  37. shuyong 于 2012-09-23 7:56 下午

    如32楼所言,建立一个生态系统不难,难的是建立一个大规模的生态系统。很不幸,消费类电子就是这样的一个超大型系统,还有赢者通杀的特点。看看MTK/展讯每个月的出货量都是以KK为计量单位,就可以知道这个领域里面是怎样的一个烈火烹油,竞争残酷。

    玩生态系统,没有钱是万万不行的。我们可以一时在某个地方有个技术亮点。但有钱的大家伙可以用很多手段渡过不利时期,然后以资金投入研发后来居上。所以在3~5年内,在消费类电子领域建立新的生态系统,基本不可能。

    一个可行的路子是用当年的老招式:农村包围城市。我们可以进入非消费类领域,比如工控。这些领域需求各异,单个项目小,总体规模大。可以容得下很多小家伙,进不来大家伙。但是,像Android这样的,也有强烈的意愿进入有可能大规模铺开的领域,比如物联网。这时候,虽然大家都不喜欢国家队,但忽悠推动建立政策壁垒,还得靠他们。

    阿里云的技术选择没有问题。有问题的是商业上,炒作手法上。对外过早暴露火力而没有准备,对内报考核高基而不脸红。被人砍一刀是迟早的。至于如何推动生态系统的建立,实干的还是草根了。那些国家队,说他们是猪一样的队友,这有些过分。但对他们能不能做事, 则一点信心都没有。

  38. 耳朵 于 2012-09-24 12:57 下午

    阿里好样的。逼的google再次作恶。

  39. hongrui 于 2012-09-24 10:26 下午

    开源不一定免费使用,也不是擅自修改。openjdk是开源的,如果你擅自发布jdk,就会被oracle告上法庭

  40. rao 于 2012-09-27 2:44 上午

    总体挺清晰的,但有一些问题还是没太明白,特别是Google、微软拿着专利打压别人与开源的关系,我个人认为是两个问题,开源是开源,专利是专利,专利一般与开源系统的实现没有太大关系,更多的是还是硬件或某些非开源的软件算法或设计

  41. TBsoft 于 2012-09-27 11:39 上午

    作为早年开发过较完整DOS GUI系统和嵌入式GUI系统的老码农,赞成作者的观点。

    码农出身的创业者,往往对系统底层的实现关注非常多,炫耀自己在底层和基础实现上使用了何种何种新技术,具有如何如何好的性能,却往往忽略了如何为自己的系统创造一个完整的生态系统,至于商业环境就更谈不上了。在公司中,很多对底层技术研究很深的码农却很难上升到高层,码农和测试以及市场人员往往还会发生激烈的冲突,都与码农缺乏软件生态系统和商业环境的整体观有很大的关系。“你做出来的东西不能只有你自己觉得好用,要别人觉得好用并愿意用!”这句话说起来容易做起来难。

    不仅仅是操作系统,可用于支持用户二次开发的平台,例如GUI系统等,都存在生态系统的概念。只有生态系统形成,这种平台才有被用户持续应用的价值。

    在早年Linux时代(约2000年前后),此时Linux GUI(例如KDE、Gnome等)的华丽程度已经不亚于Windows,但其在桌面市场的占有率几乎是0,人们往往将这种现象的原因归咎于没有足够的Linux桌面应用软件支持,但究其深层原因,就是当时的Linux没有形成应用程序开发支持—实际应用程序—实用桌面应用的完整生态系统,在2002年,基于虚拟机的下一代应用程序开发,例如Java、.NET/C#等的广泛应用已成定局的情况下,Linux的应用程序开发还坚守着C/C++。尽管老码农们对Java、C#等编程语言不服气,认为在底层开发上远远不能代替C/C++,但是基于虚拟机的软件开发克服了本机代码开发中的跨平台性、内存泄露等问题,对于大型软件开发的质量保证是非常重要的。此时坚守C/C++的Linux桌面应用程序开发还存在着开发库不成熟、IDE落后、稳定性差等一系列严重问题,可以说在桌面应用程序开发上,当时Linux的生态系统难以望Windows项背,Linux桌面应用程序的全面溃败就已成定局,这一结果甚至延续到了今天。直到Java,包括Eclipse等IDE成熟应用到Linux上,在Web服务器应用程序开发上,Linux才夺回一些占有率。

    今天Android的成功,也验证了完整生态系统建立的极端重要性,Android的成熟,正是以完整生态系统成熟为标志的。Android能吸引大量Java程序员的一个重要原因就是能够在这个生态系统中,使用熟悉的现有Java编程语言和开发工具,例如Eclipse IDE,而且开发难度与传统Java应用程序相仿,不需要硬件知识。

    自主操作系统,以及自主支持用户二次开发平台(库),构建一个从应用程序开发支持到最终应用程序发布的完整生态系统,远远比底层代码更加重要。我们没必要从轮子做起,但有必要让做出来的车傻瓜都能开,而且大家都愿意开,愿意买。

  42. Peter Cheung 于 2012-12-09 8:36 下午

    “越底层的代码就越没有必要自己重写一遍” 本人很各對這包說話, 中國現在就是寫不出最底層的代碼, 如果最低層的代碼不重要, 那麼中國就是已經成功了, 還談什麼操作系統開發

  43. 乐看小小说 于 2012-12-10 7:23 下午

    那些国家队,说他们是猪一样的队友,这有些过分。但对他们能不能做事, 则一点信心都没有。

    –> 在某所谓国家级的实验室里混了三年的人含泪飘过。

  44. matrix 于 2012-12-10 10:39 下午

    中国人绝对有能力写出底层代码,主要是我们这个大的技术环境,导致我们主要工作在应用层面,以及主要从事一些follow的工作,缺少创新。一切的根源,就不说了…..各人明白就好。

  45. lurker0 于 2012-12-15 5:10 下午

    接下来的那篇在哪里
    >>>接下来我告诉你如何搭建一个真正的“自主”操作系统。