2022年6月16日,星期四 ·7分钟阅读

你好世界,你好Postman

嗨!我是Julian Berman。

如果你使用JSON Schema,你可能知道我是 一个流行的Python JSON Schema实现 的作者。 如果你是一个JSON Schema规范的实现者,你可能知道我是 跨语言JSON Schema测试套件 的主要维护者。

我非常高兴与JSON Schema社区分享一些好消息。

简而言之:我已经加入了 Postman 的开放技术团队,全职从事JSON Schema工作。 在此过程中,我加入了来自生态系统中不断增长的现有团队,其中包括 Ben Hutton,JSON Schema的规范负责人。 这使得全职致力于JSON Schema的人员数量增加到了2人(并且还在不断增加!)。

这意味着什么? 首先,就我而言,更多的心思将专注于JSON Schema,并且希望由此能够为测试套件、我的实现、新实现以及其他方面带来一些长期需要的改进。 我们希望让社区进一步发展,并与社区建立更紧密的联系。

在谈论这些之前,我想带您回顾一下我的旅程,看看是如何走到这一步的。 这是一段有趣的旅程。

开始

我与JSON Schema的缘分始于2011年,也就是十多年前。 我当时正在进行一个现在已经被遗忘的网络项目,该项目需要一个验证层,我偶然发现了JSON Schema,认为它可以满足我的需求。 正如编程世界中经常发生的那样,副项目变成了主项目,而那个网络应用程序现在已经被遗忘了。 我甚至不记得它最初是用来做什么的。

我在Python jsonschema 项目上的第一个公开提交是在 那年12月 进行的。

当时,我决定编写一个Python实现,并不是因为当时还没有这样的实现——恰恰相反,在2011年的时候,就已经存在一个或两个这样的实现。 我编写这个实现几乎是出于偶然。 当时我作为一名开发者正在成长,开始形成我对良好代码的看法(有时过于强烈)。 当我在现有的实现中发现一些规范上的不一致时,我便产生了编写一些我能够“拥有”并从中吸取经验的代码的想法,以便作为维护者进行学习。

我的实现很快就被其他项目使用,这些项目开始向我提出问题、请求、感谢或反馈。 听到其他人认可我的工作,无疑成为我继续投入精力进行下去的动力。

测试套件

在编写完我的小型Python库后不久,我便开始了 JSON Schema实现者官方的、与语言无关的测试套件 的编写工作。 我在套件上辛勤工作了一段时间,希望它能够让其他人更容易做到我所做的事情——编写一个符合规范的JSON Schema实现。

当时,我发现,每个实现都复制了自己的不完整、内部的测试套件。 将这些工作集中起来似乎非常有益,它可以让编写库的人运行一组“已知”的测试,从而判断他们的库是否按预期和规范工作。

测试套件最初并不是“官方”的。 我从自己的账户上进行工作,与规范本身的工作没有任何关系。 然而,值得庆幸的是,当时规范团队的一位成员主动联系我,要求我将测试套件纳入JSON Schema组织,并继续维护它。 虽然我对人们对这种事物的兴趣并不感到意外,但我确实为能够创造出有用的东西而感到自豪。

我从来没有推动过JSON Schema的新功能。 我的角色更像是一个解释者,将已写的内容进行解读,并使用测试套件来阐明边缘情况。 从一开始,我就坚持认为测试套件不是用来对规范进行修改的工具,它只是对规范已经规定的内容的表达。 这样做对于测试套件的成功至关重要(包括测试套件本身和规范本身的成功)。 规范从来都不是完美的,直到今天,JSON Schema规范仍在不断改进和迭代; 然而,测试套件让实现者对规范所说的内容有了共同的理解(从而可以在其他地方进行如何改进规范的讨论)。

更多思考和感谢

我对JSON Schema整体来说欠下相当大的债务。 在我的编程生涯中,它已经陪伴我很久了,我在维护它的一部分的过程中学到了很多东西。 维护一个被广泛使用的库有时绝非易事,而JSON Schema让我有机会锻炼这方面的能力。 有时,它在我(很长)的兴趣列表中排名上升或下降,但从未完全消失。 在过去的十多年里,它一直存在于我的意识中。

它让我在世界另一边与开发者相遇,这些开发者与我素不相识,但他们却因为我发布的版本(注意,要固定你的依赖关系,朋友们!)导致他们内部系统出现故障。 幸运的是,我们双方都能在那个时候对这种巧合报以微笑。

我很高兴收到来自知名开源项目维护者的意外邮件,他们告诉我他们使用了我的库,或者在我们相遇时感谢我。 我偶然发现了一些重要文件,上面印着政府印章,指导如何使用我最初作为事后想法编写的库,我忍不住感到好笑。

下一步

因此,我很自豪地说,现在是JSON Schema在我日常工作中发挥更大作用的时候了。 我加入Postman,心中难免有一些忐忑——加入一家营利性公司,当然会担心对开源项目的任何不当影响。 我很高兴地说,到目前为止,Postman一直都是开源的支持者——对JSON Schema、对开源项目的支持,当然也包括对我的支持。 我最初的忐忑很快就会消失,取而代之的是感激之情。 这里有许多知识渊博的人可以学习和交流,我认为这将是无价的。

至于JSON Schema的工作,在过去几年里,我一直想做很多事情,特别是关于测试套件的事情,但我一直没有足够的时间投入其中。 加强测试套件比我们目前所做的更有可能帮助扩展JSON Schema的使用范围。 关于维护工作,有一些事情让我感到有些尴尬,就像任何项目都会偶尔让其维护者感到尴尬一样。 拖延的拉取请求队列无疑是其中之一; 如果你是一名贡献者,如果你提交的拉取请求一直处于停滞状态,请接受我的诚挚歉意。 这是我绝对要尽快解决的问题之一。 当然,也有很多事情让我感到非常自豪,我希望能够继续做下去。

多年来,我偶尔会在会议或聚会上谈论JSON Schema,或者偶尔也会在我的实现或测试套件的边界之外露露面。 我打算做更多的事情,并且做得更好。

更广泛地说,除了我自己,我们还有更大的梦想。 请继续关注这方面的更多细节,无论是这里发布的博客,还是组织内部的各种问题追踪器和讨论区。

请帮助我们! 作为用户、作为规范的实现者,或作为观察者,您的反馈都可能对确保JSON Schema的向前发展至关重要。 请与我们联系——与Ben、与我本人、与其他组成JSON Schema贡献者的优秀人士联系,或者通过 JSON Schema Slack 联系。 我知道我们都非常希望听到您的反馈、您想看到的东西、建设性的批评,或您对如何发展社区的一般想法。

特别是,如果您是依赖我的库或测试套件的开源维护者,如果您我们还不认识,请自我介绍一下! 我很乐意了解我们如何才能为您的工作做得更好。

感谢一路上的陪伴!

封面照片由 Jim KalligasUnsplash 上提供。