哎哟:Android里没有发现代码抄袭和大规模杀伤性武器

有时网上一些十足荒谬的言论会让我们无语。而且特别是当像Engadget这样享有一定知名度的网站发出这样的信息并当作圣经似的反复传唱时。“Google抄袭了Oracle的java代码,并把它们赋予新的许可证,当作产品发布,”今天早上他们就这样说。

很遗憾,这并不是实话。

事情起源于Florian Mueller 写的一篇文章,事实上他既不是律师也不是懂开发的,尽管他在电视上想扮演这样的角色。我下载并检查了所有他提到的文件,以我一个专业开发人员的知识对这些代码进行了分析,得出了跟Mueller的观点完全不同的结论。下面就是我的发现:

有两部分文件有问题。第一部分的七个文件(PolicyNodeImpl.java, AclEntryImpl.java, AclImpl.java, GroupImpl.java,
OwnerImpl.java, PermissionImpl.java, and PrincipalImpl.java)位于源代码树的单元测试区域。任何做开发的都会告诉你,单元测试是不会和产品一起发布的。单元测试只是一种内部使用的、在产品发布之前确保软件质量的工具而已。

第二部分的37个文件实际上是被打包成了一个叫 MMAPI.zip 的文件,放在某个目录下专门为某种芯片组提供的本地音频解码驱动。Florian 该认真的研究一下这个。我复查了这些编译文件,很显然这些文件并没有包含在Android的产品包里。有人把它们误传到了代码库里,其实都该直接把它们删掉。

我在第一部分的7个文件里还发现了一个奇怪的事情。Sun把这些文件公布在网上是要帮助开发人员进行调试、测试他们的代码。出于某种原因,Android和Harmony开发者把它们反编译了出来,然后再编译回去,他们并没有直接使用Sun提供的代码。后来,有人错误的把Apache许可信息错误的加到了这些文件的开始处,也许是用的某种自动脚本生成的。这就是所谓的大阴谋吗?那把它们替换为Sun的带有正确注释的原始文件吧。或者直接删掉它们,毕竟它们是不跟Android一起打包发布的。

更新:我发现Google已经注意到了这些文件。 2010年10月30日 PolicyNodeImpl.java 这个文件已经从源代码库中删除了,另外一些删除于2011年1月14日。开发人员 Dan Bornstein 留下的操作提示是“删除无用的测试”。但你仍然可以从历史记录里查看老的版本。

很遗憾,当 Engadget 和 Mueller 这样耸人听闻的文章中互联网上疯狂传阅、被读者留下了成百上千条评论时,乏味的事实真相却无人问津。

[英文原文:Oops: No copied Java code or weapons of mass destruction found in Android ]
分享这篇文章:

One Response to 哎哟:Android里没有发现代码抄袭和大规模杀伤性武器

  1. ConfusedCX says:

    这是广告呢,还是灌水呢,还是。。。

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据