【开源生态60问】——什么是开源标准化?标准化在开源生态系统中的价值是什么?

【开源生态60问】——什么是开源标准化?标准化在开源生态系统中的价值是什么?

Yinchunyuan

2026-03-02 发布9 浏览 · 0 点赞 · 0 收藏

1. 开源标准化的基本概念与发展历程

1. 标准化的概念及意义

标准化(standardization)是指在经济、技术、科学和管理等社会实践中,为获得最佳协作效果和社会效益,对重复性事物和概念制定、发布并实施统一标准的过程。标准化的重要意义是改进产品、过程和服务的适用性,防止贸易壁垒,促进技术合作。它不仅涵盖软件接口、数据格式、通信协议等技术层面,也涉及开发流程、文档编写、测试方法等管理层面的规范。标准化旨在减少信息孤岛、提高效率,并促进技术的广泛应用。

2. 开源标准化的概念及特征

开源标准化是指在开源社区和标准化组织之间建立合作机制,通过开放协作的方式制定和维护技术标准。这种标准化过程不仅确保了技术的互操作性和兼容性,还促进了技术创新和产业生态的健康发展。

开源标准化的核心在于开放性、透明性和社区参与,通过共同制定标准,推动技术的广泛应用和持续改进。具体来说,开源标准化包括以下几个方面的特征。

(1)开放性:开源标准的制定过程、内容及实施资源(如代码、文档)均向公众开放,允许任何人自由使用、修改和分发。这有助于吸引更多参与者,促进技术创新和合作。

(2)社区驱动:开源标准的制定通常由开源社区主导,依赖多方协作而非单一厂商控制。例如,中国电子技术标准化研究院推动的《开源治理系列标准》即强调社区共建模式。

(3)持续改进:与传统标准相比,开源标准更注重快速迭代、持续改进,通过短反馈周期和透明流程适应技术变化。例如,DIN SPEC 3105标准在开源硬件领域的应用即体现了这一特点。

(4)反垄断属性:通过打破技术壁垒和知识封闭,开源标准化促进公平竞争和技术民主化。

3. 开源标准化的发展历程

虽然开源标准化非常重要,但是在开源领域,开源社区对标准化的态度往往并不积极,直到后来因为业界竞争态势的逐步演化,开源社区的观念才逐渐发生了转变。

1. 早期阶段:被动兼容,各自为政

早期阶段,大致可以算作2000年以前,也就是开源概念出现前后。开源社区主要是遵循业界已有的技术标准。例如,Linux早期为了兼容UNIX,就积极遵循了可移植操作系统接口(Portable Operating System Interface,POSIX)标准、通过可移植与可连接格式(Executable and Linkable Format,ELF)实现与UNIX相同的可执行文件格式,支持TCP/IP标准,支持UNIX域套接字,等等。

在定义方面,则出现了“自由软件/开源软件”的定义之争,出现了自由软件定义、“开源定义”(Open Source Definition)这样的文献(称不上标准),但是这些定义对开源许可证并无约束力,从20世纪80年代诞生的GNU通用公共许可证、MIT许可证、BSD许可证等到现在已经出现了超过100种开源许可证,若以独立法律文本计算(含不同版本),总数可能接近150种,经过OSI认证的也有超过80种,这就出现了严重的协议兼容问题,至今尚未得到妥善的解决。

注:自由软件定义来源于自由软件基金会的官方文档《什么是自由软件?》:https://www.gnu.org/philosophy/free-sw.zh-cn.html

2. 快速发展期:浏览器大战与Web标准,开源对于标准化的支持

以Web标准为代表的开源标准化时期,可以称之为:快速发展期。第一波浏览器大战(1995~2001)在Internet Explorer和Netscape之间展开,制造了令程序员深恶痛绝的浏览器兼容性问题。2004年,Firefox浏览器推出,强调速度、安全性和标准支持,开始挑战Internet Explorer的垄断地位。2008年,谷歌的Chrome浏览器推出,同样开源,同样强调对于Web标准的支持。2004年,苹果、Mozilla、Opera等厂商成立网页超文本技术工作小组(Web Hypertext Application Technology Working Group,WHATWG),以“活标准”(Living Standard)模式开发HTML5,直接响应实际需求。2019年,W3C宣布将HTML和DOM标准主导权移交WHATWG,这标志着厂商主导标准的时代到来。开源再一次战胜了闭源,开放标准战胜了私有标准,开放联盟战胜了科技寡头。

