技术分享 | 如何为你的代码选择一个合适的开源协议?

学习阮一峰老师-互联网协议笔记(IP/UDP/TCP/HTTP) 学习阮一峰老师互联网协议-笔记 阅读详情

作者:卢文双 资深数据库内核研发

近期公司全面拥抱开源,在选择开源协议方面遇到了一些问题,查阅了很多资料,特此总结~~

前言

对于很多刚踏入开源软件这个行业的小伙伴来说,在编码过程中难免会用到其他人的成果,如果你足够细心,很容易注意到即使是一小段代码,优秀的作者都在文件开头附上一段关于版权的声明,比如 Licensed under the MIT license。同时,一些博客也会标明”此文章采用 CC BY 4.0 CN 协议“。

如果我们拷贝了别人的代码或文章却没注意版权问题,在国外法律意识特别强的环境下(国内版权意识也在逐步加强),那么我们的作品会因触犯别人的权益而违法。即使是最开放的开源协议,最低要求也是保留原作者对代码的声明,所以开源不等于免费,也不等于没有约束。

何为 LICENCE?

LICENCE 是软件的授权许可,详细说明了获得代码后拥有的权利,哪些操作是允许的,哪些操作是禁止的。软件的版权许可证可有很多方式,本文仅限于讨论开源软件协议 Open Source License。

对于大多数人来说,没必要花大把时间去写许可协议,选择一种比较流行的开源协议就足够了,省时省力,更便于自己作品的传播,于人于己都有利。

PS:

说句题外话,很多国外开发者在尊重他人劳动成果方面做得很好,如果A的作品是因为B的作品的启发而来,A甚至都没有使用B任何一句代码,但A会在他的作品里面指明是受到了B的启发:Inspired by XXX link: http://www.xxxx.com。

快速选择开源协议

如果你不想了解太多,只是想要一个简直直接的答案,下面给出的建议或许适合你。本小节关于协议地址来自于 GitHub choosealicence 。

简单宽松的协议:

如果你只想要一个简单点的协议不想太麻烦的话。

MIT协议相对宽松,此协议允许别人以任何方式使用你的代码同时署名原作者,但原作者不承担代码使用后的风险,当然也没有技术支持的义务。

考虑有专利的情况:

如果你的作品中涉及到专利相关。

Apache协议也是个相对宽松的协议,与MIT类似,但它指明了作者对用户专利上的一些授权(我的理解是软件作品中含有专利,但它授权你可以免费使用)。

促进代码分享:

如果你在乎作品的传播和别人的修改,希望别人也以相同的协议分享出来。

GPL(V2或V3)协议要求代码分发者或者以此代码为基础开发出来的衍生作品需要以同样的协议来发布,也必须开源,因此,该协议具有”传染性“。

乌克兰程序员 Paul Bagwell 画了一张分析图,说明应该怎么选择。只用两分钟,你就能搞清楚这六种开源协议之间的最大区别。

Paul Bagwell 开源协议分析

国内大神阮一峰的汉化版本:

国内大神阮一峰开源协议汉化版

主流开源许可协议(Open Source License)

世界上的开源许可协议(Open Source License)大概有上百种,常用的开源软件协议大致有:

由宽松到严紧排序,常用的开源协议有:

  1. MIT
  2. BSD
  3. Apache
  4. LGPL
  5. GPL

主要区别:

  • MIT、BSD 开源协议都源自大学,体现了简单、开放和包容的特点。
  • MIT、BSD、Apache 三者都支持闭源的后续开发。
  • GPL、LGPL 传染性开源,编译的代码里用了这里的代码,都必须开源。

MIT

来源于大学,MIT 开源协议是史上最为简洁、慷慨的开源协议之一。作者只想保留版权,而无任何其他了限制。也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的。

特点:

  • 用户可以拿你的代码做任何想做的事情。
  • 用户在项目副本中要包含版权声明和许可声明。
  • 你无需承担任何责任。

代表作品:

BSD

BSD可证也来源于大学,与MIT差不多,也非常简单、慷慨。

BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用、修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。前提是当你发布使用了BSD协议的代码,或者以BSD协议代码为基础开发自己的产品时,需要满足三个条件:

  1. 如果再发布的产品中包含源代码,则在源代码中必须带有原代码中的BSD协议。
  2. 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
  3. 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

