今天不谈技术,我也来八卦一下。最近信息系统基础设施国产化的浪潮兴起,大量的国产化IT基础设施厂商因此受益。不过也有一些不同的声音,认为国产IT基础设施大多数依赖于开源代码,因此都是假国产。似乎只要不是从第一行代码写起的软件,都说不上是国产。哪怕是大部分代码都是自己写的,也是抄袭,算不得什么。最近也经常听到“如果开源项目闭源了,那么国产化就一地鸡毛了”。用不用开源,利用开源项目算不算国产化,在之前我已经表达过自己的观点了,这里不多做表述。每个人从自己的角度出发,对这个问题的看法也不同,这都很正常,很多事情本来就是需要用十几年甚至几十年时间才能看得清的,现在下结论还为时尚早。
目前国产IT基础设施中大量使用开源代码,这是事实。因为我们在这方面的起步较晚,一直处于追赶阶段,如果再从头开始,恐怕差距就更大了。所以选择相对容易跟上大时代的方式可能是我们不得不采用的。大量使用开源既然不可避免,那么开源社区如果闭源了,我们该怎么办呢?实际上,这个问题在多年前,我们的企业就已经遇到过了。南大通用的分布式数据仓库系统GBASE 8A的存储引擎中就使用了inforbright标准版的开源代码,不过2015年左右inforbright修改了开源协议,产品变成闭源产品了。不过GBASE 8A这个产品并没有消失,近些年发展的风生水起,在国产数仓领域的市场占有率也节节攀升。实际上南大通用也不是简单的把inforbright的开源代码拿来就能拼凑出一个分布式数据仓库产品的。因为开源的inforbright是单机版的,并不支持集群。我想通过这些年的发展,南大通用已经基本上掌握了inforbright存储引擎的关键代码。
开源项目会改变开源协议,这些年我们遇到的已经不是inforbright这一家了,2019年的REDIS修改开源协议让大家虚惊一场。后来发现只是一些高级组件改成了自己定义的RSAL许可证协议,核心的REDIS组件还是保留为APACHE V2,这家多次修改开源协议的企业其每次修改都是和融资之类的商业活动有一定关联性的。实际上这些年MongoDB和ES的开源协议改为更为商业的协议,也都和融资上市等行为有关。并不是企业在收割用户,而是企业的第一要务是为股东创造利润,这种行为都是正常的商业行为。
因为开源协议是会被改变的,所以在选择开源项目的时候也是要十分小心的。如果某个开源产品是一家主要的企业主导开发的,核心代码都掌握在这家企业里,那么因为商业利益,企业修改开源协议的可能性就更大一些,而那些开源社区中没有明显的企业控制的开源项目,其风险就会小一些。
回头来看看我们所关心的Linux,实际上连我都差点忘了,最著名的Linux开源发行版的全称是GNU/Linux,这个发行版是现在大多数Linux发行版的源头。有些朋友可能以为GNU代表了GPL开源,实际上不是的。GNU/Linux是两部分软件的组合,Linux是一个类UNIX的核心,其代码量在Linux发行版中是极小的,而GNU是Linux核心外的整个操作系统。GNU也是最早的开源组织,GPL就是该组织的开源协议,Linux的核心与GNU结合后,替代了GNU中那个写得不够好的核心HURD,从此Linux核心也遵循GPL开源协议了。
到目前为止数万个组织和个人都在参与Linux代码的贡献,每个贡献者都可以独立决定自己提供的这部分代码的开源协议,只不过这些开源协议必须是和GPL兼容的,代码才会被收录。实际上目前我们使用的Linux发行版中,有不少代码也不是遵循GPL开源协议的。从目前来看,想要改变GNU/Linux的整体开源协议,是一个极小概率的事件。某个组件要修改成与GPL不兼容的开源许可,开源社区立即会选择其他的替代方案来进行替代。因此GNU/Linux闭源的可能性是极低的。
虽然暂时不存在GNU/Linux等关键开源项目闭源的可能性,我们的企业也不能躺在开源项目上赚钱。积极参与开源社区,贡献高质量的原创代码是每个利用开源项目发行商用版本的企业的责任,我们在开源社区贡献越大,我们在开源社区的话语权也就越大。同时基于开源项目发行商用版本的企业也应该严格遵守开源协议,比如使用GNU/Linux代码的企业,也应该继续开源自己的代码。除非你准备完全脱离开业社区,重构代码,开发自己的闭源产品,否则必须严格遵守开源协议,否则必然存在被开源社区拉黑的可能性。
除此之外,目前大家对一些国产软件厂商最大的不满在于他们封装开源代码,并以此盈利,但是他们并没有承担一个产品原厂应有的服务职责。用户遇到问题后基本上无法获得任何售后服务。大家都知道,如果我们购买了红帽的RHEL,那么遇到问题,到红帽的官网上,大概率能找到解决问题的办法,或者可以将问题提交上去,等待红帽发补丁来解决。同样都是依靠开源社区来发财的企业,红帽能做到的,希望我们的国产软件厂商也能做到。只有这样,才能形成一个良好的生态,我们的国产软件厂商才真正摘掉“套壳”的帽子。