web-dev-qa-db-ja.com

選択したソフトウェアライセンスを実装するにはどうすればよいですか?

私はいつもちょっと疑問に思っていましたが、ライセンスに関して実際にこれらの質問をするのに時間をかけたことはありませんでした。これらの質問のほとんどはおそらくかなり基本的なものですが、ここで何を扱っているのかわかりません。

私を最も困惑させているのは、OSSのライセンスをどれだけ正確に「実装」するかということです。あなたがコードを公開している投稿で、「ちなみに、これはGPLの下でライセンスされています」と言っているだけですか?それとも、ソフトウェアをどこかに登録するなど、もっと繊細なことをする必要がありますか?また、

  • 特定のライセンスを使用していると言った場合、それで十分ですか?
  • 配布されたコードにライセンスのコピーを追加しますか?
  • ライセンス情報を詳述するすべてのファイルにヘッダーを追加する必要がありますか?これをバージョン管理システム(Subversionなど)で管理しますか?
  • 上記は十分ではありませんか?
  • 最も一般的に使用されるソフトウェアライセンスは何ですか?
  • 放っておくほうがよい落とし穴/ライセンスはありますか?
7
bevacqua

私は弁護士ではありません。これはあなたがどの国にいるかによります。

そうは言っても、特定のライセンスを使用していると言って、ソースコード内でその旨を通知するだけで十分だと理解しています。すべてのファイルにライセンステキストを追加するのは、おそらく慎重すぎるでしょう。

注意:ライセンスがない場合、著作権法(特定のフェアユースの例外を除く)の下で、誰かがあなたのコードをコピーすることはまったく許可されていません。

最終的に決定するのは裁判所次第です。しかし、特定のライセンスの下でそれを提供するという明確な意図を持ってソースコードを公開した場合、裁判所はそのライセンスが完全な作業に適用されることを意図したものであることに同意すると思います。

オープンソースライセンスを選択する場合は、お願いします主要なライセンスの1つに固執してください。これにより、異常なライセンスに関する混乱が回避され、コラボレーションとコード共有の機会が大幅に増加します。特に、OSI lists 「人気があり、広く使用されている、または強力なコミュニティを持つライセンス」の数。私はこれらのいずれかに固執することを強くお勧めします!

  • Apacheライセンス、2.0(Apache-2.0)
  • BSD 3-Clauseの「新規」または「改訂」ライセンス(BSD-3-Clause)
  • BSD 3-Clause「Simplified」または「FreeBSD」ライセンス(BSD-2-Clause)
  • GNU General Public License(GPL)
  • GNUライブラリまたは「より少ない」一般公衆利用許諾契約書(LGPL)
  • MITライセンス(MIT)
  • Mozilla Public License 2.0(MPL-2.0)
  • Common Development and Distribution License(CDDL-1.0)
  • Eclipse Public License(EPL-1.0)

フリーソフトウェア連盟/ GNUプロジェクトには、 推奨されるコピーレフトライセンス を含むいくつかの オープンソースライセンスに関する有用なページ もあります。

3
mikera

とても長いことをお詫びしますが、これはほとんどの人にとって最初を悩ますような質問の1つだと思います。これを包括的にまとめたものはあまりありません。

実際にたくさんの質問があります:私はそれらに一つずつ答えようとしています。

どれだけ正確にOSSのライセンスを「実装」するか

基本的に、ライセンスの使用条件を定義し、それをソースと一緒に配置する最低限の必要性。コードの著作権(本質的には作成者)は、ライセンス(使用および再配布)とは異なるものであることを理解してください。しかし、これを考えると、あなたはまだ他の人に正直であり、コードを誤用してライセンスに違反しないように任せています。 [これについては後で詳しく説明します]。

特定のライセンスを使用していると言うだけで十分ですか?

おそらくありません。

配布されたコードにライセンスのコピーを追加した場合はどうなりますか?

はい。それはまったく問題ありません。

ライセンス情報の詳細を示すヘッダーをすべてのファイルに追加する必要がありますか? (これをsubversionで管理しますか?)

すべての場所にlicense情報を追加する必要はありません。複数のライセンスを持っているか、ライセンスを変更している可能性があります。ただし、特定のライセンス宣言の対象となるすべてのファイルを正確に識別するには、copyright通知を上部または下部のどこにでも配置することが重要です(上部は便宜上のものです)。他の本と同じように、最初のページはCopyright 2012 - Nico.のように印刷されます。他に何も必要ありません。これを参照してください: すべてのソースファイルにライセンス通知を含める必要がありますか?

または、ソフトウェアをどこかに登録するなど、もっとデリケートなことを行う必要がありますか?

ライセンスには登録の概念はありません。コードと一緒にライセンスを提供した場合、紛争がある場合にのみ、

最も一般的に使用されるソフトウェアライセンスは何ですか?

Mikeraの答えはここではうまくいくと思うので、繰り返しません。

ここで、最も興味をそそる(そして暗黙の)質問について:

では、どのように実施しますか?人々がライセンスに違反したり嘘をついたりしないようにするにはどうすればよいですか?結局のところ、すでにコードがそれ自体を制御できないときに、人々にそれを求めるのは多すぎますか?

