web-dev-qa-db-ja.com

カスタムソフトウェアに言及している論文を研究して、ソースコードをリリースしないのはなぜですか。

研究論文に記載されているソフトウェアのソースコードが公開されない理由はありますか?研究論文は実装の詳細よりも何かを達成するための一般的なアイデアについての詳細であることを理解していますが、なぜ彼らがコードをリリースしないのかわかりません。

たとえば、 この論文 は次で終わります:

結果

人間の線画システムは、OpenGLを使用するC++のQtフレームワークを通じて実装され、ハードウェアの追加支援なしで2.00 GHz Intelデュアルコアプロセッサワークステーションで実行されます。システムが新しいパスとテクスチャを合成している間に、インタラクティブに線を描くことができます。

彼らはそれを使って行う収益化のために、または著作権のために、ソースコードを意図的に閉じたままにしていますか?

69
alecail

いくつかの理由が思い浮かびます。

  • コードは記事に対して大きすぎます。興味深いプロジェクトは短期間であり、それらを説明する論文を掲載するには短すぎました。これはまだ発生する可能性がありますが、興味深くするのに十分な大きさの多くのプロジェクトは、それらを説明する論文で公開するには大きすぎます。
  • パブリックホストは無料でも耐久性もありません。最近まで、安価で耐久性があり、アクセスしやすいパブリックホストは利用できませんでした。
  • 論文の公開はプロジェクトの公開よりも簡単です。一部の人々は論文またはプロジェクトを公開する時間がありますが、両方を公開することはできません。
  • 役割に関連付けられたインセンティブ何年も前に、私は同僚に製品開発と特許について尋ね、そこにいるほとんどの人がどちらかと言えばそうであるというWordを入手しました。紙のライター(アカデミアを考える)やオープンソースの開発者と同様に、報酬はどちらかの成果物に向けられます。
  • 自己動機。アイデアを説明したい、またはコードを実装したいという欲求が、同じ人の中で常に同じ部分に存在するとは限りません。私の教授の多くは、彼らがあまりコードを書いたことがないか、流暢にコードを書いてから何年も離れていたことを公然と認めました。同様に、多くの開発者は、コードで、またはソース管理にコミットするときに、ほとんどコメントを書きたくありません。
  • プロジェクトホスティングの耐久性および作業成果物も問題です。今から数年後に消えてしまう可能性のある場所にリンクを張ろうとする人は、その結果、紙の価値を減らします。
  • Tradition。出版社は論文のレビューと出版を志向していますが、プロジェクトに対して同じ評価を受ける準備ができていない可能性があります。
    また、再現性の合理的なレベルとは何かに関する従来の見方は、分野によって異なります。新しい合成方法に関する論文を発表する化学者は、別の化学者が合成を実行するのに十分な詳細を書き留めることが期待されています。彼女は抽出物と製品をジャーナルに発送することは期待されていません。論文を使用/再現したい読者は、自分のeductを購入し、自分のラボで合成を行うことが期待されます(ただし、実際にどのように行われるかを確認するためにラボに来て訪問するように依頼する場合があります)。生物学者が彼の新しいトランスジェニックマウスを紙に貼るように期待されることもないでしょう。再現性に関するこの見解は、たとえば実際の実装を出荷するのではなく、アルゴリズムの(疑似コード)記述を提供します。
  • 裸のコードは衝撃的です。コードの検査、コードのレビュー、およびプロジェクトの品質保証よりも、紙の長さのドキュメントの校正にかかる時間を大幅に短縮できます。たくさんのコードを持っているので、表示するよりも説明した方がよいでしょう。うまくいけば、私たち全員が美しいコードを書くところまで進んでいますが、コードが急いだり、かろうじて機能したり、完全に機能しない場合は、実行可能ファイルやソースを共有しないほうが快適かもしれません。
  • クローズドソース。誰もがオープンソースを受け入れているわけではありません。多くの論文は、DoD、商業プロジェクト、または民間資金プロジェクトの作業について書かれており、プロジェクトの公開により利益が得られますが、オープンソースコードまたは他の作業成果物。
  • このコードに基づいてさらに作品を公開します。コードが公開されていない場合、フォローアップ作品を公開する上で著者に利点を与える可能性があります。他の競合する研究者は、貴重な時間を要する可能性のある作業を再実装する必要があるかもしれません。
71
DeveloperDon

Randall LeVequeの「コードを共有しない10の理由(とにかくなぜすべきか)」に関するプレゼンテーションを読む http://faculty.washington.edu/rjl/talks/LeVeque_CSE2011.pdf

