Upgrade to Pro — share decks privately, control downloads, hide ads and more …

InnerSource Pattern: リポジトリアクティビティスコア

InnerSource Pattern: リポジトリアクティビティスコア

概要
パターンの著者: Michael Graf (SAP)
スピーカー/翻訳: Yuki Hattori | LinkedIn | Twitter | GitHub
YouTube: リポジトリアクティビティスコア
Doc: リポジトリアクティビティスコア

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

リンク
InnerSource Patterns: English 🇬🇧| 日本語 🇯🇵
Website: innersourcecommons.org
Slack: Invite Link | 🇯🇵#jp-general
Twitter: @InnerSourceJP (日本) | @InnerSourceOrg (公式)

Yuki Hattori

January 13, 2023
Tweet

More Decks by Yuki Hattori

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  9. 参考
    //
    スター数、ウォッチ数、コミット数、およびイシュー数から仮想の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

    View Slide

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

    View Slide

  11. 事例
    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

    View Slide

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

    View Slide

  13. 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

    View Slide