个人开发者如何利用开源项目获益?
如果你是一名开源软件的开发者,打算利用自己的软件开创一家软件公司,该如何做?第一,我们要确定好自己的商业模式;第二,为自己的开源软件选择恰当的许可证。
如果决定选择双许可证模式,应选择GPL这样较为严格的许可证,它是这种商业模式能够成功的基础。当然,选择双许可证会阻碍产品在商业用户中的推广。尤其是对初生的开源项目来讲,显然是一种两难的境地。MiniGUI之所以可以采用双许可证模式,是因为在成立公司之前和最初的一段时间内,MiniGUI采取的是LGPL许可证,之后在软件足够成熟时才改为GPL许可证。另外,MiniGUI用于功能手机等系统中时,因为这种设备一般使用实时操作系统,缺乏应用LGPL/GPL许可证的技术条件,所以面向这种设备收取许可费也是天经地义的事情。MySQL采用双许可证模式得以成功的原因在于,MySQL AB公司并不会对仅仅用于Web服务器的MySQL商用行为收费,因为这种情况下,商业用户并不会发布MySQL的副本—它只是在服务器上运行而已。
因此,看起来上面提到的第二种、第三种商业模式是最适合个人开发者或者初创公司的商业模式,能够很快地速度推广和迭代软件本身,还能够确保有足够的收入来保证下一步的发展。在这种模式下,应该选择较为宽松的许可证。但大部分开源软件作者,由于并不真正理解开源软件的许可证,所以采取了错误的许可证(指在法律上是错误的)。例如RT-Thread,一方面采用GPL V2许可证,另一方面又承诺不会对商业使用收费。这其实没有解决根本的法律问题,即使用RT-Thread开发的衍生作品,到底要不要遵循GPL?这个问题和是否收费没有直接关系。要解决这个问题很简单,采用类似Apache、BSD或者MIT许可证即可。有读者会问,那为什么不能采用LGPL许可证?就RT-Thread这样的软件来讲,采用LGPL和GPL没有本质的区别,因为RT-Thread的应用场合下一般不支持函数库的动态链接,这导致失去了适用LGPL许可证的技术条件。
上面提到的最后一种模式,是否适用于个人开发者或者初创公司呢?我的答案是,这种模式是大公司的玩法,小团队或小公司没法做这类事情。
大专院校应该成为开源软件的主力军
一个有趣的现象是,很多开源项目其实是作者在大专院校或者研究机构工作或学习时发起的,比如本文提到的三个国内早期的开源项目。甚至某些开源项目由特定的大学主持和维护,如BSD操作系统、PostgreSQL关系数据库、Minix操作系统等。
从国际视角看,开源软件的发展离不开一些知名大学的参与,BSD和MIT许可证分别由加州大学伯克利分校和麻省理工学院定义,并由两所大学在其众多开源软件中使用,也被其他开源软件广泛应用。值得一提的是,苹果公司Mac操作系统和iOS操作系统,均使用了加州大学伯克利分校开发的BSD操作系统内核。
从现实情况看,在职的程序员,除非因为供职单位支持,否则很难独立发起和维护一个大型的开源项目,但在大专院校和科研机构工作的老师和学生,则有得天独厚的条件(主要是有大量的时间,并可能与科研课题和教学任务相结合)来发起和持续维护一个开源项目。清华大学陈渝副教授主持的SkyEye和ucore两个开源项目就是典型的案例。笔者希望国内有更多的大专院校和科研单位(尤其是教师)能够积极参与到开源项目的发展当中,并成为国内开源项目的主力军。
推荐经销商