彼は、コードは数学の証明に類似していると説得力をもって主張し、証明が長すぎる、または醜すぎる、またはEdgeケースで機能しない、または価値がある可能性があるため、証明が公開されていない世界を検討するように勧めますお金、または誰かがそれを盗むかもしれない...

基本的に、あなたが科学をしているなら、あなたは自分のコードを公開すべきです。そうでなければ、あなたは錬金術をやっていて、私が懸念している限り、暗黒時代に戻ってペストで死ぬことができます。

40
Spacedman

一般に、論文の結果を生成するために使用されるプログラムは単なるツールであり、結果のみが重要です。そのため、それらは、コンテキスト、方法論、結果、およびそれらについての議論を提示する論文には掲載されません。

しかし、結果は再現可能でなければなりません。そして、論文のベースとなっているデータソースが公開されている場合、それらを結果に変換するプログラムも一般的に必要です。特許や著作権の問題が発生しない場合、ウェブ上の「どこかに」配置されることがよくあります。または、少なくとも、作者はあなたが彼らに尋ねるなら、あなたにプログラムを送る必要があります。

27
mgoeminne

これはクローズドソースではありません。ソフトウェアはまったく公開されていません。

簡潔な答え:

ソフトウェアを公開しない理由はいくつかありますが、クローズドソースでソフトウェアを公開することは一般的ではありません。

長い答え:

クローズドソースとは、ソフトウェアが公開されており、source-codeが公開されていないことを意味します。しかし、一般的なケースはソフトウェアもソースコードも公開されていない場合です。

私の経験では(私は大気科学で働いています)、著者に連絡して、研究を行うためのソフトウェア(もちろん、ソースコードを含む)を入手できるかどうか尋ねると、非常に満足しています。私が彼らに基づいたプロジェクトで論文を書くつもりなら、彼らは少なくともそれから引用を得るでしょう(良い!)が、おそらく共同執筆された論文を入手します(もちろん、彼らがソフトウェアを文書化しなかったため、誰かが助けなしにそれを使用できるようになりました)。比較的安価な共著論文なので、さらに良いです

本当の質問は:

彼らはなぜソフトウェアを公開しないのですか?

これにはいくつかの理由があります。

  • 公開されたソフトウェアにはドキュメントが必要です。通常、人々はドキュメントを書くことを好まない。
  • 公開されたソフトウェアはユーザーを引き付ける可能性があります。ユーザーは質問があるかもしれません。これには時間がかかります(ただし、上記を参照)。
  • 公開されたソフトウェアは、重要なメンテナンスが必要になる場合があります。
  • ソフトウェアの公開にはホスティングが必要です。

リストは長くなる可能性があります。ここではなく、Academia.SEで別の質問に値するに値します。

(私のグループでは、 私たちはソフトウェアを公開しています— GPLの下でライセンスされています

14
gerrit

それは皮肉に聞こえるかもしれませんが、私の経験では、研究論文は理解しやすいように、または再現が簡単に書かれていません。代わりに、研究コミュニティでは、非常に科学的に聞こえ、見た目が良い記事を持つことがより重要です。そのため、ほとんどの作成者はコードを数式に変換し、アルゴリズムが数学的に正しいことを証明しようとします。通常、このような記事のページ数は限られているため、コードを公開するスペースはありません。しかし、もちろんこれは、URLを含む完全なコードへのリンクを作成者に制限するものではありません...

コードが公開されていない場合、作成者は調査結果をメタライズしたいと思うか、(個人的にはもっと頻繁にそうだと思いますが)人々は彼らの研究が彼らの主張ほど素晴らしくないと人々が見るのを恐れています。多くの場合、結果はごく限られた数のケースにのみ適用されます。

また、1つの単純なプログラム/アルゴリズムから、いくつかの研究論文が分離されていることも確認しました。コードが公開されると、同じトピックに関するそれ以上の論文を書くことが難しくなります。したがって、少しずつスライスして公開するために、知識は控えられます。

大学では、重要なのは結果や研究の適用性ではなく、発行する論文の数であることに常に留意してください。悲しいですが、本当です。

8
codingFriend1

収益化の意図は別として、私はソースコードを研究論文から除外する正当な理由はないと思います。何らかの形でソフトウェアに依存する研究を公開するためのルールとして、ソースコードを提供することを提案する小さな動きが始まっています。あなたはそれについてもっと読むことができます、それは Science Code Manifesto と呼ばれています。

7
hulkmeister

上記の回答は、コンピュータグラフィックス(著者が言及した論文が発表された領域)で頻繁に発生するいくつかの実用的な理由を見逃しています。コードリリースは、CSのフィールド間で大きく異なります。たとえば、機械学習では、コードは通常公開されます。 Human Computer Interactionでは、コードが公開されることはほとんどありません。

私はコンピュータグラフィックスでかなりのコードをリリースしましたが、著者はコードをリリースする必要があると思いますすべきです彼らがコードをリリースする理由は、単純な、陰謀ではない理由がたくさんありますしないでください)。例えば

1)ほとんどのコンピュータグラフィックス研究プロジェクトは、多くの場合異なる機関の複数の研究者間の共同作業を伴い、それぞれがパズルの一部(アルゴリズム、ライブラリなど)を提供します。作業コードをリリースするには、すべての研究者が同意する必要があります。これはめったに単純な議論ではなく、通常は問題を回避する方が簡単です。

2)多くの場合、1つの論文のコードは、ラボ内で開発されているより大きなコードベースに埋め込まれています。そのコードベースには、他の未公開の作業が含まれます。単一のプロジェクトのコードを分離することは多くの作業であり、多くの場合、この作業を行わなければならない人々に直接の利益はありません(以下のインセンティブを参照)。

3)大学は、多くの場合、コードに対するIPの権利を持っています。したがって、オープンソース化する前に、特許を取得できるように「発明」を文書化してほしいなど、あなたの人生を際限なく困難にする「イノベーションオフィス」に連絡する必要があります。場合によっては、大学はソースをリリースする許可を拒否することさえできます(これは機関によって異なり、(1)によって非常に複雑になります)

4)多くのコンピュータグラフィックス研究が企業によって行われます。その場合、作者もコードを所有しておらず、コードをリリースするために弁護士から許可を得る必要があります。弁護士は、「はい」と言う動機はほとんどありません。

5)コードを公開するインセンティブはありません。ほとんどのコンピュータグラフィックスのリサーチコードは、他人が使用することはありません。たとえそうであっても、汎用コードの場合、通常は確認応答を受け取ります(CVに関しては価値がありません)。運がよければ、引用されます。雇用委員会と助成機関は、コードをリリースしても、通常は気にしません。したがって、リリース用にコードを準備するのに費やされた時間は、別の論文に費やされたかもしれない時間の浪費です。 (コンピューターグラフィックスでこれを積極的に変更しようとしている人々がいます)。

6)notコードを公開するインセンティブがあります。コードは、スタートアップ企業に変わったり、既存の企業にライセンスされたりする場合があります。これは、将来の研究に資金を提供します。みんな食べなきゃ。

6
Ryan Schmidt

場合によります。論文を書く人、またはその上司は、ソースコードをどう処理するかを決定します。時々、人々はプロジェクトをオープンソースにします。

時々、プロジェクトは通常企業によって資金を供給されます、それはそれが彼らの財産であることを意味します。これらの場合、論文の著者はコードを表示することはできません。

5
BЈовић

通常、これはページ制限の問題です。アルゴリズムが非常に短い場合、それは紙に少なくとも疑似コードとして表されることがよくあります。一方、基礎となるコードの印刷されたバージョンがほんの数ページの長さの場合でも、コードを印刷しても記事の内容を表示する余地はありません。 10ページのジャーナル記事は長い記事です。

ソースを利用可能にしないと、詐欺の可能性が生じます。この可能性があるため、現在多くのジャーナルでは、著者がソースコードを補足情報として提出する必要があります(アクセスできる場合は、ジャーナルから入手できます。高額な購読料がかかる場合があります)。他の一部のジャーナルでは、作成者にソースコードを要求する人にリリースするように要求しています。まだ他のジャーナルはまだ暗い時代にあります。ソースコードは提出に必要ではなく、作者はそれをリリースする必要はありません。

最も簡単な方法は、作成者にソースコードを提供できるかどうかを問い合わせることです。著者の電子メールアドレスは、通常、最近のほとんどのジャーナル論文に記載されています。

3
David Hammen

科学者としての私の経験(5件の論文が発表されています)では、結果を作成するために使用されたコードをジャーナルがリリースする必要がないことがよくあります。ジャーナルがスクリプトを受け入れないということではありません。多くのジャーナルはオンライン補足資料を許可しています。アルゴリズムなどを対象とした一部のジャーナル(コンピューターや地球科学など)では、アルゴリズムのソースを追加する必要がありますが、これは規則よりも例外です。

ジャーナルでの文化に加えて、科学者にとってコードは目的を達成するための手段にすぎません。多くはプロのソフトウェア開発者ではありません。多くの人はコードを科学を表現するための単なるツールと見なしているため、コードを公開することの緊急性を感じていません。さらに、コードが公開されるまでコードを磨くには、多くの作業が必要です。科学者は、ソフトウェアを書くのではなく、科学を行うために報酬を支払われます。

3
Paul Hiemstra

たいていの場合、実際のプログラムは、製品自体ではなく、目的を達成するための単なるツールです。ソースコードの完全な詳細を提供することは、レポートの署名に使用されたペンの完全な図やPCの回路図を提供することに似ています。

そうは言っても、特にピアレビューが招待されている場合は、ソースコードは利用可能になります-何らかの形式の非開示契約(NDA)の下では-本質的に知的財産がプログラム内に組み込まれているためです。

コードに本当に興味がある場合は、 @ Buttonsのコメント をお勧めします。

2
Andrew

私が考えることができる理由のほとんどはすでにここで提起されていますが、実際に私に起こった2つをさらに追加するつもりでした。

ジャーナルは何をすべきかわからない

私が取り組んでいる論文の1つについて、私は間違いなく、ソースコード(論文の要点はデータの視覚化でした)とそれに伴うサンプルデータを含めることに間違いはないと判断しました。そのため、提出物とともにElectronic Supplements 1と2を添付しました-コードを含むRスクリプトと、そのRスクリプトに必要なデータを含むCSVファイル。

ジャーナルは、結局のところ、電子サプリメントをWordファイルに絞った場合にのみ電子サプリメントを取ることができます。その日のRスクリプトを取得するために1日の大部分を試した後、私はあきらめて、補足としてコードを含めないことにしました。私は大学でホストすることもできましたが、大学院生の場合、1年以内にそこでアカウントを失うことになることを知っていました。linkrotですぐに追い越されてしまうと、オープンソースは役に立たなくなります。

私はそれをGitHubでホストし、それへの参照を紙に入れましたが、それは私がreallyがコードを挿入したかったためです。特に、私の分野のほとんどの人はGitHubのようなものを使用していないので、その努力はそれをダウンロードする少数の人々に値するものではないと判断し、本当にそうしたい場合はとにかく私にメールを送ることができます。

ジャーナルは興味がないだけです

レビュー担当者からの要求に応じて、コード自体に関するいくつかの小さな詳細を論文に挿入しましたが、その臨床ジャーナル(読み取り:コードはありません)、電子的な補足は許可されていません。ソースコードを追加すると、それが価値があるよりも多くのトラブル。

皮肉なことに、誰かdidがコードを探しに行った場合、それは(または間もなく)オープンソースになりますが、既にEdge of 'で実行されていましたこれは気が散るほど技術的になりつつあります」と私は、「レビュアーを幸せにする」という簡単な言及が私がやろうとしているすべてであると決めました。

1
Fomite

多くは、コードが書かれた目的に依存します。ポイントを実証することであった場合、それは最適化されていない可能性が高いため、リリースされるのは理想的ではありません。基礎となる概念と方法論が有効である場合、コードの結果を最初から再作成できるはずです。著作権と所有権の問題もあるかもしれません。

原則として、コードをリリースすることは技術的に不可能ではありませんが、コードがリリースされない理由はさまざまです。そのため、おそらくこの質問に対する簡単な答えはありません。特定のケースでは、おそらく関係する研究者に尋ねることができます。

1
temptar

あなたが引用した論文はすでに28ページあり、内容のほとんどは問題の解決に関連する設計上の決定に関するものです(タイトルに記載されています)。

コードは、設計を検証する最後のステップです。それは取るに足らないことではありませんが、特に紙が占めるスペースを考えた場合、紙の結果に価値を加える部分ではありません。

すべてのケースが同じというわけではありません。一部の論文では、ソースコード、または少なくとも疑似コードを提供しています。一部の編集者はそれを許可していません。一部はそれを許可しますが、スペースのために、著者はそれを含めません。 私がソースコードを公開した が "図"としてフォーマットされた1つのジャーナル。テキストとして送信したにもかかわらず、電子バージョンには画像データとして含まれています。

1
Fuhrmanator

インセンティブは重要であり、研究者のインセンティブは一般に、お互いに徐々に構築された論文の安定した流れを生み出せることを保証することです。大学院生は通常、卒業するために論文の個々の章に変えることができる3〜5の公開論文を必要とします。ジュニア教員は、在職期間の見直し前に、できるだけ多くの出版物を作成する必要があります。そのため、ほとんどの学術論文は実際にはシリーズのnです。たとえば、あなたが参照する論文は、1年前に発行された同じグループの論文に基づいており、次の論文がカバーする可能性のある根拠について議論しています。

