2022 年 6 月 23 日,星期四 ·7分鐘閱讀

然後就變成三個人了

大家好!

我是 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,當時我正在尋找 JSON 相關的功能來實作在我的程式庫 Manatee.Json 中。我喜歡驗證 JSON 資料的能力,而且我特別喜歡驗證需求本身可以用 JSON 表示。

當時,Draft 4 已經發布了幾年,而且這個專案在幾乎被放棄之後,才剛剛開始重新被重視。雖然我當時不知道,但我可以說是在正確的時間偶然發現這個專案。我開始閱讀一些未解決的問題、對一些問題發表評論,然後加入了 Slack 工作區。

很快地,我似乎沒有要離開的意思,因此我被邀請成為團隊的核心成員。我把空閒時間花在討論變更和新功能上,同時試圖平衡特定功能對 JSON Schema 使用者(主要是 Schema 作者)的幫助或易用性,與該功能的實作難度。

從那時起,我參與了無數次的討論、對規格的修改發表評論,甚至還自己貢獻了一些內容,包括前面提到的輸出格式章節。

我從參與 JSON Schema 中學到了很多。

最重要的是,專注於互通性讓我對我從未使用過的程式語言和框架的需求大開眼界。由於主要使用以 C 為基礎的語言工作,我從未想過不同的程式語言實際上可以 *做* 不同的事情。在我接觸這裡之前,我一直認為不同的語言都提供相同的功能集,唯一的區別只是一些讓特定任務更容易。

我也了解到 JSON Schema 的用途不僅僅是驗證:超 Schema、程式碼產生和表單產生都是主要的範例。應用程式的多樣性真正使 JSON Schema 成為一個很棒的概念。

成為實作者

我(到目前為止)有兩個實作 JSON Schema 的程式庫。

Manatee.Json 是第一個,它一半是讓我發展程式碼技能的學習平台,一半是真正想對人們有幫助。它並不是很快(我後來發現只是我自製的剖析速度很慢),但它符合規格,而且在 nuget.org 的下載統計數據中表現還算不錯。在撰寫本文時,它仍然每天被下載 300 次,並且儘管已被棄用兩年,仍已達到 100 萬次下載。

第二個程式庫 JsonSchema.Net 於 2020 年發布,旨在成為更實用的生產用程式庫。我將它建立為 .Net 新內建 System.Text.Json 剖析器/序列化器的 JSON Schema 配套程式庫,該剖析器/序列化器於 2019 年發布。在它發布的兩年內,它已經累積了近 45 萬次下載,每天約 670 次。

JsonSchema.Net 還有幾個「擴充套件」程式庫,提供額外的功能,例如從 .Net 程式碼產生 Schema、從 Schema 產生資料,以及我撰寫的兩個詞彙,以解決規格儲存庫中的幾個未解決的 GitHub 問題:外部資料存取和識別指定鍵的陣列中項目的唯一性。

我一直關注 JSON Schema(以及一般的 JSON)的其他擴展用途,以便將其添加到套件中,現在我有更多時間這樣做了!

成為員工

去年,當 Ben 宣布他加入 Postman 全職處理 JSON Schema 時,我對專案的發展方向有所保留。Postman 是否想要擁有這個專案?這對它的未來或我們(作為志願貢獻者)實施變更的能力會有什麼影響?

Ben 的回應非常出色且完美:他支持 JSON Schema 加入 OpenJS 基金會,鞏固其獨立性。而且他在擔任 Postman 員工的同時做到這一點,這讓人放心,Postman 是為了開源社群的福祉而努力。

然後一切照常運作。我們都努力朝著 2020-12 的編輯、非功能性修補版本發布(現在已發布!),而 Ben 發現他需要更多專職協助。所以在 Slack 私訊中,他問我是否有興趣加入。即使我剛在新公司安頓好,我也不能錯過這個機會。能獲得報酬來從事熱情所在的事情是夢想!

現在,我非常興奮地宣布我將加入 Postman 開放技術部門,擔任規格和工具架構師。我將有三個重點:致力於 JSON Schema 規格、支援其實作者,以及開發相鄰用途的支援。

首先從規格開始,輸出格式將繼續是我的主要重點。今年稍早,我開啟了一個關於潛在改進的討論。我認為我們處於一個不錯的位置,而且我需要開始建立 PR,將規格中的目前語言轉移到新設計。

我還不確定實作者支援會是什麼樣子,但根據我們的實作頁面,似乎它們中的許多尚未更新以支援 2020-12。外展可能是這裡最好的起點。我們需要找出這些專案的狀態。它們是否仍在維護?它們是否 *打算* 與規格保持最新?它們是否需要幫助?回答這些問題將是第一步。

最後是相鄰工具。我對這部分真的感到非常興奮,因為它將向我強調 JSON Schema 如何在現實世界中使用,從而 *驗證*(哈!)它的實用性。

我對 Postman 給我這個機會,讓我全職從事我熱愛的專案及其相鄰領域感到非常興奮,而且我預見這個專案以及繼續支援和建構它的社群將擁有光明的前景。

感謝我在此旅程中遇到的每個人、使用過我的程式庫、提出問題、貢獻程式碼或只是提供意見的人!我喜歡成為這個社群的一份子!

封面照片由我拍攝 😁