BSD 开源协议鼓励代码共享,但需要尊重代码作者的著作权。BSD 开源协议允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布、销售,是对商业集成很友好的协议。因此,很多公司在选用开源产品的时候都首选BSD协议。

Apache Licence

来自 Apache,类似 MIT 开源协议,但它重视专利权。

Apache Licence 是著名的非盈利开源组织 Apache 采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许修改代码、再发布(作为开源或商业软件)。需要满足的条件也和BSD类似:

  1. 需要为使用代码的用户提供一份 Apache Licence 。
  2. 如果你修改了代码,需要在被修改的文件中说明。
  3. 在延伸的代码中(修改和由源代码衍生的代码中)需要带有原来代码中的协议、商标、专利声明和其他原作者规定需要包含的说明。
  4. 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有 Apache Licence 。你可以在Notice中增加自己的许可,但不可对 Apache Licence 构成更改。

Apache Licence 也是对商业应用友好的许可,使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。

代表作品:

LGPL

LGPL(GNU LESSER GENERAL PUBLIC LICENSE)来自于自由软件联盟GNU,可以翻译为更宽松的GPL协议,也属于传染性开源协议。

LGPL是GPL的一个主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同,LGPL 允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。

但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议,因此,LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。

GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品。

GPL

GPL(GNU GENERAL PUBLIC LICENSE)来源于自由软件联盟GNU,GPL/LGPL侧重于代码及衍生代码的开源与免费使用。

GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。

由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。

我们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用/引用/修改和衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。

其它细节和BSD/Apache等协议类似。

代表作品:

更多开源协议对比

下方表格中出现的用词的解释:

  • 协议和版权信息(License and copyright notice):在代码中保留作者提供的协议和版权信息。
  • 声明变更(State Changes):在代码中声明对原来代码的重大修改及变更。
  • 公开源码(Disclose Source):代码必需公开。
  • 库引用(Library usage):该库可以用于商业软件中。
  • 责任承担(Hold Liable):代码的作者承担代码使用后的风险及产生的后果。如果禁止,那么作者将不会承担责任,可以理解为免责条款。
  • 商标使用(Use Trademark):可以使用作者的姓名,作品的Logo,或商标。
  • 附加协议(Sublicensing):允许在软件分发传播过程中附加上原来没有的协议条款等。
