
有关开源,最后强调五点,从下一期开始,讲具体的开源协议问题,暂时安排是GPL、LGPL、AGPL这样一个顺序,其他协议再往后排。
第一点,开源不等于放弃版权。开源不代表作者放弃版权,将源代码无条件赠予他人或放到公有领域所有人共享,作者写的代码,版权该归作者还归作者,只是以开源协议的方式授予了他人权利,同时规定了约束。一般认为,代码是谁写的,版权就归谁,但由于开源软件贡献者众多,很难区分出每个人具体对哪些代码享有版权,所以通常整体认为,全体贡献者对一个开源软件共同拥有版权。如果开源是放弃版权,那开源协议就没有存在的意义了,也正因为作者持有版权,才能够在有人违反开源协议时维权。
第二点,开源不等于免费、随便用。很多人会有这样一种错误的认识,认为开源就是免费,可以随便用。开源有可能免费,有可能不免费,有可能可以商用,有可能不可以商用,具体需要看开源协议是怎么规定的。无论作者还是分发者,售卖开源软件都是可以的,只要做到交付软件时附带源代码。绝大部分开源软件都完全免费,但绝不意味着随便用,因为软件名称、图标可能是商标,开源协议一般只授予用户版权、专利权,不包括商标权,你对软件的公开展示、演示、刊登可能侵犯作者的商标权(商业公司开发的注意一下,个人或某些开源基金会开发的基本不用担心,只要你不是非常恶意、严重的侵犯商标权,作者不会管你的,大多数开源还是比较开放的)。
第三点,开源协议的授权是永久的、不可撤销的。即同一软件版本,所采用的的开源协议和开源协议版本一经确定,永不可改。例如,我今天发布一个开源软件,软件版本是0.1,开源协议选的是GPL v2,但过了几天,我又想改了,想用GPL v3。可以吗?可以是可以,但只能改还未发行的软件版本,已经发行的版本不能改了。就是说0.1这个版本既然已经用GPL v2了,那就必须永远用GPL v2。因为很多开发者已经基于你的软件开发完了,遵守的是GPL v2,你一改,开发者原本符合协议的行为可能就变成不符合了,或者原本不符合的现在变成符合了,那就乱套了。再例如,我开发了一个开源软件,1.0版本用的是GPL协议。之后的1.1、1.2、1.3等版本我可以随便换其他协议。甚至你说我就开源一个版本,以后的版本我闭源,也可以。
第四点,开源协议由软件作者自由选用,或有限制的选用。若源码纯粹是自己写的,拥有完整著作权,没有包含他人代码,则作者发布这个软件时,对开源协议的选用是自由的,想用什么协议就用什么协议。但若代码中包含了他人代码,即不拥有完整著作权,则作者在选用开源协议时可能是自由的,也可能会有限制。若你想用的开源协议与他人代码所遵循协议(可能是开源协议,也可能是闭源协议)矛盾,则你要么换一个开源协议,要么不用他人的代码,若不矛盾,那就随便选。例如,张三做了一个开源软件,代码都是自己写的,那他选用开源协议是随便的,爱用哪个用哪个。但如果他用了一段遵循GPL协议的开源代码,则他必须在遵守GPL协议的基础上选用开源协议。
第五点,该不该开源。没什么该不该的,只有想不想,这并不是一个问题,我也只是想略作提醒。我的建议是,可以尝试,但需要做好源代码被无赖盗用的准备,一是心理上的准备,你的一腔热血,很可能换来一地鸡毛。二是法律上的准备,如果要坚决捍卫自己的权益,最后很可能需要通过法律途径解决。
本文的视频版: