从MIT协议谈契约精神

作者

卫剑钒来源

微月人话(ID:man-mind)

以前看到过李笑来讲的发生在他身上的故事,说他当年(年)住在双榆树,经常去双安商场的地下超市买东西,有一次买了个什么东西觉得不好,要退,超市服务员说按规定,该类商品售出一概不能退,李笑来大怒,说你把书面规定拿出来,有的话我就不退了,如果没有,那我就一定要退,最后叫来了超市经理,经理一看这来者不善啊,也吵不过李笑来,就给退了。

讲这个故事想说明什么呢,其实我们都明白,0多年前的中国超市,很多管理规定都是口头上的,怎么会写成白纸黑字呢。

从超市服务员的角度看,李笑来这行为就是捣乱,是胡搅蛮缠;李笑来则肯定觉得是在维护自己正当的消费者权益;最受震动的应该是超市管理层,如果是我,我会立刻要求起草一个关于退换货的规定,我可真不想再遇到下一个这样的人。

这就是契约精神,说好的,都写下来,写下来的,我都认。

现在说MIT协议。

MIT协议就是大名鼎鼎的开源软件许可协议ThMITLicns,又称MIT许可证。

有人在两年前专门做过分析1,MIT是Github上使用率最高的许可证,第二名到第五名是Apach.0、GPL.0、GPL3.0和bsd-3-claus。

注:本文中,“MIT协议”和“MIT许可证”等同。

什么是开源许可证?

开源许可证是这样的,我把源码放网上了,如果还不错,就有很多人问我了,说你那个代码能不能让我用用?你那个代码我能不能放在我的产品里啊?你那个代码我用了,怎么那么多Bug啊?你那个代码我想当作教学案例使用,请问是不是可以啊?还有,你那个代码我用了,感觉不错,而且我还改了很多地方,我也把它放网上了,而且我还改了个名,你没有意见吧?你有意见我也准备改名了,因为现在这个软件中,我写的代码,比你写的多多了!

(这都是比较有版权意识的,怕不问你就用以后惹上官司。)

我可懒得回答这么多问题,我把这些可能问到的问题,都写成一段话,放在我的代码里,意思就是说:

我允许你们XXX,我许可你们XXXX,你们可以XXXX,但是,你们必须XXXX,如果你们XXXX了,你们就必须XXXX,对了,对于XXXX这些情况,我可不负责。

你要同意,就用,不同意就别用。如果你用了,但违反了许可证的要求,我可能会告你啊!

这就是许可证。

你可以自己写一个许可证,但是如果你很懒的话(一般人都很懒),你可以用别人写的比较好的许可证。

写的比较好的开源许可证有很多种,比如GPL、BSD、MIT、Apach等等,MIT只是其中的一个。

你可以挑一个合你胃口的,这些许可证模版都是免费的,毕竟也没人指望这个卖钱。

至于它们的区别,可以看看下面这张图接受一下科普。

“新蜂商城”事件

前段时间有一个叫做“新蜂商城”(简称“新蜂”)的开源项目有点新闻,它使用了MIT许可证,其作者被人告知说,哎,你的开源软件被人在网上卖哎,你不管管吗?

作者一看,还真是,有up主在b站上卖,有人在闲鱼上卖,虽然卖的也不贵,有卖的,有卖几十的,但一眼望过去,很显然卖的就是自己的“新蜂”嘛!

然后就有点热闹,有人说这是侵权,要声援作者,控诉有人如此无耻;有人说这不算侵权,MIT是很宽松的协议,基本上你什么都可以干,只要保留作者版权即可。

作者倒是没有想去怎么处理,作者只是觉得“我抽出下班时间,断断续续写了半年的项目,不是心血也算是我的小作品吧,开源出去就是给你这么玩的?佩服。”

大概作者还是比较年轻,不懂人世间的险恶吧!

其实这应该是预料中的事。

不应该有任何心理波澜。

更何况,MIT许可证,允许别人卖你的源码!

从契约精神讲,说好允许别人做,就让别人做吧。

这里面有个新手不太能想明白的问题,为啥有许可证允许别人卖自己的开源软件?

这要谈到开源的精神了。早期玩开源的人,开源自己的代码,大多不是为了卖软件,大多都有着开放、共享、自由、打破垄断等等比较理想化的情结,唯一可图的大概也就是个“名”,所以几乎所有许可证都要求保留作者名字。

为了更好地传播自己的代码,开源作者通常允许别人卖自己的源码。初期会考虑这样的情况:如果有人把Linux源码刻录成光盘发放,是不是应该收点成本费呢,再或者服务费?

那如果有人以此牟取暴利呢,岂不是很亏?通常不会。因为既然能在网上免费下载源码,明白人就不会再去花大价钱去买。

