搭建Vue3组件库:第十章 开源许可证

简介: 本章介绍一下开源许可证。

软件是一种著作,天然是拥有版权的。很多人会认为放在 Github 上的就是开源软件,既然放了源代码,我就可以随便使用了。其实版权法规定著作是禁止共享的,也就是说没有许可证的软件等于保留版权。虽然源代码公开了,但并不表明你可以随便使用,一用就会侵犯版权。如果软件侵犯版权,必须明确授予用户开源许可证。

另外,有一些没有道德的公司会大量使用开源的产品,进行组合封装修改后当做自己的劳动创造。这些拿来党属于破坏游戏规则的一群人,这些人也应该让他们受到应有的惩罚,例如:GPL协议就是防止这种情况发生的。

  • 软件著作权的明确,作者(版权方)的权益明确,保护知识成果
  • 方便用户使用,用户获得明确的授权(是否可以进行使用、拷贝、修改和再发布)
  • 开源≠免费,免费≠免责, no license≠授权,授权≠收费

版权是知识产权的一种,和著作权是同一个概念,可以自动取得,也可以登记取得,是作者对自己的著作享有的法定权利。著作权是公民、法人依法享有的一种民事权利,属于无形财产权。享有著作权的作者可以决定是否对他的作品进行著作权意义上的使用和处理,在我国,只要发表就会受到保护。


开源许可证的种类

我们可以把版权分为四大种。

  • Copyright - 受版权保护的;未经准许不得复制的。
  • Copyleft - 有限空间内的自由使用,不得用于商业目的,且不得闭源,衍生品仍需开源。
  • Permissive - 宽松自由软件许可协议,对软件的使用、修改、传播等方式采用最低限制的自由软件许可协议条款类型。
  • Create Commons - 大多是被用于设计类的工程上,署名权,非商业用途,禁止衍生。

实际上,一般只会把 CopyleftPermissive 叫做开源,其中 Permissive 限制比较宽松。而 Copyleft 要求不得用于商业目的且不得闭源,并且后续衍生子软件必须遵守条款。其实这种协议就是为了弘扬开源精神,不希望某些公司垄断和强占开发成果。

copyright就是俗称的版权,也叫著作权。

