张海涛
他山之石,可以攻玉,我们在厘清思路的基础上,可以借鉴已有的经验,将中国的开源项目推向成功。
当前,使用自主安全可控的信息和服务是国家的重要决策,也是保障国家信息安全的必然趋势。开源给软件的自主安全可控提供了支撑,本文从开源的历史、现状、未来谈起,分析开源的战略价值和意义,同时探讨成功实现开源项目的思路,希望能够起到抛砖引玉的作用。
开源的历史、现状和未来:从小众的极客技术到商业组织逐鹿的战场
1.从开源历史看,技术如果能够解决产业和行业痛点,就能得到大的发展,否则只能是技术极客的玩具。
开源软件的发展大致经历了三个阶段。第一阶段是上世纪80到90年代,这个阶段是以个人和大学的技术极客为主的小众市场;第二阶段主要是互联网时代,Linux和Apache Web服务器在互联网业务占据了统治地位;第三阶段是2007年云计算出现后,商业模式和市场需求推动了开源业务出现新的变化,人们开始考虑用开源作为工具,满足商业和变现的诉求。
在第一阶段,Linus Torvalds于1991年开始了著名的Linux内核项目,但没有用在生产系统和主流商业场景,因此这个时候开源领域没有主流厂商的影子,甚至有些领头企业比如微软是反对开源的。在互联网时代,开源软件开始进入业务系统。当时很多互联网公司还没有摸索到正确的商业模式,不能负担商业软件高昂的成本,同時,互联网业务的扩展性和稳定性又深受诟病,因此开源的Linux和Apache服务器就成了标配,并经受了互联网流量的检验。从2007年开始的云计算浪潮将开源软件推到了一个新的高度。云计算基础技术的复杂度使技术成本越来越大,而开源使得众多厂商能够“共享”技术,因为云计算厂商利润不是靠卖技术实现。开源不仅解决了云计算时代技术成本的问题,还能构建开发者生态、应用生态和解决方案,更快地应对客户的需求。
2.开源已经从技术极客的无序活动,发展到当前领导企业不惜重金投入
当前开源项目的特点之一是众多公司投入开源项目,使原本只有技术特性的开源项目带着服务产业和行业的目标性,各公司在开源项目中不惜投入,以占领话语权。这种公司级别的投入,对开源软件和开源社区来说,是一枚硬币的两个面。一方面,开源项目容易获得资金和资源支持,能够迅速成长,并实现行业落地;另一方面,项目不可避免地带有公司的商业诉求,影响了开源软件的中立性。因此,厂商、用户、SI、开发者等多方参与和中立的治理成为项目是否能走远的关键。
同时开源项目是否有前途、是否成功,不在于发起方是否是大公司和项目技术是否高超,而在于开源项目能否解决产业或者行业共同的痛点、能否引起其他公司共鸣和参与、方案能否被用户使用。大公司投入资源相对多,在开源项目中容易占据有影响力的位置,但是小公司和众多初创企业仍然有很多机会。当前仍有很多初创企业和小公司主导的开源项目,比如Apache Kafka背后的Confluent公司、MapD后面的MapD Technologies公司等。总之,开源不只是大公司的工具,也给小公司的生长带来了希望。
3.开源:趋势已定,未来已来
在云计算流行之前,基础技术总是被当做公司和业务的差异点加以保护;在云计算时代,给客户提供的是个性化的服务,公司和业务的差异点不是技术和产品,技术反而成为了重复制造的车轮。基础的共享技术的开源,有利于开放和共享成本,开源技术给第三方合作提供多样性、个性化的业务,同时吸引包括开发者、用户、系统集成商、技术提供方等多方构建生态。可以看到,开源之路方兴未艾。
开源是中国企业实现商业战略的工具
开源最早兴起于美国,最近几年中国政府和企业开始对其加大投入。开源,对中国政府和企业来说,也不应是单纯的技术问题,而应有着更高层面的战略考虑。
1.通过开源构筑市场优势,抢占和开辟市场
最典型的例子是当前销售服务器的厂商,装机的操作系统都是开源的Linux,这些公司聚焦在硬件设计、制造优化、成本降低和市场渠道上面。除了开源软件销售硬件模式,企业还有很多可以利用开源的方法去占领和开拓市场,比如销售开源软件的企业版本、开源平台软件销售增值软件或服务、开源硬件设计销售服务等。思科甚至利用OpenDayLight引导开源方向,避免开源项目朝不利于自身业务的方向演进。总之,开源作为一种战略工具,可以有很多种拓展市场的使用场景,这些对中国企业是有参考和借鉴意义的。
2.使用开源提高研发效率,降低成本
除了使用开源产品构建商业产品和解决方案,越来越多的公司会使用内源(inner-source)来开发自己的产品。内源是把开源开发的最佳实践应用在组织内部,并在内部建立类似开源的文化,以提高内部研发效率。即使公司在开发专有软件,内部开发仍可以使用内源,对内开放,共享部分代码的开发。
3.通过开源吸引客户和合作伙伴构筑生态,催熟产业
开源生态并不依赖与软件公司的商业联系,而是依赖开源社区,因此具有长期的技术保证性。越来越多的互联网企业、软件和硬件厂商、应用方案提供商、运营商、芯片厂商、学校和研究机构等,都成为开源软件的应用者、参与者和贡献者,并成为开源社区的重要成员。在中国,有关方面均已着手于打造和推动开源社区、开源平台、开源基金会等开源生态的建立,仅2018年,其就在云计算、大数据、人工智能、工业互联网、数字经济等领域启动了大量与开源相关的重大专项、重大工程。开源生态也在不断完善,例如,在网络七层堆栈的最下一层,开源项目包括了Open vSwitch等;在网络管理和编排层,有OPEN-O项目;而再往上的编程框架层,如Node.js,拥有的服务器端JavaScript是全球发展速度最快的网页技术平台……在堆栈的每一层,都有各类创新。
4.开源和标准
基础软件之间的互操作性涉及相当多标准的制定,由于标准与商业利益挂钩,企业也会通过开源社区来控制标准。2016年,Docker还是云计算的容器技术标准制定者,CNCF开源社区通过OCI瓦解了它的优势,背后就是公司間标准的博弈。此外,在电信领域开源项目中,标准的争夺更加激烈。标准组织如ETSI、MEF和TMForum发起了一些开源项目,以推进标准的形成,各公司也在积极备战开源项目,从而影响开源项目之间的标准。
5.招人才
几乎所有与开源相关的公司,都不会放过利用开源招聘人才。但是,是否能留住人才,给人才提供未来的发展空间,还需要在公司文化和内部管理上与开源有一定匹配。因此,虽然招聘人才是公司开源的诉求之一,但是公司的文化才能决定人才能留住多久。
他山之石,可以攻玉
什么样的方法可以让我们在方兴未艾的开源领域占领一席之地呢?中国政府和企业可以借鉴当前一些国家的成熟做法,避免走弯路。
1.成熟的开源产业生态
一个成熟的开源产业生态,不仅需要开发者和技术贡献方、社区、媒体、基金会、政府,还需要成熟的风险资金投入和退出机制。如果没有风险投资的成功退出,开源只能停留在技术极客阶段,这对做大开源产业是不利的。中国开源目前在技术和社区方面追赶比较快,但有开源的引导基金且有成功的营销模式,才能形成开源产业的闭环。中国政府和中国领导企业可以在打造成熟开源生态方面贡献更大的力量。
2.中国企业可以借鉴成熟的开源项目运作规则,赶超世界上的领先企业
(1)洞察行业趋势,解决业务痛点
“只要站在风口,猪也能飞起来”。开源的技术项目很多,但是能够火起来的不一定是技术最厉害的,反而是那些能解决热点问题、管理得当的项目。因此,如何进行风口的把握、守住项目中的占位以及对行业趋势的判断,就要比拼真正的实力了。
(2)用源代码说话
开源项目只有用源代码做敲门砖,才能在社区和项目中占据关键位置,才能以专业能力影响项目进度。中国企业目前的困境是,缺少开疆扩土的架构师,跟在别人后面修修补补,贡献的代码多是影响力不大的补丁。相信随着中国技术的崛起,这种情况会有根本的改变。
(3)开源项目合作和市场上的竞争:加入还是发起开源项目
开源项目中合作的企业往往是市场上的竞争对手,西方企业能将竞合关系玩的得心应手,这点值得中国企业借鉴。由于竞争关系,中国的领导企业往往喜欢“重新发明轮子”,而漠视竞争对手主导的开源项目。其实,开源是利用社区的力量来共享开发成本,形成产业的生态,因此“重新发明轮子”的做法往往消耗资源、分化生态,不利于做大产业和发挥开源的优势。
(4)客户成功
开源已经从十几年前纯粹的技术行为,逐渐演化成能够解决产业和行业痛点的重要力量。因此,成功的开源项目背后总是有企业的背影,客户的成功应用对于开源项目的技术推进有示范作用,是开源项目成功的保证之一。因此,关注客户的成功,也是开源项目成功的催化剂。
(5)其它
其它促进开源项目成功的因素还有很多,包括开源项目上下游合作、开源许可的选择和根据项目进展的PR活动等。开源上下游的项目负责人往往根据技术、客户、阵营(比如Linux或者Apache基金会)、团队等因素的互补关系来决策,因此成功的开源项目往往是生态的成功。
3.开源的公司治理
在大公司,负责公司开源事务的部门可以是central office,而小公司可能就是一或两个负责人,但无论如何,公司战略与开源投入的匹配总是需要获得高层认可。由于开源社区涉及外部组织的利益,因此项目的推动并不会一帆风顺,这就更加需要厘清公司诉求,折中各方利益,在曲折中推动前进。此外,怎么考核和评价公司资源投入的价值,也是要明确的。
4.开源软件的许可
据说当前的开源软件许可有几百种,但最常用的只有几种,包括GPL、LGPL、Apache License、Mozilla、BSD和MIT等。开源许可的选择对于项目的推进和成功有着很大的影响。
开源项目究竟选择什么开源许可,需要结合项目的地位、目标、竞争甚至商业考虑才能最终确定。
5.社区:领头羊、牧羊犬和社区运作
一个好的开源社区,既要有领头羊,也要有牧羊犬。领头羊是能洞察远景、看清技术方向的领头人,牧羊犬是看护社区、维持社区运作的职业经理人。
社区运作对于项目成功是非常重要的。有一种说法:好的开源代码+差的项目运作=失败项目;差的开源代码+好的项目运作 =成功项目。这说明即使开始开源代码质量不高,在高质量的项目运作下,代码质量可以提升从而达到项目成功的目的。因此,重视开源社区运营,对开源项目的成功至关重要。
总结
随着云计算市场的发展壮大,未来会有越来越多的开源项目生根发芽。开源项目是对国家提倡的信息技术和服务的自主安全可控的支撑,因此未来无论是国外还是国内,开源将持续发展。他山之石,可以攻玉,我们在厘清思路的基础上,可以借鉴已有的经验,将中国的开源项目推向成功。