2020 年 6 月 30 日 by Naman Kumar
Naman Kumar 是來自印度新德里的電腦科學與工程系學生,同時也是 ProductHunt 的全端工程師。他獲選參加 Google Summer of Code 2020 - GraphQL 基金會,並由 Ivan Goncharov 指導。在本文中,他將分享他如何計畫在這個夏天為 Graphql 基金會做出貢獻。
嗨,GraphQL 是一項技術,我每天都會在工作場所和其他建置擁有 200 萬至 200 萬使用者的平台專案中使用。我肯定愛上它,因為它大幅提升了開發速度,並為初學者消除了文件編寫的負擔。
我非常尊敬開源組織,並且真的受到整個 graphql 社群為簡化開發人員生活所做的工作所啟發。我一直都想參加 GSOC,我向你保證這是每個學生的夢想。
我從 Ivan 在 GraphQL Asia Submit 2020 的演講中得知 Graphql 基金會接受 GSOC。對於有機會為這些工具做出貢獻感到非常興奮,這些工具不僅是我在使用,而且也為全球數十億人使用的應用程式提供支援。
由於對編譯器設計有濃厚的興趣,因此在graphql.js參考剖析器上工作的專案構想對我來說非常有吸引力。很幸運地被選入這個計畫,我將花費 2020 年的暑假來處理 Graphql.js 參考剖析器和GraphiQL 剖析器,以將兩者合併在一起。Graphql.js 參考剖析器沒有串流支援或最佳的錯誤復原設定。目標是從 GraphiQL 剖析器中汲取靈感,並在參考剖析器中實作串流支援,以便 IDE 和其他開發工具可以使用它。
我在社群建立期間認識了 graphql 社群中的人,並熟悉這些專案。我在 Ivan 的協助下探索了程式碼庫並解決了幾個小錯誤。維護良好的 graphql.js 參考剖析器具有非常好的程式碼品質和可讀性,這有助於我快速理解它,另一方面,GraphiQL 剖析器只有 1000 行純粹的「舊即金」程式碼庫,在 3 年前實作,乍看之下似乎很難理解,但只要適當地理解,它是一個非常簡單可愛的狀態機。
Ivan 和我也花時間構思將整個專案分為 3 個里程碑,並將這些里程碑分解為較小的目標。由於 graphiql 剖析器沒有積極維護且測試涵蓋率為零,因此在我們進行任何變更之前,讓剖析器完全涵蓋非常重要。我們的目標是讓 graphql.js 剖析器能夠被 IDE 使用,而效能是我們需要關注的主要因素。考量到這一點,我們也決定對 GraphiQL 剖析器進行基準測試。因此,第一個里程碑包括達到 GraphiQL 剖析器的 100% 測試涵蓋率和徹底的基準測試。
接下來的步驟將會在 GraphiQL 解析器中使用 graphql.js 參考解析器的詞法分析器,並制定一個合併解析器的計畫。一旦 graphql.js 解析器達到與 GraphiQL 解析器相同的能力,我們就可以將 GraphiQL IDE 遷移到使用 graphql.js 解析器。在第一個里程碑接近完成時,我對於在 Ivan 的指導下所學到的新事物感到非常高興,而且非常期待處理後續的任務。
– Naman Kumar,GSOC 2020,Graphql 基金會