关于 OpenDigger 标签工作的思考与规划
这段时间,对 OpenDigger 的标签做了一次较大的更新,主要是新增了一批项目和企业的标签,以及对国家和地区的开发者占比做了统计,主要用于 BenchCouncil 中的榜单发布(全球行政区划开发者 OpenRank 排行榜, 全球企业 OpenRank 排行榜, 全球项目 OpenRank 排行榜)。因此也有了一些新的思考,这里分享一下,也希望可以抛砖引玉,看接下来如何进一步规划和优化 OpenDigger 的标签体系。
总体而言,OpenDigger 的标签工作分为两部分,标签体系建设和标签工具建设。标签体系的重点在于如何构建以一套有效且易维护的标签结构,而标签工具则是使用怎样的技术方案来实现和维护上述的标签体系。
标签体系建设
OpenDigger 的标签体系早期是源于 OpenDigger 本身的数据需求而逐渐建立起来的。主要是各类数据报告中需要有不同的指标聚合方式,尤其是如企业、国家维度的聚合,所以最初的设计中最主要标注的也就是企业、国家的数据,后续又陆续增加了基金会、技术领域和项目群的相关标签。然而随着标签数据越来越多,维护的难度也开始逐渐上升,缺乏顶层设计的缺陷也逐渐凸显。截止到 2024 年 12 月,已经有上千个标签,涵盖 200 多家企业、数十个基金会和 500 多个项目,这也需要 OpenDigger 建立一套标准化的标签体系,方便后续的持续维护和进一步拓展。
总体而言,早期标签的加入是需求驱动的,并没有进行顶层的统一设计,因此结构上也是趋向于扁平化的,即每类标签单独在一个文件夹下,通过标签之间的 ID 进行交叉引用。但在过去一段时间丰富标签的过程中,发现目前主要的标签需求之间其实存在某种关联性,这种关联性也进而导致了后续的一些设计上的变化,例如:
- 项目一般都是由某个实体发起,后续可能捐献给基金会的,因此项目可以不单独使用某个目录,而是在其对应的发起实体的目录下维护。
- 项目发起的实体可以是个人、企业、高校、政府机构(如美国退伍军人事务部、英国司法部)、研究机构(如欧洲核子研究中心)等。这些实体的类型不一而足,但大多与各国当地的机构结构有关,因此总体上虽然结构相似,但在不同国家也会有细微的差异。
- 对于上述的各类实体,需要一套标准化可行的分类方式,这种分类方式不仅体现在维护性上,而且也是后续各种聚合查询的基础,因为构建在这套标签体系之上的指标查询工具将使用这套标签体系来进行查询。
基于上述的一 些反思,因此对于指标体系的建设可以从几个方面来说:
指标结构
从指标结构上来说,之前是扁平化展开的,国家、企业、基金会、高校、机构、项目都是放在同级目录下的,然后会进行交叉引用,例如国家会以高校、企业、基金会等为子标签。然而上述的标签其实都是从项目发起方的角度来看的,因此应该可以构建在同一个目录下,形成“行政区划”-“发起机构”-“开源项目”的三层结构。
- 行政区划一级主要是指地区信息,如国家,当然也可以更进一步细化到省市一级。
- 发起机构则是指在法律上实体注册在这些行政区划内的机构,这些机构本身可以进一步进行分类,关于这个分类方法后续再进一步讨论。
- 项目就是 GitHub、Gitee 上的组织或仓库群构成的开源项目,同一个开源项目可以包含多个组织或仓库,也可以托管在多个平台上。
上述的发起方角度应该是整个标签体系构建的基础,在此基础之上,可以进一步增加其他的并行标签内容,如项目类型、技术领域等,这些标签均以项目标签为基础构建,即它们仅可引用项目级标签为自己的子标签,而不能单独使用平台上的仓库或组织为自己的标签数据内容。即当某个领域出现一个新的项目要标注时,需要先鉴别其对应的发起方及其所在的行政区划,并设置好这些数据后引用该项目标签,而不要直接使用仓库或组织数据。