开源许可证,为产品服务还是为社区服务?
过去几周,我们看到一些组织宣布将开源自己的技术,从大型公司,如微软的.Net 平台,到刚创立的公司如 Midokura 的 MidoNet 技术和最近 On.Lab 的 O.N.O.S.技术。这是除了Beacon,Floodlight,Ryu,OpenContrail 和其他一些在网络产业之外的技术。
因此,分析师和记者们不断地问我认为他们成功的机会是什么。有公司还经常向我咨询一些关于他们是否应该将一项技术开源以及是将其作为一个单独的项目还是添加到现存的开源项目中的想法。总体而言,开源的趋势还是非常令人鼓舞的。
与闭源/专有代码不同,开源许可证允许一个人查看代码--理解内部运行原理并发现问题,更需要的是受到启发。开源的真正动力是人们在已有源代码基础上建立的能力。更重要的是要建立一个成功的开源项目而不仅仅是给它粘上一张开源许可证。成功的开源项目,聚集了强大的社区。当我们在要成为一个平台的时候,这一点是非常重要的。如果树倒在树林里,没有人听到它,它会发出声音吗?如果一家公司发布了其技术与开源许可,但是没有人看到它,或者没有使用其技术建立项目,这个开源还重要吗?
社区是一个开源项目的关键。
第一个原因是社区能带来大量的资源。想想选择开源平台有500万美元的启动资金,假设公司都用来搞开发,其项目最多需要雇佣10名开发人员,不管是对大学实验室还是其他小型组织,这种假设都没有区别。请注意,这只是一年。达到一个成熟的平台你可能需要至少三年的努力,与 OpenDaylight 社区项目对比一下。项目合同向每一个白金卡会员承诺每年10FTEs。而这些仅仅是正式承诺;为这个平台的发展做出贡献的还有数百人。再举一个例子,想象一下,如果你正打算与 OpenStack 的竞争。你的挑战并不仅仅是实现 OpenStack 当前的功能,而且在未来的几年 OpenStack 的开发者们将能够添加/改善/增强什么功能。这是一个艰巨的任务,没有一个人应掉以轻心。
第二个关键原因,一个开放社区如何带来理念,技术和观点的多样性。将 Linux 转化成一个如此成功的项目部分原因就是已解决了矛盾的用例广泛的多样性。尽管 Linux 可能无法驱动大多数桌面,启动Qumranet 用它来驱动服务器虚拟化(KVM),谷歌用它来给安卓手机供电,Docker 用它来存储电源,Tesla 用它来驱动他们的汽车等等。
第三,一个社区有助于确认市场的走向。每个软件项目都有其早期挑战.将开源嵌入到他们的解决方案或发布版本中的供应商起着至关重要的作用。供应商识别用例和解决方案,聚集组件和在识别和修复bug上的大量投资。他们的销售人员忙于与客户打交道,将目标和约束条件统一起来,并用于项目的建设。Vendors 树立意识,支持评估,执行装置和集成,并提供持续的支持。事实上,这产生了一个积极的反馈循环,供应商和客户在商业上依赖于共同开放的源代码。他们必须改进代码以加强和创新自己的产品。这些改进然后回馈到项目中,每个人都会受益。该项目的下一个版本以这种循环再次开始不断扩大的创新周期。
如果你要寻找最成功的开源项目,比如 Linux,Hadoop,OpenStack 还有 OpenDaylight,一个共同点就是他们都从供应商那里得到大量的支持。那他们是供应商驱动的吗?从某种意义上说,是的,但是如果他们没有解决真正的终端用户问题的话他们是不会成功的。供应商的参与是一个重要的特点,而不是错误。事实上,在开源“的供应商”和“用户”之间作出区分是一个常见的错误。在开源中,每个人都是用户,IT供应商使用开源代码建立项目,云服务提供商使用代码创建服务,社交网络使用代码使人们联系起来。供应商、服务提供商、Web领域——他们都是开源的用户。这再一次说明为什么社区是很重要的——不是关于供应商 VS. 用户的陈旧的观点。
那么你如何建立一个社区呢?这并不简单。它开始就需要解决一个主要的问题,谁来提供资金和哪些有智商和激情的人来解决这些问题。它需要巨大的投资——在组织结构、基础设施、雇员的增加和宣传方面。仔细看看一些主要的开源项目,你会发现这些社区一起带来一系列的关键活动。峰会,设计论坛,地区性的小型首脑会议,黑客集会,社区晚宴,小会议,邮件列表,以及项目要求。招聘人员,发布管理者,社区管理员,市场营销员等成员- 每个人都起到了不同的作用,但是对项目的成功至关重要。建立一个成功的开源社区与建立一个成功的公司不同。社区有许多要素要综合起来考虑。
这些开源的尝试有多少会成长为成功的开源社区呢?有多少创业公司成长为成功的企业呢?风险投资经常会发现他们的投资有十分之一的机会命中大的,三分之二的机会稍微命中,其余都会失败,根据我的经验来说,对于开源项目也是一样的。