Issueシステム概要

Yeomanでは、各プロジェクトでGitHubのissueトラッカーを使用しています。GitHubが提供する機能を使用してissueを分類することで、管理しやすくし、コントリビューターが完了すべきタスクを見つけやすくしています。

Yeoman全体で、主に3つの機能を使用します。

  1. ラベル
  2. マイルストーン
  3. アサイン

要するに?

actionableとラベル付けされたissueの解決にご協力ください。これらはすぐにコーディングできるものです。

ラベル

ラベルは、issueを分類するために使用されます。各issueを説明するために、3つのカテゴリのタグを使用します。ほとんどの場合、issueには各カテゴリのタグが少なくとも1つ付けられます。

ライフサイクル(実現可能性)

最初のカテゴリは、issueがactionableかどうかを確認します。それは次の質問に答えます。

このissueは今すぐ解決できますか?

issueのライフサイクルを説明する4つのタグがあります。

  • actionable:このissueは誰でも今すぐ解決できます。issueがactionableな場合は、それを取り上げてPRを送信してください。
  • to-split:issueのスコープが大きすぎるため、より小さなactionableな部分に分割する必要があります。to-splitのissueは、機能の実装の詳細について議論するのに適した場所です。
  • to-discuss:これは、issueについて議論する必要があり、Yeomanチームがこの機能をプロジェクトに追加するかどうかを決定する必要があることを意味します。
  • to-confirm:このタグは主にbugタイプのissueで使用され、誰かがissueを再現できるようになるまで使用されます。各バグを再現するための手順を追加して、issueをすぐにactionableとしてタグ付けできるようにしてください。

タイプ

プロジェクト内には複数のタイプのissueが存在します。主なものは次のとおりです。

  • feature:プロジェクトへの提案された新機能。
  • バグ
  • maintenance:プロジェクトのビルドシステム、テスト、リファクタリング、サードパーティなどに関連するすべて
  • ドキュメント
  • meta:プロジェクト管理に関連するissue。権限、リリース、変更ログなど。

難易度

難易度には、easymediumhardの3つのレベルでラベル付けします。

難易度は、特定のissueが触れる必要のある可動部分/システムセクションの数に基づいて評価されます。単一のメソッドを変更することで修正できるissueは簡単です。ただし、システムの3つの部分を変更する必要があるissueは難しいです。

この難易度レベルを評価することで、新しいコントリビューターに、issueを解決するために必要なコミットメントのレベルに関する洞察を提供します。難しいissueでは、Yeomanの内部構造を学習するのに長い時間が必要となり、簡単なissueでは、おそらくNode.jsの知識がある程度必要になるだけです。

マイルストーン

マイルストーンは、将来のリリースバージョンを表します。

Yeomanのバージョンは、semver仕様に可能な限り近いものに従います。これは、新機能がマイナーバージョンで実装されることを意味します。破壊的な変更はメジャーバージョンで追加されます。また、バグ修正はパッチリリースで行われます。

これは、変更を組み込むことができるバージョンを公開する準備ができるまで、一部のissueが遅れる可能性があることを意味します。

以下にいくつかの例を示します。

  1. 新機能を追加するプルリクエストは、現在のYeomanバージョンが十分に安定して、次のマイナーリリースに集中できるようになるまで遅れる可能性があります。
  2. 一部のissueは、後方互換性を損なうため、メジャーリリースまで修正するのに適していない場合があります。

ただし、あまり心配しないでください。近い将来に修正するのに適さないissueは、actionableとラベル付けされません。

アサイン

Yeomanチームのメンバーが機能の作業を開始している場合があります。その場合、ほとんどの場合、このメンバーをissueにアサインして、このissueが既に他の誰かによって解決されていることを全員に知らせるようにします。

issueの解決に時間がかかりすぎていると感じる場合は、issueにコメントするか(またはアサイニーにメールを送信して)、自分自身で作業を行うことを申し出てください。