版权又称著作权,用来表述创作者因其文学和艺术作品而享有的权利。版权的取得有两种方式:自动取得和登记取得。在中国,按照著作权法规定,作品完成就自动有版权( 百度百科

在版权的基础上,作者还可以制定授权协议(license),按照自己的心意进一步界定使用者的权利。

也就是说,作者的具体权利 = 当地法律规定的版权(copyright) + 自己在作品中添加的授权协议(license)。

权利 = 版权(copyright) + 授权协议(license)

比如,商业化的授权协议(license)可能会倾向于强调,使用者的哪些行为是侵权行为,从而保护自己的商业利益。而基于开源思想的授权协议则会强调使用者的权力。


Permissive 宽松自由许可

BSD(二条版)、BSD(三条版)、MITApache2

BSD(二条版) BSD(三条版) MIT Apache2
允许修改后闭源
不保证代码质量
必须披露原始作者
不得使用原始作者名字为软件推广
分发时必须保留原始许可声明
修改过必须向用户声明修改
未修改必须保持许可证不变

Copyleft 有限空间内的自由

GPLAffero GPL (AGPL)LGPLMozilla(MPL)

GPL Affero GPL (AGPL) LGPL Mozilla(MPL)
分发二进制格式,必须提供源码
修改后,必须与修改前保持许可一致
不得在原始许可以外附加限制
如果项目包含GPL许可代码, 整个项目必须开源
云服务用到的代码, 云服务代码必须开源
如果项目属于动态链接库使用许可证库 项目不用开源
许可证代码在单独文件中 新增其他文件可以不开源

前端项目的开源协议

目前前端项目普遍会选择 MIT协议。

MIT 协议是一种最简单的开源协议,只需要保留最基本的版权许可。这个时候就会有人问,为什么React 同样是MIT协议,但是听说百度要求内部全面停止使用 React 呢?这是因为 React 曾经在开源协议外还增加了附加的条款。

大概意思就是,当发生下列情况时,Facebook 有权益吊销你的 React 使用权:

  • Facebook 及其附属机构发生利益冲突;
  • 同任何一个和 Facebook 有关的组织发生了法律纠纷;
  • 同任何与 React 有关的组织发生利益冲突。

也就是说,使用 React 的项目,如果和 Facebook 有利益冲突都可能被吊销React的使用权。这个对于大厂来讲肯定不太行,后来这件事不断发酵,开源社区在更多的 Facebook 开源项目中发现了类似的规定,开发者普遍认为这种许可证模式正在毒害社区。 不过 Facebook 最后还是意识到了这个问题,修改了开源协议。


开源许可证的权力术语

不同的“开源许可证”有不同的授权维度,或者加以限制,又或者要求有条件的使用。

在这里插入图片描述

名称 中文 备注
Commercial use 商业应用 指是否可将开源用于商业目的
Distribution 发布发行 指是否允许发布发行依赖于此开源的项目
Modification 修改 指是否允许在开源项目上做修改
Patent use 申请专利 指是否允许用于专利申请
Private use 个人使用 指是否允许个人学习,修改和使用
License and copyright notice 注明协议和版权 指是否要求注明协议以及版权说明
State changes 注明变更 指对于开源代码的修改是否要明确说明
Liability 义务 指开源软件是否承担使用其后带来的义务
Trademark use 商标使用 指开源软件是否可用在商标或在商标中暗示使用
Warranty 报修维护 指开源软件是否提供后期维护
Same License 同协议下 指基于开源二次开发的产品若发布,是否要基于相同或相近的协议之下
Disclose source 公开源码 指基于开源开发的代码是否也需要开源

如何选择开源协议?

可以参考阮一峰老师的图:

在这里插入图片描述

Github 专门发布了一个网站 叫做 Choose an open source license 可以帮助你简化判断。

在这里插入图片描述

这个网站主张让开发者从自己的目的出发选择许可证。详细如下:

  • 需要简单宽松的协议: MIT 协议

    ==> 代表项目: VueReactElement

  • 比较关心专利: Apache协议

    ==> 代表项目: ApacheSVN

  • 比较关心项目的共享改进: GPL

    ==>代表项目: LinuxGit

  • 非代码项目: CCreative Commons

    ==>署名: 必须提到作者

    ==>非商业用户

    ==>禁止演绎,禁止修改原作品在创作


在 Github 中添加开源许可证

Github 中已经添加了各种开源许可证的模版。在创建项目的时候可以直接选择对应的开源协议。

在这里插入图片描述

当然也可以后期添加和修改,下面就在组件库添加上开源协议。

其实开源许可证就是一个文本文件放在项目的根目录下,所以可以在根目录下点击 【Add file】选择 【Create new file

在这里插入图片描述

然后填入文件名 【 LICENSE 】,Github 会自动判断出你需要添加开源协议的,并且会显示 【CHoose a license template 】选择许可证模版按钮,点击按钮就可以选择你需要的模版了。

在这里插入图片描述

然后是有效期和作者全名。

  • 有效期填写: 2022
  • 作者全名还是有点讲究的 可以把你的中文名字和英文名字做一个混合填写,比如 : genius

在这里插入图片描述

添加完成后,点击 Review and Submit 就可以创建属于自己的许可证了。


扩展阅读

相关文章
|
2月前
|
JavaScript 前端开发 安全
Vue 3
Vue 3以组合式API、Proxy响应式系统和全面TypeScript支持,重构前端开发范式。性能优化与生态协同并进,兼顾易用性与工程化,引领Web开发迈向高效、可维护的新纪元。(238字)
613 139
|
2月前
|
缓存 JavaScript 算法
Vue 3性能优化
Vue 3 通过 Proxy 和编译优化提升性能,但仍需遵循最佳实践。合理使用 v-if、key、computed,避免深度监听,利用懒加载与虚拟列表,结合打包优化,方可充分发挥其性能优势。(239字)
287 1
|
7月前
|
缓存 JavaScript PHP
斩获开发者口碑!SnowAdmin:基于 Vue3 的高颜值后台管理系统,3 步极速上手!
SnowAdmin 是一款基于 Vue3/TypeScript/Arco Design 的开源后台管理框架,以“清新优雅、开箱即用”为核心设计理念。提供角色权限精细化管理、多主题与暗黑模式切换、动态路由与页面缓存等功能,支持代码规范自动化校验及丰富组件库。通过模块化设计与前沿技术栈(Vite5/Pinia),显著提升开发效率,适合团队协作与长期维护。项目地址:[GitHub](https://github.com/WANG-Fan0912/SnowAdmin)。
1037 5
|
3月前
|
开发工具 iOS开发 MacOS
基于Vite7.1+Vue3+Pinia3+ArcoDesign网页版webos后台模板
最新版研发vite7+vue3.5+pinia3+arco-design仿macos/windows风格网页版OS系统Vite-Vue3-WebOS。
457 11
|
2月前
|
JavaScript 安全
vue3使用ts传参教程
Vue 3结合TypeScript实现组件传参,提升类型安全与开发效率。涵盖Props、Emits、v-model双向绑定及useAttrs透传属性,建议明确声明类型,保障代码质量。
321 0
|
4月前
|
缓存 前端开发 大数据
虚拟列表在Vue3中的具体应用场景有哪些?
虚拟列表在 Vue3 中通过仅渲染可视区域内容,显著提升大数据列表性能,适用于 ERP 表格、聊天界面、社交媒体、阅读器、日历及树形结构等场景,结合 `vue-virtual-scroller` 等工具可实现高效滚动与交互体验。
511 1
|
4月前
|
缓存 JavaScript UED
除了循环引用,Vue3还有哪些常见的性能优化技巧?
除了循环引用,Vue3还有哪些常见的性能优化技巧?
304 0
|
5月前
|
JavaScript
vue3循环引用自已实现
当渲染大量数据列表时,使用虚拟列表只渲染可视区域的内容,显著减少 DOM 节点数量。
147 0
|
6月前
|
JavaScript 前端开发 UED
Vue 表情包输入组件的实现代码:支持自定义表情库、快捷键发送和输入框联动的聊天表情解决方案
本文详细介绍了在 Vue 项目中实现一个功能完善、交互友好的表情包输入组件的方法,并提供了具体的应用实例。组件设计包含表情分类展示、响应式布局、与输入框的交互及样式定制等功能。通过核心技术实现,如将表情插入输入框光标位置和点击外部关闭选择器,确保用户体验流畅。同时探讨了性能优化策略,如懒加载和虚拟滚动,以及扩展性方案,如自定义主题和国际化支持。最终,展示了如何在聊天界面中集成该组件,为用户提供丰富的表情输入体验。
558 8
|
7月前
|
JavaScript API 容器
Vue 3 中的 nextTick 使用详解与实战案例
Vue 3 中的 nextTick 使用详解与实战案例 在 Vue 3 的日常开发中,我们经常需要在数据变化后等待 DOM 更新完成再执行某些操作。此时,nextTick 就成了一个不可或缺的工具。本文将介绍 nextTick 的基本用法,并通过三个实战案例,展示它在表单验证、弹窗动画、自动聚焦等场景中的实际应用。
669 17