开源就等于做慈善? 不! 赚钱的路子多着呢
在过去的十年中,从 Linux、MySQL 到 Kubernetes、Spark、Presto 和 MongoDB,开放源代码(简称开源)一直是云技术的创新支柱。但最近开源的发展趋势已经给其背后的商业模式蒙上了一层阴影。业界现在必须采取行动,防止这一伟大的创新来源被渐渐扼杀。
作为 ApacheHive 的共同创建者和前项目负责人,我知道激励政策对于开源生态系统的繁荣至关重要。我们需要激励独立开发人员让他们把时间和技术投入到开源项目,而那些有创业精神的人我们需要激励他们围绕这些项目建立公司,帮助他们繁荣发展。
因为公共云端改变了开源的动态,所以它可能会破坏这些激励机制。对于大型云段供应商来说,接受开源项目并将其作为管理服务太过容易了。如果这些公司这样做,却不做一些回馈社区的事,那么它们将不公平地从他人的成果中获利,并扰乱促进开源行业繁荣的激励机制。
我们已经在当前围绕 AWS 的讨论中看到了这一点。AWS 被指控接受开源项目并重新改造它们,但却没有一直回馈社区。这促使包括 Confluent、Redis Labs 和 MongoDB 在内的供应商开发新的许可证,以防止大型商业云段提供商将其代码作为管理服务。
我认为这不是正确的方法。这些新的许可证还没有得到开源计划的认可,它们有可能使围绕开源软件使用权这趟水越较搅越浑。正如软件自由保护协会(Software Freedom Conservation)主席 Bradley M.Kuhn 所说,软件自由应该 "对每个人都是平等的,不管他们是否是商业行动者。" 开源之所以蓬勃发展,是因为这一原则一直受到尊重,任何混乱都可能使人们远离这个社区。
我对寻求保护其业务的开源公司表示同情。尽管独立开发人员尽了最大努力,但开放源代码项目还需要公司的资源和管理,才可能达到稳定的状态,并广泛用于企业。Linux 之所以在企业中脱颖而出,是因为 RedHat 和 IBM 在背后给与足够的支持。Kubernetes 的繁荣也是因为它得到了谷歌的支持。当然也有例外,但是如果一个开源项目有一个公司的力量支持,那么它更有可能在大型企业中成功。
这让我也正视我的偏见。我的公司提供了一个基于云的数据分析平台。它严重依赖于开源组件,如 Spark、Presto 和 Hive。同时,我们通过两个项目,SparkLens(一个改进 Spark 应用程序性能的框架)和 Rubix(一个加速 Presto 和 Spark 性能的缓存框架)回馈这个社区,成为一个优秀的开源成员。
在云中提供开源软件有助于这些项目吸引更多的用户和开发人员。但是,如果商业云段供应商获利不公,会阻碍下一代企业家编码人员建立开源公司,并减少投资者的支持。
那么,如果新的许可证不是好的解决方案,那是该怎么解决呢?
这在一定程度上取决于大型云段供应商的公平竞争。我不相信 AWS 是 "邪恶的";他们的行为是为了他们认为自己的最佳商业利益。但他们需要认识到,从长远来看,破坏开放源代码对他们的伤害和对其他人的伤害一样大。倡导开源的人应该继续深入对这一问题的理解,并对云服务供应商施加来自公众压力,使其采取负责任的行动。我们已经看到了这种压力是可以起作用的。
我们还需要一个开放源码的 "道德准则",由社区贡献者、项目负责人和开放源码组织(如 OSI 和 Apache)创建。一个完全符合开放源码规则,但仍然会损害团体发展的许可证,是可能存在的。制定一个广泛认可的道德准则,规定了不可接受的做法,将使公司和个人对其行为更加负责。
最后的推动力是竞争。的确,大型云段供应商在吸引客户方面具有优势;他们被首席信息官视为 "简单" 和 "安全" 选择。但是,客户却去了有最好的软件和支持所在的地方。如果开源公司能够为自己的发行版软件提供更好的功能和支持,更多的客户将选择他们的产品。
我已经概述了,我们这个社区可以用来改善情况所采取的行动,但我们每个人也可以作为个体采取单独行动。我们都有能力通过让云段供应商了解我们的担忧,从而影响市场。让他们通过反馈表单和产品论坛等渠道,向社区提供特定功能的项目,是一种方法。这些云段供应商的开发人员也会在开放源码论坛上闲逛,希望成为这个社区的一部分;这些请求会引起他们注意,这会对他们带来更大的压力,去改变现状。
这是一个巨大的挑战,没有简单的办法可以解决,所以我们需要认真对待。开源模型并不脆弱,不会在一夜之间崩塌。但是,如果商业云段供应商继续利用项目而不给予回报,他们将阻碍那些帮助开源取得成功的激励措施。杀鸡取卵是不会符合他们的利益,当然也不会符合开发商和客户的利益。