你怎麼看待攜程DynamicApk插件化框架的抄襲現象?
論Android開源的抄襲現象
開源本身是一件很公益的事情, 幫助他人, 熱情的光芒籠罩著代碼. 但是開源抄襲來的代碼算是怎樣的行為呢? 今天就以攜程的DynamicApk插件化框架為例來談談這件事. 其實我並不想談論這個話題,這個話題十分尖銳,也容易引起部分人的反感.但是看到了一些代碼,覺得有必要說一說了.
首先, 說人家copy總得有證據吧, 那麼我們先來看看發現的背景吧.
四個月前(2015年8月初) , BunnyBlue開源了一個名為OpenAtlas的插件化框架, 這個插件化的來源可能並非所有人知曉, 我在這裡概括一下:
2013年, 朱碧軍同學在阿里的一次技術沙龍中分享了一個插件化框架: Atlas ,這個框架用在淘寶的Android客戶端,沒有開源,沙龍中也沒有對該插件化的具體實現做講解.(阿里技術沙龍)
15年, BunnyBlue同學在研究淘寶客戶端時發現,Atlas框架沒有混淆的十分徹底(在com.android.atlas下),於是花了一些時間對其中代碼的實現進行了逆向,並在8月初開源了這一成果,並取名為OpenAtlas.
後來
,由於涉及到一些代碼來源方面的問題, OpenAtlas項目關閉,後改名為:ACCD(bunnyblue/ACDD · GitHub).
看到這裡,讀者應該可以聯想到,攜程的DynamicApk和這個插件化有關聯, 是的,沒錯.
我們來看看兩者的架構相似度(左Atlas, 右DynamicApk):
可以看到,架構是一樣的,DynamicApk只是精簡了一些和實現無關的代碼,而Hotpatch目錄下的代碼毫無存在感(@see MultiDex).
這不是關鍵,重要的是,作者刪去了原來的一切與author和開源協議有關的東西,統統改為自己的.
我們以SysHack.java為例來看一看亮點:
首先是原版的代碼
再看攜程的:
你發現了什麼, 這個代碼的創建日期可能是偽造的, 因為這個日期很不對頭.看了前面的背景分析應該懂的.
改別人的代碼難免有暴露的疏忽, 我們再看看有什麼遺漏的地方:
可以看到,攜程忘記把某個變數改名了.
以上是我對OpenAtlas同攜程DynamicApk的Compare, 各位歡迎在此討論.
看了下,ACDD用的是MIT協議,所以攜程對其修改再分發是沒有問題的。問題在於:修改/刪去了版權聲明。MIT多寬鬆的一協議,你還刪掉來源……確實很不地道。
不談協議的都是耍流氓
程序員用開源的東西,能叫抄襲嗎?
原本就是開源的不說,如果原本的項目是Apache2.0協議以上的話就更加沒話說。
況且,基於classloader的動態載入的核心原理都一樣,我更希望各家互相借鑒,產生終極的開源框。BunnyBlue花了一些時間對atlas進行逆向並把成果開源出來,似乎更符合題主描述的「開源抄襲來的代碼」這一現象?
為什麼攜程這種公司又回出現在我的TL里…路過下吧…我就不說我們公司某幾個架構完全照搬小米和阿里的了…沒辦法,架構師都是從那些公司出來的,人家主動【為了加官進爵?】分享給我們的…
這個問題比較尷尬,你說攜程學習別人框架代碼做修改這並沒有錯,但是這是否要寫上來源和來源協議那就要看攜程拿這代碼到底是功能性的照搬還是框架結構借鑒,如果攜程的初衷是覺得這個框架有很大的借鑒之用,然後以這個框架結構作為學習並重寫修改,那他自然覺得沒有照搬功能不存在要寫上別人來源的理由,但是如果這是功能性的模塊,那這樣拿過來用確實有點噁心
mit bsd之類的協議不是隨便怎麼玩的嘛
我最近也在看源碼,確實有抄襲之嫌。
開源是一種思想,把代碼給每個需要的開發者們去使用去參考,希望通過開源社區的力量,讓國內的技術有所提高和進步,而不是固步自封,竊竊自喜,只有大家都有所收穫,有所得才是一件值得開心的事。看一下源碼:1. gradle 腳本的打包流程完全是一套新的流程,而不是簡單的gradle assembleRelease。2.. Dynamic Apk issue 中有描述,bundle管理的源頭是來源於osgi 中 bundle的思想,去除了繁瑣的狀態機管理,更適合輕量的移動端管理。請參看:http://log4think.com/use-apache-felix-in-android/http://log4think.com/use-knopflerfish-in-android/希望對大家理解osgi bundle管理有幫助。
3 .Read me中有詳訴 dynamic apk 已經使用大半年了,也比2015年8月份來的早吧,不知道作者為什麼會認為創建日期是偽造的。
開源是一件好事,能把某方面的突破和經驗分享給更多的國內開發者,共同去促進技術的發展。作者是否覺得自己從國外了解到的技術,被其他開發者知道,並且開源給更多的開發者,內心受到了觸動,或失落或傷感,然后冠之以抄襲的2個字,去彰顯自我的驕傲嗎?說明某些攜程的程序員太懶了? 插件化這麼沒新意的東西, 都不肯自己輪一個,還好意思拿去當成自己的東西來開源? 這KPI也太好拿了吧
前攜程android開發路過,客戶端精英其實在2014年中打包去了阿里音樂,從總監到小兵。
Blue先生不僅逆向了別人的代碼,而且還公開了別人不想公開的部分。這就好比偷拍了別人的裸照,不僅自己看還公開給別人看。當然這不是最可恨的,最可恨的是他公開的並不是裸照~
在國內所謂開源即免費,免費就可以拿來隨意修改使用,天下程序一大抄嘛,商業源碼都有人拿來踢掉鉤子 繼續用 何況開源的。大環境就這樣,節約成本。
今天剛從攜程辦完離職
遵守開源世界的規則,開源協議不能違反。