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

哈囉世界,哈囉 Postman

嗨!我是 Julian Berman。

如果您是 JSON Schema 的使用者,您可能知道我是JSON Schema 的一個流行的 Python 實作的作者。如果您是 JSON Schema 規格的實作者,您可能知道我是跨語言 JSON Schema 測試套件的主要維護者。

我很樂意與 JSON Schema 社群分享一些好消息。

簡而言之:我加入了 Postman 的 開放技術團隊,全職從事 JSON Schema 的工作。這樣做,我加入了一個來自生態系統、不斷壯大的現有團隊,其中包括 Ben Hutton,JSON Schema 的規格領導者。這使得全職從事 JSON Schema 工作的人數增加到 2 人(而且還在增加!)。

這意味著什麼?主要的是,就我而言,更多的心力投入在 JSON Schema 上,並希望藉此對測試套件、我的實作、新的實作以及其他方面進行一些長期需要的改進。我們希望進一步擴大社群,並與其建立更緊密的聯繫。

在進一步討論之前,我很樂意帶您了解我走到這裡的旅程。這是一段有趣的旅程。

起點

我與 JSON Schema 的聯繫始於 2011 年,也就是 10 多年前。當時我正在開發一個現在早已被遺忘的 Web 專案,該專案需要一個驗證層,並且偶然發現 JSON Schema 可能可以用來滿足需求。正如在程式設計世界中常見的情況一樣,這個副專案變成了主要專案,而這個 Web 應用程式現在早已被遺忘。我甚至不記得它原本是要做什麼的。

我在 Python jsonschema 專案上的第一個公開提交是在當年的 12 月

當時,我決定編寫一個 Python 實作,並不是因為沒有現有的實作 – 相反,在 2011 年當時,已經有一兩個實作存在。我的實作幾乎是出於巧合而產生的。當時我作為一個開發人員正在成長,並且開始形成對我認為好的程式碼應該是什麼樣子的意見(偶爾會有一些過於強烈的意見)。當我發現現有實作中存在一些規格不一致時,我產生了編寫一些我可以「擁有」並從維護者的角度學習的程式碼的衝動。

不久之後,我的實作就被其他專案使用,而這些其他專案也開始提出問題、請求、感謝或回饋。聽到其他人欣賞我的工作絕對是繼續投入努力的好動機。

測試套件

在編寫完我的小型 Python 函式庫後不久,我開始了後來成為 JSON Schema 實作者的官方、語言無關測試套件的工作。有一段時間,我一直在努力開發這個套件,希望它可以讓其他人更容易做到我所做的事情 – 編寫一個符合規格的 JSON Schema 實作。

當時,我發現的實作都在複製它們自己不完整、內部的測試套件。將工作集中起來似乎非常有益,讓編寫函式庫的人可以執行一組「已知」的測試,這些測試會告訴他們他們的函式庫是否按照預期和規格工作。

這個測試套件最初絕不是「官方」的。我是在我自己的帳號上開發的,與規格本身的工作沒有真正的聯繫。然而,當時規格團隊的一位成員非常客氣地聯繫我,並主動要求我將其納入 JSON Schema 組織,同時繼續維護它。雖然我對這種事情的興趣並不感到驚訝,但我確實對自己能夠產生一些有用的東西感到自豪。

我從來都不是推動 JSON Schema 新功能的人。我的角色更像是一個解釋者,採用已經編寫好的東西,並使用測試套件來揭示邊緣案例。從一開始,我就堅定地認為測試套件不是推動規格變化的工具,它只不過是對規格已經規定的內容的表示。這樣做對於它的成功至關重要(套件本身和規格本身的成功)。規格永遠不是完美的,即使在今天,JSON Schema 規格仍在不斷改進和迭代;儘管如此,測試套件讓實作者對規格的內容有了共同的理解(允許在其他地方繼續討論如何改進它)。

更多反思與感謝

我虧欠 JSON Schema 整體很多。在我的程式設計生涯中,它陪伴了我很長一段時間,並且我從中學習了很多,因為我需要維護它的點點滴滴。維護一個廣泛使用的函式庫在某些時候一點也不容易,而 JSON Schema 給了我鍛鍊這些肌肉的方式。有時,它在我(長長的)興趣列表中上下移動,但從未完全消失。在 10 多年的時間裡,我一直把它放在我意識的某個角落。

它讓我與遠在地球另一端的開發人員有了意外的相遇,我們彼此都不認識,但他們剛好因為我發佈的版本而導致他們的內部系統發生了故障(注意:請固定您的依賴項!)。幸運的是,到那個時候我們都能對這個巧合一笑置之。

我喜歡醒來時收到令人尊敬的開源專案維護者的意外電子郵件,他們告訴我他們正在使用它,或者當我們偶然相遇時感謝我。我看到帶有政府印章的重要文件,其中提供了關於如何使用我最初作為一個事後想法編寫的函式庫的指導,我忍不住感到好笑。

下一步

因此,我自豪地宣布,是時候讓 JSON Schema 在我的日常生活中扮演更重要的角色了。我加入 Postman 時帶有一點預期的猶豫 – 加入一家營利公司,當然會擔心對開源專案的發展方向產生任何不當影響。我可以很開心地說,到目前為止,Postman 一直是慷慨的支持者 – 支持 JSON Schema,更廣泛地支持開源,當然也支持我。我開始時的猶豫,我預期會很快消失,取而代之的是感激。這裡有很多知識淵博的人可以學習和互動,我認為這將證明是非常寶貴的。

至於 JSON Schema 的工作,在過去幾年中,我有很多想做的事情,特別是關於測試套件的,只是從來沒有足夠的時間投入其中。加強套件的潛力甚至比我們迄今為止所利用的潛力更大,有助於擴大 JSON Schema 的使用範圍。關於維護者的工作,有些事情讓我有些尷尬,就像任何專案偶爾都會讓它的維護者感到尷尬一樣。凍結的提取請求佇列絕對在那個列表中名列前茅;如果您是貢獻者,如果您的提取請求停滯不前,我深感抱歉。這將是我絕對會盡快修復的事情之一。當然,我也為許多事情感到非常自豪,並希望繼續做下去。

多年來,我偶爾會在會議或聚會上談論 JSON Schema,或者偶爾會將目光投向我的實作或測試套件之外。我打算多做這兩件事,並把一切做得更好。

而且,不僅僅是我自己,我們還有更大的夢想。請隨時關注更多細節,無論是在這裡的部落格上,還是在整個組織的 issue tracker 和討論區中。

請幫忙!您的回饋,作為使用者、規格的實作者或觀察者,都可能對確保 JSON Schema 前進非常寶貴。請隨時與我們聯繫 – 與 Ben、我自己、其他構成 JSON Schema 貢獻者的優秀人士,以及/或透過 JSON Schema Slack。我知道我們都很樂意聽到回饋、您想看到的事情、建設性的抱怨,或關於我們如何發展社群的一般想法。

特別是,如果您是依賴我的函式庫或測試套件的開源維護者,請在我們還不認識的情況下自我介紹!我很樂意聽到這兩者可以為您做得更好的地方。

感謝您一路以來的支持!

封面照片由Jim KalligasUnsplash上提供。