legacy.json是用于描述历史遗产项目的元数据文件规范。此处“遗产”并非指已过时但因使用范围广而难以替代的软件或硬件项目,而是指包括各类创建和实现活动,在人类社会发展过程中形成的、具有标志性意义、纪念意义、研究意义、社会意义等社区价值的物质资源和技术资源的总和,特别是体现民间的群体、团体、个人的努力的成果。
legacy.json 文件应存放于项目或其数字归档的根目录,采用 JSON 格式,支持unicode。通过该文件,你得以在开源仓库中记录该项目的内部信息、项目历史、研究成果、技术细节、领域专业、重要知识、重要内涵等,以丰富在教育、研究、传播、自动化识别和处理、文化传承等方面的历史资料记载和信息化使用,促进人们对社会发展、技术起源、人类活动、历史发展的理解。
为了提高容错性,以下每个字段都可能是缺失的。软件、自动化程序或人工智能程序应当可以响应每种字段缺失的情况,如有必要可以显示“缺失”等信息,而不会引致程序或服务的崩溃。
提供一个便于识别的id用于标识。软件、自动化程序或人工智能程序可能会使用这个字段建立索引。
- 标识性:id与项目具有关联性,可以从id联想到项目,如果存在项目的先验信息,可以从多个id中测中项目匹配的id。
- 层次:如果有必要,可以使用多段描述拼接。
- 哈希友好:该id不易与其他项目的id发生碰撞,便于在关键字索引的场合使用该值。
- 长度合理:一般不建议大于200个字符。
id并不意味着公众如何称呼项目,其通常可能来源于单一的内部称呼、简写、秘密代号等。公众对项目的称呼请使用 names 和 formal_names 字段。
例子:
{
"id": "my-legacy-project-id"
}说明项目和legacy.json文件最后更新的时间。这通常是人工编辑后添加的时间记录。
推荐使用 RFC 3339 的日期时间格式。可以考虑使用 RFC 1123 的日期时间格式。
说明项目和legacy.json文件最后更新的执行者。这通常是编辑的人的名称,如果有必要,可以使用集体的名称。
说明项目归档状态的git commit sha。
names字段说明项目的名称。这个名称可能是内部名称、技术管理中的名称。
names字段是一个字符串数组。这个数组可能会被搜索引擎或人工智能程序检索。
formal_names字段说明项目的公开的名称。这个名称是历史上公众或相关方对该项目的称呼。
names字段是一个字符串数组。这个数组可能会被搜索引擎或人工智能程序检索。
planning字段记录有关于的项目的计划的信息。该字段可能包括项目的背景、详细的故事和事件、具体的人物和这些人物相关的构思等信息,以说明项目的产生、发展、技术选择、重要变革、重要决策。
在技术细节上,该字段可能体现了项目功能、项目受众、项目管理、模块划分、重要文档等方面的设想。
如果有必要,该字段还可以引用人物言论、历史文献、法律法规等。
description字段记录最后的项目状态和技术状态。description字段应当是具体的、逻辑连贯的,只说明已经发生了事情,反应已经过去了、已经实现了的状态,这些状态是真实存在的,具有一般的意义。
description字段不等于公众感知的项目状态和技术状态,面向研究、教育、调研、二次利用等场景,提供关键、细致、深刻而确切的信息。
formal_description字段记录公众感知的项目状态和技术状态。作为历史遗产项目,这个字段主要为了记录并反应当时的公众互动。这个字段的内容不应当再次概况,而仅仅是历史上该项目如何描述和反应自身的记录。
也即是说,formal_description字段是作为历史证据保存的,是对历史上的、公众可以感知的、公开的信息的记录、整理和保存,是体现项目在历史上的真实外观的记录。
available_times字段记录该项目曾经可用的时间。这个时间可能短至数个月,也可能长达许多年。
这个字段是一个数组。数组中应当包括至少一个元素,每个元素表示一段可用时间的开始和结束。该时间使用 RFC 3339 的日期时间格式。也可以考虑使用 RFC 1123 的日期时间格式。
例子:
"available_times": [
[
["2025-05-11T14:30:00+08:00", "2026-05-11T14:30:00+08:00"]
]documentation字段记录该项目的文档信息。
这些信息可能包括用户手册、开发者文档、社区文档等。
该字段的内容可能直接包括了文档,也可能包括了文档的互联网链接地址,也可能指向仓库中的地址。
milestones字段记录该项目的里程碑信息。
milestones字段一个数组,包括多个里程碑信息。一个里程碑信息包括一个时间,表示该里程碑达成的时间,一段描述。
里程碑信息应当具有跨度,例如间隔几个月或几年。
里程碑信息应当具有真实性。
例子(虚构):
"milestones": [
[
["2025-05-13T14:30:00+08:00", "项目创建了第一个文件。"],
["2025-11-11T14:30:00+08:00", "项目正式发布。"],
["2026-06-11T14:30:00+08:00", "项目在线人数达到3000人。"],
]keywords字段用于描述项目的关键字。关键字可能被搜索引擎或人工智能程序检索。
keywords字段是一个字符串数组。
例如:
"keywords": [
"KW1",
"KW2",
"KW3"
]resources字段用于描述项目的有关的研究性资源,这些资源可能可以帮助进一步的了解。
resources字段是一个字符串数组。每个字符串可能包括多行,第一行可以作为资源的标题。字符串中可能包括链接。
例如:
"resources": [
"Education\nSome resources for education.",
"Debug\nSome resources for debug."
]influencers字段用于描述项目的创建者、重要的贡献者、需要特别提及的帮助者,这些可能可以帮助进一步的了解。
influencers字段是一个字符串数组。每个字符串可能包括多行,第一行为称呼。字符串中可能包括链接。字符串中分别说明了此人的贡献、在历史上在该项目中的作用、和项目相关的信息、网络公开的联系方式等。
例如:
"influencers": [
"Tom\nTom is the creator.",
"Jacky\nJacky is the creator."
]extras字段用于读者可能感兴趣的额外的信息。
extras字段是一个字符串数组。每个字符串可能包括多行。
例如:
"extras": [
"extra article 1",
"extra article 2",
]disciplines用于说明该项目相关的学科和研究应用领域。
disciplines应优先使用公认、含义清晰、教育机构公开使用的名词。如果有必要,也可以提出新的说法。
disciplines字段是一个字符串数组。
例如:
"disciplines": [
"simulation",
"web",
]subsequents说明该项目后继的项目,这些项目可以是同一项目团队负责的,也可能不是,但具有相当的亲缘关系、逻辑关系、启发关系。
后继项目可能是另一个历史遗产项目,也可能仍然在运行。
subsequents字段是一个字符串数组。每个字符串可能包括多行,第一行为称呼。字符串中可能包括链接。称呼可能为另一个历史遗产项目的名词。
例如:
"subsequents": [
"Project X\n Project X is the modern version subsequent of w project."
]- 待添加