Skip to main content
QUICK REVIEW

[論文レビュー] Sourcerer's Apprentice and the study of code snippet migration

Stephen Romansky, Cheng Chen|arXiv (Cornell University)|Jul 31, 2018
Software Engineering Research参考文献 35被引用数 4
ひとこと要約

本稿では、Stack Overflow と Python モジュールやドキュメントなどのオープンソースプロジェクト間でのコードクローン移行を検出するウェブサービス「Sourcerer’s Apprentice」を紹介する。この研究により、CC-BY-SA 3.0 のライセンスに抵触する、適切なクレジット表記がない 68,491 件の Python 2.7 ドキュメントクローンが発覚し、開発者や企業が不適切な再利用により法的リスクに晒されていることが明らかになった。

ABSTRACT

On the worldwide web, not only are webpages connected but source code is too. Software development is becoming more accessible to everyone and the licensing for software remains complicated. We need to know if software licenses are being maintained properly throughout their reuse and evolution. This motivated the development of the Sourcerer's Apprentice, a webservice that helps track clone relicensing, because software typically employ software licenses to describe how their software may be used and adapted. But most developers do not have the legal expertise to sort out license conflicts. In this paper we put the Apprentice to work on empirical studies that demonstrate there is much sharing between StackOverflow code and Python modules and Python documentation that violates the licensing of the original Python modules and documentation: software snippets shared through StackOverflow are often being relicensed improperly to CC-BY-SA 3.0 without maintaining the appropriate attribution. We show that many snippets on StackOverflow are inappropriately relicensed by StackOverflow users, jeopardizing the status of the software built by companies and developers who reuse StackOverflow snippets.

研究の動機と目的

  • Stack Overflow で共有されたコードスニペットが、Python のようなオープンソースプロジェクトから不適切に再ライセンスされたり、クレジット表記がなされずにコピーされているかどうかを調査すること。
  • Stack Overflow とオープンソースソフトウェアリポジトリ間のコードの双方向的フローを評価し、単一方向の伝播という仮定に疑問を呈すること。
  • 開発者が不適切な再利用による法的リスクを避けるために、ライセンス不一致のコードクローンを検出できるスケーラブルなウェブサービスの開発。
  • コミュニティプラットフォーム上に広く使われているコードスニペットにおける、クレジット表記の欠落と互換性のないライセンスが引き起こすリスクを浮き彫りにすること。
  • 開発者、Stack Overflow、オープンソース財団がライセンス準拠性とクレジット表記の実践を改善するための実行可能な提言を提供すること。

提案手法

  • 著者は、最先端のコードクローン検出ツールである SourcererCC を拡張し、Stack Overflow の投稿、Python 2.7 モジュール、ドキュメントの間で大規模かつ分散型のクローン検出を可能にした。
  • Ninka というライセンス推定ツールを、再帰的ライセンス推定メカニズムと統合することで、大規模なコードコーパスにおけるライセンス検出の正確性を向上させた。
  • 水平スケーラビリティを実現し、クエリ応答時間を短縮するために、非同期タスク並列処理と分散データシャーディングを採用した。
  • インデキシングパイプラインのプロファイリングとチューニングにより、起動コストを均等に分散させ、インデックス効率を向上させることでパフォーマンス最適化を達成した。
  • ウェブサービスは、以下の4つの主要なユースケースをサポートしている:Stack Overflow と課題の間のクローン検出、ドキュメントと Stack Overflow の間のクローン検出、学生の課題内でのクローン検出、ソフトウェアプロジェクトと広範なコードベース間のクローン検出。
  • 実証的分析には、1,000 個の一般的な pip パッケージと Python 2.7 ドキュメントを用い、結果はクローン検出とライセンス衝突分析によって検証された。

実験結果

リサーチクエスチョン

  • RQ1Python モジュールやドキュメントのコードスニペットが、適切なクレジット表記やライセンス準拠なしに、どの程度 Stack Overflow にコピーされているか。
  • RQ2オープンソースプロジェクトから Stack Overflow にコードが移行される際、特に CC-BY-SA 3.0 と MIT ライセンスのコードに関して、ライセンスの不整合はどのように生じるか。
  • RQ3Stack Overflow とオープンソースプロジェクト間のコードフローは単一方向であると想定されるが、実際には逆方向への大規模なコード移行が見られるのか。
  • RQ4Stack Overflow のクローンドキュメントスニペットにおいて、Python Software Foundation へのクレジット表記が欠落している割合はどの程度か。
  • RQ5Sourcerer’s Apprentice ウェブサービスは、大規模なスケールでライセンス不一致のコードクローンを検出するのにどの程度効果的か。

主な発見

  • Stack Overflow に存在する Python 2.7 ドキュメントのクローン 68,491 件が、Python Software Foundation への適切なクレジット表記を欠いており、正しい表記がなされている可能性があるのはわずか 4 件にとどまる。
  • MIT ライセンスの pip モジュールから抽出された 46,709 件のクローンが、Stack Overflow が課す CC-BY-SA 3.0 ライセンスと矛盾し、ライセンス不整合を引き起こしている。
  • Stack Overflow とオープンソースプロジェクト間のコードフローは双方向的であり、特にオープンソースプロジェクトから Stack Overflow へのコード移行が顕著に見られ、単一方向の伝播という仮定とは対照的である。
  • 66% の Stack Overflow ユーザーが、自身のコードに適用されている CC-BY-SA 3.0 ライセンスを認識していないため、意図しないライセンス違反のリスクが高まっている。
  • Sourcerer’s Apprentice ウェブサービスは、分散インデキシング、並列処理、パフォーマンス最適化を活用して、大規模なクローンおよびライセンス衝突を効果的にスケーリングして検出できた。
  • 本研究により、Stack Overflow のコードスニペットに依存する開発者や企業が、クレジット表記の欠落や互換性のない再ライセンスにより、ソフトウェア配布権が無効になる可能性がある法的リスクを負っていることが明らかになった。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。