协议描述要求允许禁止
Apache一个比较宽松且简明地指出了专利授权的协议。1. 协议和版权信息 \color{#0000FF}{协议和版权信息} 协议和版权信息
2. 声明变更 \color{#0000FF}{声明变更} 声明变更
1. 商用 \color{#00EE00}{商用} 商用
2. 分发 \color{#00EE00}{分发} 分发
3. 修改 \color{#00EE00}{修改} 修改
4. 专利授权 \color{#00EE00}{专利授权} 专利授权
5. 私用 \color{#00EE00}{私用} 私用
6. 附加协议 \color{#00EE00}{附加协议} 附加协议
1. 责任承担 \color{#FF3030}{责任承担} 责任承担(作者免责)
2. 商标使用 \color{#FF3030}{商标使用} 商标使用
GPL应用最广泛的开源协议,拥有较强的版权自由(copyleft)要求。
衍生代码的分发需开源并且也要遵守此协议。
此协议有许多变种,不同变种的要求略有不同。
1. 公开源码 \color{#0000FF}{公开源码} 公开源码
2. 协议和版权信息 \color{#0000FF}{协议和版权信息} 协议和版权信息
3. 声明变更 \color{#0000FF}{声明变更} 声明变更
1. 商用 \color{#00EE00}{商用} 商用
2. 分发 \color{#00EE00}{分发} 分发
3. 修改 \color{#00EE00}{修改} 修改
4. 专利授权 \color{#00EE00}{专利授权} 专利授权
5. 私用 \color{#00EE00}{私用} 私用
1. 责任承担 \color{#FF3030}{责任承担} 责任承担
2. 附加协议 \color{#FF3030}{附加协议} 附加协议
MIT此协议宽松简单。在适当标明来源及免责的情况下,它允许你对代码进行任何形式的使用。1. 协议和版权信息 \color{#0000FF}{协议和版权信息} 协议和版权信息1. 商用 \color{#00EE00}{商用} 商用
2. 分发 \color{#00EE00}{分发} 分发
3. 修改 \color{#00EE00}{修改} 修改
4. 私用 \color{#00EE00}{私用} 私用
5. 附加协议 \color{#00EE00}{附加协议} 附加协议
1. 责任承担 \color{#FF3030}{责任承担} 责任承担
ArtisticPerl社区最钟爱此协议。要求更改后的软件不能影响原软件的使用。1. 协议和版权信息 \color{#0000FF}{协议和版权信息} 协议和版权信息
2. 声明变更 \color{#0000FF}{声明变更} 声明变更
1. 商用 \color{#00EE00}{商用} 商用
2. 分发 \color{#00EE00}{分发} 分发
3. 修改 \color{#00EE00}{修改} 修改
4. 私用 \color{#00EE00}{私用} 私用
5. 附加协议 \color{#00EE00}{附加协议} 附加协议
1. 责任承担 \color{#FF3030}{责任承担} 责任承担
2. 商标使用 \color{#FF3030}{商标使用} 商标使用
BSD较为宽松的协议,有两个变种BSD 2-Clause 和BSD 3-Clause,两者都与MIT协议只存在细微差异。1. 协议和版权信息 \color{#0000FF}{协议和版权信息} 协议和版权信息1. 商用 \color{#00EE00}{商用} 商用
2. 分发 \color{#00EE00}{分发} 分发
3. 修改 \color{#00EE00}{修改} 修改
4. 私用 \color{#00EE00}{私用} 私用
5. 附加协议 \color{#00EE00}{附加协议} 附加协议
1. 责任承担 \color{#FF3030}{责任承担} 责任承担
Eclipse对商用非常友好的协议,可以用于软件的商业授权。包含对专利的优雅授权,也可以对相关代码应用商业协议。1. 公开源码 \color{#0000FF}{公开源码} 公开源码
2. 协议和版权信息 \color{#0000FF}{协议和版权信息} 协议和版权信息
1. 商用 \color{#00EE00}{商用} 商用
2. 分发 \color{#00EE00}{分发} 分发
3. 修改 \color{#00EE00}{修改} 修改
4. 专利授权 \color{#00EE00}{专利授权} 专利授权
5. 私用 \color{#00EE00}{私用} 私用
6. 附加协议 \color{#00EE00}{附加协议} 附加协议
1. 责任承担 \color{#FF3030}{责任承担} 责任承担
LGPL主要用于一些代码库。衍生代码可以以此协议发布(也可以用其他协议),但与此协议相关的代码必需遵循此协议。1. 公开源码 \color{#0000FF}{公开源码} 公开源码
2. 库引用 \color{#0000FF}{库引用} 库引用
3. 协议和版权信息 \color{#0000FF}{协议和版权信息} 协议和版权信息
1. 商用 \color{#00EE00}{商用} 商用
2. 分发 \color{#00EE00}{分发} 分发
3. 修改 \color{#00EE00}{修改} 修改
4. 专利授权 \color{#00EE00}{专利授权} 专利授权
5. 私用 \color{#00EE00}{私用} 私用
6. 附加协议 \color{#00EE00}{附加协议} 附加协议
1. 责任承担 \color{#FF3030}{责任承担} 责任承担
MozillaMozilla Public License(MPL 2.0)是由Mozilla基金创建维护的,旨在较为宽松的BSD协议和更加互惠的GPL协议中找一个折衷点。1. 公开源码 \color{#0000FF}{公开源码} 公开源码
2. 协议和版权信息 \color{#0000FF}{协议和版权信息} 协议和版权信息
1. 商用 \color{#00EE00}{商用} 商用
2. 分发 \color{#00EE00}{分发} 分发
3. 修改 \color{#00EE00}{修改} 修改
4. 专利授权 \color{#00EE00}{专利授权} 专利授权
5. 私用 \color{#00EE00}{私用} 私用
6. 附加协议 \color{#00EE00}{附加协议} 附加协议
1. 责任承担 \color{#FF3030}{责任承担} 责任承担
2. 商标使用 \color{#FF3030}{商标使用} 商标使用
No license作者保留所有权利,不允许他人分发,复制或者创造衍生物。
当你将代码发表在一些网站上时需要遵守该网站的协议,此协议可能包含了一些对你劳动成果的授权许可。比如将代码发布到GitHub,那么就必须同意别人查看和fork。
1. 协议和版权信息 \color{#0000FF}{协议和版权信息} 协议和版权信息1. 商用 \color{#00EE00}{商用} 商用
2. 私用 \color{#00EE00}{私用} 私用
1. 分发 \color{#FF3030}{分发} 分发
2. 修改 \color{#FF3030}{修改} 修改
3. 附加协议 \color{#FF3030}{附加协议} 附加协议
Public domain dedication在许多国家,默认版权归作者自动拥有,所以Unlicense协议提供了一种通用的模板。
此协议表明作者放弃版权,将劳动成果无私贡献出来,会丧失作品全部权利,包括在MIT/X11中定义的无担保权利。
1. N / A \color{#0000FF}{N/A} N/A1. 商用 \color{#00EE00}{商用} 商用
2. 分发 \color{#00EE00}{分发} 分发
3. 修改 \color{#00EE00}{修改} 修改
4. 私用 \color{#00EE00}{私用} 私用
1. 责任承担 \color{#FF3030}{责任承担} 责任承担

参考链接

  • https://github.com/github/choosealicense.com
  • https://opensource.org/licenses
  • https://www.cnblogs.com/Wayou/p/how_to_choose_a_license.html
  • https://zhuanlan.zhihu.com/p/87855729

欢迎关注我的微信公众号【数据库内核】:分享主流开源数据库和存储引擎相关技术。

标题网址
GitHubhttps://dbkernel.github.io
知乎https://www.zhihu.com/people/…
思否(SegmentFault)https://segmentfault.com/u/db…
掘金https://juejin.im/user/5e9d3e…
开源中国(oschina)https://my.oschina.net/dbkernel
博客园(cnblogs)https://www.cnblogs.com/dbkernel
常用开源代码协议详解 本文详细解析了9种常用开源代码协议,包括MIT、Apache2.0、BSD、GPL、LGPL和AGPL等,从宽松到严格分类介绍其核心条款和适用场景。通过决策树和兼容性矩阵,帮助开发者根据项目需求选择合适协议,如MIT适合广泛采用的开源库,GPL适用于强制开源项目,AGPL针对云服务防白嫖。同时澄清常见误区,强调保留版权声明的重要性,并提供实用资源链接。正确选择开源协议既保护开发者权益,也确保代码合规使用。 阅读详情

相关推荐

写了这么多年代码,开源协议你确定自己真的知道吗?

大家好,我是小麦,今天和大家分享一些开源协议的知识。 这些协议缩写词在各种代码、文档中随处可见,比如GPL、BSD、MIT、Mozilla、Apache和LGPL等等。 github新建仓库时协议选择 这么多协议,我们了解的有多少呢? 作为一名专业的嵌入式系统开发人员,了解这些开源协议是一种基本素养,特别是当你自己要开源一些东西的时候该如何选择开源协议就变得非常重要了! 下面对常见的几种做一下简单的介绍。 开源协议的作用 开源协议规定了你在使用开源软件时的权利和责任,也就是规定了你可以做什

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 1304

GitHub开源协议

开源协议很多,经过Open Source Initiative组织(OSI批准)通过批准的开源协议目前有58种,常用的MIT,GPL,Apache Licence 2.0,BSDMIT(MIT)MIT是和BSD一样宽范的许可协议,作者只想保留版权,而无任何其他了限制.也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的.GPL(GNU General Pub...

Osborn的博客 8656

从SVF文件到高效验证:Formality中set_svf命令的隐藏技巧与实战解析

本文深入解析Formality中set_svf命令的高级应用技巧,涵盖SVF文件生成策略、多文件加载优化及验证效率提升方法。通过-append和-ordered选项的实战应用,帮助工程师解决芯片验证中的常见问题,实现验证通过率与运行效率的双重提升。

mqtt6iot的博客 821

GitHub开源协议详解及常用协议介绍

前言: GitHub有许多开源的协议,刚开始使用时不知道选择哪些协议,今天我们就一起科普一下GitHub中的协议吧! 一、协议介绍 1. None / No License 如果你在使用GitHub中,没有选择协议默认是 No License, 这并不是代码什么协议也没有, 它表示: 不允许他人进行复制、分发、使用和修改。但是如果你把它上传到了github,那么默认允许他人查看(view)源码...

分享既学习 2万+

Tartancalib标定OAK-FFC_4p(上)

1.使用Tartancalib标定双目或多目相机前,先对单个相机标定获得内参,再获得外参。

qq_51731421的博客 1277

高通camera open代码流程(hal到kernel)

内容:简单介绍Camera open代码调用流程,从HAl到kernel。(api1+hal1) 前言 Android camera api和hal对应关系。安卓在版本更新过程中,camera相关代码也经历了几个版本的更新,表现为camera HAL版本更新(HAL1->HAL2->HAL3),camera API版本更新(camera API1->camera API2),接下...

oxoo123的专栏 4277

常见开源协议介绍

Mozilla协议是一种非常灵活的开源协议,它允许使用该协议的软件被任意使用、修改和分发,甚至可以将其用于商业用途。与Apache协议不同的是,Mozilla协议要求使用该协议的软件必须包含原始代码的版权声明和许可声明,并且必须包含一个通知文件。Apache协议是一种非常灵活的开源协议,它允许使用该协议的软件被任意使用、修改和分发,甚至可以将其用于商业用途。与BSD协议不同的是,Apache协议要求使用该协议的软件必须包含原始代码的版权声明和许可声明,并且必须包含一个通知文件。四、Apache协议。

GY的的专栏 7877

飞牛fnNAS个人小账本导入微信账单

本文介绍了将微信支付账单导入ezBookkeeping个人记账系统的详细方法。首先通过微信申请导出账单文件,接收后需进行Excel预处理:删除前导行、添加账户和分类列、整理金额格式等。在ezBookkeeping中需预先设置"微信"分类和账户。导入时需注意列映射关系,包括交易时间、账户名称等关键字段的对应设置。文章还提到处理交易标签、格式转换等细节问题,并建议避免使用"修改余额"功能。该方法同样适用于支付宝账单导入,解决了直接导入可能出现的格式不兼容问题。

dgnankai的专栏 483

走向开放、拥抱开源 —— 如何为代码选择一个合适的开源协议

对于很多刚踏入开源软件这个行业的小伙伴来说,在编码过程中难免会用到其他人的成果,如果你足够细心,很容易注意到即使是一小段代码,优秀的作者都会在文件开头附上一段关于版权的声明,比如 Licensed under the MIT license。同时,一些博客(如 优快云)也会标明“此文章采用 CC BY 4.0 CN 协议”。如果我们拷贝了别人的代码或文章却没注意版权问题,在国外法律意识特别强的环境下(国内版权意识也在逐步加强),那么我们的作品会因触犯别人的权益而违法。

流华追梦的专栏 1803

公文流转系统

公文录入区 | QLineEdit(文号/标题)、QComboBox(公文类型/紧急程度)、QTextEdit(正文)、QListWidget(附件列表)、QPushButton(上传附件/保存草稿/提交审批) |// 按时间范围获取。QStringList userNames = {"张三", "李四", "王五", "赵六", "钱七", "孙八", "周九", "吴十", "郑十一", "王十二"};

寒寒豆豆软件公司的博客 551

关于DEJA_VU3D - Cesium功能集专栏说明

专栏主要目的是对工作中基于Cesium实现过的功能进行整合,暂时打算一周2-3更的样子来更新,每一篇都会奉上完整源代码(尽可能把代码简洁一些)。功能实现大多数是自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小130个左右的功能,后续也会不断的更新。..........................................

总得学点什么的博客 2万+

如何为你的代码选择一个开源协议

相信很多刚踏入软件这个行业的小伙伴一如当初的我,对开源软件的各种协议不甚了解被搞昏了头脑。毕竟对于一个新生程序员来说,如何写好代码才是亟待解决的问题,无暇了解这些。随着你项目做得多了代码写得多了,你会发现编码过程中会不时用到其他人的成果,一个项目下来多少会引入一些优秀的库,别人放在公网上开源的DLL,以及一些算法等等。细心的你会注意到即使只是一小段代码,优秀的作者都在最开始会简单地附...

153

Unity零基础到入门☀️| 万字教程 讲解Unity中的数据存储 PlayerPrefs、XML、JSON【建议收藏】

本文章是Unity零基础到入门专栏的系列文章。 适合对Unity3D引擎感兴趣的小伙伴学习,偏向于新手学习! 本篇文章就来介绍一下Unity中三种基本的数据存储方式:PlayerPrefs、XML、JSON

努力前行,总会成为自己心中的那道光 8万+

GitHub如何选择合适的license(许可证)

对于大型的软件可能都有专门的律师团队去撰写软件协议。可是作为一名开发人员,有时候我们想开源自己的项目,但又不想自己的源代码被随意借鉴或者分享到别处。这个时候我们就可以设置license去约束一些行为。...

嗜雨的博客 8716

C# 工业视觉性能极致优化:多线程推理池 + 对象复用 + 批量检测,速度提升 10 倍实战

set;} // 输入图像set;} // 异步返回结果set;} // 用于监控延迟性能优化不是魔法,而是对资源生命周期的精细管理和对硬件特性的充分利用。多线程池解决了 CPU/GPU 闲置问题。对象池解决了 GC 停顿问题。零拷贝解决了总线带宽瓶颈。严格的 Dispose解决了内存泄漏问题。这套架构已在多个高速锂电、3C 电子检测产线落地,轻松应对 200ms 甚至 50ms 的严苛节拍。记住,在工业领域,稳定性与速度同等重要。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 310

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

如何选择开源协议

相信很多刚踏入软件这个行业的小伙伴一如当初的我,对开源软件的各种协议不甚了解被搞昏了头脑。毕竟对于一个新生程序员来说,如何写好代码才是亟待解决的问题,无暇了解这些。随着你项目做得多了代码写得多了,你会发现编码过程中会不时用到其他人的成果,一个项目下来多少会引入一些优秀的库,别人放在公网上开源的DLL,以及一些算法等等。细心的你会注意到即使只是一小段代码,优秀的作者都在最开始会简单地附上一...

145

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

各种开源协议

各种开源协议

_____ 3944

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

AI生成代码的法律边界:著作权归属与开源协议选择指南

随着人工智能技术的飞速发展,AI生成代码的能力越来越强大,在软件开发领域得到了广泛应用。然而,由此带来的法律问题也日益凸显,尤其是著作权归属和开源协议的选择。本文的目的就是深入剖析这些问题,为开发者、企业和法律从业者提供全面的指导,明确AI生成代码在法律层面的边界。本文的范围涵盖了AI生成代码的基本概念、著作权归属的判定原则、常见开源协议的特点及选择方法等方面。本文首先介绍了AI生成代码的核心概念以及相关的法律术语,为后续的讨论奠定基础。

AI 原生应用开发的博客 1106

Github选择开源协议指南

Github上没有 License 的内容是默认会被版权保护。所以如果你想要的是让大家都放心使用,就需要选择一个合适的 License ,只有这样才能赋予任何人使用,分享和修改这个软件的权力。 首先,我先要说,这个链接:http://choosealicense.online/ 已经很详细的说明了协议如何选择,这个网站我吹爆[滑稽] 以下是常用的协议,图片摘自以上链接,如果只是要简单选择,那么这张图可以解决你的问题 如果你想再详细了解一下,可以查看这张图(图片源: https://zhuanlan.z

先说一下,就简单地写点儿氵文,不是博客,只是我的笔记本/工具书 2730

聊聊主流开源协议

开源协议确保开发者能够保留对其原创作品的某些基本权利。例如,它们可以帮助开发者保留版权,确保他们的作品得到适当的认可,并防止他人未经许可地使用、修改或分发软件。这为开发者提供了一定程度的控制权和安全感,鼓励他们分享自己的工作成果。 开源协议不仅保护开发者,也为使用者提供了明确的权利和义务。使用者可以根据协议的规定自由地使用、复制、修改和分发软件,但同时也需要遵守协议中的条款。这种透明度有助于减少法律纠纷,确保使用者在合法的范围内使用软件。

梦起丶的博客 1666
上一篇: 捉虫日记 | MySQL 5.7.20 try_acquire_lock_impl 异常导致mysql crash
下一篇: 程序人生 | UNIX 环境高级编程技巧之 getopt & getopt_long 使用示例
dbkernel
博客等级 码龄4年 60粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值