← 最新の論文
💻 computer science

Deforking the World of Code: A Project-Provenance Map that Recovers Cross-Forge Fork Families that Platform Graphs Cannot See

本論文は、共有されたgit履歴を統合されたクラスターへと集約することで、フォーク間のプロジェクト・ファミリーを再構築する、World of Codeのための精査された「デフォーク(deforking)」マップを導入しており、それによって、人気度のインフレを補正し、プラットフォーム固有のグラフには見えないマルチフォーク・ファミリーや非GitHub由来のルーツを含む数千ものフォーク関係を明らかにしている。

原著者: Audris Mockus

公開日 2026-06-30
📖 1 分で読めます☕ さくっと読める

原著者: Audris Mockus

原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む

ソフトウェア開発の全歴史を、巨大で混沌とした図書館だと想像してみてください。この図書館には、何百万冊もの本(リポジトリ)があります。しかし、ここには落とし穴があります。多くの本は、同じ物語の単なる「コピー(複写)」なのです。

コーディングの世界では、これを**フォーク(forking)**と呼びます。開発者は既存のプロジェクトを取り込み、コピーを作成し、独自のバージョンを開始します。彼らはコードを数行微調整するかもしれませんが、核となる履歴は同一のままです。

この論文が取り組んでいる問題は、もし単純にライブラリ内のすべての本をカウントして、あるコードがどれほど「人気」があるかを数えようとしたら、その数字が極端に膨れ上がってしまうということです。もしある人気のある物語が1万回コピーされていたら、1万種類の異なる物語が読まれているように見えますが、実際には、1つの物語が1万の異なる場所で読まれているだけなのです。

この論文は、この図書館を整理するための新しい**マップ(ツール)**を紹介しています。これは、すべてのコピーを元のソースへと再びまとめ上げ、研究者がコピーというノイズではなく、「真の物語」を見ることができるようにするものです。

彼らがどのように行ったのか、簡単な比喩を用いて説明します。

1. 「共有ページ」の探偵

著者たちは、デジタルの世界では履歴を簡単に偽装することはできないということに気づきました。もし2冊の本が全く同じページ(特定の「コミット」やコードの変更)を共有していれば、それらは互いに関連しているはずです。

  • 旧来の方法: 彼らは、ページを共有するすべての本をリンクさせようとしました。しかし、これは「もし2冊の本に『Copyright 2024』と書かれたページが共通してあれば、それらは同じ物語である」と言うようなものでした。これは間違いです!無関係な多くの本が同じ著作権ページを持っています。これでは、全く異なる物語同士を一つの巨大で乱雑な塊へと接着してしまうことになります。
  • 新しい方法: 彼らはより賢いマップを構築しました。単一のページではなく、「多くの」共有ページを探すようにしたのです。もし2冊の本が章全体を共有していれば、それらは間違いなく関連しています。

2. 「サイズ制限」フィルター(キャップ)

この賢いマップを用いても、巨大で退屈なページ(標準的なライセンス契約や空のスターターテンプレートなど)が、依然として無関係な物語同士をつなぐ架け橋として機能してしまうことがありました。

  • 解決策: 著者たちは、これらの架け橋にサイズ制限を設けました。もし共有されたページが250冊以上の本に登場する場合、それは単なる汎用テンプレート(標準的な「利用規約」のページのようなもの)であると仮定し、無視するようにしました。
  • 結果: これにより、巨大で乱雑な塊が分解されました。突然、マップは一つの巨大で混乱したスーパークラスターではなく、明確な「物語の家族」を示すようになりました。これは、真の家族を壊したのではなく、無関係なものを貼り付けていた「糊」を取り除いただけなのです。

3. 「真の履歴」のチェック

著者たちは、これらの巨大な塊を切り離すことで、自然に多くの部分を持つ複雑な物語(例えば、ある物語が多くの言語に翻訳され、その後再結合されたケースなど)を誤って切り刻んでしまうのではないかと懸念しました。

  • テスト: 彼らはマップに残った最大のグループを調査しました。それは間違いではなく、一つの大きなプロジェクトが他の有名なプロジェクトの一部を真に吸収した、実在する複雑な物語であることが分かりました(例:主要なオペレーティングシステムがウェブブラウザのコードを取り込んだ場合など)。
  • 決定: この「残差(residual)」グループは、安価な糊によってできたものではなく、深く複雑な履歴によって構成されていたため、彼らはこれ以上切らないことに決めました。これは真に複雑な関係性を表しているため、そのまま残すことにしたのです。

4. 「公式リスト」との照合

マップの正確性を確認するために、彼らはGitHubの公式な「フォークリスト」(ユーザーが手動で「Fork」ボタンをクリックして作成されるリスト)と比較しました。

  • 一致: 彼らのマップに存在するプロジェクトとGitHubのリストの両方に存在するプロジェクトを調べたところ、**99%**の確率で一致しました。
  • 驚きの発見: 彼らのマップは、GitHubのリストが見逃していたものを見つけ出しました!
    • クロス・フォージ・ファミリー(Cross-Forge Families): GitHubで始まり、GitLab、Bitbucket、その他のサイトにコピーされたプロジェクトの家系を見つけました。GitHubのリストはGitHub側の側面しか見ていませんが、このマップはインターネット全体の家系図を見ています。
    • 切り離されたフォーク(Detached Forks): コピーとして始まったものの、その後履歴を完全に書き換えたために、もはやオリジナルとは接続されていないプロジェクトを見つけました。公式のリストでは依然として接続されていると判断される可能性がありますが、彼らのマップはこれらを別個のエンティティとして正しく識別しました。

5. なぜこれが重要なのか

このマップが登場する前は、あるプログラマーがいくつの異なるプロジェクトに従事したかを知ろうとしても、その人が人気のあるプロジェクトに従事し、そのプロジェクトに5,000のコピーがあっただけで、「5,000のプロジェクトに従事した」という偽の数字を得てしまう可能性がありました。

  • 修正: このマップはそれを修正します。これは、プログラマーが実際には5,000のプロジェクトではなく、5つの明確なプロジェクトに従事したことを教えてくれます。
  • 成果: これは、ソフトウェアの世界を、オリジナルの物語とコピーを切り分け、さらには異なるウェブサイトをまたぐ物語さえも特定することで、クリーンで正確な視点を提供します。

要約すると、 著者たちは、コピーされたコードの乱雑な網を解きほぐすツールを構築しました。彼らは「サイズ制限」を使用して無関係なプロジェクトがくっつくのを防ぎ、公式の記録と比較して検証を行い、ソフトウェアの世界が以前の認識よりもさらに多くのウェブサイトをまたいで相互接続されていることを発見しました。彼らはこのマップを誰でも使えるように公開し、将来のソフトウェア史の研究が、膨大な数のコピーによって欺かれることがないようにしました。

自分の分野の論文に埋もれていませんか?

研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。

Digest を試す →