ソースコードを公開すると、別のグループの別の研究者が論文を作成できる可能性がありますn+1元の著者が行う前、または少なくとも著者がこの研究の流れの一部としてカバーすることを期待していた根拠のかなりの部分をカバーする論文を作成する前。それが起こった場合、大学院生は、卒業するのに十分な研究成果を生み出すために、彼または彼女自身が大学院でさらに6〜12か月を費やしていることに簡単に気付くでしょう。教員は、在職期間の見直しの時期になると、発表される論文が1つ少なくなる可能性があります。これらの両方は明らかに研究者のキャリアへの大きな打撃です。学術的アプリケーションは多くの場合、研究グループ内の複数の人々の研究活動の一部であり(直接または特定のコンポーネントを共有しているため)、研究グループ内では、誰かを傷つける可能性のあるコードをリリースしないよう圧力がかかっているあなたは毎日働いています。

生データの収集には時間がかかり、高度に分散されている分野では、同様の種類のディスカッションがよくあります。たとえば、天文学では、研究グループが1つの論文を発表するのに十分な情報を得るまでに何年もかけてデータを収集する場合があります。しかし、そのデータを使用して一連の論文を作成します。実際にデータを分析するメリットを享受するためにデータを収集するために投資した時間に他のグループが自由に乗ることが非常に簡単になるため、研究グループは絶対に必要なデータセットを共有することに非常に消極的です。

結局、天文データが最終的にリリースされるのと同じように、このコードの多くはリリースされます。多くの場合、著者が一連の論文の最後に到達したとき、または同様のトピックに取り組んでいるほとんどの研究グループが同様のエンジンを持っているときに、コードをリリースしても新しい研究者に競争上の優位性がなくなります。

データとコードがより迅速にリリースされれば、科学にとって理想的です。しかし、それは科学研究者に害を及ぼすことが多く、この場合インセンティブが重要になります。

1
Justin Cave

これを行った人として(学生側)過去に数回:多くの場合、論文を執筆している教授は、ソースコード自体を見ることさえありません。彼らは大学院生にコードを書いてもらい、完成したら最終的な実行可能ファイル(または単に結果の確認)だけを要求します。

また、多くの場合、記述されたコードはあまり読みやすいものではありません。学生が一緒にハッキングしてそれを実行したため、そして(彼らは非常に明るいですが)実世界での経験のない大学院生が傾向があるためです世界最高のコーダーにならないために...

多くの場合、実装(ソフトウェアは関係ありません)ですが、実装は結果に影響を及ぼします。

実装が重要なときはいつでも...ソースコードは間違いなく利用可能にすべきです!結果が実装または計算方法に依存するほど、ソースコードをポストすることが重要になります。

0

ケモメトリックス(データ分析を行う化学者)として扱うコードのタイプにいくつかのポイントを追加したいと思います。

  • データ分析コードを書く人(私と同じように)は、そのコードをseする人に比べて比較的少数です。 「自社で作成したカスタムコード」は、作成者がそれを作成したことを意味するものではありません。同僚のコードである可能性があるため、作成者cannotを公開します。

  • コードの別の発行が計画される場合があり、コードの作成者(または監督者)は、コードが(部分的に)以前に公開されている場合、新規性が失われることを懸念する場合があります。
    コードの発行が意図されているジャーナルが、以前に公に利用可能であったコードに反対していなくても、監督者(またはIPオフィスの誰か)の純粋な懸念は、コードの公開を停止するのに十分です。

  • データ分析コードは、多くの場合、データに合わせて調整されています。データなしではあまり意味がありません。 (とにかくデータを公開すべきだと主張するかもしれませんが、それは別の質問であり、ここではトピック外です。)
    とにかく、私たちの研究所では、生データとデータ分析コードを紙と一緒にアーカイブしています。 publiclyを利用できるようにするためのデフォルトのポリシーは(まだ?)ではありませんが、リクエストに応じて利用できるようになるでしょう。

  • (化学の再現性に関する従来の見解は、実際のソースコードを出荷するのではなく、アルゴリズムの説明(おそらく擬似コード)に対応しています)

  • 私の同僚の多くは、データ分析のステップをログに記録しないインタラクティブツールをデータ分析に使用しています。だから、ソースコードはありません公開できます。データ分析は、ラボのアプローチよりもプログラミングに対応していません。物事を行い、その内容をラボブックに書き留めて観察します。