今日もヤバさをI/O中。

(物理的)大型エンジニアのブログです。基本的に何かが足りません。

改めて Laravel/framework のコントリビュートガイドを読んでみた

Qiita Laravel #2 Advent Calendar 2019 23日目の記事です。

過去に Laravel/framework にてコントリビュートをしたことがありましたが、
割と雰囲気でコントリビュートしていた感があったので改めてコントリビュートガイドを読み込んでみようと思い立った次第でございます。

ドキュメントを読み込む

Laravel/framework にはコントリビュートガイドが存在するので、コントリビュートガイドを読みつつ個人的に補足すべきところを補足してみます。

laravel.com

貢献ガイド 6.x Laravel

Bug Reports

不具合に関する報告は各 Repository に Pull Request を作成することで対応します。

ただ、Pull Request と言ってもバグ票代わりになるものなので、他のコントリビューターでも簡単にバグが再現・修正できるよう明確にしなければなりません。
「不具合の修正には、バグの報告者とコントリビューターたちで力を合わせて解決する」というスタンスのようですね。

当たり前といえば当たり前ですが、新規機能作成や仕様変更はバグレポートに含まれません。その場合は Core Development Discussion を読みましょう。

Pull Request をざっと眺めてみると、いきなり解決案となるコミットを提示していることが多いです。
「不具合を見つけたけど、どう解決するかまではわからんな…?」と思ったら、以下のように Issue を立ててみると良いかもしれません。

github.com

あるいは Laravel Discord server の #internals チャンネル で話してみるのも良いでしょう!

Support Questions

Laravel の使い方に関する質問や相談は、 Laracasts ForumsLaravel.io Forums などで受け付けるようです。

Issue をざっと眺めると、Laravel の使い方に関する質問や相談のパターンで issue が結構作成されています。(そのあと以下のように他のコントリビューターに Laracasts Forums や Laravel.io Forums などへ促された後、closed されるケースが多いです)

github.com

Core Development Discussion

新規機能作成や仕様変更の場合は、 Pull Request の作成より前に議論を行う流れがあります。

具体的なコード例がある場合は、laravel/ideasで issue を立て、議論しましょう。

github.com

実装できるのであれば、以下のように Pull Request も同時に作ると良いです。
議論が行われてからマージされると思いますので、他の人が Pull Request を作成する前に作成しましょう。(テストコードの実装も忘れずに!)

github.com

具体的なコードがないうちは、Laravel Discord server の #internals チャンネルで話してみましょう!
Taylor さんに話しかける良いチャンスでもあるので、話しかけてみるのもアリですね!

Which Branch?

基本的にコントリビュートで使うブランチは主に3種類です。

  • 現行の LTS のブランチ:サポートポリシーを確認しましょう
  • 最新の安定ブランチ:数値表記されたブランチの中で一番最新のブランチ(default ブランチに設定されていることが多いです)
  • 現在開発中のブランチ:master ブランチ

不具合修正は、基本的に最新の安定ブランチ or LTSブランチ
後方互換性があるマイナー機能は、最新の安定ブランチ
それ以外は、現在開発中のブランチ
ということになります!

これもわからなければ、 Laravel Discord server の #internals チャンネルで話してみましょう!

Compiled Assets

コンパイル済みのファイルをメンテナ(taylor さんなど)がレビューしない以上、
Pull request 上でコンパイル済みの大量コードを含むファイルが表示されるのは無意味です。
少しでもレビューしやすくするため、コンパイル済みのファイルを含めないようにしましょう。

Security Vulnerabilities

セキュリティ脆弱性を見つけたときは脆弱性を突かれる前になるべく早く修正しなければならない他、
対応が完了するまで大っぴらにするわけにはいきません。 そのため、セキュリティ脆弱性に関しては taylor さんにメールを送信するという方法を用いているわけですね。

Coding Style

Laravelは PSR-2 コーディング規約と PSR-4 オートローディング規約に準拠しています。
ただし、StyleCI によって自動で修正されるようなので、あまり気にしなくても良いかと思います。

Code of Conduct

こちらで特に補足することはありません。コントリビュートする際のマインドとして、大切なことなのでしっかり読みましょう。

最後に

私も含めコントリビュートガイドを見る前に、いきなりコントリビュートしてしまう人は多々います。 コントリビュートをする前に、まずはドキュメントと当記事を落ち着いて読むことをオススメします!(自戒の意味も込めて😇)