Slide 1

Slide 1 text

リポジトリアクティビティスコア InnerSource Patterns Speaker: Yuki Hattori (@yuhattor) Pattern Author: Michael Graf (SAP)

Slide 2

Slide 2 text

概要 潜在的なコントリビューターは、彼らの助けを必要とするアクティブなインナーソースプロジェクトを見つ けたいと思っています。各プロジェクトのリポジトリのアクティビティスコアを計算することで、プロジェ クトのランク付けされたリストを作成することができます ( 参考: インナーソースポータル ) 、そのため、潜在 的コントリビューターは、彼らがコントリビュートしたいプロジェクトをより簡単に決定できます。 InnerSource Patterns: リポジトリアクティビティスコア @yuhattor 2

Slide 3

Slide 3 text

問題 インナーソースのプロジェクトはどのような順番で表示されるべきでしょうか? GitHub のスター数, フォーク 数, コミット数, コードの行数, 最終更新日時 などの典型的なKPI は、プロジェクトの活動状況を簡潔に示すに は十分ではありません。 活発なプロジェクトはもちろん、新しいコントリビューターを必要としているかなり新しく熱心なプロジェ クトも、成熟したプロジェクトで活動が少ないものやメンテナンス中のものよりも上位にランクされるべき でしょう。 プロジェクトのアクティビティレベルについて、信頼性が高く汎用性のあるスコアを定義するために、いく つかのKPI から派生した新しい評価指標が必要になります。この指標は、プロジェクトのアクティビティレベ ルに応じて、プロジェクトを分類するために使用されます。 InnerSource Patterns: リポジトリアクティビティスコア @yuhattor 3

Slide 4

Slide 4 text

ケーススタディ インナーソースが長期間実践されている場合、または特定の数のプロジェクト( 意味のあるしきい値を与える ために50 としましょう) を超えて拡がっている場合、現在最も人気がありアクティブなインナーソースプロジ ェクトを見つけるのは困難です。 長い間存在するプロジェクトはよく知られていますが、もはやあまり活発 ではないかもしれません。 一方、かなり新しいプロジェクトには、まだ評判や活発なコミュニティがありま せん。 インナーソースプロジェクトのリストは、静的なリソースと考えるべきではありませんが、ちょうどその日 の最も興味深いトピックを最初にリストするニュースページのように、新しいアクティブなプロジェクトを 発見し探索するためのエキサイティングな場所です。したがって、プロジェクトの順序が定期的に更新さ れ、プロジェクトの人気と活動に応じて変更された場合、それは有益であると言えます。 これらの考慮事項を加味し、リポジトリアクティビティスコアを計算する最初のプロトタイプが開発されま した。 このプロトタイプは驚くほどよく機能し、プロジェクトの活動状況に応じて常に変化する順序を決定するこ とができます。 InnerSource Patterns: リポジトリアクティビティスコア @yuhattor 4

Slide 5

Slide 5 text

状況 インナーソースプロジェクトの発見は、インナーソースポータル と ギグマーケットプレイス パターンで促進 されるか、他のコミュニケーションチャネルやプラットフォームでプロジェクトを促進することで可能にな ります。アクティビティスコアは、プロジェクトがコミュニティに提示されるデフォルトの順序を定義して います。 InnerSource Patterns: リポジトリアクティビティスコア @yuhattor 5

Slide 6

Slide 6 text

組織に働く力学 GitHub API で取得できる自動化された KPI は、全ての事柄のうち一部しか示せていません。コードの品質や 優れたドキュメントの有無、活発で助け合うコミュニティなど、そのプロジェクトが楽しくコントリビュー トできる場所であるかどうかも重要な事項です。 このような「ソフトなKPI 」は、手動または半自動で計算と結果のスコアに追加する必要があります。もし、 コードカバレッジレポートのような、リポジトリにより多くのコンテキストを提供するツールがあれば、簡 単に取り入れることができます。 InnerSource Patterns: リポジトリアクティビティスコア @yuhattor 6

