背景
现代开源开发注重协作体验,让开发人员能和业内同仁合作创建开放的、免费可用的软件,为共同利益工作,进行社区共享。
云计算时代之前
公有云出现前的网络世界,开源作为一种开发模式提供了明显的实质性好处。标准方法是免费共享代码,同时企业可以付费获取企业级服务的开源基础软件支持或扩展。后一种情况是较新的模式,只有部分代码通过开放模型提供,剩余代码仍是自己独有。
云计算时代到来
公有云的快速发展改变了使用开源软件的基本规则。大型公有云平台采用了开源解决方案,并将其重新用作基于服务的框架内商业产品。可以从MongoDB和ElasticSearch上看到这种情况,它们的原始开源代码都是AWS的分支。
开源目的
为什么初创公司会采用开源模式?有的是为了向更广泛的社区分享和提供它们的代码,实际上也包含了更深层、更商业化的驱动力。
软件编写有时可以看作一场消耗战,一个人一天只能写这么多代码,再乘以更多的人数,开发有意义的代码所花费的时间在快速减少。而免费提供的代码更有可能被用户下载、测试、进一步共享和开发,继而获得广泛的追随者。对企业来说,开源则是提供了低廉的开发成本和潜在的广泛采用。
对程序员来说,如果项目成功,开发商会表彰其为项目完成节省了时间和成本,从而获得行业认可,反过来又是一条就业之路,在某些方面是一份自我定义的简历。但其结果又具备双面性。
首先,进入IT职业(特别是软件开发)的门槛大大降低,风险在于许多人不具备提高代码效率的技能。这一点可以通过开发更新并将其接收到主线代码的过程来解决。至少理论上,糟糕的编程代码应该会被同行拒绝。
任何项目开始时,开发人员都会选择是保留专有模型还是开源。相对的利弊也显而易见。与此同时,公有云的兴起让AWS等公有云提供商能利用本质上免费的软件,然后将其作为开发托管数据库等领域服务产品的基础。
从更广阔的市场来看,越来越多的商业公司已经从不受限使用开源软件中获益,尤其是 Linux免费版本及其提供的相关基础设施工具。企业可能希望选择提供支持服务的模型,例如 被IBM收购的红帽,但同样,许多人乐于使用CentOS(或现在的Rocky Linux),尤其在非生产环境中。
最后
当前开源模型面临的最大挑战是公有云供应商采用了上述的这些长期运行的项目。像MongoDB这类平台开发(几乎)早于公有云的商用,可以说开发人员从未设想过他们的产品会用于交付云服务的方式,共享初衷似乎已经不再。
当然开源开发模式对个人和商用企业都具有社区化和包容性。初创企业有一个选择——开发受法律保护的专有代码,或使用开源模型进行“众包”开发,后者会导致代码面临更大被利用的意外风险…这些都是将开源精神带入云计算时代所需的演变。