内容提要
这篇文章提出了一种新的元数据标准,用于扩展包装、分发和交付,建立在PGXN Meta Spec的基础上,以解决其缺点和新兴用例。元数据分为包元数据和注册元数据两个高级类别,分别提供了关于扩展包和注册的信息。包元数据包括包的路径、名称、版本、描述等信息,而注册元数据包括分发链接、下载统计、测试状态等信息。这种新的元数据标准将有助于更好地管理和发现扩展包。
延伸解读
元数据双轨制:包元数据与注册元数据的分工
文章将元数据分为包元数据和注册元数据两类,分别由扩展作者和根注册表提供。包元数据包含包路径、名称、版本、作者、许可证等基础信息,以及制品、资源、内容、依赖和分类等可选信息。注册元数据则在包元数据基础上,聚合来自可信第三方的分发链接、下载统计、测试状态等。这种分工既保证了作者对包信息的控制权,又通过社区协作丰富了元数据,有助于提升扩展的发现性和安装便利性。
对PGXN Meta Spec的兼容与扩展策略
新标准明确不破坏现有标准,而是通过新增字段和对象来扩展。例如,spec字段重载了v1的字符串表示,但能解析两种格式;artifacts是全新对象,无冲突;resources中的issues替代bugtracker,repository改为URL;contents替代provides,dependencies替代prereqs,classification与现有tags冲突但可共存。这些设计旨在平滑过渡,同时支持新用例,如后台工作者、可加载模块等非CREATE EXTENSION类型的扩展。
依赖声明的复杂性与外部依赖处理
依赖部分需要声明平台、PostgreSQL版本、构建流水线以及配置、构建、测试、运行、开发各阶段的前置条件。外部依赖的命名在不同平台和包管理系统中差异很大,文章提出了几种可能方案:使用purl、创建规则集或直接使用Repology。此外,还支持通过variations字段为特定平台或PostgreSQL版本指定额外的依赖。这反映了跨平台扩展分发的实际挑战,标准需在灵活性和可操作性之间取得平衡。
注册元数据与社区协作生态
注册元数据旨在促进社区协作,允许可信第三方(如二进制分发服务、冒烟测试器、安全扫描器)向根注册表提交数据。这些数据包括分发链接、下载统计、测试状态、安全通告等,并可通过徽章展示。根注册表作为记录源,确保数据来自可信来源,同时数据公开可读,便于下游应用扩展。这种模式有望构建一个丰富的扩展元数据生态系统,帮助用户根据安装方式、质量指标等做出更明智的选择。
Q&A
PGXN元数据草案的主要目标是什么?
PGXN元数据草案的主要目标是提出一种新的元数据标准,以扩展包装、分发和交付,解决PGXN Meta Spec的缺点和新兴用例。
包元数据和注册元数据有什么区别?
包元数据由扩展包作者提供,包含包的基本信息;而注册元数据由根注册表从各种来源聚合而来,包括下载统计和测试状态等信息。
新标准如何支持不同类型的Postgres扩展?
新标准通过明确支持不同类型的Postgres扩展,如后台工作者和可加载模块,来增强扩展的功能。
注册元数据将如何促进社区合作?
注册元数据将促进社区合作,通过增强扩展包的元数据,允许第三方贡献和共享信息。
包元数据包含哪些基本信息?
包元数据包含包的路径、名称、版本、描述、作者列表和许可证等基本信息。
新元数据标准将如何影响PGXN Meta Spec的版本?
新元数据标准将导致PGXN Meta Spec版本2.0.0的草案,指导根注册表API的设计和实现。