哎喲:Android裡沒有發現程式碼抄襲和大規模殺傷性武器

類別: IT
標籤: 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 這樣聳人聽聞的文章中網際網路上瘋狂傳閱、被讀者留下了成百上千條評論時,乏味的事實真相卻無人問津。

哎喲:Android裡沒有發現程式碼抄襲和大規模殺傷性武器原文請看這裡

推薦文章