首先,為什麼在一個技術論壇裡冒出這篇法律和知識産權相關的分享呢? 因為,開源和自由軟體是推動社會技術發展的重要力量,作為一個優秀的程式員,你一定會接觸,學習和使用到開源軟體,是以是一定要知道開源界最基本的遊戲規則的~~
那麼,今天我們來聊一下自由軟體界的“君子協定”,為什麼是打引号的君子協定?首先,開源協定,是具有法律效應的,但隻要不碰到關鍵底線,一般以不會被起訴,大多數是譴責形式,比如說你不尊重開源精神啊什麼的,事後都是可以彌補的:)是以我們還是叫他是君子協定 ~~
另外,下面的内容主要來自阿裡的資深知識産權律師、紐約大學法學院法律博士(j.d.)roger 老師的分享,不是出自我這個小程式員,我隻是幫忙整理和解說,是以根據君子協定,我一定要聲明原作者的著作權,嘿嘿~
• 什麼是開源軟體?
• 為什麼使用開源軟體?
• 使用開源軟體有哪些需要注意的地方? 君子協定的解讀
這個問題很簡單了,隻要是在網站上公開源代碼,公衆可以下載下傳的軟體,就是開源軟體了。 例如我們都知道的:linux, hadoop, android,mysql等等
另外,一些公司在網站上提供試用版商業軟體但不公開源代碼, 不算開源軟體。
有些軟體同時提供開源版本和商業版本, 比如gitlab是開源的,但隻是開源其ce社群版本,另外有收費的ee商業版本提供。
商業軟體就像教堂,神聖而高大,門檻很高,衣衫不整禁止入内 :)
開源軟體就像集市,吵吵嚷嚷,但是種類很多,選擇很多 :)
僅以下面表格說明,對開源軟體的質疑隻是自我的猜測:
對開源軟體的質疑
開源軟體的事實
個人興趣愛好者的業餘成果,不可靠?
參加開源的往往是進階軟體人才; 更加珍重自己的聲望 ->帶來品質的保證
沒有公司式的系統管理,不可靠?
多名進階人才閱讀源代碼、試用産品,保證産品的品質和安全
源代碼公開,無法收費?
确實難以收費,但是: 可以收取技術支援費用,可以提供收費的非開源版本; 并且,很多時候收費并不是目的
為什麼使用這裡不用過多解釋了,不僅僅是免費,首先能夠快速的得到,快速掌握達到一個基準的高度,并且經過社群和外部試用的認可,适合繼續修改研發,并再次回報回社群,引發良性循環,推動技術發展。
那麼,使用開源軟體,我們必須<code>遵守開源軟體的授權協定(license)</code> , 因為開源軟體作者擁有著作權,有<code>利用協定控制他方的權利</code>
開源協定有非常多種,但基本可以分為兩類:
一類叫做<code>學術型協定</code> ,即以聲明為主
另一類叫做<code>"copyleft"協定</code>,隻要你修改并發行,就必須開源你的代碼
下面就開始介紹這兩類協定。
學術型協定
“copyleft” 協定
常見要求
保留原作者的著作權聲明和免責聲明,修改處需要注明
除了學術型要求之外,如果基于開源軟體生成衍生作品并發行,則有可能規定衍生作品也屬于該協定控制,也<code>必須公開源代碼</code>
常用協定 舉例
apache, bsd, mit,php
<code>gpl, lgpl,(agpl)</code>
解釋一下, 學術型的協定:
例如我們最熟悉的apache 2.0 ,為什麼說是學術型,是對商業友好的開源協定呢? 因為他隻需要保證著作權(聲明作者是誰),免責聲明(聲明這是開源代碼,有問題可不負商業責任哦),修改處需要注明(你要是改了要注明是你改的哦,萬一改的很挫不能讓别人以為是原作者改的哦) 。
基本上可以認為,是以聲明為主,之後我們修改了,再開源或作為商業産品釋出/銷售,都是可以的。
解釋“copyleft”協定:
核心是基于<code>開源代碼的衍生作品,也必須開源。</code>
很多開源軟體都屬于gpl家族(gpl,lgpl,agpl) , 衆所周知的linux作業系統,核心和核心庫都是gpl協定的。
gpl的兩個兄弟,lgpl是相對友好的,agpl是更加嚴格的,後面會解釋agpl為什麼是更加嚴格。
有一些(不是所有)gpl開源程式的版權屬于free software foundation (fsf),這是一個較激進的開源組織,他們确實會通過法律手段來保護gpl的開源軟體,并不是譴責那麼簡單, 意思是告訴大家,他們是認真的。 下面這位就是這個組織的創始人richard stallman
阿裡不會批判任何一方的思想,但我認為fsf也是必須要存在的,沒有他們宣揚激進的理想主義理念,自由軟體社群就不會存在。雖然現在很多落地的都是調和,妥協的結果,但如果失去理想主義的引領和召喚, 這個落地的東西就會退回到完全的商業化。
重新回到正題,基于上面的簡單解釋, 使用學術型協定一般是不會有什麼風險的,但“copyleft”協定和公開源代碼之間就會有風險存在,下面詳細解釋協定裡的兩個關鍵概念
因為如果我們在使用過程中不生成衍生作品, 就不必公開源代碼。 那麼一定有同學疑問,什麼叫衍生作品?什麼樣的行為生成衍生作品?
修改開源源代碼 ,改了代碼肯定算衍生作品了。
把我們的源代碼和開源源代碼組合在一個檔案裡編譯(即等于修改開源源代碼) , 一起編譯也算哦。
最難了解的一種情況,我們的程式連結開源程式, 是否生成衍生作品?
gpl: 靜态連結生成衍生作品 ; 動态連結(即程式運作時才生成連結),是否生成衍生作品沒有法律定論
其他大多數開源協定(包括“病毒”型協定): 連結不生成衍生作品
簡單了解,靜态連結的庫(linux的.a和windows的.lib) , 動态連結庫(linux的.so,windows的.dll)
靜态庫和程式編譯在一起,任何情況下都能運作,是以在gpl系列裡,靜态連結都算衍生作品
動态連結顧名思義是程式啟動的時候才會連結,多個應用程式可以使用同一個動态庫,啟動多個程式的時候隻需要将動态庫加載到記憶體一次。
什麼情況下不會生成衍生作品呢?
開源程式和我們的程式在不同層面運作,比如linux是gpl的,我寫的程式在linux上運作,那不算,linux是作業系統程式,我是應用程式,不在一個層面上,不會被它的gpl感染而必須開源
遠端程式調用(remote procedure call)不會産生衍生作品 , 比如我寫的web程式,使用mysql或者mongodb作為資料庫,這都是以程序,服務調用為界,比動态連結更遠,是以也是不算的。
開源程式和我們的程式分别獨立運作沒有互動不會産生衍生作品
如果我們修改了開源源代碼但沒有發行,就不必公開修改過的源代碼,那麼什麼是發行?
首先,下載下傳到使用者端是發行, 這個很好了解。 即如果我們基于“copyleft” 協定産生了衍生作品,隻要提供使用者下載下傳使用,就必須對該使用者公開源代碼。
隻在公司内部使用不算發行, 部署在公司的機房,在伺服器端運作的系統和程式,比如淘寶網,比如大家用的各種郵箱産品,那隻是通過網絡與使用者進行互動,都<code>不算發行</code>。 但是:
<code>agpl, cpal, osl</code> (極少數非主流協定) 把通過網絡與使用者互動也當作發行 。
網上有段話對agpl解釋的非常到位,粘出來給大家參考:
這類協定的開源軟體非常少,但假如使用了上述協定的開源軟體,并修改了作為業務的某一個元件, 那就必須把整個系統的代碼開源。
如果我們的軟體包括開源軟體,則必須允許使用我方軟體的使用者為個人使用的目的修改開源軟體,并為調試修改版而 reverse engineer(反向工程)我方軟體
如果我隻發行開源軟體的機器代碼,則必須告知使用者如 何獲得開源源代碼
不能把開源軟體的商标名作為我們軟體的名字
如果向使用者發行,則必須在發行的軟體中包括授權協定的全文
如果我的軟體在運作時向使用者顯示我的版權聲明,則必 須也顯示所包括開源軟體的版權聲明
對用專利起訴開源軟體侵權的限制
開源協定要求
有可能出現的情況
保留原作者的著作權聲明和免責聲明
被程式員誤删除,或代碼裡沒有放聲明檔案
修改處需要注明
沒有注明
公開原開源軟體的源代碼,并告訴使用者如何獲得源代碼
沒有公開或沒有告訴使用者如何獲得
顯示開源軟體的著作權聲明
沒有顯示
<code>公開修改後的源代碼</code>
<code>沒有公開</code>
允許使用者反向工程
不允許
反軟體專利
告第三方使用開源軟體侵犯我方專利
這個表格看起來好像很危險,但其實除了紅色字型的錯誤,基本上是可以事後補救的。 好比沒有标注,沒有聲明,如果隻是當時的疏忽被别人譴責了,發現後給原作者道歉,承認一下錯誤,然後立刻補上。
隻有一條是無法事後補救的, 就是開源協定裡要求你公開修改後的代碼,你并沒有公開,這種情況下就已經違反開源協定的要求了,如果你本來不計劃開源的軟體變成必須開源,這就是無法補救的損失了。
同時,如果各位老闆準備購買、投資技術企業的話, 就必須了解該企業使用開源軟體、遵守開源協定的情況。 特别是如果計劃使用、整合該企業的軟體的話~
在協定介紹章節的最後, 列一下“copyleft”協定的主要條款總結,每個協定的感染性不同,可以看到agpl協定是在服務端運作也算發行的,是以這個協定謹慎使用,其他的都差不多。
開源協定
在伺服器端運作算不算發行?
修改開源源代碼要不要公開?
連結開源程式的程式是否也要公開?
cddl
否
是
cpl
epl
mpl
lgpl
gpl
是(動态連結無法律定論)
<code>agpl</code>
<code>是</code>
<code>是(動态連結無法律定論)</code>
“君子協定”相關的分享到此結束,最後說個八卦,近期以來最大的一場知識産權的官司。 因為在android中用了java,oracle向google索賠93億美元,大緻意思好像是java是gpl的,谷歌商業性使用了(android是apache協定,否則其他的手機廠商就不敢用了),就需要獲得許可。谷歌沒獲得許可,是以打起來了。 然後争論在api是不是受保護之類,經過6年之戰,在上個月判定google獲勝,大家有興趣的可以了解了解,不做評價:)
<a href="http://www.oschina.net/news/73876/6-yeasr-google-win">http://www.oschina.net/news/73876/6-yeasr-google-win</a>
<a href="http://arstechnica.com/tech-policy/2016/05/google-wins-trial-against-oracle-as-jury-finds-android-is-fair-use/">http://arstechnica.com/tech-policy/2016/05/google-wins-trial-against-oracle-as-jury-finds-android-is-fair-use/</a>