红联Linux门户
Linux帮助

关于Linux兼容内核的知识产权问题(一)

发布时间:2008-02-16 09:58:38来源:红联作者:pplicat
  自从笔者提出Linux兼容内核的设想和技术路线、把兼容内核的主体归结为“一个框架,两个界面”以来,听到不少朋友表示了对于知识产权问题的关切。“你在Linux内 核中实现微软的Windows系统调用界面;还拿着Windows DDK按图索骥,实现所列举的内核导出函数;那可是不得了的事!”。当然,我们必须重视和正视知识产权问题,不能乱来。这意味着我们必须小心谨慎,不要越出法律所规定的界 线;但是这同样也意味着我们应该具体问题具体分析,而不要草木皆兵,自己把自己吓住,连法律允许做的事情也不敢去做了。这里,笔者要对Linux兼容内核的实现是否会侵犯微软的知识产权作一番分析和探讨,意在引起冷静而科学的讨论。

  笔者并非法律专家,也没有深入研究过中、美两国知识产权方面的法律条文。笔者在知识产权方面的知识主要来源于两个方面。一方面来源于本人在中国和美国申请 专利的经验。另一方面,更重要的是,来源于“Patent It Yourself”一书。这本书在美国的知识产权领域可谓尽人皆知。书的作者 David Pressman是法学博士,又是个有着40多年经验的专利律师,还在美国专利与商标局(US PTO)当过审查员。该书从1985年初版以 来,到2004年已是第十版了。笔者手头所有的正是这本书的第十版,今年春节时才买的。原来有个老的版本,搬家时不胜重负而割爱了,后来因为考虑Linux兼容内核的知识产权问题而又想到了这本书,只好再买一本新的,真是早知今日何必当初。

  “Patent It Yourself”书中的叙述自然代替不了正式的法律条文,何况书中所讲是美国的法律,阅读理解还可能有偏差,所以笔者希望国内法 律界人士不吝赐教,更希望他们能对开源软件施以援手。那怕与笔者所见相反,说出来让大家讨论也是件好事。不过,从另一个角度讲,则笔者所言毕竟还有些根 据,并非自说自话。况且这本书在二十年中出了十版,即使早期版本中有错误也应该早已纠正了。
