同福

选择一个开源协议来保护自己的程序代码【20210119】

介绍

介绍

今天福哥要带着大家学习关于开源协议的知识,了解了开源协议的知识之后可以避免自己在使用第三方程序代码的时候不会吃官司,也可以通过开源协议将自己的程序代码加上一层保护。

开源协议的程序就意味着代码必须公开,虽然听起来有点霸道,但是你要知道一个问题,只要你的程序会流到网络上面,就一定可以被剽窃到源代码(C/C++程序除外),所以选择一个开源协议保护自己的程序代码还是有必要的。

授权

福哥总结了几个重要的使用他人开源代码的行为,这些行为的授权在不同的开源协议里是不一样的。现在我们先了解一下这些行为的定义。

  • 修改代码:修改开源项目的代码之后,是否必须开源?

  • 二次开发:在开源项目的基础之上进行二次开发后,是否必须使用开源项目相同的协议?

  • 修改说明:修改开源项目的地方,是否必须注明修改内容?

  • 修改版权:修改开源项目的地方,是否必须放置新的协议说明?

  • 广告促销:在基于开源项目开发的软件推广过程中,是否可以以开源项目名称做为宣传亮点?

GPL

全称

General Public License

授权

使用GPL协议项目的代码后自己的代码也必须开源(免费),考虑清楚再行动吧~~

(我就想打造全人类都免费使用的软件生态环境...)

LGPL

全称

Lesser General Public License

授权

使用LGPL协议项目的代码后自己的代码不用开源(免费),只不过你别改人家原来的东西就行~~

(拿去用吧!别瞎动就行!)

BSD

全称

Berkeley Software Distribution

授权

使用BSD协议项目的代码没有任何限制,就是别用我的名字做产品宣传就行~~

(爱怎么捣鼓就怎么捣鼓!别拿我的名字打广告就行了~~)

MIT

全称

Massachusetts Institute of Technology

授权

使用MIT协议项目的代码没有任何限制,只要保留人家的版权信息就行~~

(爱怎么折腾就怎么折腾吧!留着老夫的名字就行了~)

Apache

全称

Apache Licence

授权

使用Apache协议项目的代码没有任何限制,只不过需要自己改动的地方要标注版权信息

(你想改代码可以,说清楚是你自己写的,出了问题老夫不给你背黑锅~~)

SSPL

全称

Server Side Public License

授权

这个协议和AGPL协议差不多,都是为了避免互联网时代的平台“耍流氓”的产物。

(互联网不都是喊着上云吗?买一套软件一群人用,开发商喝西北风去啊?)

AGPL

全称

Advance General Public License

授权

AGPL是针对规避GPL协议漏洞的补充版本,GPL协议约定“发布”基于GPL协议代码开发的软件必须也要开源(免费),但是互联网平台在使用GPL协议代码并没有“发布”出来,他们只是向用户提供“服务”。

AGPL协议则对这种方式的使用GPL协议代码进行约束。

(老夫也会与时俱进,要不自己开发,要不给老夫开源吧~~)

示例

TFPHP

a071ad11a88a3502.jpg

TFSpring

69c73066e8291918.jpg

总结

今天童鞋们跟着福哥针对主流开源协议的授权进行了一次学习,这是很重要的一堂课,开源协议可以在一定程度上保护我们的劳动成果不受侵犯。

因为除了C/C++之外,其他语言(包括:PHP、Java、C#、Python、Javascript等等)都是“明文”形式保存起来的,虽然Java是编译运行的,但是通过编译后的class文件还是可以反编译成Java源代码。

有一份合适自己程序代码的开源协议声明,对于一些商业用途的人来说还是有一定震慑力的~~