30多年前,理查德·马修·斯托曼(Richard Matthew Stallman)提出GNU计划,即创建一套完全自由的操作系统,这颠覆了当时软件界闭门造车的生态,一大批自由软件由此诞生。
此后的岁月里,借助于开源软件,谷歌、亚马逊、Facebook、华为、BAT等互联网巨头,红帽等开源操作系统厂商,以及云计算和移动终端产业快速崛起,为世界带来深刻改变。
“相较于发达国家,我国的开源基础核心技术仍然缺失,产品市场份额仍然不高,产业价值链仍然以中低端为主,生态关键环节仍存在挑战。”近日,在开源软件供应链2020峰会上,中国科学院软件研究所(以下简称软件所)所长赵琛如是说。
软件所研究员武延军也认为,中国开源软件仍面临一些根本问题,集中体现在开源产业价值不高,开源社区贡献不足、开源生态受制于人。如何摆脱当前的困境?与会专家展开激烈讨论。
居于“险要”之地的开源软件供应链
“以操作系统为例,大型复杂系统软件的开源软件组成非常复杂,集中体现在主流操作系统包含大量开源软件包,开源软件包开发维护分布在全球各地。可以说,拥有可靠开源软件供应链是大规模商用操作系统的基础,开源操作系统构建的过程,本质上是供应链整合优化的过程。”武延军说。
伴随着产业发展,现代软件已经从单体模式演进到以开源软件为代表的规模化协作模式。复杂软件往往包含涉及诸多开源软件,这些开源软件彼此组合、依赖,连同为各个开源软件做贡献的维护者和开发者,共同形成一个包含上万节点的供应关系网络,即开源软件供应链。
开源软件供应链涉及所有开源软件上游社区、源码包、二进制包、包管理器、存储仓库以及开发者和维护者、社区、基金会等。已有研究表明,软件的安全性和可靠性与其复杂性息息相关,比如代码合并过程中,软件供应链面临遭受攻击的威胁;随着版本演化,由于缺少对软件供应链的优化和甄选,操作系统的性能反而下降。
为了让大家形象理解供应链的重要性,赵琛分享了一个故事。他介绍,某品牌的一款车型出现问题,技术人员拆开装置寻找原因,一直追溯到德国南部山区的一家四级供应商,是一种铅笔头大小、价值25美分的部件出了问题。而这个部件却对价值5万美元的汽车质量造成了隐患,进而可能影响到千亿美元的汽车市场。“这是传统供应链的一个生动案例,而对于大型复杂系统软件来说,其供应链体系更为复杂和影响重大。”赵琛说。
与传统供应链不同,开源软件供应链具有产品迭代快、模块数量多、生产线上化、供应全球化、仓储集中化、用户多样化等特点,这也让开源软件供应链暴露在更多风险之下。
武延军表示,开源软件供应链面临安全性风险,不法分子利用供应链中已有的漏洞进行组合攻击,或向供应链的上游注入恶意程序;知识产权风险,软件发布及使用过程中违反开源协议;维护性风险,因供应链条中的节点缺乏维护而引入风险。
将供应链风险管理引入开源
尽管软件开源让产业界面临很多棘手的问题,但“坚信最好的软件是开源、开放的软件”,武延军举例,Red Hat始于开源社区,其拥有数以千计的庞大技术贡献者群体,确保成品经过反复检验,能够长久安全使用。
“开源的优势不言而喻,不能因噎废食。将供应链风险管理概念引入软件产业,提出攻击和安全风险评估方法,系统分析开源软件所面临的挑战尤为必要。”武延军说。
去年开始,Linux基金会、Sonatype、Synopsys等组织机构,也提出了开源软件供应链的概念,并提出衡量指标、代码审计要素等。
“如果退回到十几年前,可能我国并没有讨论这一问题的基础,当时我国对国际开源的贡献还很少,最近这种情况有了极大改善。”赵琛直言不讳。
据GitHub统计,2020年中国源代码贡献量已达到世界第二;在最新的Linux内核5.8稳定版本中,华为技术有限公司的代码贡献量世界排名第二;BAT等互联网巨头都在推出各自的重量级开源软件。我国建立了openEuler这样的大型开源操作系统社区,以及开放原子开源基金会等开源基金会组织。“开源软件在中国的发展态势已经发生了根本变化。”赵琛说。
他表示,在这种情况下,有必要更加深刻理解开源软件的生产方式、组织体系和运转机制,针对产业对开源软件的重度需求,理清开源软件的关键技术和关键环节,建设可靠的开源软件供应链,保障软件供应安全和高质量创新。
武延军认为,应从供应链角度探索开源产业的价值要素和核心竞争力,从供应链角度评估开源社区的需求和认可度,从供应链角度把握开源生态的关键环节。具体来说就是要构建开源软件知识图谱,建立供应链可靠性风险识别与评估体系,量化评价指标,同时通过对攻击链路进行知识建模,有效检测供应链中存在的攻击链路。
目前,武延军团队通过追踪软件之间的关联依赖关系、更新迭代等,不断扩充和完善知识图谱,为开源软件提供持续的数据输入。从开源操作系统包管理列表获取软件包以及其依赖关系,截至目前,已提取出将近9万个软件包实体和超过6万个软件实体之间的关联关系。
多样需求孕育多种需要
除了风险防控、安全保障、效率提升,企业对开源提出更多实际需要。华为技术有限公司的工作人员提出了他们的困惑,“市面上的开源项目越来越多,如何选择最契合企业需要的,如何预判开源软件下一个版本是否依然适合使用是企业面临的难题。”
为此,武延军提出开源软件供应链演化定制模型的想法,让企业能够找到更适合自己的开源项目。
2019年《经济学人》杂志曾预测,“开源软件是过去10年来智能手机大发展的先决条件,而像RISC—V这样的开源硬件也许会在未来10年让其他设备实现类似扩张。”
2018年8月底,中国科学院大学在国内首次以流片为目标,指导首批5位本科生完成了一款64位RISC—V处理器SoC芯片设计,于12月完成第一次投片,芯片返回后可成功运行Linux操作系统,这就是“果壳”。目前,“果壳”已在GitHub开源,已拥有近百位来自世界各地的使用者。软件所也将openEuler操作系统移植到“果壳”上,并建立“果壳”分支。“这实现了工业级操作系统在教学芯片上的成功应用。”中国科学院计算技术研究所研究员包云岗表示。
多种需要也凸显开源的人才缺口。2020年,软件所在中国科学院战略先导专项支持下, 发起了“开源软件供应链点亮计划”(以下简称“点亮计划”),希望通过建设可靠开源软件供应链,精准培养软件领域急需人才和高端人才。
2020年4月,软件所和openEuler社区共同主办了“开源软件供应链点亮计划-暑期2020”(以下简称暑期2020)活动。该活动组委会负责人屈晟介绍,此次活动共吸引了42个开源技术社区、246位社区导师参与,上线388个项目。组委会共收到来自129所海内外高校学生的397份项目申请书。经过3个月的开发,最终有151位同学的成果通过了社区和组委会的评审。截至10月底“暑期2020”活动结束,已有3位同学通过社区选举成为 Apache 项目的 Committer;超过100 位同学的贡献被社区认可并成为对应项目的Contributor;20余位同学的开发成果被主项目引入,成为社区 Committer 候选人。“点亮计划”致力于将“暑期20XX”打造为一项面向学生的系列开源活动,“暑期2021”将在本届活动的基础上扩大规模,计划支持不少于100个开源技术社区、800个项目,吸引超过1000 名海内外高校学生参与,并与更多的科研机构、技术企业、媒体合作,以期扩大活动及开源社区的影响力,提高成果数量和产出质量。
赵琛表示,后续也希望继续联合相关高校、企业和开源社区,通过开源协作的方式,共同建设特色化的示范性软件学院,培养满足产业需求的软件人才。
版权声明:凡本网注明“来源:中国科学报、科学网、科学新闻杂志”的所有作品,网站转载,请在正文上方注明来源和作者,且不得对内容作实质性改动;微信公众号、头条号等新媒体平台,转载请联系授权。邮箱:shouquan@stimes.cn。