据“Patent It Yourself”说,知识产权分4种,即:

   专利 (Patent)
   商标 (Trademark)
   版权 (Copyright)
   商业机密 (Trade Secrets)

  此外,还有“不正当竞争(Unfair Competition)”也与知识产权有关,有些行为够不上对4种知识产权保护中的任何一种的侵犯,却还是可以按“不正当竞争”提起诉讼。

  专利是受保护力度最强的,特别是如果受保护的是一种“方法”,那就比较宽泛,比较难以绕过。但是,专利受到的限制也很大。首先是必须充分公开实施的过程与 方法。所谓充分公开是指:具有一定基础的同行只要发挥合理范围内的努力,按照所公开的过程与方法去做,就可以实现所述的结果。另一方面,专利受到保护的时 间限于18年,此后就不受保护了。还有,如果一项技术出现在商品中,那么必须在商品上市后的一年之内提出申请,过了一年以后就不再受理了。现在我们可以来 对照一下,看看“一个框架,两个界面”是否有可能触及微软的专利。先看Windows的系统调用界面,这个界面本身就是不公开的,更别说界面的实现了。人 们现在之所以知道这个界面以及它的一些细节,是因为有人通过“逆向工程”作了分析、实验,并写成书出版了。显然,这个界面不可能受专利保护,否则就违反了 公开原则。不过,这并不排除个别系统调用的实现方法是受专利保护的,所以当我们涉及具体系统调用的实现时还是得要小心。但是有一点是明确的,那就是在这一 方面至今还没有专利的东西就永远不可能有专利了,因为这个界面已经存在多年。还有,今年是2005年,减去18年就是1987年,凡是1987年以前的专 利(即使有的话)都已经过期了。再看DDK所列举的内核导出(export)函数,这些函数构成了一个设备驱动界面。这个界面倒是公开的,但是这些函数的 实现方法却都不是公开的,所以也不可能受专利的保护。至于Windows的设备驱动框架,人们对其实现确实知道得比较多一些,那是得益于微软出版社出版的 几本书(见“若干重要的Windows参考资料”)。微软既然要让人们为Windows开发各种第三方设备驱动软件,就得把设备驱动的整个框架从宏观上作 些介绍。但是,即便如此,公开的程度也远远没有达到专利申请所要求的程度。更何况,Windows的设备驱动框架和一些机制在很大程度上来源于VMS操作 系统,而VMS是早就存在了的东西。此外,专利保护并不是全球性的。假定某个方法在美国得倒了专利保护,但是并没有在中国申请专利,那么在中国市场上就不 存在侵犯该项专利的问题。可想而知,微软的有些技术即使在美国受专利保护,在中国却未必有效。

  由此可见,从总体上说,“一个框架,两个界面”都不可能触犯微软的任何专利。

  第二种知识产权是商标,显然兼容内核跟微软的商标没有任何瓜葛。

  再看版权。版权的取得比专利容易得多,只要登记就可以了,甚至即使不登记也可受到版权保护。版权受保护的年限也比专利长得多(发表后95年,或作者死后 70年)。可是,版权所保护的范围却很窄。“Patent It Yourself”书上说: “While a patent can effectively provide offensive rights on an idea per se, ……a copyright covers only the author’s or artist’s particular way of expressing an idea”。 就是说,专利可以保护一个主意(必须可以实现)的本身,而版权却只能保护对一个主意的特定的表达。 David进而举了一个例子加以说明: “Put otherwise, you are free to publish any of the ideas, concepts, and information in this (or any) book, provided that you write it in your own words”。就是说,如果把 “Patent It Yourself”改写一遍,那么即使你另外出版也不算侵犯版权(原书中没有提到翻译是否算是改写)。但是,书中也提到,1998 年的“Digital Millennium Copyright Act”法案有个补充,就是如果有谁提供一种技术来破除版权保护,那么这是一种刑事犯 罪。笔者对此的理解是:例如,要是有谁写一个程序,自动把“Patent It Yourself”变换成另一本书、即另一种表达,那么这个人是要受到惩 罚的。具体到计算机软件,该书又说:“… copyright covers only the particular way the program is written, not what it does”。 这就是说,如果两段程序实现的是相同的功能,但是编写的方式不同,那就不存在侵犯版权的问题。

  当然,卖盗版盘是侵犯版权,因为卖的正是别人的“特定的表达”;把好几张盘片的内容压缩到一张盘片上然后加以生产可以是刑事犯罪,因为这正是在提供一种技术来破除版权保护。

  可是,联系到兼容内核的 实现,我们根本就看不到微软的代码,看不到他们“特定的表达”,又怎么能因为我们自己的代码而侵犯他们的版权呢?退一步说,即使我们看到了他们的代码,只 要不是成段照抄,也还是谈不上侵犯版权。不过这里倒有个问题需要注意:在设备驱动框架中有不少宏操作(Macro)是在DDK的一些.h文件中定义的,我 们不能把这些.h文件照搬和拿来就用,而需要加以改写,以免授人以柄。

  还有一种知识产权是商业机密。商业机密的保护范围就更小 了,基本上只是用来防止雇员泄密和偷盗。但是,如果明知某人手里有别人的商业机密而购买之,或者指使或怂恿别人偷盗商业机密或泄密,那也是违法的。除此之 外,就没有什么限制了。“Patent It Yourself”中有一段话很说明问题:“… they can’t be maintained when the public is able to discover the information by inspecting, dissecting, or analyzing the product (called “reverse engineering”)”。这里 的“they”指商业机密,只要公众能通过仔细观察、解剖、分析得知个中奥妙,商业机密就维持不下去了。值得注意的是这里提到了“逆向工程”,显然“逆向 工程”并不违法。有些软件产品在安装时有要求使用者不得进行逆向工程的条款,但那只是使用者与提供者之间的协议,而与法律无关。

  具体到我们的兼容内核,这就是说,只要我们不从微软偷盗源代码,也不使用别人从微软偷盗出来的源代码,那么即使通过反汇编等手段进行逆向工程,那也没有违法,更何况我们根本没有这个需要。Linux内核中有那么丰富的素材,有那么优秀的源代码,我们何用劳心费力去做Windows的逆向工程?

  如果说上面4种知识产权都有“硬杠子”、有具体的条文可循,那么“不正当竞争”可以说是个灰色地带。书中说: “The scope of unfair competition law is nebulous in the first place and is regularly being changed by judges who make new and often contradictory rulings”。 模糊(nebulous)自不必说,这里说“老是在被法官们变化”是因为美国很重判例,这个法官这次那样判,就好比为不正当竞争增加了一条司法解释。总而 言之,对于“不正当竞争”诉讼,法官们的发挥空间比较大。那么什么样的行为可以看作是不正当竞争呢?书中举了几个例子。例如借用别人的广告词;又如故意使 自己的商标与别人的商标非常接近;再如有的店铺如麦当劳的房屋外形和室内布局都有统一的格局和特色,如果别人新开一家快餐店,却把店铺的格局搞得和麦当劳 一样;还有些产品的外包装很有特色,久为人们所熟悉,如果别人新出一种产品,也采用同样或很相似的包装;等等。总之,是使用户一不小心就误以为你的产品是 另一家的产品。在这一方面要注意的是:将来,当兼容内核直接支持Windows应用时,作为人机界面的“桌面”布局或图案要与Windows有所不同,使人们一看就知道这实际上并不是Windows。可是,相似、很相似、这些都是主观感受,很难有个确切的标准,这就是之所以模糊的原因。

  美国公司Linspire与微软之间的诉讼是个很有意思的实例。Linspire原名Lindows,其产品是安装了Wine的Linux桌 面系统,因而可以在Wine上面直接运行一些常用的Windows应用,例如Office等等(所以才叫Lindows,笔者猜想)。Wine在内核外面 (用户空间)实现了Windows的Win32 API,本质上可以跟在内核里面实现设备驱动界面相类比。后来,微软告了Lindows。但是微软告的并 不是Lindows通过Wine侵犯了Win32 API的版权(根据前面的叙述,我们知道那是不成为诉讼理由的),而是说“Lindows”与 “Windows”只是一字之差,太相似了(我们知道那有可能被认为是不正当竞争)。可是,“Lindows”与“Windows”到底有多相似呢?确实 只有一个字母的差别,但是外形却不像(如果是Vindows那倒还像一些),这就公说公有理、婆说婆有理了。这个案子最后以庭外和解告终,Lindows 把名字改成Linspire,而微软则为此付了Linspire一笔钱(是微软付钱给Linspire,不是Lindows付给微软),以补偿 Lindows因改名而造成的损失。前面讲过,美国很重判例。有这个案子在先,微软实际上已经不可能再就Wine实现了Win32 API而提起诉讼。那 么,兼容内核实现系统调用界面和设备驱动界面与此并无实质的不同。

  由此可见,我们完全不必草木皆兵,以为一开发兼容内核就会触犯微软的知识产权。当然,小心谨慎还是应该的。

  本文所述只是针对兼容内核本身的考虑,而没有涉及用户空间的一些问题,那将是另一篇短文的内容。
