【猎云网(微信号:ilieyun)】10月30日报道(编译:福尔摩望)
2012年5月18日,甲骨文和谷歌的律师在加州北区法官William H. Alsup主持的听证会上为九行代码争得不可开交。在这场甲骨文诉谷歌的第一次陪审团审判中,两家公司一直就谷歌是否在Android系统中抄袭了甲骨文的代码纠缠不休。
这场争议的焦点在于一个名为rangeCheck的函数上。在甲骨文测试的共1500万行代码中,只有这一个是被“完全复制”的,雷同到每一个字母。甲骨文方为了尽可能的突出rangeCheck函数的重要性,该公司律师David Boies宣称谷歌正是因为抄袭了rangecheck函数,才能够让Android如此快的上市。不过法官Alsup对此并不买账。
法官说:“在这次审判前,我对Java知之甚少。但是,我拥有使用其他语言进行编程的经验,我写过上百次像rangeCheck这样的代码块。我可以做到,你也可以做到,这很简单。”
就是这么一个即兴的评论,事后的发展却让Alsup很懊悔。这句话首先被律师和法律专家引用,然后是科技刊物。每一次引用,都让Alsup的技能不断进步,直到让他最终成为“会Java的法官”。
但是法官Alsup希望让大家知道,他并不懂Java。
至少不是很了解,不过他绝对可以编程。实际上他已经用BASIC编程了数十年,但是他的编程完全处于乐趣。他为妻子编程了一个小程序来玩桥牌;为自己最喜欢的棋牌游戏Mastermind编写了一个自动化解决方案;可能最成型的是他为业余无线电编写的带有图形界面的多功能程序。
他对编程的兴趣让他在法官席上如鱼得水,尤其是在涉及数十亿美元的知识产权诉讼案中给予他与众不同的视角。而他的裁决可能会让科技公司的财富扩大或缩水。甲骨文诉谷歌一案对很多大公司和小型开发商有着很广泛的影响,涉及资金高达90亿美元。而目前正在进行中的Waymo诉Uber一案,可能会决定着Uber是否会成为早期自动驾驶汽车市场的一员。
巧合的是,这些重要的诉讼案几乎都集中在了这位全美唯一能理解技术细节的法官手上。Alsup长期培养的兴趣让他揭示了甲骨文诉谷歌一案中的核心问题;而他对摄影和光科学的了解则让他能够站在专业的角度看待Waymo诉Uber一案中所涉及到的自动驾驶汽车导航雷达技术LIDAR。
科技行业长期以来对法律界无法理解专业知识而感到绝望,而法律系统则需要不断的努力才能勉强跟上科技的迅速发展。“法律永远不会追赶上技术”这一信条是科技例外论的一部分,这种自由精英主义嘲笑了任何类似于卢德主义的法律或监管障碍,但这也是对法制的沮丧引起的。专利局被认为只会盖橡皮图章;最高法院的法官们似乎被编程所困扰;检察官选择的非技术类陪审团成员则否决了在线购物车专利。
正是这样的环境,让Alsup成为了例外,其实他的秘密很简单,即他是一个终身极客。
Alsup在旧金山的检察官中以工作时间早出名。早上九点,联邦法院的大多数法官房间仍是一片漆黑,但是Alsup的房间是个例外,门里的喧嚣表明这里的人已经工作好几个小时了。
Alsup一头白发,佩戴者方形线框眼镜,讲着一口柔软的南方口音,虽然身材很普通,但却会给你留下很深刻的印象。
Alsup的房间里摆放着诸多装裱精美的法律专业书籍,小小的林肯黑白肖像挂在一个大桌子上方。另一边的沙发上则散落着他养的杰克罗素梗的玩具。
法官邀请我坐在沙发上,在2011年法院发的戴尔笔记本上向我展示着他编写的程序。他有点郁闷的表示,他的桌面电脑无法运行这些程序:“这是最后一款支持QuickBASIC的电脑,说起来也有点惭愧,毕竟这是我唯一熟悉的语言。”
法官并不是硬件狂热者。他所使用的电脑和智能手机都是法院所提供的。虽然他目前使用着法院提供的iPhone,但是如果加州北区法院发给他一款Android手机,他也会使用的。
当我问他我是否可以把他的代码放在GitHub上时,他问我GitHub是什么。随后他给了我打印好的计算机程序,三堆纸已经整整齐齐的放在了角落。他很抱歉的表示还有几个依赖库没有时间打印出来。在他成为硅谷地区法官之前,Alsup就已经是一个极客了,只不过是另一个时代的极客。
Alsup于1945年出生在密西西比州的杰克逊,是两位德州农民的儿子,母亲是一名护士,父亲则是罗斯福工程进度管理局的一名土木工程师。在孩童时代,Alsup就展现了他强大的好奇心和技术嗜好。儿童时期的大部分时间,他都和现为Auburn大学教授的Hubert Feild玩耍。从六岁起就成为朋友的俩人,一起建造堡垒,埋时间胶囊,用洗衣袋制造会飞的气球。
Feild说:“Bill是一个非常聪明的孩子。”Alsup自学钢琴的时候,对音调不满意,他会通过按压敲击琴弦的锤子来调音。他让钢琴听起来像是来自失落的牛仔沙龙。Feild说:“我仍然拥有Bill在这架钢琴上弹奏的经典曲目的录音。”
但是如果说有一个小玩意吸引了两个男孩,那就是业余无线电。两个人会花费好几个小时,用七英尺的伸缩天线在Zenith Transoceanic收音机上收听短频广播。他们会调频收到莫斯科广播电台、基多广播电台和哈瓦那广播电台,但是他们大部分时间都在收听业余无线电运营商,即所谓的“火腿无线电”。
Feild说:“当我们收听到来自各州和各国的业余无线电对话时,就好像发现了密西西比之外的一个新世界。”他会和在高中获得无线电许可证的Alsup一起,在卧室里进行远距离的对话,有时候也会使用摩尔斯电码。
Feild说:“Bill一直以来对我的生活有着强烈的影响,在过去的20年里,我和Bill会在每个星期六上午通过业余无线电对话。”
高中毕业后,Alsup就读于密西西比州立大学的工程专业,打算像他父亲一样成为一名土木工程师。但那时候正是六十年代,民权运动正在如火如荼的展开,华盛顿游行就发生在Alsup大一新生期间;当他升入大二时,也就是1964年,民权法案正式通过。正让Alsup对更广泛的法律问题产生了兴趣。Alsup说:“我想成为另一个Atticus Finch。”大学毕业后,他进入了哈佛法学院学习,并成为最高法院法官William O.Douglas的书记员。
之后他在密西西比州设立了一个工作站,从事民权工作,但是很快就发现资金链出了问题。最终,他和妻子于1973年搬到了旧金山,多年以来一直在私人律所和司法部工作。1999年,他被克林顿总统委任为联邦法官。
Alsup在加州北区的律师中拥有着可怕的名声。他喜欢早期工作的嗜好是律师们的痛苦,他们不得不在早上七点提出动议,有时候甚至更早。诉讼人的时间精确到了分钟,陪审团会在他指定的时间被释放。
在甲骨文诉谷歌的第二次审判中,他拒绝让律师在下午一点之后继续质问Eric Schmidt,尽管这意味着Alphabet的总裁第二天还需到场。这样一个涉及5.7亿美元的大公司案件让陪审员不得不将孩子托放在日托,在陪审席上吃晚饭,还得赶长途火车回家。Alsup说:“我知道证人很忙,但是陪审员的时间并不多。”
他坚持让自己的法庭的温度比大楼其他区域低,他认为低温会有助于陪审员保持清醒。如果有人在旁观席上咳嗽,Alsup会暂停审讯,并要求弄清楚是谁。一旦找到这个咳嗽者,法官会把放在自己身边的咳嗽液让律师递给他。如果继续咳嗽,他会要求咳嗽者迅速安静的离开。
当陪审员被关在审议室内讨论时,他会对律师十分苛刻。但是陪审员所看到的法官是一个和蔼可亲的南方绅士,会专门花时间来询问个别陪审员,并感谢他们为此付出时间。
当一名陪审员被蜜蜂叮伤之后,Alsup询问她是否可以跟进诉讼。当她正在犹豫时,他说:“让我再说一遍,你能像之前那样明白发生了什么吗?”
“是的,”她毫不犹豫地回答。
美国制度给予律师很大的权力来选择陪审员。这就是为什么在加州旧金山这个世界科技之都进行的软件著作权审判的陪审团中往往没有一个陪审员具有计算机行业背景。但是律师无法选择法官。加州北区的诉讼代理人非常清楚,他们是没有办法在Alsup法官面前囫囵吞枣的。
在甲骨文诉谷歌一案中,涉及数十亿美元的利益可能并不是这场诉讼结果中最重要的。70多名知名的计算机程序员联名签署了“计算机科学家简介”至联邦巡回法院,最后甚至上书到最高法院,试图解释该案中的技术核心问题。他们中每一个人都害怕该案的判决对职业未来的影响。
甲骨文在2010年向谷歌提出了多项专理申索和版权索赔,只有在2012年Alsup主持的审判中失利。但是甲骨文提出了上诉,联邦巡回法院批准了上诉。当谷歌试图再次上诉时,最高法院拒绝接手此案,并将其送回位于地方法院的Alsup法官手上。该案于2016年再次宣判。陪审员再一次站在了谷歌一方,目前上诉仍然在联邦巡回法院等待。经历了七年诉讼之后,该案在这一阶段已经归结为一个单一的问题:谷歌所使用的37个Java API是否侵犯了甲骨文的版权?
软件版权是非常难以解决的。当谈到音乐、电影、文学、绘画甚至瑜伽,很容易判断是否发生了抄袭。而软件则在很晚的时候以“文学作品”的身份被补充进1976年颁布的版权法中。
版权仅适用于创新作品,并不涉及功能。这就是为什么任何涉及功能的元素,如人体模型、会计分账、计算机程序菜单,都不受版权保护。
那代码究竟是功能工具还是创新作品呢?代码是传达意义的,从这个角度看它似乎是一种有版权声明的艺术形式。但是当代码被执行来使机器人手臂捡起螺栓并固定时,这似乎完全是功能性的,因此不受版权保护。
你无法对小便池申请版权保护,但是你可以拥有小便池雕塑的版权。这就好像是Duchamp的作品一样,两种状态同时存在于代码中。
曾是微软程序员的康奈尔理工学院法律学教授James Grimmelmann说:“你可以看到法院对此已经争议了多年,事实也证明,将软件上的功能性和非功能性部分区分开来是很困难的。它需要对软件的本质有着非常细微的理解。”
甲骨文诉谷歌一案涉及了软件一个特定的组件:应用编程接口(API)。API是精心定义的交互集合,可以快速访问服务、库和其他功能。虽然API被认为是单词的集合,但是公共知识部的高级职员律师John Bergmayer认为它们看上去更像是谚语或俚语的集合。你无需知道俚语就能说出语法正确的英语,但是正如许多ESL学生(母语非英语)所知道的那样,没有俚语会很难进行交流。一个俚语可能是一个短语,但是更多的时候它只是作为缩写而存在。与此类似,API通常就是被缩写的常用或复杂的代码。
这是甲骨文诉谷歌一案中的核心问题。API是一个过程、系统或操作方法呢?还是具有版权保护的创新作品呢?
当谷歌首次创建Android时,该公司决定系统会兼容Java语言。通过使用Java,Android可以利用现有的开发人员社区,甚至可以利用现有的代码。任何人都可以用Java编程,但是已经开发出语言的Sun Microsystems对Java Standard Edition和Java Mobile Edition有着严格的控制。
在Java许可证的谈判失败后,谷歌的一些工程师联合编写了一个无尘室实施的Java SE,这意味着代码可以被禁止访问原始代码的团队进行反向设计。甲骨文于2010年收购了Sun,并在数月之内,向谷歌就Android提起了诉讼。
谷歌对Java API的重新实施几乎是重新开始的。但是它与Java标准版的API共享声明代码。不仅如此,实施的结构、顺序和组织看起来都很类似。然后就是非常出名的九行代码rangeCheck。它们是由Joshua Bloch编写进Android的,Joshua Bloch曾经在Sun Microsystems工作,并撰写了很多Java API。
为了与Java兼容,对特定API的调用方式看起来应该是完全一样的。例如,在一组数字中找到最大值的方法都被命名为java.lang.Math.max。甲骨文认为谷歌本可以命名为java.lang.Arith.larger。而谷歌则认为Java API类似于QWERTY键盘布局。当然,键盘可以任何方式组织,但是键盘制造商不断制造QWERTY键盘,因为人们已经习惯于这样的设置。
建立在其他语言之上的语言肯定会有一部分看起来类似。Java正则表达式API是Perl 5的重新实现,Java字符串格式化API是C语言的重新实现。这也是程序员在甲骨文诉谷歌一案中联名上书的原因之一,因为一些所有人都会一直重复的事情而警告谷歌是没有任何意义的。软件开发人员普遍认为甲骨文是错误的,API的目的是被使用,如果限制其使用会颠覆其原本的目的。
事实上,即使甲骨文也很难在自己的立场上保持一致。2015年,站在甲骨文一方的公司证人表示,Java API和Java语言是分不开的。
2012年,在甲骨文诉谷歌一案的第一次庭审中,陪审团支持了谷歌每一项专利申请。但是在版权问题则划分成了两派。申请的API元素是否具有版权?如果有版权,是否会得到正当的使用?第一个问题由Alsup法官决定,第二个则是由陪审团决定。
陪审团就关于谷歌使用Java API是否正当使用犹豫不决。但事实证明,这并不重要,因为Alsup法官裁定甲骨文在声明代码或实施代码的结构、顺序和组织方面没有版权。因为不存在可侵权的事物,所以不存在侵权行为。这就是Alsup的结论,因为API实现代码的结构、顺序和组织是功能性的,而不是创造性的。
虽然证人和律师一直在努力解释API,将其与文件柜和电子壁挂套件进行比较,但是Alsup对技术层面的了解是独一无二的。在判决书的最后,描述了代码的工作原理,区分了源代码、目标代码、类、声明、头文件、子例程、方法、接口和包,甚至还包含了示例代码。
很难想像,如果一个没有Alsup长期编程经验的法官会给出什么样的判决。Alsup的编程背景在裁定rangeCheck时起到了决定性的作用。
听证会五年后,他依然记得当时的情形:“我在使用QucikBASIC编程时,重复做过很多次这样的函数。如果你在QuickBASIC中提出了这个问题,我可以肯定在一个小时内给出一个可以运行的模型出来。”
当我们在谈论甲骨文诉谷歌一案时,法官表现的很谨慎,因为第二轮上诉仍然在联邦巡回法院等待。但是似乎他仍然对甲骨文试图把rangeCheck炒作成“大事”而感到不满。他作为程序员的一面甚至对给rangeCheck的作者造成困扰感到抱歉。“甲骨文有众多的代码都扩展到Android和Java中了,对这九行代码的炒作太过夸张,以致于在上诉时它自己都不再提起。”
2013年,在甲骨文诉谷歌一案的庭审中,Alsup给出了司法机构从未对软件版权作出的“最详细、最困难和最细致的裁决”。Grimmelmann说:“他给出的框架包含了Java的工作原理、源代码的不同元素。那不是一篇判决文,而是一篇具有教学意义的文章。”
Alsup在2013年对甲骨文诉谷歌一案的裁决几乎立即遭到了上诉,2014年联邦巡回法院上诉法庭却给出了令人震惊的反转,这也导致出现了众多由愤怒的版权法学者撰写的法律评论文章。上诉法院写道,甲骨文对谷歌所复制的7000行代码的选择和安排拥有无限的选择权。甲骨文没有必要将功能名命名为java.lang.Math.max。它可以是任何表示数量的名称,比如“Math.maximum”或“Arith.larger”。
这看上去很像是一个对代码不熟悉的人所作出的判决。
谷歌越过联邦巡回法院上诉至最高法院,但是遭到了拒绝。该诉讼案被送回了起始点,Alsup主持了第二次陪审团审判。2016年5月26日,陪审团支持了谷歌。
谷歌也许已经赢了,但是这件诉讼案仍然悬而未决,甲骨文已经再次上诉联邦巡回法院,目前还不清楚这起诉讼案会造成什么样的实质影响。陪审团对正当使用的判决并没有提供任何指导,什么时候复制声明代码、结构、顺序和组织是正当的仍然不清晰。
无论Alsup拥有多长的编程经验,他的判决都被上诉法院给否决了。
Alsup对自己的编程问题并不避讳:“我的确认为我是一个优秀的程序员,当你阅读这些程序时你可以看到。不过,这些程序并不是用Java写成的。”
自1985年拿到第一台计算机时,法官就一直在编程。这款老式的IBM电脑使用5又1/4英寸的软盘,并没有硬盘。你可以用一个软盘的版本,或两个软盘的版本。他和妻子拿到了当时很豪华的两个驱动的版本。
随电脑一起附赠的有两本书,一本有关DOS操作系统,一本有关BASIC。“当我看到BASIC时,我就决定我要学习。很简单。”
他编写的第一个程序是示例程序——简单的算术。然后开始变得越来越复杂,一个程序是玩21点,另一个是玩七张牌。这些程序都储存在软盘中,这张软盘在1988年的时候被他两岁的儿子用订书器给摧毁了。
Alsup说:“他对此挺自豪的。”
在他所编写的所有程序中,最引以为傲的是短波无线电传播预报器。这是一个相对复杂的软件,拥有多个依赖库和复古图形界面。
该程序会通过计算指定的两个端点间距或生成的关键地点数据表来预测世界各地业余无线电信号出现的最佳时间。
在他开始编程这个项目的1995年,已经有类似的商业软件版本出现。但是他说,“我只是想看看我能不能做到这一点。”
他使用自己的程序校准自己的收音机,来和世界各地的朋友交流,包括他童年时期的朋友Feild,以及远在日本和新西兰的运营商朋友。现在,他每月仍然会花上几个小时的时间来进行无线电交流。他的呼叫号是N6XMW。
几十年以来,Alsup从书籍和手动编译数据库中学习编程。这和当代的软件开发人员有着显著的差异,他们往往会通过更大的社区来获取工作流和习惯。他不会谷歌搜索解决方案,也不会检查StackExchange,他也不使用预存的库。
事实上,Alsup与社区文化最接近的时候似乎就是在审判甲骨文诉谷歌一案。
在第二次庭审中,前Sun CEO Jonathan Schwartz试图向陪审团解释免费开源的软件,他提到了一个可以集成到Linux中的项目GNU。
“GNU是指什么?”Alsup打断问道。
“GNU不是Unix”,Schwartz说。
“G代表GNU?”
Schwartz表示同意。
“这说不通啊,”法官回答道。对话引起了法庭上旁听者的笑声,但是不太像之后在Twitter上传播时引起的喧闹。
GNU首字母缩略词是递归的,这意味着它亿无限循环调用自身,这在计算机编程中很常见。还有一些递归的缩写词,比如PHP、cURL、以及搜索引擎Bing。这些词汇很常见,以致于证人从来没有想过要在法庭上进行解释。
而Alsup虽然已经编程多年,但是他并不是知道什么是GNU。当我问道这个问题的时候,他显得有些懊恼。显然,他的一个工程师朋友已经嘲笑过他的GNU评论了。Alsup说:“我不知道这个递归功能的定义,不过跟我解释之后,我觉得这有点可爱。”
近些年计算机编程的变化已经让Alsup难以跟上兴趣的步伐。几年前,他尝试学习Python,但是由于联邦法官的日常工作,他一直没能取得进展。随着微软停止在Windows上捆绑QuickBASIC,Alsup也不太可能在新的电脑上运行他的程序了。
I这很讽刺不是吗,一个主持兼容性案件的法官现在成为了兼容性问题的受害者。
今年12月,Alsup将会主持Waymo诉Uber一案,这项涉及数十亿美元的诉讼案指控Uber从Alphabet子公司窃取了有关自动驾驶汽车技术的知识产权。虽然Waymo并没有以甲骨文诉谷歌一案的方式纠结于知识产权法案的核心原则,但是这个案件的结果同样可能会永远改变行业的面貌。
在我们的谈话中,Alsup一直非常谨慎的注意不讨论正在进行的Waymo案。但是他对围绕诉讼的科学充满着热情。这一次,他对摄影和光学的兴趣可能会起到关键作用。今年三月,Alsup要求双方各指定一本关于LIDAR的书籍或论文,以便他提前阅读。但是法院也严厉地警告双方不可以经常拜访他。
AAlsup还要求双方律师提供有关LIDAR的教程。这也是他审案时的一个特点。他非常喜欢这些教程,听的也很仔细。不过,他认为他会比律师更了解这些技术。
大约十年前,在一场有关FaseTrak专利(湾区自动化桥接收费追踪装置)的诉讼案中,诉讼双方已经就如何解释专利的技术方面达成了具有法律约束力的协议。但是Alsup却无视了协议,自己钻研了专利之后否决了协议。
“我知道这技术是什么。我下了一条命令,表示自己拒绝接受这项协议。然后他们都同意我的看法。”
双方当事人不久之后就和解了此案。
“我估计他们认为法官很疯狂。”
Alsup对Waymo一案的积极处理,可能是因为不满Alphabet和Uber投入数百万美元让最好的律师事务所参与诉讼。在过去,他就对公司用砸钱的方式来平息诉讼的方式感到不满。在甲骨文诉谷歌一案中的审讯后听证会上,他抨击了双方:“你们知道因为你们的争论使得我无法裁决众多的社会安全案件吗?”
在本案中,他特别呼吁媒体紧盯这两家公司在法庭上的表现,告诉编辑要留意哪一方在选择陪审团时试图摆脱具有技术背景的陪审员。与此同时,Alphabet和Lyft正在争取不公开审理,宣称公开审理会导致有价值的商业秘密公之于众。
一些媒体公司从一开始就介入此案,要求法庭公开审理。虽然部分涉及商业机密的诉讼过程将不对外公开,但是Alsup坚持认为编辑有权知道更多的内容。
在一次听证会上,Uber律师要求不准出现相机,以免暴露给公众。但是听证会开始后,Alsup法官认为这是越权,隐私权仅适用于尴尬因素而不是法律原因。
他说:“听着,请不要再提出这样的申请。本案无论如何都会产生对双方都不利的头条,我无法阻止它的发生。”
法官说:“公众有权利知晓,而且,我会将整个审理记录公之于众。”
自1999年以来,Alsup将记录事宜分给两名书记员:刑事诉讼和知识产权。不属于任一类别的案件将会平均分给两人。
这些天,他经常为负责知识产权案件的书记员寻找一些理工科背景的知识。虽然没有必要,但是很有帮助。在甲骨文诉谷歌一案中的知识产权书记员Bill Toth并不具有理工科背景,但是他告诉我法官曾特别要求他学习计算机科学课程。当我问道Alsup时,他笑了笑,表示自己记不得当时要求Toth去上任何课程。不过他的确承认,有时候它会根据正在审理的案件来给手下的工作人员提供一些专业背景知识。
Bill Toth现在是联邦巡回法院首席法官Sharon Prost的书记员。出于利益冲突的原因,他不会参与甲骨文诉谷歌的上诉。
但是Toth是新一代的律师,随着时间的推移,新一代律师将会占据整个行业的绝大多数。虽然他是宗教研究专业的律师,但是他也是一名程序员。Toth说:“我很享受编程的乐趣。在过去的三四年里,我使用Java参加了谷歌Code Jam的比赛。我曾经过了一次排位赛,除了在法庭工作,私下里我会一直学习。”除了Alsup让他上的计算机科学课程,他在成为Alsup的书记员之前就已经掌握了HTML、JavaScript、CSS、BASIC语言,还了解一些Python和Perl。Toth拒绝评论他的编程技能是否在甲骨文诉谷歌一案中起到作用,但是不难想象这会对案件的审理产生影响。
科技界一直保持着一个根深蒂固的观念,即法律界无法理解科技,即使是甲骨文诉谷歌一案也没有动摇这一观念。然而,Alsup的存在却是对这一观念的挑战。
Alsup表示他在甲骨文一案中向联邦巡回法院解释了软件问题。也正是如此,他迫使联邦巡回法院更多的参与到软件开发工作中。无论联邦巡回法院的最终决定如何,Alsup对软件的了解仍然在上诉案件中占有很大的成分。
这一审理意见目前已经存在于法学院的知识产权课上。随着科技领域吸引越来越多的资金,科技律师也逐渐涌现以满足这一需求。
在采访结束几小时后,他给我发送了一封主题为“找到错误”的电子邮件,告诉我他已经弄清楚了短波无线电程序的错误。
我回想起在他办公室的最后时刻。当我正在收拾录音笔和笔记本时,我叫他“极客法官”,只是这一称呼让他很困惑,他问道:“这是一件好事吗?”
当我坚持这一称呼时,他笑了笑表示回应。“在我那个时代,成为一个极客并不是你想要的。”