而且,如果作者发现真有人能使用自己的源码牟取暴利,完全可以不授权让他从中牟利,改许可证就可以了。这种事也不是没有发生过,而且还不是个例。

比如开源云原生SQL数据库CockroachDB宣布修改开源协议,从原本的Apach-.0协议修改为BSL(BusinssSourcLicns),该协议要求用户唯一不能做的是在没有取得授权的情况下以商业形式用CockroachDB提供数据库即服务(DBaaS)。

BSL由MySQL的开发者迈克尔·蒙蒂·维德纽斯(Michal"Monty"Widnius)在年设计。它有三个主要特点,一是非商业性使用没有限制,商业性使用有限制;二是许可证中可以附加使用者自己的要求;三是有一个changdat,自此时间开始,源码将会由BSL转变为作者指定的其他许可证,如GPL等开源许可证。

依我看,闲鱼上把“新蜂”卖个几十块钱,还搭上售后服务,也算正常吧。

MIT到底说了什么(学英语!)

先看原文:

Copyright(C)

Prmissionishrbygrantd,frofcharg,toanyprsonobtainingacopyofthissoftwarandassociatddocumntationfils(th"Softwar"),todalinthSoftwarwithoutrstriction,includingwithoutlimitationthrightstous,copy,modify,mrg,publish,distribut,sublicns,and/orsllcopisofthSoftwar,andtoprmitprsonstowhomthSoftwarisfurnishdtodoso,subjcttothfollowingconditions:

ThabovcopyrightnoticandthisprmissionnoticshallbincluddinallcopisorsubstantialportionsofthSoftwar.

THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSORIMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY,FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALLTHEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHERLIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISINGFROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHERDEALINGSINTHESOFTWARE.

英语不好的直接晕倒!

英语就算还可以的,想弄明白,也得看好一阵!

剖析其句子结构,其实就是下面这样的,注意放在括号里面的,都不是句子的主干成分:

第一段:

Prmissionis(hrby)grantd(,frofcharg,)toanyprson(obtainingacopyof(thissoftwarandassociatddocumntationfils(th"Softwar”))),todalinthSoftwarwithoutrstriction,(includingwithoutlimitationthrights(tous,copy,modify,mrg,publish,distribut,sublicns,(and/or)sllcopisofthSoftwar,andtoprmitprsons(towhomthSoftwarisfurnishd)todoso)),subjcttothfollowingconditions:

其大致意思就是:只要满足以下条件,许可被赋予任何(获得本软件拷贝及相关文档的)人,这些人可以免费地、没有限制地处理本软件(包括随意地使用、拷贝、合并、发布、分发、再许可、卖拷贝,以及再授权其他人(那些被装配了本软件的)做上面说的这些事)。

注意,andtoprmitprsons这里的toprmit,是和tous,tocopy并列的,后面那个todoso,则是指代前面的的一系列权利,towhomthSoftwarisfurnishd是修饰prsons的,指的是被装配、被配发本软件的人。

再有一点比较有趣的是,这一长段被许可的选项中,后面出现了个and/or。

and/or一般用于连接两个选项,比如Aand/orB,意思就是说AorBorboth。这段文字中,虽然and/or只连接最后两个选项,但其用意似乎却是连接所有。比如:A,B,C,Dand/orE,想表达的是:Aand/orBand/orCand/orDand/orE,意思就是A、B、C、D、E这些选项可以任意组合选用。这个写法貌似严谨,实则多余。因为没有它完全不影响对文本意思的理解,有了它反而还增加了疑惑。(在文学上或是法律用语上,对and/or用法的批评都比较多。)

第二段:

Thabovcopyrightnoticandthisprmissionnoticshallbincludd(inall(copisorsubstantialportions)ofthSoftwar).

上面这句翻译过来就是:以上版权声明和许可声明都必须包含(在所有的本软件的完整拷贝或者实质性成分中)。所谓实质性成分,可以这样理解,比如你对这个软件做了修改,但只改了5%,那么版权声明和许可证声明都必须包含,如果你改了95%,那就未必需要了,具体多少需要,要看是不是实质上(substantially)仍然是人家的。

第三段:

THESOFTWAREISPROVIDED"ASIS”,(WITHOUTWARRANTYOFANYKIND(,EXPRESSORIMPLIED,)(INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY,FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.))INNOEVENTSHALLTHEAUTHORSORCOPYRIGHTHOLDERSBELIABLE(FORANYCLAIM,DAMAGESOROTHERLIABILITY,(WHETHER(INANACTIONOFCONTRACT,TORT)OROTHERWISE(,ARISINGFROM,OUTOFORINCONNECTIONWITH(THESOFTWAREOR((THEUSEOROTHERDEALINGS)INTHESOFTWARE.)))))

这段话,主要是说本软件是“ASIS”的,“ASIS”的意思就是“就这样的”,售出(或免费提供)后一概不负任何责任,“别再找我,就这样了”。有任何问题你就接受或者自己想办法处理吧,反正我这里不再管了,就是这个意思。有时候我在“闲鱼”上卖二手东西的时候,也真的想加一个标识“ASIS”,但是考虑到很多人不知道这个词,也就算了。

上面这段全大写的英文很长,但还好,不算很难,基本上就是:本软件是ASIS的(不提供任何保证,(不管是显式的还是隐式的,包括但不限于适销性保证、适用性保证、非侵权性保证)),在任何情况下,(对于任何的权益追索、损失赔偿或者任何追责),作者或者版权所有人都不会负责。(无论这些追责产生自合同、侵权,还是直接或间接来自于本软件以及与本软件使用或经营有关的情形)

适销性(MERCHANTABILITY)就是说商品一旦售出(虽然可能是免费的),如果确有问题,就可以退换货,一般来说适销性是缺省的保证(即便没有明示),法律会支持消费者对不合格产品的退换货权利3。但对于ASIS这类商品而言,就是说你觉得不好使也别找我。你觉得根本没法用(FITNESSFORAPARTICULARPURPOSE)也别找我,而且我也不保证我这软件是不是侵权了。

MIT协议用了几乎一半的篇幅来说这个,足以见其重要性,这是西方人很强的商品经济意识和法律意识导致的。

这是一种撇清关系的态度,就是说,出了什么事都别找我,更别去法院告我。我给你们贡献源码,可不是想给自己找麻烦的,我又不挣你们的钱。

试想一下,如果在一个医疗设备的软件中,使用了“本软件”,结果由于bug导致医疗事故,结果追查下来,还要找我麻烦,那我怎么受得了!

把这个licns里所有的主干挑出来,其实就是:

PrmissionisgrantdtoanyprsontodalinthSoftwarwithoutrstriction,subjcttothfollowingconditions:

Thabovcopyrightnoticandthisprmissionnoticshallbincludd.

THESOFTWAREISPROVIDED"ASIS",INNOEVENTSHALLTHEAUTHORSORCOPYRIGHTHOLDERSBELIABLE.

全文翻译过来,大约是这样,下面译版的版权归我哦:

MIT开源许可协议(中文版翻译:卫sir,遵循:CC-BY协议)

版权(C)这里填年份这里填版权者姓名

特此向任何得到本软件拷贝及相关文档(以下统称“本软件”)的人授权:被授权人有权使用、复制、修改、合并、发布、发行、再许可、售卖本软件拷贝、并有权向被供应人授予同等的权利,但必须满足以下条件:

在本软件的所有副本或实质性使用中,都必须包含以上版权声明和本授权声明。

本软件是“按原样“提供的,不附带任何明示或暗示的保证,包括没有任何有关适销性、适用性、非侵权性保证以及其他保证。在任何情况下,作者或版权持有人,对任何权益追索、损害赔偿以及其他追责,都不负任何责任。无论这些追责产生自合同、侵权,还是直接或间接来自于本软件以及与本软件使用或经营有关的情形。

翻译成大白话缩略版,大约是下面这样的:

版权是我XXX的,源自XXXX这一年!

我授权任何人,可以干任何事,包括卖拷贝!

但是,你必须:

保留我的版权和许可!

这软件就这样的!爱用不用,出了事别找我!

我怎么用人家代码才算合规?

使用一个用了MIT协议的源代码,你只需要保留人家的版权和许可证信息即可。

也就是说要包含LICENSE文件,这个文件有完整的MIT许可证,其中也会有作者的版权信息。

人家源码里面的版权和许可信息头,你也得保留。

由于MIT协议并不要求使用者公开源码,如果你发行的仅仅是可执行软件(不带源码),那就要在软件的某个界面上说明。

比如GooglChrom浏览器使用很多开源软件,在其界面中都予以了明示。

在Chrom浏览器的“关于”中,有一句话:“GooglChrom的诞生离不开Chromium开源项目以及其他开源软件。”

点击“开源软件”,会打开一个页面,列出了一长串的开源软件、其LICENSE和主页(或代码托管地)。

下面是部分截图:

这就很规范了。

我在里面随便找个一个使用MIT协议的软件:brotli

进入其代码仓库后,可以看到其源码头部是这么写的。

/*CopyrightGooglInc.AllRightsRsrvd.

DistributdundrMITlicns.

SfilLICENSEfordtailorcopyat



转载请注明地址:http://www.huaxingjiuye.com/yspc/5135.html
  • 上一篇文章:
  • 下一篇文章:
  • 热点文章

    • 没有热点文章

    推荐文章

    • 没有推荐文章