文章评论

共有 2 条评论

  1. liaoyonghan 于 2008-02-19 13:53:49发表:

    我也想好好学习内核啊,不过感觉好难了。不知道从哪里开始学起了

    [ 本帖最后由 liaoyonghan 于 2008-2-19 13:56 编辑 ]

  2. litkt 于 2008-02-16 15:59:11发表:

    版权不是问题,技术问题本身才是障碍。
    要兼容标准的稳定的开放系统,易如反掌,而要兼容不标准易变的封闭系统,难于登天。
    GNU工具集和X都不是为linux开发的,而是为UNIX开发的。当时还没有linux。而linux以UNIX的POSIX标准为标准,一举就兼容了几乎所有unix软件。注意,大部分UNIX系统和应用软件和windows及其应用软件一样都是私有版权的。在linux系统上可以使用私有版权软件,在所用的私有应用软件上遵守它的私有版权协议即可。所以重写windows的公有版权内核以兼容windows私有或公有的应用,在版权上不成问题。linux对UNIX已经这样做了,linus正是出于对UNIX私有版权的不满才着手开发的linux。你对windows的意图和linus当年对unix的意图完全一致。
    但是的但是,UNIX世界有一个公开稳定的POSIX标准供linus遵守,windows没有。这就是一切。在UNIX世界,不满UNIX内核私有版权主的人写了FreeBSD,OpenBSD,NetBSD,MINIX和LINUX,windows世界呢?想重写windows兼容内核就必须实现现有windows的所有API,MS能让你成功吗?注意,从95到98到me到2k到xp,API变了多少 ?您就是实现了,它也会再变,你永远也跟不上。WINNE花费了十多年想在unix上实现windows的API,现在怎么样了?唯一的办法,就是彻底抛弃windows,只要用上linux, windows下的一切与我再没有任何关系,