如何写属于⾃⼰的license(软件协议)?
最为⽅便是 license 创建⽅式:当你在 GitHub 上你创建新的 repository 的时候,你可以直接选择⼀些⽐较好的 license:
license
以下是转载资料:如何为你的代码选择⼀个开源协议
随着你项⽬做得多了代码写得多了,你会发现编码过程中会不时⽤到其他⼈的成果,⼀个项⽬下来多少会引⼊⼀些优秀的库,别⼈放在公⽹上开源的 DLL,以及⼀些算法等等。细⼼的你会注意到即使只是⼀⼩段代码,优秀的作者都在最开始会简单地附上⼀段关于许可的声明,或者说是协议⽐如"Licensed under the MIT license",并且⼀些博客也会标明"此⽂章发表在 CC 协议下"。⽽如果我们 Copy 了别⼈的
代码或者⽂字同时没注意这些的话,在国外法律意识特别强的环境下,我们的作品会因触犯别⼈的权益⽽违法。因为好多开源协议最低要求是使⽤者需要保留原作者对代码的声明,不声不响地就拿来⽤了必然导致恶果。所以开源不等于免费,开源也不等于没有约束。
何为 License?
License 是软件的授权许可,⾥⾯详尽表述了你获得代码后拥有的权利,可以对别⼈的作品进⾏何种操作,何种操作⼜是被禁⽌的。软件协议可分为开源和商业。当然本⽂要讨论的当然是开源协议。
对于商业协议,或者叫法律声明、许可协议,每个软件会有⾃⼰的⼀套⾏⽂,由软件作者或专门律师撰写。这是什么惊为天⼈的东西嘛还得请专门的律师。因为涉及到以后侵权打官司这种事情,这种商业条款的⾏⽂是⾮常严谨⽽讲究的,记得以前看到句调侃的话:'如果法律⽂件不写得那么⽣涩难懂,律师们就没饭吃了',就是说任何⽂字⼀旦上升到法律的层次,不要说你接受完了九年义务教育,就是考了个专⼋也会觉得英语⽩学了,直接的法律协议什么的那不是给常⼈看的。⽽⾄于法律条款缘何会晦涩难懂,这个偏题有点偏远了,可以查看这⾥了解。
所以对于⼤多数⼈来说,不⽤⾃⼰花⼤把时间去写许可协议,选择⼀份⼴为流传的开源协议是个不错的选择,如果你的作品是开源的话,这样省时⼜省⼼。
选择⼀分协议的好处
你的作品如果不是定性为全商业性质,可以考虑选择⼀份流⾏度⽐较⾼的开源协议。具体来说的话,你肯定希望作品能够被多数⼈分享查阅吧,不但提⾼⾃⼰业界的知名度,同时也⽅便了需要的⼈为开源做出了贡献。换句话说,你不分享出来的话你的作品的意义何在呢(当然,⾃⼰捣腾的私⼈东西还是⾃⼰保留吧)?可是⼀旦你把你的代码贴出来,这就表⽰任何⼈都可以看到并获取,之后发⽣的事情你⽆法控制,有的⼈或许稍微修改⼀下放进⾃⼰的代码中,有的把你的软件改个名字拿去贩卖,有的甚⾄会拿去把作者名字改为⾃⼰然后拿去⼯作什么的,⽽不会有⼈知道这个作品的原作者,背后⾟勤付出了的⼈。所以为了公开分享你的代码,同时⼜让你对代码保留⼀定权利,在作品中声明⼀个许可协议是⾮常有必要的,这是很多新⼈所忽略的问题,同时很多⼈在使⽤别⼈的劳动成果时也会忽视协议的存在,这样不好。所以你会看到我的博客⾥⾯时不时会给出连接指向来源页⾯,同时⽂末也会列出所有参考过的⽂章。我相信我做到了这点,别⼈在转载我的⽂章的时候,也可以做到这点,这样营造出来的氛围⼀定会⾮常和谐,互相尊重/Show Respect。
当然有⼈会觉得,有了⼀分协议声明在那⾥,我就需要鸟你么,我拿来⽤了把作者名字去掉同时还要加上我的名字,你咬我?!这是后话,只是在利益很⼩的情况下,或者作者不知情的情况下,作者不会追究什么责任,但如果你的产品做成功了,那就不⼀定了。另外就是,有协议和没声明协议的裸代码是有⾮常重要区别的,⼀般作品当中没声明协议的默认为 Copy right 的,也就是版权保留。此种情况表明他⼈没有任何授权,不得复制分发修改使⽤等等,但⼀如上⾯所讨论的,这样的话还何来开源,何来分享呢。有了协议的声明,在未来你的维权上⾯会⽅便很多,让你的作
品在分享的同时保留了⾃⾝的⼀些权利。
快速选择
⽬前流⾏的开源协议有很多,并且同⼀款协议有很多变种,⽐如你或许看到过 ' CC Attribution-NoDerivs',' CC Attribution-NonCommercial' 同属 CC协议(后⾯会有介绍)。如此纷繁的协议该如何选择?协议太宽松会导致作者丧失对作品的很多权利,太严格⼜不便于使⽤者使⽤及作品的传播。所以除了协议多之外,你还要考虑你对作品想保留哪些权利,放开哪些限制。
如果你不想了解太多,只是想要⼀个简直直接的答案,下⾯给出的建议或许适合你。下⽅关于协议的选择及表格来⾃GitHub choosealicence项⽬。
简单宽松的协议
如果你只想要⼀个简单点的协议不想太⿇烦的话。
MIT协议相对宽松但还是抓住了要点的。此协议允许别⼈以任何⽅式使⽤你的代码同时署名原作者,但原作者不承担代码使⽤后的风险,当然也没有技术⽀持的义务。jQuery 和 Rails 就是 MIT 协议。
考虑有专利的情况
如果你的作品中涉及到专利相关。
Apache协议 也是个相对宽松与 MIT 类似的协议,但它简单指明了作品归属者对⽤户专利上的⼀些授权(我的理解是软件作品中含有专利,但它授权你可以免费使⽤)。Apache 服务器,SVN 还有 NuGet 等是使⽤的 Apache 协议。
代码分享与促进
如果你在乎作品的传播和别⼈的修改,希望别⼈也以相同的协议分享出来。
GPL(V2或V3)是⼀种版本⾃由的协议(可以参照 copy right 来理解,后者是版本保留,那 copyleft 便是版权⾃由,或者⽆版权,但⽆版权不代表你可以不遵守软件中声明的协议)。此协议要求代码分发者或者以此代码为基础开发出来的衍⽣作品需要以同样的协议来发布。此协议的版本 3 与版本 2 相近,只是多 3 中加了条对于不⽀持修改后代码运⾏的硬件的限制(没太明⽩此句话的内涵)。
各协议授权的名词解释
协议和版权信息(License and copyright notice):在代码中保留作者提供的协议和版权信息
声明变更(State Changes):在代码中声明对原来代码的重⼤修改及变更
公开源码(Disclose Source):代码必需公开。如果是基于LGPL协议 下,则只需使⽤的开源代码公开,不必将整个软件源码公开
库引⽤(Library usage):该库可以⽤于商业软件中
责任承担(Hold Liable):代码的作者承担代码使⽤后的风险及产⽣的后果
商标使⽤(Use Trademark):可以使⽤作者的姓名,作品的Logo,或商标
附加协议(Sublicensing):允许在软件分发传播过程中附加上原来没有的协议条款等
协议描述
jquery是什么软件
Apache⼀个较宽松且简明地指出了专利授权的协议。
GPL 此协议是应⽤最为⼴泛的开源协议,拥有较强的版权⾃由( copyleft )要求。衍⽣代码的分发需开源并且也要遵守此协议。此协议有许多变种,不同变种的要求略有不同。
MIT宽松简单且精要的⼀个协议。在适当标明来源及免责的情况下,它允许你对代码进⾏任何形式的使⽤。
Artistic Perl 区尤为钟爱此协议。要求更改后的软件不能影响原软件的使⽤。
BSD较为宽松的协议,包含两个变种BSD 2-Clause 和BSD 3-Clause,两者都与MIT协议只存在细微差异。
Eclipse 对商⽤⾮常友好的⼀种协议,可以⽤于软件的商业授权。包含对专利的优雅授权,并且也可以对相关代码应⽤商业协议。
LGPL 主要⽤于⼀些代码库。衍⽣代码可以以此协议发布(⾔下之意你可以⽤其他协议),但与此协议相关的代码必需遵循此协议。
Mozilla Mozilla Public License(MPL 2.0)是由Mozilla基⾦创建维护的。此协议旨在较为宽松的BSD协议和更加互惠的GPL协议中寻⼀个折衷点。
No license 你保留所有权利,不允许他⼈分发,复制或者创造衍⽣物。当你将代码发表在⼀些⽹站上时需要遵守该⽹站的协议,此协议可能包含了⼀些对你劳动成果的授权许可。⽐如你将代码发布到GitHub,那么你就必需同意别⼈可以查看和 Fork你的代码。
Public
domain dedicatio n 在许多国家,默认版权归作者⾃动拥有,所以Unlicense协议提供了⼀种通⽤的模板,此协议表明你放弃版权,将劳动成果⽆私贡献出来。你将丧失对作品的全部权利,包括在MIT/X11中定义的⽆担保权利。
协议描述
⾮代码类作品的协议
上⾯各协议只是针对软件或代码作品,如果你的作品不是代码,⽐如视频,⾳乐,图⽚,⽂章等,共享于公众之前,也最好声明⼀下协议以保证⾃⼰的权益不被侵犯。针对⾮代码的数字作品的协议,最通⽤的莫过于Creative Commons(也是你经常在别⼈博客下⾯可以看到的CC协议)协议。所以现在你见到博客园别⼈⽂章下⾯的签名就不会感到陌⽣了。
⽆协议
你没有义务也没⼈⾮要你必需在⾃⼰的代码作品⾥⾯加上⼀个开源协议。但⼀如上⽂所讨论过的优点,如果你想把代码分享出来,最好还是选择⼀个适合的开源协议,这样别⼈⽤着放⼼。
Reference
github/github/choosealicense
choosealicense/
www.smashingmagazine/2011/06/14/understanding-copyright-and-licenses/

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。