yaylib への貢献を歓迎します。yaylib は Yay! API のマルチ言語クライアント で、API スキーマから機械生成されるコードと、その上に載る手書き レイヤの 2 層で構成されています。貢献の受け入れ方はこの 2 層で異なり ます。
あるファイルが機械生成かどうかは、次のどちらでも判別できます(言語に 依存しません)。
- ファイル先頭に
Code generated; DO NOT EDIT.(または同等の注記) がある - リポジトリ直下の
.gitattributesでそのパスがlinguist-generated=trueに指定されている(GitHub 上でも差分が 折りたたまれます)
これらはまるごと再生成されるため、手編集は次回生成時に上書きされて
失われます。機械生成ファイルに触れる PR はマージできません(CI の
generated-guard が自動で検出します)。
API の型・enum 値・ステータス・挙動が実サーバと食い違うのを見つけた 場合は、コードではなく Issue でご報告ください。サーバが実際に返した リクエスト/レスポンス(再現手順・生のボディ)を添えていただけると、 生成元を調整して次のリリースに反映できます。これは最も価値の高い 貢献です。
.gitattributes で生成指定されていない(=生成バナーを持たない)
コードはすべて手書きで保守しており、通常の OSS と同じく PR を歓迎
します。代表的には各言語の認証ラッパ・トランスポート・署名・
アップロード・イベントストリーム・リトライ・セッション・エラーまわり
と、それらのテストです。
受け入れの基準:
- 言語横断契約を壊さない — API サーフェスの形・認証フロー・署名・
アップロード・イベントストリームの不変項は
PORTING.mdに定義 されています。これに反する変更は差し戻します。 - テストを通し、必要なら追加する — 各言語のテストはネットワーク 不要(hermetic)で動きます。実行手順は各パッケージの README を 参照してください。挙動を変える PR にはテストを添えてください。
- 言語間で挙動が揃うこと — ある言語だけのその場しのぎではなく、 全対応言語で同じ挙動になる変更が望まれます。1 言語固有のバグ修正は その言語のみで構いません。
- 1 PR は 1 つの目的に絞り、小さく保つ
- 挙動変更にはテストを添える
- マージは squash で行います
ライセンスは MIT です。提出いただいた貢献も同ライセンスで取り込まれ ます。ご質問・雑談は Issue テンプレートに記載の Discord へどうぞ。