Slide 7

Slide 7 text

スケッチ InnerSource Patterns: リポジトリアクティビティスコア @yuhattor 7

Slide 8

Slide 8 text

ソリューション リポジトリアクティビティスコアは、インナーソースプロジェクトの(GitHub) 活性度を表す数値です。GitHub スター、ウォッチ、フォークなどのリポジトリ統計から自動的に導き出され、他のツールからのKPI や手動評 価で付加情報が足されることもあります。 さらに、最終更新日やレポの作成日などの活動パラメータを考慮し、多くのトラクションを持つ若いプロジ ェクトに活力を与えます。 コントリビューションガイドライン、積極的な参加統計、課題( 公開バックログ) を持つプロジェクトも、より高いランキングを受け取ります。 これらはすべて、GitHub search API と GitHub statistics API の結果を使って自動的に取得・計算することが可 能です。BitBucket 、Gitlab 、Gerrit のような他のコード・バージョニング・システムも、同様のAPI があれば統 合することが可能です。 InnerSource Patterns: リポジトリアクティビティスコア @yuhattor 8

Slide 9

Slide 9 text

参考 // スター数、ウォッチ数、コミット数、およびイシュー数から仮想のInnerSource スコアを計算します。 function calculateScore(repo) { // 初期スコアは 50 にします。GitHub の KPI ( フォーク数、ウォッチャ数、スター数) が低い、アクティブなレポジトリをより良いスタート地点にするためです。 let iScore = 50; // 重み付け:フォーク数とウォッチ数で最もポイント付けし、次にスター数でポイント付け。オープンなイシューの数でも若干のスコアを加える。 iScore += repo.forks_count * 5; iScore += (repo.subscribers_count ? repo.subscribers_count : 0); iScore += repo.stargazers_count / 3; iScore += repo.open_issues_count / 5; ... return iScore; } InnerSource Patterns: リポジトリアクティビティスコア @yuhattor 9

Slide 10

Slide 10 text

結果の状況 コントリビューターは自由にインナーソースプロジェクトに時間をコミットできますが、自分のチーム の仕事に関連するプロジェクトにコントリビューションするか、個人的な開発目標に基づいて、異なる プロジェクトに参加することもできます。 プロジェクトはリポジトリアクティビティスコアに基づいて並べ替えて、新しいコントリビューターに 見てもらうことができます。スコアはプロジェクト進行中に計算したり、定期的に結果のリストを保存 するバックグラウンドジョブで計算することもできます。 インナーソースリポジトリを定期的に検索するクローラーも有用な追加機能です、これは インナーソー ス ポータルのようなツール、検索エンジン、または対話型チャットボットでランク付けされたプロジェ クトリストを探せるようにするツールも候補になり得ます。 InnerSource Patterns: リポジトリアクティビティスコア @yuhattor 10

Slide 11

Slide 11 text

事例 SAP のインナーソースポータルで、インナーソースプロジェクトのデフォルトの順序を定義するために使 用されています。2020 年7 月に初めて作成され、それ以来、頻繁に微調整や更新が行われています。 2020 年7 月にこのことを InnerSourceCommons に提案したところ、このパターンが確立しました。ま た、Michael Graf & Harish B (SAP) at ISC.S11 - The Unexpected Path of Applying InnerSource Patterns もご 参照ください。 InnerSource Patterns: リポジトリアクティビティスコア @yuhattor 11

Slide 12

Slide 12 text

ステータス Structured InnerSource Patterns: リポジトリアクティビティスコア @yuhattor 12

Slide 13

Slide 13 text

InnerSource についてもっと知る InnerSource Commons: https://innersourcecommons.org Join our Slack community: https://innersourcecommons.org/slack InnerSource Patterns: https://patterns.innersourcecommons.org Twitter: @InnerSourceOrg 日本語 Slack チャンネル: #jp-general 日本語 Twitter: @InnerSourceJP InnerSource Patterns: リポジトリアクティビティスコア @yuhattor 13