Skip to content

Latest commit

 

History

History
56 lines (43 loc) · 3.04 KB

File metadata and controls

56 lines (43 loc) · 3.04 KB

コントリビューションガイド

yaylib への貢献を歓迎します。yaylib は Yay! API のマルチ言語クライアント で、API スキーマから機械生成されるコードと、その上に載る手書き レイヤの 2 層で構成されています。貢献の受け入れ方はこの 2 層で異なり ます。

機械生成ファイル(直接編集できません)

あるファイルが機械生成かどうかは、次のどちらでも判別できます(言語に 依存しません)。

  • ファイル先頭に Code generated; DO NOT EDIT.(または同等の注記) がある
  • リポジトリ直下の .gitattributes でそのパスが linguist-generated=true に指定されている(GitHub 上でも差分が 折りたたまれます)

これらはまるごと再生成されるため、手編集は次回生成時に上書きされて 失われます。機械生成ファイルに触れる PR はマージできません(CI の generated-guard が自動で検出します)。

API の型・enum 値・ステータス・挙動が実サーバと食い違うのを見つけた 場合は、コードではなく Issue でご報告ください。サーバが実際に返した リクエスト/レスポンス(再現手順・生のボディ)を添えていただけると、 生成元を調整して次のリリースに反映できます。これは最も価値の高い 貢献です。

手書きレイヤ(PR を歓迎します)

.gitattributes で生成指定されていない(=生成バナーを持たない) コードはすべて手書きで保守しており、通常の OSS と同じく PR を歓迎 します。代表的には各言語の認証ラッパ・トランスポート・署名・ アップロード・イベントストリーム・リトライ・セッション・エラーまわり と、それらのテストです。

受け入れの基準:

  1. 言語横断契約を壊さない — API サーフェスの形・認証フロー・署名・ アップロード・イベントストリームの不変項は PORTING.md に定義 されています。これに反する変更は差し戻します。
  2. テストを通し、必要なら追加する — 各言語のテストはネットワーク 不要(hermetic)で動きます。実行手順は各パッケージの README を 参照してください。挙動を変える PR にはテストを添えてください。
  3. 言語間で挙動が揃うこと — ある言語だけのその場しのぎではなく、 全対応言語で同じ挙動になる変更が望まれます。1 言語固有のバグ修正は その言語のみで構いません。

PR の心得

  • 1 PR は 1 つの目的に絞り、小さく保つ
  • 挙動変更にはテストを添える
  • マージは squash で行います

ライセンスは MIT です。提出いただいた貢献も同ライセンスで取り込まれ ます。ご質問・雑談は Issue テンプレートに記載の Discord へどうぞ。