コードへの貢献

Nette Framework に貢献しようと考えていて、その決まりと手順を知りたいですか。この初めての方への案内が、コードを効果的に貢献し、リポジトリを扱い、変更を実装するまでの手順を導きます。

手順

コードを貢献するには、GitHubのアカウントを持ち、Git のバージョン管理システムの基本を身につけていることが欠かせません。Git に馴染みがないなら、git – the simple guideを見て、たくさんある図の操作のクライアントのどれかを使うことを考えてみてください。

環境とリポジトリを整える

  1. GitHub で forkを作ります。手を入れたいパッケージのリポジトリのものです
  2. そのリポジトリを自分のコンピュータへ cloneします
  3. composer install のコマンドで、Nette Testerも含めた依存関係を入れます
  4. composer tester を走らせてテストが動くことを確かめます
  5. 最新のリリース版をもとに新しいブランチを作ります

自分の変更を実装する

これで自分のコードに手を入れられます。

  1. 望む変更を実装します。テストも忘れずに
  2. composer tester でテストがうまく通ることを確かめます
  3. コードがコーディング規約に合っているかを確かめます
  4. この形式の説明とともに変更を保存(コミット)します

コミットは複数作れます。論理的な一歩ごとにひとつです。それぞれのコミットは、それだけで意味の通るものにすべきです。

変更を送る

変更に満足したら、それを送れます。

  1. 変更を GitHub の自分の fork へ push します
  2. そこから pull request(PR)を作って Nette のリポジトリへ送ります
  3. 説明には十分な情報を書きます

意見を取り入れる

これであなたのコミットがほかの人にも見えるようになりました。提案のコメントを受け取るのはよくあることです。

  1. 提案された変更を追いかけます
  2. それを新しいコミットとして取り入れるか、前のコミットと合わせます
  3. コミットを GitHub へ送り直すと、pull request に自動的に現れます

既存の pull request を直すために、新しい pull request を作っては決していけません。

ドキュメント

機能を変えたり新しく足したりしたなら、ドキュメントに足すのも忘れないでください。

新しいブランチ

できるなら、最新のリリース版、つまりブランチの最後のタグに対して変更を加えてください。タグ v3.2.1 なら、次のコマンドでブランチを作ります。

git checkout -b new_branch_name v3.2.1

コーディング規約

あなたのコードは、Nette Framework で使われているコーディング規約に合っていなければなりません。コードを確かめて自動的に直すには、Nette Coding Standardの道具を使ってください。そこにはインストールと使い方の説明もあります。

コミットの説明

Nette では、コミットの主題は次の形式です。Presenter: fixed AJAX detection [Closes #69]

  • 領域とそれに続くコロン
  • コミットの目的を過去形で。できれば「added(新機能)」「fixed(修正)」「refactored(振る舞いを変えないコードの変更)」「changed」「removed」のような語で始めます
  • そのコミットが後方互換を壊すなら「BC break」を足します
  • 課題の管理へのリンクがあれば、(#123)[Closes #69] のように書きます
  • 主題のあとには空行をひとつ置いて、フォーラムへのリンクなどを含むより詳しい説明を書けます

Pull request の説明

pull request を作るとき、GitHub の画面で題名と説明を入れられます。題名は簡潔にして、説明にはその変更の理由についてできるだけ多くの情報を書いてください。

また、それが新機能か不具合の修正か、そして後方互換の問題(BC break)を起こしうるかを見出しに書いてください。関連する課題があればリンクしてください。そうすれば pull request が受け入れられたときにそれが閉じられます。

- bug fix / new feature?  <!-- #issue numbers, if any -->
- BC break? yes/no
- doc PR: nette/docs#?    <!-- highly welcome, see https://nette.org/en/writing -->