开源协议怎么选?MIT、BSD、Apache 2.0、GPL、AGPL、LGPL、MPL 完全指南

有些朋友可能会认为——开源不就免费随便用吗。 nonono,这个认知是大错特错的。 搞不清楚开源协议,可能会吃官司哦。 本篇文章会按照从尺度宽松到严格的顺序,带大家盘点不同的开源协议。 并且会结合实战案例,教大家如何一键添加开源协议。 先来介绍,开源协议中的佛系三剑客 —— MIT、BSD、Apache。 为啥叫它们佛系三剑客呢?因为,它们的要求很宽松,IT界统称它们为“宽松型开源协议”。 这三剑客的共同点 —— 可以自由地商业化、修改代码、甚至把修改的版本闭源。 总而言之,看到这些协议的开源项目,你用就完事了,不要有任何负担。 那它们有什么不同点呢? 1、MIT MIT 协议有一个要求 —— 在你分发软件的时候,要把版权声明带上。 第一个问题——什么是软件分发呢? 软件分发是把你的软件,打包给别人使用。 你自己做个网站,别人来访问,这不叫分发。但是,你把网站代码打包发给别人,这就叫分发了。 所以,这个时候就需要声明一下 —— 你项目中,用了哪些开源项目。 第二个问题——怎么声明? 如果你是在代码中,直接引用了别人的代码,那么,你需要添加这样的声明。 --- 引用部分开始 --- Copyright (c) 2022 原作者名字 Licensed under the MIT License (MIT) --- 引用部分结束 --- 这里开始写你自己的代码... 如果采用调用三方库的形式,那么你需要在项目中添加THIRD-PARTY-NOTICES.txt这样的声明。 这些文件看似复杂,其实都可以一键生成。 后面的实战案例中,我会跟大家分享。 前端大名鼎鼎的vue框架、jquery框架,使用的就是MIT协议。 2、BSD BSD 协议,增加了一条 —— 不能用原作者的名义或商标来给你的衍生产品做商业推广。 比方说,你的团队开源了一个项目,它遵从 bsd 开源协议。 我的产品用了你的项目。 我在做产品宣传的时候,不能大张旗鼓地说:我的产品用了某某大佬团队的技术,保证这个产品又丝滑又稳定又安全。 3、Apache License 2.0 apache协议在专利层面上,对开源的项目进行约束,以防止一些专利流氓破坏开源环境。 举个例子:A公司申请了某个专利技术,叫小a专利。 某个开源项目 xx 的负责人C,使用了这个小a专利。 A公司见有利可图,便起诉了负责人C要求赔偿。起诉的同时,A公司就不能继续使用 xx 项目了。 ...

2026年5月4日 · 高勉

GitHub 搜索技巧完全指南:从基础到高级语法,找到你想要的一切

如何快速找到最近很火的ai工具,如何快速找到适合初学者的python项目。今天这个视频就来教会你,如何使用github的搜索功能。 github是全球最大的免费代码库,因此,很多人会认为github就是程序员用的吧? No,各行各业的朋友都可以用。 而且,都能找到你想要的宝藏。 你可以在这里找到免费学习资料、免费软件、免费书籍…… 这么说吧,只有你想不到,没有它没有的。 本期视频,我会分享如何在git上搜索你想要的东西,包含了基础搜索和高级搜索技巧。 1、如何搜索 github的登录和注册十分简单,只要有邮箱,不管是国内还是国外,都可以轻松搞定。 登陆成功进入主页之后,我们可以看到这样的页面。 1.1 基础搜索 找到所搜框,搜索“经济学人”。 你能看到一堆搜索结果。 这里会显示完整的项目名称,斜线之前是作者的ID,斜线之后是项目的ID。 这里会有更新时间,一定要找就近更新的仓库,然后,点进去。 一个宝藏就展现在了你的面前。 仓库如何去看呢? 首先要看 README 文件,这里介绍了项目内容,并附上了很多要点和链接。 你可以点击这里的链接,访问具体的内容。 点击这里的下载,拿到你想要的东西。 你也可以直接点击文件夹,浏览一下具体的文件夹内容,可以看到每个文件夹里都有一个README。 README文件使用 markdown 语法撰写的说明,而 github 会将这个内容美化成一个优雅的页面。 很多朋友会想,这些免费文档会不会有版权问题。理论上来说,确实会有版权问题,但如果你只是个人学习使用,而不是那它卖盗版,那么没有人会追究你。 这里我们会遇到一个新的问题,如果这个项目持续更新,难道每次都要去搜索框里去搜它吗? NO,你可以采用如下操作。 star 点击 star, 你就会收藏这个项目。另外,也表达了对作者的支持。 star 只会收藏,项目更新的时候,你不会接到任何通知。 你可以在你的个人主页里,看到这个项目,这是不是就方便了很多。 fork fork 是叉子的意思,点击之后,你会将别人的项目,复制一份到你的仓库里。 其实,也算是另外一种收藏。 这种收藏方式,有一个好处就是,如果原作者项目没了,你这里还有一个副本,依然可以使用。 另外,这个副本你可以直接进行代码编辑,因为是存在你的仓库,并不会影响到原作者。 如果你有好的想法,也可以改完之后,将新代码贡献给原作者。这个环节我们后面会出视频讲解。 watch 顾名思义,就是观察的意思。 点击之后,我们可以看到多个选项。 第一个是默认的,意思是如果你参与了这个项目,或者项目中有人@你了,就会给你发个通知。 什么叫参与了这个项目呢?比方说,你提过建议Issue,你提交过代码pull request…… 第二个是all activity,选中之后,这个项目的所有变化,都会通知到你。例如,新版本发布…… 选择之后,小眼睛就会加1 第三个,就更简单了,直接屏蔽了这个项目的通知。 第四个,是选择性通知,你可以选择项目发生哪些变化的时候通知你。 1.2 进阶搜索 再次回到搜索结果页面,我们可以看到这里有排序方式。 根据刚才的介绍,我们可以选择star最多的,或者fork最多的,以及其它的选项……进行排序。 这里会有一个引申的问题,这个搜索匹配的是什么内容? 从结果中,我们可以看到,项目的搜索结果,是根据about中的关键字、仓库名称进行匹配的。 除了仓库,我们还可以选择code,issues…… 这些选项。issue是问题的意思,表示大家对项目的疑问,你可以搜索到大家对这个关键词有哪些想法。 你还可以选择开发语言,找到你熟悉的语言的项目。 你还可以在这里的高级选项这里,细化你的搜索需求,例如:原作者是谁?星星数量大于多少,或者小于多少…… 以上是针对搜索结果的进阶玩法。 让我们在回到主页面,看一下如何在主页进阶搜索。 2、使用技巧总结: 2.1 限定搜索位置(in) vue in:name # 只搜仓库名称 vue in:description # 只搜描述 vue in:readme # 只搜 README vue in:name,description # 名称或描述都搜 2.2 按 Stars / Forks 筛选 stars:>1000 # 超过 1000 星 stars:500..2000 # 500 到 2000 之间 forks:>500 # Fork 超过 500 2.3 按程语言 language:python language:javascript language:rust 2.4 按时间筛选 pushed:>2024-01-01 # 2024年后还有更新的 created:>2023-01-01 # 2023年后创建的 这个非常实用 可以过滤掉那些很久没维护的死项目 ...

2026年4月14日 · 高勉