4 开源我的软件?
在高物价、高房价的今天,大部分人对此问题的第一反应是:“我就一刚解决温饱的码农,我开源,谁养我?”这问题,和我们在十年前推广开源软件理念时遇到的问题几乎一样。但其实,这话已经大大落后于时代了!我们不仅仅可以通过使用其他人的开源软件赚钱,还可以通过开源自己的软件来赚钱。
4.1 别人靠开源软件如何赚钱?
在证明上述论点之前,我们先看看别人是如何利用开源软件赚钱的。靠开源软件赚钱的方式(经过验证的)无外乎有如下几种:
1. 双许可证模式。即在采取严格的开源软件许可证的同时(通常选择 GPL),给商业用户提供非 GPL 许可方式。这本质上是一种贩卖软件许可的行为,但开源软件带给开发者一个很大的好处,即传播迅速,快速迭代。笔者主持的 MiniGUI 项目就采用这种模式,在过去的五年当中,获得了几千万元的软件许可收费。当然,使用这个模式最成功的当属MySQL。
2. 基础软件采用宽松许可证,同时向基础软件的商业用户贩卖增值服务或者增强组件、开发工具等的许可。这种模式可用于类似 RT-Thread 这类的基础性软件上,RT-Thread 本身可以是开源且可无偿商用的,但其上的各种增值组件,如网络、文件系统、图形系统等,可以是商业软件。国外采用这种模式的以各类 CMS 系统为主。比如 Drupal 和 Concrete 系统,其基本系统是开源且免费的,但其上的许多插件、主题、模版等是收费的。有兴趣的读者可访问 http://www.concrete5.org 网站,其中还有“Marketplace(市场)”频道。
3. 混合模式,既贩卖工具等软件的许可,同时还向用户提供付费服务的模式。比如 Ubuntu Linux 发行版。
4. 成为平台型软件,并承载自己的互联网业务。这种模式在大型互联网企业中应用广泛。比如谷歌开发并开源 Chrome 浏览器,短短几年抢占了微软的很多市场份额,通过在 Chrome 中默认使用谷歌搜索引擎而获得极大的收入;再比如谷歌开源 Android,一方面为了遏制苹果 iOS 的增长势头,一方面通过预置 Google 搜索而获得了大量来自移动互联网的流量收入。
显然,有了先驱们的成功案例,作为开源软件参与者,不论是企业还是个人,都可能名利双收。
4.2 IT 企业为何要参与开源软件?
IT 行业中的企业,即使是销售硬件产品的企业,也在不停地开发各种软件,同时也大量使用各种开源软件。对这类企业,开源自己开发的软件其动力是什么?
作为企业,参与或者主导一个开源软件,其最为明显的动力应该是上述的第四个商业模式,即打造一个平台型软件。但是,就中国 IT 企业来讲,笔者尚未看到有此种实力,或者此种抱负的企业存在,毕竟,打造一个平台需要长期的投入,一般情况需要五年或者更长的时间。貌似中国没有一个企业有这个耐心来投入五年这么长的时间在一个软件上。
那么为什么企业还要参与到开源软件的开发中?笔者认为,谋不了大利就谋点小利,企业主导或参与开源软件,至少有如下几个好处:
· 提高企业的美誉度。在利用开源软件的同时,也参与到开源软件当中,企业的美誉度会得到很大的提升。
· 员工更有激情。因为自己的作品能够公之于众,虽然著作权本质上属于企业,但作为实际的编码者,可以通过开源自己的作品来获得额外的成就感和满足感。这对于稳定开发团队、提高开发人员的积极性会有很大的帮助。
当然,也许过不了几年,中国也能出现实践第四种商业模式的大型 IT 企业,让我们拭目以待吧!
4.3 个人开发者如何利用开源软件获益?
如果你是一名开源软件的开发者,打算利用自己的软件开创一家软件公司,该如何做?第一,我们要确定好自己的商业模式;第二,为自己的开源软件选择恰当的许可证。
如果决定选择双许可证模式,应选择 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 许可证的技术条件。
那么上面提到的最后一种模式,是否适用于个人开发者或者初创公司?笔者的答案是,这种模式是大公司的玩法,小团队或者小公司是没法做这类事情的。
当然,一家软件公司的成败所涉及因素很多,不仅仅取决于产品和服务等技术因素,也取决于很多其他的因素,比如大的市场环境、政策因素等等。因此,真正拿自己的开源软件经营一家企业的并不多,更多人开发开源软件,还是因为个人兴趣,以及对获得业界尊重和名望的驱使。
但真正能够获得业界尊重的开源软件开发者及其开源软件,其实也并不多。也就是说,要通过开发开源软件获得上面所说的“名”,需要开发者具有较高的开发水平和相关能力。这其中主要的能力有:
· 好的选题。好的选题应该能够跟得上 IT 领域的前沿技术,最好避免重复造轮子的尴尬境地。
· 较高水平的软件架构设计能力以及编码能力。既然开放了软件的源代码,那自然希望有人去看,并欣赏这些源代码。所以,拥有较高水平的软件架构设计能力、编码能力,是开源软件能够获得用户青睐的一大条件。
· 较高水平的文档能力。除了编码之外,要让你的开源软件得到大量的用户,你还需要能够编写漂亮的文档,起码要能够撰写很好的安装指导说明文件。
· 适度的宣传能力。不论好坏,适当宣传自己的开源软件,是获得公众认知的一个良好方式。宣传并不意味着需要花钱,你可以参加各种开源会议,或者在微博上进行宣传,或者通过一些开源社区帮助你来宣传自己的作品。
· 适度的坚持。好的软件是打磨出来的,如果仅仅靠一时兴趣弄个软件并开源,并没有持续改善,那肯定会半途而废。
当然,除了自己创作一个全新的开源软件之外,要获得上面所说的“名”,还有一个办法是加入到已有的知名开源软件的开发中,尤其是海外的知名开源软件开发中。你可以从帮助他们“汉化”软件开始,然后提交补丁,最后成为主要的开发者。
【专题:开源软件】