API 与专利,开源与创新
不久前,Oracle 与 Google 的 10 年专利案判决落地,法院判定操作系统的 API 接口不构成专利,您认为这个判决结果会带来什么影响?
蒋涛:近几年,Oracle 因专利问题已被很多人视为“bad company”。Oracle 的专利制度已经落后时代。过去信息不发达,专利是保护创新的一种方式,但如今却成为了大公司“讹诈”小公司的重要武器,变成大公司之间的诉讼游戏。
2009 年,微软起诉 Linux 侵犯了其操作系统处理文件存储的专利,一帮支持 Linux 的公司就把自家的部分专利捐给开源组织 OIN(Open Innovation Network),扬言也要起诉微软,微软才作罢。
商业公司过度利用专利保护是反时代的,开源才是真正的潮流,未来开源会吞噬软件,而 UNIX 就是开源的鼻祖。
因为接口问题,Oracle 和 Google 打了快 10 年的官司,拖了很长时间。法官在判决书上写道,设立专利是为了让人类社会的创新有更好的发展。把接口开放,有利于程序员更好创新,否则就得重新开发一套新接口,过去依赖这些接口的工作都要重新再做一遍,十分浪费资源。
UNIX 的源代码被免费捐赠,但开源后的商业化并不成功。反观 Linux 的开源,获得了巨大的商业成功,这也说明专利制度迟早要重新修正。
现在微软也加入了 OIN,把部分专利捐给了 OIN 组织,还收购了 GitHub,强烈拥抱开源,在这方面是 180 度大转弯。
魏永明:Oracle 习惯用官司的方式征战获利,当年 Oracle 收购 SUN 公司没有从 Java 赚到钱,但 Google 的 Android 利用 Java 赚钱了,所以 Oracle 就去找 Google 的麻烦,意欲分一杯羹。
编程的专利诉讼主要涉及两个方面,一个是编程语言,一个是 API 接口。编程语言实质上已有定论,无论是 C 语言也好,Java 也好,都无法申请专利,或者做版权保护。因为编程语言使用者越多,生态越繁荣,申请专利后别人就没法使用了。
API 接口在这十多年里是有争议的。在 Oracle 和 Google 诉讼的过程中,判决倾向也是反复变化,一波三折。业界、法律界对这件事有不同的意见,法官们的投票结果也是 6:2 ,并非全票支持。欧美国家采取判例法,有了这个判例,之后类似的案件就会遵循这个原则。
有一些应用的编程接口是有价值的,该怎么保护是一个很复杂的问题,究竟是用专利的方式保护,还是用 Copyright 版权的方式保护,远没有定论。这是一个法律问题,也是一个软件道德问题。
邹欣:在这次判例以前,也有过类似的争论。当年,围绕图形用户界面是不是专利这个话题,就已经讨论过一次了。
和 API 接口类似的,还有一个叫设计模式。我们提到「工厂模式」,就能立刻知道这是一个单列,如果不能用「工厂模式」,就必须另起一个名字,日常的沟通交流反而不方便。API 也一样,当一个请求是 Authentication(身份验证),大家会知道它有典型的返回,知道这个模式可以承接。
以汽车为例,大家学车的时候知道左脚是离合,右脚有刹车和油门,如果把这个当成专利,其它车不能这么设计,不同的车要用不同的脚操作,那还怎么开车呢?每辆车都必须不一样,这对于汽车行业也是一个巨大的内耗,没有必要这么做。
同样,编程序的时候,大家也不希望每个程序的模式必须不一样,这是违反自然规律和发展规律的。如果在内部实现时把创新隐藏在模式里面,模式可以自由的使用和传播,模式内部实现创新。这样区别之后,就能有利于创新,也有利于社会的发展。
操作系统与 35 岁危机
除了 UNIX ,很多操作系统都是经验丰富的老程序员开发出来的,为什么他们没有经历 35 岁危机?当前国内做操作系统会和之前、和国外有什么不同?
蒋涛:前段时间,Python 创造者 Guido Van Rossum 发推特宣布加入微软,Anders Hejlsberg 也在评论中表示期待和他一起工作,这两个人加起来 100 多岁了。
开发系统和架构,需要有经验的程序员。Ken Thompson 发明 UNIX 的时候算比较年轻,但那时候计算机也刚出来没多久,所以他在计算机领域也算老前辈了。
所以说「家有一老,如有一宝」,老将更适合做有价值的事情,而不是适应新的潮流。世界上的编程语言有几百种,为什么还要发明新语言?为什么还要造一个新的轮子?是因为每一种新语言都有它想要解决的问题。
我们应该培养更多钻研底层技术的程序员,让有经验的程序员,来做这些更有价值和意义的事情。现在国内的大公司慢慢地意识到这一点,都在做一些这样的工作,往架构层和比较深的层次去做。
操作系统和语言这样的大事,不可能一次就成功,100 种新语言里可能只有 1 个成功。学术界和工程届也是这样,要把科技创新的机制建立起来,利用老同志们的经验,也让年轻人能够自由发挥。
魏永明:现在的操作系统和七十年代的 UNIX ,有着巨大的不同。操作系统的概念,慢慢在外延。
在 UNIX 时代,核心 Core 加上一套工具就组成了一个操作系统。Windows 和 Mac OS 后,操作系统有了图形界面,后来还有 Android 和 iOS 这样的移动操作系统。
一个操作系统之所以区别于另外一个操作系统,是因为两者在编程语言和 API 上有区别,然而这两点都无法用专利版权保护。
曾经移动端的智能操作系统有三个:Windows Mobile、Android、iOS。Android 的编程语言是 Java,iOS 之前是 Objective-C,现在是 Swift,它们的语言不一样,API 也不一样,所以是两个完全不同的操作系统。
中国要发展自己的操作系统,就得从编程语言这样基础的东西做起,操作系统和编程语言其实是同根同源的。
技术管理的平衡之道
IT 公司的人才管理,即要给员工自由,鼓励创新;也要保证制度规范,稳定产出;该如何平衡两者?
邹欣:从 UNIX 诞生背后的贝尔实验室来看,它的管理有一点很重要,就是没有「微观管理」,这也是成功的研究院的特性。当年我在微软研究院时,领导就说,成功的诀窍就是招最优秀的人过来,然后把他们分散开,Get Out Of The Way。
优秀的人知道自己该干什么,给他自由让他放手做就可以了,当然同时也要给他钱,给他一定的资源。
管理中有些 KPI 是至上而下的,有些从市场来,有些从友商竞争中来,还有一些是员工自发形成的。如果研究院里有一些优秀的人,他们发自内心想把工作做好,就会激发出好的环境,自然而然大家就会做出好成绩。
还有一个与贝尔实验室齐名,甚至更有名的 Xerox PARC(施乐帕克研究中心),也是离公司和管理层很远。Xerox PARC 每周五下午有一个讲座,让一个人来介绍自己正在做的东西,下面坐着一群有名的科学家,可以自由挑战。
这个活动会激发每个人做出优秀的工作,如果只做平庸的事情,搬运别人的劳动成果,就没法上去讲。
许多人把 R(Research)& D (Development)分开,认为研究和生产是两个方向。比如画画,有人画出一幅蒙娜丽莎这样的名画,不能批评他用了 5 张草稿纸,太浪费,得控制在 3 张草稿纸内才是好的,这是不对的。
研究要允许失败和探索,但公司的商业目标也要实现,技术管理者必须有智慧分清楚这两者。
蒋涛:管理上选择自由还是严格,跟当下的科技背景有关。UNIX 诞生在创造的时代,目标是探索未知,探索未知要给予较大的自由度,因为不知道会发展成什么样子。
有一本书叫《观止》(《Show stopper》),它的价值非常高,记录了 Windows NT 的诞生过程。如果把《UNIX 传奇》和《观止》这两本书对比看就能发现,UNIX 是在轻松的环境自由创造,但 Windows NT 不是。
针对 Windows NT,当时比尔·盖茨目标很明确,就是要做一套工业级的图形化操作系统,能兼容各种系统和设备。因此微软用了 5 年时间和几亿美金,不仅挖来了彼时号称是硅谷最牛的 Kerner 开发者大卫·卡特勒,还用严格的 KPI 管理 200 多名技术人员,最终才取得成功。
所以说,在科技的创新、应用和竞争阶段,管理的方式都是不同的。现在中国就面临着多种维度的共存,既有创新领域,也有应用领域,还有竞争已经很激烈的领域。
大家读完《UNIX 传奇》这本书,就会知道,怎么在高自由度的环境创新?哪些领域应该鼓励自由?哪些地方要比竞争对手跑更快,提高市场占有率。
了解技术演变,学会在造轮子的基础上创新
回看 UNIX 的发展史,通读《UNIX 传奇》这本书后,您有什么样的感想?
邹欣:UNIX 是经历了失败后的两个人,在一个快废弃的机器上创造出来的。这说明即使环境艰苦,只要让优秀的设计人员来做,摆脱外界干扰,一样能做好。
UNIX 非常简洁,有一套自己的设计理念,这非常了不起。一件事情不需要做太多太复杂,而是通过积木式的组合,或者管道线的方式把问题解决。
举个例子,UNIX 中大部分的文件 block 都在 4k 以下,那如何用 awk、sed 或其它 shell 命令统计出当前 UNIX 系统所有文件大小的分布情况?这个问题发在了 CSDN 的问答社区,有一个同学写出来一个非常短小精悍的命令,只用三行就把这个问题解决了。