単純な悪いニュースは、lock-n-keyのようなメカニズムではそれを完全に行うことはできないということです。あなたが裁判にかけるために裁判所に誰かを置くことができると信じている場合でも、各裁判所は管轄権(影響力のある領域)を持ち、あらゆる場所ですべての人々と戦う必要があるかもしれません。これに時間とエネルギーがあるとしても、彼らが実際にあなたのコードを取得して違反したことを証明する必要があります!ソースからコードを入手できる場合、これはほとんど困難です。

動揺しないでください。あなたにできることがあります。それはすべて文脈と目的に依存します。

  1. まず、オープンソースで使用するためにコードを開きたいので、通常、人々がコードを使用することは問題ありません(そして望んでいます)。

  2. あなたが人々にあなたのコードをいじくり回したり研究したりしたいが商業利用にはお金が欲しいと思ったら、あなたはデュアルライセンスを持つことができます。

  3. 一般に、コードが業界でよく知られている場合(派生コードを使用する傾向がある人々)も、通常はあなたに知られているはずです。たとえば、ffmpegが非常に有名であるとすると、誰かが私に提供する新しいコーデックがあると主張する場合は、参照チェックを行って確認しますそれらがちょうどコンパイルして私に与えていない場合。したがって、あなたが業界で有名なプレーヤーであれば、潜在的に人々は違反しないでしょう。これは、コードを配布するためにGitHubまたはSourceForgeを使用することが理にかなっているもう1つのポイントでもあります(それらが役立つツールは別として)。

  4. 市場をよく知っている場合-誰かがこのライブラリを使用していることを実際にチェックできます-オブジェクトトレースを生成できる strings のようなツールを使用します変数、ルーチン名をピックアップして、コードがコピーされていることを知ることができます。これは裏をかくことは可能ですが、場合によってはうまくいくかもしれません。もちろん、人々がコードのすべての行を変更した場合に正義を達成するための理論的な制限がありますロジックを維持します-ここに興味深い読みがあります オープンソースプロジェクトのすべての行を少し異なる方法で書き直し、クローズドソースプロジェクトで使用しますか?

  5. 別の面白い測定(誰かがあなたのコードを使用して違反していることを本当に知っている場合)-ffmpegはHall-of-shame誰がライセンスに違反しているかに関する公開リストとして。

  6. 最後にしかし最も重要です-別のオープンソースがコードを取得し、それをラップして、任意の商用利用を許可するライセンスで自由に利用できるようにするにはどうすればよいですか?多分同じグループが別の用途でこれを自分の製品製品で使用し始めるでしょう。これには、GPLやMPLのようなstrongライセンスが必要です。

  7. 別のそのような問題は、誰かが実際にあなたの名前を使用し、社会に有害になる何かをし、あなたが法廷の間違った側にいることになった場合はどうなりますか?このためには、少なくとも保証なし条項が必要です(また、特許侵害条項がない場合もあります)。

  8. より複雑なニーズがある場合は、デュアルライセンスを実行できます。それほど複雑ではありませんが、この回答では範囲外です。 良い答えがあります このフォーラムのこのテーマについて。

この段階で、かなりの好奇心があれば、これらのライセンスの別の条項を読むだけで、それについてある程度理解できると思います。私は弁護士ではありません。P.SEでのそのような質問のほとんどは、i-am-not-lawyerタグで回答されます。しかし、それらもそれほど難読化されていません。実際にテキストを読んで、それをかなり理解することができます。これを読めば、多くの疑問が解消されるかもしれません。

1
Dipan Mehta

一般的に使用されるライセンス:

通常、COPYINGまたはLICENSEという名前のファイルが必要です。このファイルには、ライセンスの全文が含まれています。プロジェクト内の各ファイルには著作権情報が含まれている必要があり、プロジェクトは特定のライセンスの下でライセンスされていると記載されている必要があります。

ほとんどのライセンスには、プロジェクトの一部である各ファイルの上部に含めるボイラープレートテキストが含まれています。 GNUプロジェクトには、ライセンスを使用してこれを行う方法を説明するページがあります。

0
Rudolf Olah

私が行うことは、一般的には標準のようですが、ライセンスコードを含むプロジェクトのルートディレクトリにCOPYINGというファイルを作成します。また、他のファイルと同じフォルダーにCOPYRIGHTというファイルを作成し、次のようなものを含める必要があります(ほとんどのディストリビューションサイトはそのようなものなので、Markdownで記述されています)。

<name of your project> <version>
-----
<short description of the program>
***
Copyright <major release years, e.g. 2006-2010> <copyright owner>
<the boilerplate text typically at the bottom of most licenses>

このファイルをREADMEと呼び、プログラムと一緒に渡したいその他の情報を追加することもできます。最後に、BSDやMITのような短いライセンスを使用する場合は、COPYINGファイルを追加せず、READMEまたはCOPYRIGHTファイル。

付録:変な男はLGPLです。法律上、LGPLはGPLの権利の拡張であるため、GPLをCOPYINGファイルに含める必要があります。LGPLをCOPYING.LESSERというファイルに含める必要があります。

0
Nathan2055