當你決定把代碼開源之前先選擇一個合適的 License

rqia3888 7年前發布 | 11K 次閱讀 開源

這幾天同事 @leoashin 折騰了一個自己的博客,問我選擇什么協議。這讓我想起了之前我遇到的 2 件事。

第一件事發生在知乎,當時有人邀請我回答一個問題: 開源 App 被人抄襲到 iOS App Store 怎么辦?

事情的經過大概是,@coderyi 開發了一款開源播放器 ElevenPlayer,并于去年 9 月 21 日在 App Store 上架,沒想到被 7 個人“抄襲”,功能與視覺上幾乎一樣,一個總榜 70 名,還一個是付費分類榜 21 名。

對于此種情況,大多數同學都是聲援的態度。由于之前我也在各大網絡平臺聲討過種種抄襲盜版事件,這次自然也要去支援一下。但是當我去看了作者在 github 開源的代碼后,又有些犯難了。

于是我在知乎寫道:

說點作者不愛聽的。

代碼最初使用了 MIT License,這應該是對使用者限制最少的協議了吧。使用者可以閉源分發,可以將代碼商用。前提是只需要附帶一份原協議。

但是別人如果推廣的好,或者修改的好,原作者有可能不會從中收益。

我看了作者的代碼庫,也看了代碼提交歷史,其中好幾條注釋為:“由于某些原因作品從 MIT 協議改變成采用 CC Attribution-NonCommercial 中文:署名-非商業性使用協議”。看來作者也意識到問題了,臨時修改了協議,然而并沒有什么卵用了,因為開發者依然可以在之前代碼基礎上進行二次開發。

所以啊:選擇開源協議要謹慎。

大家還記得 MacOS 和 BSD 的歷史嗎?

蘋果公司看到 BSD 這么優秀的開源系統后,眼前一亮:

源碼可以改。

可以閉源。

好,那我就閉源。

可以商用。

哇,正合我意。

最氣人的是,改完的 MacOS 比 BSD 還漂亮、還好用。

這 TM 就尷尬了。

這 TM 就尷尬了。

這 TM 就尷尬了。

那讓我們回過頭來再看看作者開發的這款軟件,是百分之百原創嗎?很顯然不是,作者使用了 ffmpeg、kxmovie、YiRefresh 等開源代碼,由于我沒有下載安裝作者的這個 APP,也就不評價作者有沒有按照開源協議去使用這些開源代碼。但是從作者文中體現出來的開源認知水平來看,作者應該“違規”使用了這些開源代碼。

那我在上文中提到的 MIT License 到底是什么呢?

License 就是版權許可證,里面詳盡表述了你獲得代碼后擁有的權利,可以對別人的作品進行何種操作,何種操作又是被禁止的。我們常用的開源軟件協議大致有GPL、BSD、MIT、Mozilla、Apache 和 LGPL。

那么到底該選擇哪一個 License 呢?烏克蘭程序員 Paul Bagwell 畫了一張分析圖(下圖為阮一峰漢化版)

還有一張更全面并略帶惡搞性質的圖片,由 diycode 社區的 @flniu 進行漢化:

第二件事發生在 v2ex 社區,帖子標題為: 竟然有人直接復制我代碼,而不 fork 的!

看到這個標題我就懵了——難道不可以嗎!!??(黑人問號.jpg)

之前開發的親戚關系計算器竟然讓人直接拷走…… 簡直無語了,開源就可以隨便來么?直接代碼拷走,放自己倉庫就成自己的了。。。。

????

難道不是嗎?!

關鍵是!為什么唯一的一個提交顯示的是我提交的?可界面顯示確實不是 fork 我的,難道 github 出錯了,fork 會斷掉關系嗎?

作者開發的“親戚關系計算器”確實不錯,我也用過。對于這種開發者我們應該敬佩。但是作者的言論卻暴露了自己根本不懂開源。誠然,作者選擇把自己的代碼放到 github 或者其他開源社區,當別人 star 或者 fork 了自己的代碼,作者也會為自己的努力感到欣慰。

哪個所謂的“抄襲者”到底錯在哪里了?答案是,沒有任何錯誤。

“抄襲者”并沒有篡改原作者的任何 commit 記錄,LICENSE 和版權信息也絲毫沒動。

很多人以為在 github 上開源代碼就是在推廣自己了,當發現別人用自己的代碼做的事情比自己還好,就又心里不平衡了。他們把自己的代碼放到 github 等待別人 star,等待別人 fork,但是當別人使用了代碼卻沒有 fork 時,心里又不平衡了。

所以做開源,先擺好心態。

 

來自:https://zhuanlan.zhihu.com/p/24575976

 

 本文由用戶 rqia3888 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!