如何为自己准备选择一个开源协议
开源推动了软件的发展,对于这个结论,至今应该不会有人再有意见了。但是最近最好的开源社区卖身给了曾经最反对开源的组织–微软。em….好像有一种奇怪的感觉,但是好在如今微软对开源的态度已经和以往截然不同了,希望微软能在这一点上继续坚持下去,好好推动开源软件的发展。
说到开源,好像一直就有一些误解。很多人认为开源就是免费,其实这两者是有本质的差别的。因为如果开源就等于免费,那开源这件事基本上是没有办法继续下去了。比如 A 发布了一个开源的软件,非常好用,然后 B 将这个开源软件的源码修改之后就不再开源,并且将这些软件拿去卖钱,这样一来,A 不干了,说我采用的是 GPL 开源协议,B 这样干是违法的。B 如果对于开源协议不了解,就会一脸懵逼,说好的开源呢?其实这里 B 对于开源就有很深的误解了。
对于一份代码来说,会涉及到很多的内容,比如说代码的协议和版权信息,代码的商标,代码造成犯罪的责任承担等等,大体上可以分成以下的:
- a 协议和版本信息:在代码中保留作者提供的协议和版权信息
- b 声明变更:在代码中声明对原来代码的重大修改和变更
- c 公开源码:源码必须公开
- d 商业使用:代码用于商业活动
- e 责任承担:代码的作者承担代码使用后造成的后果
- f 商标使用:可以使用作者的姓名、作品的 LOGO或者商标
- g 附加协议:在原来的协议的基础上增加新的附加协议
下面是常见的六种开源协议上对这些规则的限定:
协议 | 要求 | 允许 | 禁止 |
---|---|---|---|
Apache | a b | d g | e f |
GPL | a b c | d | e g |
MIT | a | d | e |
BSD | a | d g | e |
LGPL | a c | d g | e |
Mozilla | a c | d g | e f |
当然,看完这些之后,你是不是还是一头雾水,当然了,一下子要记住这么多晦涩的东西确实不是一件简单的事情,那么还有一个更简单的方法来帮助你选择,下面这张图是阮一峰大神从国外汉化过来的,可以说是很清晰了: