我們帶著一系列帖子回來了,其中我們採訪了開源維護者並展示了他們不斷推動的令人驚嘆的專案。本週,我們與Pilcrow進行了交談,他是一位來自日本的鼓舞人心的年輕開發人員,以其身份驗證庫 Lucia 以及對身份驗證和安全性的熱愛而聞名。
Lucia是我們在 Wasp 底層使用的開源工具之一,Wasp 是類似 Laravel 的 React 和 Node.js 框架。自 2023 年 10 月以來,它在 GitHub 上的星星數已增長到 9.5K。 ,例如哥本哈根和奧斯陸。您可以在他的部落格上了解有關他的工作和專案的更多資訊。
我們希望這次採訪能激勵您為開源社群做出貢獻。讓我們深入了解一下吧!
我是皮爾克羅。我是日本的大學生,致力於圍繞身份驗證和安全性的各種開源專案。我四年前就開始程式設計了,所以對於這個領域我還是個新手。我非常喜歡設計 API,這可能是我喜歡在庫上工作的最大原因。
我被要求為學校活動建立幾個網站,而我最困難的部分是身分驗證。一半是因為我缺乏經驗,但我還發現像 Firebase 這樣的第三方產品並不直觀。當時它們的大部分功能和 API 也都是針對 SPA,並且不能很好地與伺服器渲染的應用程式搭配使用。開源產品也不是很好。直到今天,我仍然不知道如何實際使用 NextAuth(現在的 Auth.js)或 Passport.js。
暑假期間,我決定為 SvelteKit 建立一個更精簡的 NextAuth,這樣我就可以將它用於我的專案。這是我的第一個開源程式庫,但它在 Svelte 社群中引起了一些關注。過了一會兒,我讓它與框架無關,它自然而然地成長了。
從事它的工作讓我對庫開發著迷,我發現設計 API 甚至記錄它們都非常有趣。
如果您覺得這篇文章有幫助,請考慮在 Github 上給我們一顆星!我們在 Wasp 所做的一切都是開源的,您的支援幫助我們使 Web 開發變得更容易,並激勵我們撰寫更多這樣的文章。
{% cta https://kdta.io/github-wasp-lang-wasp_3 %} ⭐️ 感謝您的支持🙏 {% endcta %}
老實說,我不認為維護開源專案有什麼特別的挑戰性。它只是需要您花費大量時間來回答 Discord 上的問題和編寫文件。從一開始,我確實改變了我的庫開發方法。我現在將大部分精力投入到設計 API 和編寫文件上,而不是加入新功能。
我發現弄清楚為什麼某些東西易受攻擊和不易受攻擊是一個有趣的謎團。我也很喜歡這裡有這麼多的兔子洞,你可以發現自己陷入其中。這是一個促使你了解更多資訊的領域。
(作為獎勵,我不必處理 CSS)。
Oslo 是用於各種身份驗證和加密操作的套件的集合。 Base64、WebAuthn、SHA-256、ECDSA、TOTP/HOTP、ASN.1 等。與類似的函式庫相比,這些 API 的等級也相對較低。它需要一些有關底層標準的知識,但您不需要學習任何特定於庫的概念,這在我的書中是一個非常大的勝利。
此外,它是一個非常簡單的功能,但擁有某種文件是一個很大的優勢。
我希望我有一個更好的系統,但我只是做我想做的事。我不太擅長同時處理多項任務,更喜歡一次專注於一件事。無論如何,我沒有收到很多錯誤報告,所以它對我有用。
老實說,我不認為 Web 應用程式安全性發展得那麼快。至少與 JavaScript 生態系統相比(但我猜什麼都沒有)。密碼演算法很少能在一夜之間被破解,而且威脅模型和基本建議仍然與 10 年前相同。許多漏洞仍然是存取控制被破壞和輸入衛生不足。
但只是大量閱讀。了解您正在處理的框架和協定。 RFC 和文件已經涵蓋了許多可能的陷阱。我想這也適用於那些計劃將授權委託給第三方的人,至少在某種程度上是如此。
維護各種專案肯定有助於避免倦怠。我的專案規模不大,實際的錯誤報告很少,所以我不擔心將注意力轉移到其他專案或休息一兩週。
我也認為開源只是一種嗜好。我仍然會嘗試快速解決錯誤,但我不會急於加入新功能。
我不認為我的專案是開源協作的特別好的例子。我通常會要求人們打開 GitHub 問題以獲取新功能,但除了錯誤和拼寫錯誤修復之外,我並不真正願意接受拉取請求。我喜歡花時間嘗試各種 API 設計,而且我個人發現如果我自己完成初始設計階段會更容易。我還喜歡某種風格的程式碼,我真的想讓我的程式碼保持「美麗」(是的,我知道這聽起來很愚蠢)。
老實說,我通常不喜歡拉取請求,因為如果我拒絕它,我覺得我浪費了貢獻者的時間,即使程式碼客觀上很糟糕。
我很清楚這種封閉的方法不適用於更大的專案,但從事開源工作最終只是一種愛好,所以我認為我應該能夠從中獲得一些樂趣。
社群的大部分內容都來自 Discord,我非常感謝每天活躍並在那裡回答問題的人。老實說,這可能是我收到的最有價值的貢獻之一。
儘早定義專案的範圍和目標。我不會責怪自己在啟動 Lucia 時沒有考慮太多,因為它實際上是我的第一個開源庫,但它會讓後續主要版本的開發變得更加容易。在程式碼變得混亂之前,您只能向專案加入這麼多功能。你無法安撫所有人,因此請選擇一條路線並為此目的做到最好。
我還認為,在使用方式和位置上靈活的庫,而不是在行為上靈活的庫,更可預測且更易於使用。明確定義圖書館和使用者責任之間的界線將使使用起來更加愉快。
可能是豬骨,特別是來自九州(日本四大島嶼中的第三大島)。肉湯以豬骨為基礎,賦予其奶油般的濃鬱質感,麵條咬起來有嚼勁(就像有嚼勁的意大利麵一樣)。
希望您喜歡這次採訪!如果您對下一步採訪誰有任何建議,請加入我們的 Discord並告訴我們!