💎 Zod 4 is now stable!  Read the announcement.
Zod logo

Clerk の OSS フェローとして Zod 4 に取り組むことになりました

Clerk の OSS フェローシップの最初の受賞者になったことを発表できることに興奮しています!このフェローシップは、ある種の「夏のインターンシップ」のようなものです。Clerk は私にフルタイムの賃金(エントリーレベルのソフトウェアエンジニアと考えてください)を支払い、2024 年の夏を通してフルタイムで Zod に取り組めるようにしてくれます。

私自身のキャリアパスと Zod の開発の両方の文脈において、これは完璧な取り決めであり、OSS のための代替的な資金調達の取り決めを試みる意欲を Clerk が持ってくれたことに心から感謝しています。

ここで、いくつかの背景を見てみましょう。

準備中: Zod 4

現在の Zod のメジャーバージョン (v3) は 2021 年にリリースされました。構造と実装の観点から、Zod 3 では多くのことがうまくいきました。コードベースは十分に汎用的であり、公開 API に破壊的な変更を加えることなく、それぞれに新機能と拡張を含む 23(!) のマイナーリリースをサポートしてきました。

しかし、対処するために構造的な変更が必要となる、いくつかの繰り返し発生する DX(開発者体験)の小さな問題があり、それには破壊的な変更が伴います。(誤解のないように言っておきますが、ほとんどの Zod ユーザーは影響を受けませんが、Zod のエコシステム内の多くのライブラリは内部 API に依存しており、更新が必要になるでしょう。)

  • コードベースを簡素化し、コード生成ツールを容易にするために、ZodType のいくつかのサブクラスが分割または統合されます。
  • パフォーマンスを向上させるために、(準)内部メソッドである _parse のシグネチャが変更されます。ZodType のユーザー定義サブクラスは、それに応じて更新する必要があります。
  • オートコンプリートを整理するために、いくつかの内部メソッドとプロパティが protected になります。現在のいくつかの API は非推奨になり、一部の非推奨 API は削除されます。
  • エラー報告を改善するために、Zod のエラーマップシステムを簡素化します。新しいシステムは、国際化(i18n)にも対応しやすくなります(RFC は近日公開)。
  • exactOptionalPropertyTypes セマンティクスを有効にするために、ZodObject でキーのオプション性を決定するために使用されるロジックが変更されます。tsconfig.jsonexactOptionalPropertyTypes の値によっては、一部の推論された型が変わる可能性があります(RFC は近日公開)。
  • TypeScript サーバーのパフォーマンスを向上させるために、いくつかのジェネリッククラスのシグネチャ(例:ZodUnion)が変更または簡素化されます。その他の型ユーティリティは効率化のために再実装されますが、一部のコンテキストでは動作がわずかに異なる可能性があります。

総じて、Zod 4 はライブラリをゼロから書き直したものとなりますが、一般的なユーザーにとっては破壊的な変更はほとんどなく、劇的な速度向上、よりシンプルな内部構造、そして多くの新機能を備えています。

Zod の現在の資金調達状況

Zod には 多くの寛大な寄付者 がおり、この種の TypeScript ユーティリティライブラリの中では最も多くのスポンサーを集めているものの 1 つでしょう。現在、それは月額 2600 ドル強になります。このレベルの支援には感謝しており、最初に GitHub Sponsors のプロフィールを設定したときの予想をはるかに超えています。

しかし、Zod をサポートしてくれているすべての人々と企業に多くの愛と感謝を捧げつつも、それは米国のフルタイムの給与に取って代わるには程遠いものです。

私は今年の初めに Bun を去り、数ヶ月間旅行し、新しいことを学び、燃え尽き症候群からの回復に費やしました。4 月からは、PR のマージと問題の修正に約 6 週間を費やし、Zod 3.23(最後の 3.x バージョン)のリリースに至りました。この 1 か月ほどは、Zod 4 の仕様策定に費やしています。

私の見積もりでは、書き直しを完了し、Zod の現在の大規模なユーザーベースとサードパーティのエコシステムライブラリに新しいリリースを責任を持って展開するには、さらに約 3 か月のフルタイム作業が必要です。この作業をすべて行うことに非常に興奮していますが、収入がない状態が続くには長い期間です。

そこで私は、いくつかの企業に実験的な提案を持ちかけました。「OSS インキュベーター」として、企業が 12 週間(Zod 4 リリースのタイムライン)Zod の開発をスポンサーするというものです。この事前に決められた期間中、私は妥当な賃金を受け取り、その企業が Zod の主要なパトロンとなります。すべてが期限付きであるため、企業にとってのコストは事前にわかっており、インキュベーターやインターンシップのようなものです。

Clerk フェローシップ

非常に嬉しいことに、Clerk の Colin(通称「もう一人の Colin」)が熱意を持って賛同してくれました。私は以前から、Clerk の製品、開発者体験への着眼点、オープンソースへのコミットメントに感心していました。実際、2021 年 2 月に彼らが HN でローンチした日には、私のポッドキャストで彼らを取り上げました。彼らはすでに Auth.js(旧 NextAuth)を以前からスポンサーしており、「フェローシップ」の可能性についての条件を議論することにすぐに前向きでした。

支援と引き換えに、Clerk は Zod の他のスポンサーがすでに得ている特典の超強力版を得ることになります。

  1. README とドキュメントでのダイヤモンド層の配置 💎 大きなロゴ。大きいです。巨大です。
  2. フェローシップ期間中、私の Twitter のプロフィールを更新し、Clerk OSS フェローとしての新しい地位を反映させます 💅
  3. 今後の Zod 4 RFC(Requests for Comment)での言及。歴史的に、Zod の RFC は TypeScript コミュニティ(少なくとも TypeScript Twitter)から多くの注目とフィードバックを集めてきました。これは、これらの新機能を実装するために(実質的に)私にお金を払っている企業を宣伝するのに最適な場所です。
  4. Zod の新しいドキュメントサイト(現在構築中)のサイドバー下部にある小さな広告。Auth.js のドキュメントでどのように見えるかを確認できます。
  5. Zod 4 リリース後の継続性のために、Clerk は 6 か月間の新しい継続的な「ダイヤモンド層」スポンサースロットに対する「優先権」(先買権)を得ます。これは排他的な「スロット」であり、一度に 1 つの企業しか保持できないという考えです。この層の特典には、大きな README ロゴとサイドバー広告の配置が含まれます。
  6. この発表記事!そうです、あなたはずっとマーケティング資料を読んでいたのです。やったね。

OSS、資金調達モデル、そして新しいことへの挑戦

このモデルは、従来のスポンサーシップモデルと、Vercel が Rich Harris/Svelte で採用したような「居住メンテナー (maintainer-in-residence)」アプローチとの間の興味深い中間点を示しています。Zod は恒久的なフルタイムのメンテナーを必要としていません(実のところ、私はそれでも構わないのですが... 🙄)が、このメジャーバージョンをリリースするためにはフルタイムの関与が必要です。

このフェローシップは、そのギャップを埋めるための方法です。全体として、Clerk のような、このようなことを試みることに興味を持ってくれるパートナーを見つけられたことに、この上なく興奮しています。

他の企業にも同様の試みをお勧めします!無料のツールを構築するために定期的な収入を放棄しているフルタイム(またはほぼフルタイム)のメンテナーを持つ貴重なライブラリは不足していません。ArkType、Valibot、tRPC などが思い浮かびます。

ですから、近いうちにアプリを構築する場合は、賢く行動しましょう。Request ボディ(あるいは、ええと、Server Action の引数?)を検証し、独自の認証を自作しないようにしましょう。

On this page