1968年,著名的北大西洋公约组织在联邦德国组织了一次学术会议,前来参会的是50多名北约各国的计算机专家、软件工程师、工业界代表。会议只有一个主题:应对“软件危机”。
在当时,大型计算机还没有普及,但软件开发带来的巨大成本已经让各国开始恐慌。欧美国家普遍发现,如果每个软件都采取高度定制化的开发方式,那么随着软件数量增加,开发成本和维护难度会拖垮产业链,甚至危及社会经济安全。
最终,会议形成的应对共识,是国家必须发展软件工程(software engineering),确保自身掌握从开发语言、操作系统,再到软件开发工具的一系列基座。用系统化、数量化的工程原则来实现软件开发的低成本与高可控,从而避免产业经济被软件拖垮。
这一结论影响了此后数十年的全球软件发展史。美国、欧洲、日本纷纷在基础软件与开发工具上重兵集结,一决雌雄。由此不仅在市场层面产生了一系列基础软件巨头,在国家竞争层面,以美国为代表的发达国家,可以通过基础软件与开发工具优势牢牢掌控全球软件发展,确保自身的领先地位。至此,软件工程已经不再是一个技术问题,而是成为国家战略安全问题。它带来了很多结果,比如在基础软件中竞争失败的欧洲、日本,丧失了后续信息革命的主导权;又比如东南亚、印度等地,只能沦为美国的软件外包商,丧失了底层创新机会。
软件工程,从来都是一场发生在代码中的无声战争。
时间来到21世纪,伴随着全球化的大发展,开源软件与开源社区已经成为了主流的基础软件(尤其是软件开发工具)获取形式。中国、韩国、新加坡等国家的软件产业,充分利用了开源机遇,用最低成本的方式获得了成熟的软件开发基座。但这种模式真的牢不可破吗?甜蜜的软件开发工具开源,真的会始终美好吗?
当逆全球化与地缘纷争的钟声敲响,我们惊觉风险从未消散,新“软件危机”正在酝酿。
软件,从来不只是个技术问题,而是企业乃至社会的命运问题。
讨论“缺芯少魂”,不能忘记开发工具
这些年来,“缺芯少魂”“卡脖子”成为全民热议的话题。诚然,芯片和操作系统是软硬件两大体系的核心。但要看到的是,我们缺和少的绝不仅仅是这两样东西。事实上,走向科技自立要补的课非常多,比如硬件层面的存储、数控元件;软件层面的开发框架、中间件、数据库。其中不能忽略的一点,就是软件开发工具。
软件开发工具,是基础软件中的基础软件,也是应对“软件危机”的关键。所谓软件开发工具,是指软件开发从创意到需求分解,再到设计、编码、生成文件,最终部署到对应环境中,各个步骤、流程所需要的必备工具支持。其内涵十分丰富,体系十分庞杂。
从开发流程上看,软件开发工具一般涉及项目管理、代码托管、代码检查、编译、部署、测试、发布等等,每个流程环节都有不同的工具。对于软件企业来说,软件开发工具需要尽量形成完整的工具链,这样才能协同各个部门,管理整个软件开发项目的流程与进度。而对于开发者来说,软件开发工具需要尽量集成化、一体化,从而降低使用不兼容工具开发带来的综合成本,实现敏捷、高效率地开发。
在这些动力的加持下,软件开发工具不断走向现代化,其价值也水涨船高,行业影响力随之而来。
数字化时代里有句名言,“软件定义一切”,可以说,每家企业都将是软件企业,每位研发人员都将是软件开发者,每个基础研发流程都离不开软件开发工具。如果我们做一个逆向假设:大量软件开发工具不能用了,会发生什么?
就像缺了光刻机不能造芯片一样,缺了软件开发工具首先无法实现软件开发。同时,大量软件还将无法进行创新迭代,已有软件很难进行维护和运营。这种情况,不仅直接威胁大众生活中的APP与软件应用,更会直接打击依赖软件的工业数字化体系与民生数字化基础设施,这是任何人都无法承受的代价。
如今,软件工具已经大量使用全球化的开源工具与开源平台。那么,我们不禁需要提出一个问题:这种模式,真的安全吗?
后开源时代,新“软件危机”来临
随着20世纪80、90年代信息全球化的开展,头部企业意识到开源是最有效形成生态、构建产业优势的方式,于是基础软件开源成为全球化过程中一道亮眼的风景。到了21世纪,新进的软件开发者、从业者,从开始就习惯了开源开发工具,将使用开源工具,加入开源社区作为一种常识。
当时间指针转到今天,我们却猛然间发现,开源的美好原来是那么可贵与脆弱。它并非一成不变的真理,而仅仅是黄金时代的馈赠。
2022年3月,随着俄乌冲突爆发,谷歌、苹果、亚马逊、微软、Meta等软件巨头,以及SAP、Oracle等软件公司都快速停止了面向俄罗斯的业务。大量代码托管平台以及开源社区,纷纷在第一时间宣布封锁俄罗斯开发者账号。俄罗斯方面也在3月底宣布,禁止所有国家机构与半政府实体在关键基础设施项目购买外国软件。
可以说,在短短不到一个月时间里,欧美就对俄罗斯,以及这个国家的软件企业、开发者、数字化项目落下了软件铁幕。名义上开源开放的工具,在关键时刻没有一个秉持固有原则,纷纷在地缘纷争中站队。
比如说,今天全球软件开发者许多已经习惯在Github进行代码托管,甚至认为GitHub已经变成了一种开发者之间的“默认准则”。然而就在俄乌冲突开始不久,GitHub就对受到美国制裁俄罗斯实体的相关软件开发者进行了个人账户禁用、内容清空等限制。Sberbank科技、SberbankAI实验室、阿尔法数据库实验室等俄著名俄罗斯科技企业先是遭到了项目禁用,紧接着托管代码被整个删除。甚至有俄罗斯开发者称,他们只是先前与相关企业有过合作,目前合作关系早已结束,但依旧遭到了GitHub在没有预先警示的情况下封禁账户。
这种情景,不禁让全世界更多国家开始反思,开源工具真的万无一失吗?它真的独立于政治和地缘之外,是一种纯粹技术的第三方价值吗?
答案显然是否定的。一旦底线被打破,那么它就会一次次被打破。一次次国际纷争,让我们看到了“后开源时代”已经到来。开源工具与开源平台,根本不独立于国际局势,甚至可以在必要的时候作为国际纷争中的工具、砝码,甚至是武器。
这也在某种程度上预示着,新的“软件危机”已经到来——20世纪60年代的软件危机,是缺乏软件工程基础会面临危险;今天的软件危机,是当你习惯了被他人控制的软件工程基础,那么危险也如影随形。
应对软件工具失控,中国准备好了吗?
开放与发展无疑是全球化的共同目标,我们当然不希望开源软件工具被封锁。但《三体》里的情节告诉我们,当你不准备应对危机,危机就已经不远了。
事实上,中国的软件生态,尤其是生产软件的工具箱,还是非常脆弱的。工信部数据显示,从2000年至2020年,中国软件市场整体规模实现了135倍增长,美国为3.2倍;2020年,中国软件产业规模占全球软件产业的24%,占GDP比重约7.9%。中国软件产业在20年中实现了举世瞩目的腾飞。但这种经济奇迹,其实是建立在他人提供的基础和底座上的。
根据中国软件协会的调研数据,2020年,在全球操作系统、基础软件领域,美国业务收入约0.81万亿美元,占全球比例五分之四。而中国基础软件份额较少,国产软件的国内市场份额仅为5%,国产操作系统的国内市场占有率仅4%。
国产基础软件体系薄弱、市场份额低的软肋,已经暴露在了国际格局中。从2019年至今,已有超过600家中国企业、机构等被列入美国“实体清单”。而在相关商品与技术的制裁体系中,基础软件是当之无愧的“利器”。大量优秀的企业、科研院校,都被美国禁止使用主流的基础软件与软件开发工具,严重限制了中国产学各界的创新能力。应对这种局面,似乎只有自己掌握软件开发工具,才是保障创新安全底线的最优解。
值得注意的是,“新软件危机”并非只有开源工具断供一个选项。很多国内企业都会选择购买商业版、定制版的软件。但这些软件看似离开了开源工具,实质上很大程度是将开源工具进行封装与定制化,再进行打包转卖。这种情况下,主动权依旧受制于人。一旦出现开源工具失控,那么这些投资巨大的商业软件将面临着无法更新、漏洞无法修补等严重问题。
另一方面,软件开发工具的危机也不仅仅通过断供来发生。随着越来越多的软件采用云上开发模式,大量数据、开发代码需要存在工具背后的国外企业服务器中。这也就意味着敏感数据理论上可以被其他国家查看、分析甚至拷贝的,其风险意义不言而喻。
而一旦出现类似的软件危机,中国会有哪些企业深受其害呢?首当其冲是数字化程度高、软件使用规模庞大、软件开发需求复杂的大型政企;接下来是掌握关键数据,同时肩负创新责任的科研机构与院校;紧接着是有着充分数字化、智能化需求的实体企业;接下来则是科技产业,尤其是软件开发企业与软件开发者群落。
这样的烈性事件一旦出现,就不是技术能够解决的问题。它不以任何企业、机构的技术努力而转移,而会直接导致命运出现分叉。当千百家企业受到影响,产生供应链的多米诺效应。社会面的影响是难以估量的。
所以说,软件开发工具的受制于人,根本不是一个技术问题,而是命运掌握在他人手中的问题。
至此,我们也可以得出一个结论:中国确实还没有准备好应对“新软件危机”。但必须从此刻开始准备。要有意识、有方法地在国计民生行业、关键科研领域、重大科技产业中排除基础风险,实现自主创新。
2019-2020年之后,中国各界关于软件自主可控的共识提高到了空前的水平。大量政企用户在采购软件过程中,将国产化和数据安全纳为关键考量因素。也由此衍生了巨大的机遇窗口。比如说,各大互联网云公司,都在以国产数据库为切口进入政企市场。几年来,在税务、医保、邮政、运营商等领域形成了规模化效应。而国产工业软件,比如仿真、CAD等领域也高速发展,在制造业、能源产业中实现了突破。
但也要看到,基础软件国产化还有很长的路要走,比如“做软件的软件”——软件开发工具。在今天得到的重视就还远远不够。
好在逆全球化暗潮汹涌的几年后,事情开始出现了转机。
“永远不要浪费一场危机”
从政策趋势与产学共识的宏观层面看,基础软件开发工具的国产化与独立自主,已经是时代的大势所趋。
在信息技术应用创新委员会的定义中,应用软件开发平台同云计算、操作系统、数据库一样被定义为开发支撑基础软件,位居“十四五”软件和信息技术服务发展规划中的五大主要任务之首。
另一方面,软件开发工具的国产+商业版创新,也随着主要科技公司的进步,进入到新的局面。从中兴、华为事件以来,已经有数百家中国科技实体被美国列入实体清单,在各类软硬件基础技术的获取上遭遇全面断供。危机固然凶险,但也在客观上加快了科技实体自主创新的进程,同时这批“先行者”们也可以将经验和方法释放出来,加快中国技术供应链的自主化进程。
以华为为例,华为被美国列入实体名单之后,涉及美国技术的商用软件开发工具已经无法继续购买使用许可,无法获取存量软件的持续更新,无法及时获取安全漏洞的修复。为了破局这场典型的“新软件危机”,华为从2019年开启了去美国化的软件自研,范围涉及操作系统、数据库、中间件、应用软件等基础软件领域。
而面向软件开发工具,这个容易被忽视,却又至关重要的领域,华为云推出了DevCloud开发云和CodeArts软件开发生产线,并面向开发者提供一站式、全流程、端到端安全的云原生DevSecOps云平台。在确保用户拥有高度集成、现代化流水线式开发的同时,解决了“新软件危机”暴露的开源软件弊端。
如今,华为云CodeArts可以支持web开发、移动应用开发、微服务开发、Cloud Native应用开发、嵌入式开发等典型研发场景。覆盖需求与设计、开发、测试、部署、运维等软件交付的全生命周期环节。DevCloud、CodeArts已在华为云、华为电信产品、终端云消费业务、芯片研发等业界高标准、大规模的软件研发业务中应用,证明了自身的价值与能力。
提到软件开发工具的国产化与自主创新,我们经常会发现自研工具能力落后,或者局限于单个不重要的工具,那些重要性大、考验严苛的开发工具依旧需要使用国外开源工具。
但在华为云CodeArts中,却可以看到关键能力、关键工具的自主创新。比如华为云CodeArts Req需求管理服务,专项解决了软件开发管理这个战略级需求。可以帮助用户实现软件开发战略意图,进行精准投资。目前,CodeArts Req已经高效支撑华为13万研发人员的需求协作,月API调用量超过15亿次,累计管理5000多万需求,覆盖华为终端、网络、云计算、芯片、汽车等全业务场景。在这条软件开发的“生产线”上,一点一点的关键突破,终将汇聚成整体产业链的核心竞争力。
正如二战时期英国首相丘吉尔的名言,“永远不要浪费一场危机”。面对新软件危机,我们应当充分珍惜危机带来的启示,并且保有这样的共识:一家企业可能面对的风险,一定是整个中国可能面对的风险;而一批企业踩过的坑,绝没有必要让整个国家重蹈覆辙。
因此,当问题有了转机和解法,就需要产业各界快速凝结共识,形成战略合力以对抗风险。
命运只有掌握在自己手中,才叫命运。否则的话,一切都是囚笼。
从软件开发工具,到智能时代的软硬件创新主导权,一切都到了需要改变,也应该改变的时候了。