3. 生态协作期:注重供应链安全

21世纪10年代至今,随着开源软件的接纳程度不断提高,开源软件蕴含的风险也逐渐受到重视。开源安全与质量方面的标准经历了从概念探索到体系化落地的关键跃迁。2014年,众议员爱德华·罗伊斯在美国国会提出了《网络供应链管理与透明法案》(Cyber Supply Chain Management and Transparency Act)。该法案要求政府机关在购买新产品时,需要取得产品的软件物料清单(SBOM),其中也针对“所有美国政府会使用的软件、固件及产品”,都要有软件物料清单。虽然这个法案未获通过,但是确实启发了后来的一系列实践。在2021年5月12日美国政府发布的提升美国网络安全的行政命令(Executive Order on Improving the Nation's Cybersecurity)就要求美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)在90天内制定指引,其中包括有许多主题的标准、程序或准则,目的是“强化软件供应链的安全性”,其中也包括了“提供采购者所有产品的软件物料清单”与此同时,SPDX、CycloneDX、SWID等机器可读格式成为主流,其中SPDX被ISO/IEC 5962:2021采纳为美国国际标准。

另外,整个供应链的安全也受到越来越多厂商的重视。Linux基金会于2016年发起名为OpenChain的全球性开源项目,该项目旨在通过标准化流程解决开源软件供应链中的许可证合规性问题,OpenChain的规范于2020年升级为ISO/IEC 5230:2020 Information technology — OpenChain specification(OpenChain规范),成为首个针对开源许可证合规的国际标准。2023年,OpenChain还推出了ISO/IEC 18974:2023 Information technology — OpenChain security assurance specification(OpenChain安全保证规范),可以帮助组织检查开放源代码中已知的安全漏洞问题,如CVE、GitHub依赖性警报或软件包管理器警报。总之,越来越多的企业、政府机构、学术机构开始结成广泛的协作共同体,开始有意识地通过制定开源相关的标准,推动行业更加良性发展,生态更加健康。

2. 标准化在开源生态系统中的核心价值

开源标准化在开源生态系统中具有非常重要的价值,主要分为以下几个方面。

(1)促进技术互操作性兼容性通过定义统一的接口、数据格式或协议,标准化确保了不同工具、平台和服务之间的无缝协作。例如,在容器技术领域,开放容器倡议(Open Container Initiative)和云原生计算基金会推动了容器运行时标准,使得容器可以在任何兼容的环境中运行,从而大幅降低了跨平台迁移的成本。此外,在开源硬件领域,DIN SPEC 3105 Open Source Hardware(开源硬件)(一系列来自德国的标准规范)通过规范技术文档要求和社区测试流程,确保了开源硬件设计的可复现性和兼容性,为开源硬件生态的健康发展奠定了基础。

(2)加速技术创新与产业化落地标准化的代码库、接口和工具链减少了重复开发的成本,使开发者能够专注于差异化创新。例如,Linux基金会发布的《OpenChain规范》通过标准化合规流程,降低了企业采用开源技术的法律风险。此外,标准化还推动了技术的普及,降低了准入门槛,使更多开发者能够参与进来。例如,GitHub平台所建立的一套GitFlow与GitHubFlow工作流,成为众多开源项目的协作模板,甚至后续的Gitee、GitLab等代码托管平台与开源项目,也都完全遵循这些工作流。

(3)增强生态稳定性与可持续发展碎片化是开源生态面临的一大挑战,而标准化通过统一技术路径,减少了社区分裂的风险。除了上文提到的Linux与浏览器的相关标准实践,在移动操作系统(Android)、云计算(Kubernetes容器编排标准)、数据库(SQL语法标准)、大数据(MapReduce接口标准)、芯片设计(RISC-V)等方面,都有效地通过标准来协调市场活动,确保技术路线的一致性。此外,标准化还能提升信任与安全性。例如,软件物料清单标准的制定,使软件供应链更加透明,从而增强了企业对开源组件的信任,并有效降低了安全风险。

(4)推动社会治理与合规性数字主权保护成为全球关注的重要议题,开源治理标准的制定能够规范开源协作流程,保障技术自主可控。此外,标准化与开源的结合也被视为打破技术垄断的重要手段。例如,欧洲通过开源标准化推动工业4.0技术的平等获取,避免了大型科技企业对关键技术的垄断,从而促进了技术的公平分配和社会的可持续发展。

综上所述,标准化在开源生态系统中的核心价值不仅体现在技术层面,还涉及产业发展、生态治理、商业模式和社会公平等多个维度。未来,随着标准化进程的深入,开源生态系统将进一步走向规范化、开放性和可持续发展。

3. 标准化缺失导致开源项目失败的反面案例

1. Chromium项目失败的原因

2015年,红帽的工程师汤姆·卡拉韦(Tom Callaway)在OSCON上发表了一个演讲“这就是你的开源项目失败的原因”,主要谈到了他参与的Chromium项目:“这不是一次愉快的经历。”他认为开源项目失败的一个重要原因是缺乏标准化。具体到Chromium,主要有两个原因:首先是代码管理问题,Chromium代码库超3500万行,依赖树复杂(含1200多个第三方库),若缺乏严格的依赖管理(如Bazel构建系统)和代码审查流程(Gerrit),维护成本将指数级上升。其次是许可合规风险,Chromium混合了BSD、MIT、LGPL等30多个许可证,这使得许可证兼容变得非常复杂。这些问题导致开发过程复杂化,增加了维护难度,最终影响了项目的成功。

2. OpenStack项目失控的深层原因

表面上看,OpenStack从风光一时到最后渐渐无人问津,主要原因还是由于Docker/Kubernetes的崛起带来的冲击。但是从项目自身,我们也能找到一些深层次的原因。企业利益争夺导致技术路线分裂,导致在OpenStack的大家庭中存在大量的组件,甚至互相竞争。2015年12月时,有一位记者麦克斯韦·库特(Maxwell Cooter)还写了一篇文章“OpenStack:厨师太多了”,指出参与者过多导致决策分散,企业的不同议程可能导致技术方向不一致的问题。但OpenStack的创始人之一、Rackspace的首席技术官约翰·恩盖茨(John Engates)表示,多样性从一开始就是计划的一部分。OpenStack基金会执行董事Jonathan Bryce也表示,灵活性非常重要。“你可以对它进行如此多的自定义,这是OpenStack最强大的功能之一。”恩盖茨还以Linux为例说明:“Linux的多个发行版并没有阻碍Linux的发展。”但事实上,Linux在标准化方面要做得好得多。而由于缺乏标准化,OpenStack过度的多样性与灵活性带来了一个直接的后果,OpenStack社区的核心贡献者从2016年的1800人降至2022年的600人,这进而导致了单元测试覆盖率低于40%(Kubernetes 单元测试覆盖率高于75%)、升级困难(如从Newton到Zed版本需手动迁移)等问题。越来越多的厂商不再考虑选用OpenStack的任何一个发行版了。

3. AI开源领域的兼容性问题

AI开源领域正如火如荼,应该还谈不上失败,但是各种各样的兼容性问题的确给程序员带来了大量的烦恼。首先是模型文件的格式问题,根据GitHub上的“List of ML file formats”仓库的统计,目前存在超过20种AI模型格式,在不同的格式之间虽然能够转换,但是可能会存在难以预料的精度损失。硬件适配困境是AI领域的另一个挑战。不同硬件生态使用各自的编程模型和编译器互不兼容。尽管现在CUDA是主流,但同时还存在CANN、XLA等其他技术路径。2021年,OpenAI发布的Triton编译器试图统一中间表示(Intermediate Representation,IR)层,但目前还处在奋力前行的阶段,能否打破CUDA的垄断成为AI领域的开放标准与事实标准,还有待观察。

4. 标准化面临的挑战与未来发展

1. 挑战:创新与标准化之间的平衡

标准化带来的是统一性和互操作性,但过度标准化可能会束缚创新。对于一些新兴技术领域,过早地采用严格标准可能会阻碍实验性和创新性的探索。尤其是在快速发展的开源技术领域,对于标准化的反感自有其合理之处。因此,在制定标准时,如何平衡生态创新的多样性统一性成为一个重要问题。社区和标准组织需要在技术成熟度和市场需求之间找到最佳平衡点,既保证技术进步的自由,又确保生态系统的健康发展。

2. 挑战:全球协作与文化多样性

开源项目往往是全球开发者协同合作的结果。不同国家和地区在技术习惯、文化背景和法律法规上存在差异,如何制定一套能够广泛适用且易于遵循的标准,如何在标准层面有效地兼容各国的文化(尤其是法律、法规),是一个不小的挑战。标准化过程中需要充分考虑文化多样性,并通过开放讨论、广泛征求意见来形成共识。

3. 未来发展:开放标准与动态标准

受到开源的启发,开放标准的概念也被多次提出,并应用于不同的标准化领域,根据维基百科的词条:开放标准是指任何人都可以公开获取和使用的标准。开放标准的一个共同前提条件是使用开放许可证,以提供可扩展性。通常情况下,由于其固有的开放性,任何人都可以参与其开发。开放标准没有统一的定义,其解释也因使用情况而异。较为著名的开放标准有GSM、4G和5G标准,这些标准使大多数现代手机可以在全球范围内使用。

随着人工智能、物联网等新兴技术的发展,标准化的需求也在不断变化。未来的标准化趋势可能会更加注重动态适应快速迭代。在笔者曾经写过的一篇文章中,提出了开源标准化的架构设计策略。

注:《开源与标准》,第四部分。https://zhuangbiaowei.github.io/2022/06/10/open-source-and-standards.html

(1)区分快慢开源领域并非全体一致、同步变化,总有些领域(如容器、DevOps)要快些,有些领域(如操作系统、数据库)要慢些。法务合规领域已经比较稳定,而安全漏洞方面可能还会有较快的变化。因此,不同变化速度的领域需要以不同的迭代周期发布标准。例如,3个月一个版本,或者2~3年发布一个正式版本,等等。

(2)宽严适度越是已经达成共识的领域越需要严格、精确、无歧义的语言来定义。分歧较大、含义模糊、快速演变的领域也需要有一些宽松的、能够框定范围的语言来做一些定义。

(3)密切观察,开放协作本质上,针对开源这样一个快速变化的领域,需要密切观察其发展,更需要引入更多的参与者,进行开放协作,这样才能够制定出有意义、有价值的标准。

总体来说,标准化在开源生态系统中的重要性不言而喻。它不仅是技术互操作性的基础,也是推动创新、保障安全、提高效率的关键。通过统一规范、流程和标准,开源生态系统能够在全球范围内实现高效协作,快速响应技术变化,并在市场竞争中保持领先地位。虽然在标准化的过程中面临着创新与统一、全球多样性等挑战,但这些挑战正是推动社区不断探索和进步的动力。未来,随着技术不断演进和智能化工具的普及,标准化必将以更加灵活和高效的方式融入开源生态系统,推动技术和社会的共同进步。

无论是个人开发者、企业技术团队,还是整个行业,都应充分认识到标准化的重要性,积极参与到标准制定和推广中来。只有这样,才能共同构建一个开放、包容、高效且安全的开源生态系统,为全球科技进步和社会发展贡献更多力量。

转载自 庄表伟 阅读思考与生活 【开源生态60问】——什么是开源标准化?标准化在开源生态系统中的价值是什么?

请前往 登录/注册 即可发表您的看法…