从 MIT 协议谈契约精神
作者 | 衛劍釩
來源 | 微月人話(ID:man-mind)
以前看到過李笑來講的發生在他身上的故事,說他當年 ( 2001年 ) 住在雙榆樹,經常去雙安商場的地下超市買東西,有一次買了個什么東西覺得不好,要退,超市服務員說按規定,該類商品售出一概不能退,李笑來大怒,說你把書面規定拿出來,有的話我就不退了,如果沒有,那我就一定要退,最后叫來了超市經理,經理一看這來者不善啊,也吵不過李笑來,就給退了。
講這個故事想說明什么呢,其實我們都明白,20多年前的中國超市,很多管理規定都是口頭上的,怎么會寫成白紙黑字呢。
從超市服務員的角度看,李笑來這行為就是搗亂,是胡攪蠻纏;李笑來則肯定覺得是在維護自己正當的消費者權益;最受震動的應該是超市管理層,如果是我,我會立刻要求起草一個關于退換貨的規定,我可真不想再遇到下一個這樣的人。
這就是契約精神,說好的,都寫下來,寫下來的,我都認。
現在說MIT協議。
MIT協議就是大名鼎鼎的開源軟件許可協議The MIT License,又稱MIT許可證。
有人在兩年前專門做過分析1,MIT是Github上使用率最高的許可證,第二名到第五名是Apache 2.0、GPL 2.0、GPL 3.0和bsd-3-clause。
注:本文中,“MIT協議”和“MIT許可證”等同。
什么是開源許可證?
開源許可證是這樣的,我把源碼放網上了,如果還不錯,就有很多人問我了,說你那個代碼能不能讓我用用?你那個代碼我能不能放在我的產品里啊?你那個代碼我用了,怎么那么多Bug啊?你那個代碼我想當作教學案例使用,請問是不是可以啊?還有,你那個代碼我用了,感覺不錯,而且我還改了很多地方,我也把它放網上了,而且我還改了個名,你沒有意見吧?你有意見我也準備改名了,因為現在這個軟件中,我寫的代碼,比你寫的多多了!
(這都是比較有版權意識的,怕不問你就用以后惹上官司。)
我可懶得回答這么多問題,我把這些可能問到的問題,都寫成一段話,放在我的代碼里,意思就是說:
我允許你們XXX,我許可你們XXXX,你們可以XXXX,但是,你們必須XXXX,如果你們XXXX了,你們就必須XXXX,對了,對于XXXX這些情況,我可不負責。
你要同意,就用,不同意就別用。如果你用了,但違反了許可證的要求,我可能會告你啊!
這就是許可證。
你可以自己寫一個許可證,但是如果你很懶的話 ( 一般人都很懶 ) ,你可以用別人寫的比較好的許可證。
寫的比較好的開源許可證有很多種,比如GPL、BSD、MIT、Apache等等,MIT只是其中的一個。
你可以挑一個合你胃口的,這些許可證模版都是免費的,畢竟也沒人指望這個賣錢。
至于它們的區別,可以看看下面這張圖接受一下科普。
“新蜂商城”事件
前段時間有一個叫做“新蜂商城”(簡稱“新蜂”)的開源項目有點新聞,它使用了MIT許可證,其作者被人告知說,哎,你的開源軟件被人在網上賣哎,你不管管嗎?
作者一看,還真是,有up主在b站上賣,有人在閑魚上賣,雖然賣的也不貴,有賣300的,有賣幾十的,但一眼望過去,很顯然賣的就是自己的“新蜂”嘛!
然后就有點熱鬧,有人說這是侵權,要聲援作者,控訴有人如此無恥;有人說這不算侵權,MIT是很寬松的協議,基本上你什么都可以干,只要保留作者版權即可。
作者倒是沒有想去怎么處理,作者只是覺得“我抽出下班時間,斷斷續續寫了半年的項目,不是心血也算是我的小作品吧,開源出去就是給你這么玩的?佩服。”
大概作者還是比較年輕,不懂人世間的險惡吧!
其實這應該是預料中的事。
不應該有任何心理波瀾。
更何況,MIT許可證,允許別人賣你的源碼!
從契約精神講,說好允許別人做,就讓別人做吧。
這里面有個新手不太能想明白的問題,為啥有許可證允許別人賣自己的開源軟件?
這要談到開源的精神了。早期玩開源的人,開源自己的代碼,大多不是為了賣軟件,大多都有著開放、共享、自由、打破壟斷等等比較理想化的情結,唯一可圖的大概也就是個“名”,所以幾乎所有許可證都要求保留作者名字。
為了更好地傳播自己的代碼,開源作者通常允許別人賣自己的源碼。初期會考慮這樣的情況:如果有人把Linux源碼刻錄成光盤發放,是不是應該收點成本費呢,再或者服務費?
那如果有人以此牟取暴利呢,豈不是很虧?通常不會。因為既然能在網上免費下載源碼,明白人就不會再去花大價錢去買。
而且,如果作者發現真有人能使用自己的源碼牟取暴利,完全可以不授權讓他從中牟利,改許可證就可以了。這種事也不是沒有發生過,而且還不是個例。
比如開源云原生SQL數據庫CockroachDB宣布修改開源協議,從原本的Apache-2.0協議修改為BSL ( Business Source License ) ,該協議要求用戶唯一不能做的是在沒有取得授權的情況下以商業形式用 CockroachDB 提供數據庫即服務 ( DBaaS ) 。
BSL由MySQL的開發者邁克爾·蒙蒂·維德紐斯 ( Michael "Monty" Widenius ) 在2013年設計。它有三個主要特點,一是非商業性使用沒有限制,商業性使用有限制;二是許可證中可以附加使用者自己的要求;三是有一個change date,自此時間開始,源碼將會由BSL轉變為作者指定的其他許可證,如GPL等開源許可證。
依我看,閑魚上把“新蜂”賣個幾十塊錢,還搭上售后服務,也算正常吧。
MIT到底說了什么 ( 學英語!)
先看原文:
Copyright ( C )?
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files ( the "Software" ) , to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
英語不好的直接暈倒!
英語就算還可以的,想弄明白,也得看好一陣!
剖析其句子結構,其實就是下面這樣的,注意放在括號里面的,都不是句子的主干成分:
第一段:
Permission is?( hereby )?granted?( , free of charge, )?to any person?( obtaining a copy of ( this software and associated documentation files ( the "Software” ) ) ) ,?to deal in the Software without restriction,?( including without limitation the rights (?to use, copy, modify, merge, publish, distribute, sublicense, (?and/or?) sell copies of the Software, and to permit persons?( to whom the Software is furnished )?to do so?) ) ,?subject to the following conditions:
其大致意思就是:只要滿足以下條件,許可被賦予任何?( 獲得本軟件拷貝及相關文檔的 )?人?,這些人可以免費地、沒有限制地處理本軟件?( 包括隨意地使用、拷貝、合并、發布、分發、再許可、賣拷貝,以及再授權其他人?( 那些被裝配了本軟件的 )?做上面說的這些事?) 。
注意,and to permit persons這里的to permit,是和to use,to copy并列的,后面那個to do so,則是指代前面的的一系列權利,to whom the Software is furnished是修飾persons的,指的是被裝配、被配發本軟件的人。
再有一點比較有趣的是,這一長段被許可的選項中,后面出現了個and/or。
and/or一般用于連接兩個選項,比如A and/or B,意思就是說A or B or both。這段文字中,雖然and/or只連接最后兩個選項,但其用意似乎卻是連接所有。比如:A, B, C, D and/or E,想表達的是:A and/or B and/or C and/or D and/or E,意思就是A、B、C、D、E這些選項可以任意組合選用。這個寫法貌似嚴謹,實則多余。因為沒有它完全不影響對文本意思的理解,有了它反而還增加了疑惑。(在文學上或是法律用語上,對and/or用法的批評都比較多2。)
第二段:
The above copyright notice and this permission notice shall be included?( in all (?copies or substantial portions?) of the Software ) .
上面這句翻譯過來就是:以上版權聲明和許可聲明都必須包含 ( 在所有的本軟件的完整拷貝或者實質性成分中 ) 。所謂實質性成分,可以這樣理解,比如你對這個軟件做了修改,但只改了5%,那么版權聲明和許可證聲明都必須包含,如果你改了95%,那就未必需要了,具體多少需要,要看是不是實質上 ( substantially ) 仍然是人家的。
第三段:
THE SOFTWARE IS PROVIDED "AS IS”,?( WITHOUT WARRANTY OF ANY KIND ( , EXPRESS OR IMPLIED, ) ( INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ) )?IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE?( FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, (??WHETHER?( IN AN ACTION OF CONTRACT, TORT )??OR OTHERWISE?( , ARISING FROM, OUT OF OR IN CONNECTION WITH ( THE SOFTWARE OR ( ( THE USE OR OTHER DEALINGS ) IN THE SOFTWARE. ) ) ) ) )
這段話,主要是說本軟件是“AS IS”的,“AS IS”的意思就是“就這樣的”,售出 ( 或免費提供 ) 后一概不負任何責任,“別再找我,就這樣了”。有任何問題你就接受或者自己想辦法處理吧,反正我這里不再管了,就是這個意思。有時候我在“閑魚”上賣二手東西的時候,也真的想加一個標識“AS IS”,但是考慮到很多人不知道這個詞,也就算了。
上面這段全大寫的英文很長,但還好,不算很難,基本上就是:本軟件是AS IS的?( 不提供任何保證, ( 不管是顯式的還是隱式的,包括但不限于適銷性保證、適用性保證、非侵權性保證 ) ) ,在任何情況下,?( 對于任何的權益追索、損失賠償或者任何追責 ) ,作者或者版權所有人都不會負責。( 無論這些追責產生自合同、侵權,還是直接或間接來自于本軟件以及與本軟件使用或經營有關的情形 )?
適銷性 ( MERCHANTABILITY ) 就是說商品一旦售出 ( 雖然可能是免費的 ) ,如果確有問題,就可以退換貨,一般來說適銷性是缺省的保證 ( 即便沒有明示 ) ,法律會支持消費者對不合格產品的退換貨權利3。但對于AS IS這類商品而言,就是說你覺得不好使也別找我。你覺得根本沒法用 ( FITNESS FOR A PARTICULAR PURPOSE ) 也別找我,而且我也不保證我這軟件是不是侵權了。
MIT協議用了幾乎一半的篇幅來說這個,足以見其重要性,這是西方人很強的商品經濟意識和法律意識導致的。
這是一種撇清關系的態度,就是說,出了什么事都別找我,更別去法院告我。我給你們貢獻源碼,可不是想給自己找麻煩的,我又不掙你們的錢。
試想一下,如果在一個醫療設備的軟件中,使用了“本軟件”,結果由于bug導致醫療事故,結果追查下來,還要找我麻煩,那我怎么受得了!
把這個license里所有的主干挑出來,其實就是:
Permission is granted to any person to deal in the Software without restriction,subject to the following conditions:
The above copyright notice and this permission notice shall be included.
THE SOFTWARE IS PROVIDED "AS IS", IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE.
全文翻譯過來,大約是這樣,下面譯版的版權歸我哦:
MIT開源許可協議 ( 中文版翻譯:衛sir,遵循:CC-BY協議 )?
版權 ( C ) <這里填年份> <這里填版權者姓名>
特此向任何得到本軟件拷貝及相關文檔 ( 以下統稱“本軟件” ) 的人授權:被授權人有權使用、復制、修改、合并、發布、發行、再許可、售賣本軟件拷貝、并有權向被供應人授予同等的權利,但必須滿足以下條件:
在本軟件的所有副本或實質性使用中,都必須包含以上版權聲明和本授權聲明。
本軟件是“按原樣“提供的,不附帶任何明示或暗示的保證,包括沒有任何有關適銷性、適用性、非侵權性保證以及其他保證。在任何情況下,作者或版權持有人,對任何權益追索、損害賠償以及其他追責,都不負任何責任。無論這些追責產生自合同、侵權,還是直接或間接來自于本軟件以及與本軟件使用或經營有關的情形。
翻譯成大白話縮略版,大約是下面這樣的:
版權是我XXX的,源自XXXX這一年!
我授權任何人,可以干任何事,包括賣拷貝!
但是,你必須:
保留我的版權和許可!
這軟件就這樣的!愛用不用,出了事別找我!
我怎么用人家代碼才算合規?
使用一個用了MIT協議的源代碼,你只需要保留人家的版權和許可證信息即可。
也就是說要包含LICENSE文件,這個文件有完整的MIT許可證,其中也會有作者的版權信息。
人家源碼里面的版權和許可信息頭,你也得保留。
由于MIT協議并不要求使用者公開源碼,如果你發行的僅僅是可執行軟件(不帶源碼),那就要在軟件的某個界面上說明。
比如Google Chrome瀏覽器使用很多開源軟件,在其界面中都予以了明示。
在Chrome瀏覽器的“關于”中,有一句話:“Google Chrome 的誕生離不開 Chromium 開源項目以及其他開源軟件。”
點擊“開源軟件”,會打開一個頁面,列出了一長串的開源軟件、其LICENSE和主頁(或代碼托管地)。
下面是部分截圖:
這就很規范了。
我在里面隨便找個一個使用MIT協議的軟件:brotli
進入其代碼倉庫后,可以看到其源碼頭部是這么寫的。
/* Copyright 2013 Google Inc. All Rights Reserved.
Distributed under MIT license.
See file LICENSE for detail or copy at?https://opensource.org/licenses/MIT
*/
截圖如下:
注意這個用法,第一行是寫明了版權,下面則是對MIT許可證的一個引用。這樣顯得比較簡潔。
畢竟MIT許可證中唯一需要填寫的就是版權。所以把第一句的信息放這里就可以了,MIT許可證就不用動了。
注意版權是指這個軟件的著作權是誰的,許可證是指版權所有者允許別人怎么用這個軟件。
版權后面那句“All Rights Reserved”寫不寫都可以,這只是一個形式。真打到法院去,所有的權利都遵循著作權相關法律。
順便解釋一下版權中的年份概念:
軟件在發布時都會聲明版權,其中會包含年份,比如 Copyright 2012, Copyright 2008-2012等。如果只包含一個年份,說明這是首次發布的年份。如果包含時間段,則第一個年份為第一次發布的年份,第二個是當前版本發布的年份。
比如微軟的Windows XP 版權聲明:Copyright? 1985-2001 Microsoft Corp。說明Windows第一個版本發布在1985年,Windows XP版本發布年份為2001年。
我是作者,我如何使用MIT協議
如果我的開源軟件要使用MIT協議,我應該怎么做?
通常應該這么做:
在一級目錄下,給出一個LICENSE(或COPYING)文件,里面就是這個許可證的全文。
在所有的源碼頭部,說明版權,說明許可。
注:有的項目使用了多個許可證,會建一個licenses目錄放這些許可證。(比如cockroachdb)
版權那一行,你還可以寫上你軟件的主頁或者代碼存放地,一般來說,使用者都不應該刪除這行內容的。
舉個例子,“木蘭許可證”是這樣指導人們使用的:
那么,“新蜂”是怎么做的?
我專門去“新蜂”的github倉庫看了一眼,沒錯,作者在一級目錄下放了LICENSE文件。
打開LICENSE文件,可以看到:
年份寫成了2019-2029,版權所有人寫成了newbee-mall。
這是需要改進的,年份不應該寫到2029去,應該寫到當前版本發布的年份。
版權所有人應該寫作者“十三”(或“13”)而不是軟件的名字。
看看源碼里面是怎么寫的:
翻了一遍,沒有發現在任何源碼的頭部有版權和許可信息,這個做法也不規范。
可見,作者十三對開源許可證并沒有研究過。
一些問題解答
我能改許可證嗎??當然可以。(MIT允許你干任何事)
所以說,MIT協議和其他協議的兼容性很強(其實是單向兼容),比如,完全可以把一個MIT協議的軟件改為GPL的,但一個GPL的可改不回MIT的。
我能自己寫一個許可證嗎??當然可以。
我能不寫任何許可嗎??當然可以,不寫許可,就是“保留所有權利”。你可以讓他們打電話問你,寫郵件問你,發微信問你,你再告訴他們可以干什么。
保留許可的意思基本上就是說,他們除了可以看你的源碼 ( 因為你自己把它開源了 ) ,除了著作權法里面說的權利,基本上啥也不能干。
如果我保留所有權利,那他有運行的權利嗎??如果他是為了學習、研究或者欣賞,是可以運行的。
他還可以評論您的軟件。
因為我國著作權法賦予了他這樣的權利:
現行的中華人民共和國著作權法 ( 2010修正 ) 第二十二條中規定:
在下列情況下使用作品,可以不經著作權人許可,不向其支付報酬,但應當指明作者姓名、作品名稱,并且不得侵犯著作權人依照本法享有的其他權利:?
( 一 ) 為個人學習、研究或者欣賞,使用他人已經發表的作品;?
( 二 ) 為介紹、評論某一作品或者說明某一問題,在作品中適當引用他人已經發表的作品;?
……
如果有人沒有按照我的許可做,怎么辦??你可以告他。
不過,能不能打贏官司又是另一個話題了!
參考鏈接:
https://www.kaggle.com/mrisdal/safely-analyzing-github-projects-popular-licenses
https://en.wikipedia.org/wiki/And/or
https://consumer.findlaw.com/consumer-transactions/what-is-the-warranty-of-merchantability.html
總結
以上是生活随笔為你收集整理的从 MIT 协议谈契约精神的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Node.js学习笔记(九)#log4j
- 下一篇: Intel GMA500显卡硬解码VAA