还有三个
大家好!
我是 Greg Dennis。我是 json-everything
的作者,旨在成为 .Net 中满足 JSON 需求的全面工具套件,包括 JSON Path、JSON Patch 和(当然)JSON Schema,以及其他工具。我还负责推动和编写 JSON Schema 规范中的输出要求。
借用 Julian 的消息,我加入 Postman 全职致力于 JSON Schema 工作,担任规范和工具架构师!这意味着我将参与更新规范,并帮助定义和实施验证和其他与 JSON Schema 相关的工具。我还预计会积极参与社区,支持其他工具实施者。
参与
JSON Schema 一直是我的激情项目。我并没有真正地在工作中使用它,而且我从未遇到过 JSON Schema 是解决方案的问题。然而,我认识到它的潜力,它 *可能* 是其他人需要的解决方案,我希望通过为他们提供一个容易采用的路径来做出贡献。
* 我主要在 .Net 世界工作,那里有很多其他数据验证工具,其中大多数都内置在框架中,并以反序列化为中心。但是,随着 JSON Schema 的流行(尤其是在代码生成方面),我们很快就能在 .Net 中找到它合适的定位。*
我于 2015 年开始参与 JSON Schema,当时我正在寻找要在我的库 Manatee.Json 中实现的 JSON 相关功能。我喜欢验证 JSON 数据的能力,我尤其喜欢验证要求本身可以用 JSON 表示。
当时,版本 4 已经发布了几年,并且该项目刚刚在几乎被放弃后开始重新获得关注。虽然当时我不知道,但我算是恰好在这个时候偶然发现了这个项目。我开始阅读一些开放的议题,评论了一些,并加入了 Slack 工作区。
很快,我发现自己并不打算离开,我被邀请作为团队的核心成员做出贡献。我在业余时间讨论更改和新功能,同时试图平衡某个功能对 JSON Schema 用户(主要是模式作者)的帮助程度或易用性与实施该功能的难度。
从那时起,我已经参与了无数次讨论,对规范的更改发表了评论,甚至还做了一些我自己的作者贡献,包括前面提到的关于输出格式的部分。
我从参与 JSON Schema 中学到了很多。
最重要的是,专注于互操作性让我对从未使用过的编程语言和框架的需求有了新的认识。主要在 C 语言类语言中工作,我从未考虑过不同的编程语言实际上 *可以* 做不同的事情。在我之前的经历中,我一直认为不同的语言都提供了相同的功能集,唯一的区别是某些语言使某些任务更容易完成。
我还了解到,JSON Schema 不仅仅用于验证:超模式、代码生成和表单生成就是主要例子。应用的多样性确实使 JSON Schema 成为一个很棒的概念。
作为实施者
到目前为止,我有两个实现了 JSON Schema 的库。
Manatee.Json 是第一个,它一半是我用来提高编码技能的学习平台,一半旨在真正对人们有用。它的速度并不快,无论如何都不快(后来我发现,只是我的自制解析速度很慢),但它符合规范,并且在 nuget.org 下载统计中表现良好。在撰写本文时,它每天仍然被下载 300 次,并且已经达到了 100 万次下载,尽管它已经过时了两年。
第二个库,JsonSchema.Net,于 2020 年发布,旨在成为更实用的生产使用库。我创建它是为了作为 .Net 新内置的 System.Text.Json
解析器/序列化器(于 2019 年发布)的 JSON Schema 伴侣。它发布了两年,已经积累了近 45 万次下载,每天约 670 次。
JsonSchema.Net 还有几个“扩展包”库,提供了额外的功能,例如从 .Net 代码生成模式、从模式生成数据,以及我编写了两个词汇表来解决规范存储库中的几个开放的 GitHub 问题:外部数据访问和通过指定键标识数组中的项目唯一性。
我一直在关注 JSON Schema(以及 JSON 本身)的其他扩展用途,以便添加到套件中,现在我有更多时间来做这件事!
作为员工
去年,当 Ben 宣布他加入 Postman 全职从事 JSON Schema 工作时,我对该项目的走向持保留意见。Postman 是否想拥有该项目?这对项目的未来或我们(作为志愿者贡献者)进行更改的能力意味着什么?
Ben 的回应令人难以置信,完美无缺:他主张 JSON Schema 加入 OpenJS 基金会,巩固了其独立性。而他是在作为 Postman 员工的情况下做到的,这让我们确信 Postman 是为了开源社区的福祉而加入的。
然后,业务照常进行。我们都在努力发布 2020-12 的编辑性非功能性补丁版本(现已发布!),Ben 发现他需要更多专门的帮助。因此,在 Slack 私信中,他问我是否有兴趣加入。尽管我刚在一个新公司安顿下来,但我不能错过这个机会。得到报酬去做一个激情项目,这是梦想!
现在,我非常激动地宣布,我加入 Postman Open Technologies 担任规范和工具架构师。我将重点关注三个方面:参与 JSON Schema 规范工作,支持其实施者,以及提供与之相关的用途的开发支持。
首先,规范方面,输出格式将继续成为我的主要关注点。今年早些时候,我开了一个 讨论,讨论潜在的改进。我认为我们处于一个良好的位置,我需要开始创建将规范中的当前语言更改为新设计的 PR。
我还不确定实施者支持会是什么样子,但是根据我们的 实施页面,似乎许多项目还没有更新到支持 2020-12。宣传可能是这里最好的起点。我们需要找出每个项目的现状。它们还在维护吗?它们 *打算* 保持与规范同步吗?它们需要帮助吗?回答这些问题将是第一步。
最后,与之相关的工具。我真的很兴奋,因为这将让我了解到 JSON Schema 在现实世界中的使用方式,从而 *验证*(哈哈!)它的实用性。
我对 Postman 给我的机会感到非常兴奋,让我能够全职从事一个我喜欢的项目及其相关工作,我认为该项目和继续支持和构建它的社区的未来一片光明。
感谢我在这段旅程中遇到的每一个人,使用过我的库,提出过问题,贡献过代码,或者只是提供过意见!我很高兴成为这个社区的一部分!
封面照片由我拍摄 😁