MIT vs. BSD vs. Lisensi Ganda

87

Pemahaman saya adalah:

  • Proyek yang berlisensi MIT dapat digunakan / didistribusikan kembali dalam proyek yang berlisensi BSD .
  • Proyek berlisensi BSD dapat digunakan / didistribusikan kembali dalam proyek berlisensi MIT.
  • Lisensi MIT dan BSD 2-klausa pada dasarnya identik .
  • BSD 3-klausa = BSD 2-klausa + klausa "no endorsement"
  • Menerbitkan lisensi ganda memungkinkan pengguna untuk memilih dari lisensi itu — tidak terikat keduanya.

Jika semua hal di atas benar, lalu apa gunanya menggunakan lisensi MIT / BSD ganda ? Bahkan jika BSD mengacu pada versi 3-klausa, maka tidak bisakah pengguna secara hukum memilih untuk hanya mematuhi lisensi MIT?

Tampaknya jika Anda benar-benar menginginkan klausul "tidak ada dukungan" untuk diterapkan, maka Anda harus melisensikannya hanya sebagai BSD (bukan ganda). Jika Anda tidak peduli dengan klausul "no endorsement", maka MIT saja sudah cukup dan MIT / BSD berlebihan.

Demikian pula, karena lisensi MIT dan BSD keduanya " kompatibel dengan GPL " dan dapat didistribusikan kembali dalam proyek yang berlisensi GPL , maka lisensi ganda MIT / GPL juga tampak berlebihan.

ryanve
sumber
1
Bisakah Anda memberikan contoh lisensi MIT + BSD? Biasanya berlebihan untuk lisensi ganda di bawah dua lisensi yang sama permisif, tetapi saya telah melihat lisensi ganda disalahgunakan sebagai cara untuk secara eksplisit menyatakan bahwa kode dapat didistribusikan kembali di bawah masing-masing lisensi.
yannis
@Yannis Ya, saya bertanya-tanya apakah orang yang memiliki dua lisensi hanya untuk lebih eksplisit bagi orang yang tidak tahu. Tapi saya pikir itu hanya membuatnya lebih membingungkan bagi mereka.
ryanve
Menarik dibaca: tomhull.com/ocston/docs/mozgpl.html
Dipan Mehta
1
Dalam pengalaman saya, orang terutama menggunakan lisensi ganda untuk lisensi yang tidak kompatibel. mis. MPL + (L) GPL atau lisensi berbayar tanpa copyleft bersama dengan (A) GPL.
CodesInChaos

Jawaban:

60

Pemahaman saya adalah:

  1. Proyek berlisensi MIT dapat digunakan / didistribusikan kembali dalam proyek berlisensi BSD.
    BENAR (tetapi kecuali ada modifikasi, pengguna dapat memperolehnya dari sumber asli juga.

  2. Proyek berlisensi BSD dapat digunakan / didistribusikan kembali dalam proyek berlisensi MIT. Lisensi MIT
    SALAH memungkinkan untuk distribusi tanpa kredit kontribusi; BSD tidak.

  3. Lisensi MIT dan BSD 2-klausa pada dasarnya identik.
    SALAH Lihat di atas.

  4. BSD 3-klausa = BSD 2-klausa + "tidak ada dukungan" klausa
    BENAR

  5. Menerbitkan lisensi ganda memungkinkan pengguna untuk memilih dari lisensi itu — tidak terikat keduanya.
    BENAR (Saya pikir begitu!)

Demikian pula, karena lisensi MIT dan BSD keduanya "kompatibel dengan GPL" dan dapat didistribusikan kembali dalam proyek berlisensi GPL, maka lisensi ganda MIT / GPL juga tampaknya berlebihan.

TIDAK . Inilah perbedaan utama. Lisensi MIT dan Lisensi Apache hanya mengharuskan Anda memberikan kredit kepada pemegang hak cipta asli. Jika Anda memilih, Anda dapat mendistribusikan kembali sumber; tetapi jika Anda memilih, Anda dapat menyimpan produk turunan baru Anda tanpa membuka kode. Oleh karena itu, dimungkinkan untuk menggunakan kode yang dikembangkan di bawah MIT dan Apache - di bawah lisensi komersial.

Jika Anda pernah menggunakan kode dengan lisensi berbasis GPL dan kebetulan memodifikasinya, Anda juga harus mendistribusikan kode yang dimodifikasi di bawah GPL. Dengan kata lain, sekali basis kode GPL digunakan dalam suatu proyek, dan jika Anda ingin mempublikasikannya sebagai produk, itu harus dipublikasikan dengan kode sumber dan harus diterbitkan di bawah GPL. Itu tidak pernah bisa menjadi lisensi komersial atau sumber tertutup, dan itu tidak dapat berupa lisensi lain yang kurang ketat dari GPL.

Dimungkinkan misalnya untuk mengambil kode lisensi MIT, Apache atau BSD, dimodifikasi dan didistribusikan di bawah GPL. Setelah basis kode didistribusikan sebagai GPL, versi turunannya yang lebih lanjut tidak dapat didistribusikan di bawah lisensi MIT, Apache atau BSD tetapi harus hanya GPL.

Sunting:
Contoh kasus lisensi ganda: Misalkan Nice Office dirilis dengan lisensi ganda - MIT dan GPL. Ia memiliki dua kemungkinan. Beberapa orang dapat membuat NicePro Office, yang dapat dijual dan dijual. Sedangkan beberapa komunitas open source lainnya membuat garpu NiceOpen Office. Dalam hal ini, ini dapat diberlakukan setelah distribusi GPL (dari Nice Office asli dan juga versi NiceOpen Office) maka jika Anda mulai dengan NiceOpen Office, Anda harus mematuhi GPL saja dan bukan lisensi MIT.

Intinya adalah dalam kasus lisensi ganda orang pertama yang memperoleh lisensi memiliki pilihan. Ia dapat memilih salah satu cara - namun, orang kedua harus mematuhi pilihan yang dibuat orang pertama. Ia tidak dapat mengesampingkan hak asli salah satu generasi dan dengan cara apa pun tidak dapat mengurangi kewajiban lisensi yang berlaku.

EDIT 2 Menambahkan bacaan yang menarik - Lisensi GPL dan MPL memiliki konflik serius. Baca ini. http://www.tomhull.com/ocston/docs/mozgpl.html

Dipan Mehta
sumber
4
@Dipan Jika suatu proyek memiliki dua lisensi di bawah MIT / GPL, maka proyek tersebut dapat digunakan dalam proyek berpemilik b / c pengguna dapat memilih untuk mengikuti hanya MIT. Jika sebuah proyek hanya memegang lisensi MIT, maka ia dapat didistribusikan kembali di bawah lisensi lain termasuk GPL. Itulah yang saya maksudkan dengan mubazir.
ryanve
11
@DipanMehta Apa yang Anda maksud dengan "kredit kontribusi" di # 2? Sepertinya Anda merujuk pada lisensi 4-klausa BSD, yang tidak diverifikasi oleh FSF seperti klausa 3-klausa dan 2-klausa. Saya berbicara tentang klausa 3 dan klausa 2, dalam hal ini saya cukup yakin bahwa kelima pernyataan itu benar .
ryanve
4
Anda dapat menggunakan kode berlisensi BSD bersama dengan kode berlisensi MIT; Anda hanya perlu menyebutkan dalam materi proyek bahwa "BazApp menggunakan libfoobar, yang didistribusikan di bawah lisensi BSD" atau sesuatu seperti itu. Lisensi BSD dan MIT diterapkan pada tingkat per file, bukan per proyek.
mipadi
10
@Dipan_Mehta Seperti yang sudah dikatakan ryanve kepada Anda, Anda sedang berbicara tentang lisensi BSD 4-klausa asli, sementara OP sedang berbicara tentang lisensi BSD 3-dan 2-klausul yang direvisi. Lisensi BSD 2 klausa sebenarnya setara dengan lisensi MIT. Bahkan halaman OSI menyatakan demikian.
17
Poin # 2 (kode BSD tidak dapat dimasukkan dalam kode MIT) berjalan bertentangan dengan setiap informasi yang pernah saya baca tentang BSD 3-klausa dan 2-klausa. Poin # 2 akan benar tentang BSD 4-klausul (sekarang-kuno dan terlupakan), tetapi OP telah menjelaskan pertanyaan ini bukan tentang BSD 4-klausa. Tampaknya sangat berbahaya memiliki informasi yang sangat menyesatkan dalam jawaban yang sangat baik dan dapat dipercaya.
apsillers
4

Kelima poin Anda semuanya benar .

Jawaban lainnya tampaknya dengan asumsi Anda termasuk lisensi BSD 4 klausul yang lebih lama dan jarang digunakan .

Jika Anda menafsirkan "lisensi BSD" sebagai merujuk pada varian 3-klausa atau 2-klausa yang lebih umum digunakan dari lisensi BSD, kelima klaim dalam pertanyaan itu benar.

Jika semua hal di atas benar, lalu apa gunanya menggunakan lisensi MIT / BSD ganda?

Secara teknis seharusnya tidak perlu. Entah dapat digunakan dalam situasi yang sama.

Bahkan jika BSD mengacu pada versi 3-klausa, maka tidak bisakah pengguna secara hukum memilih untuk hanya mematuhi lisensi MIT?

Kedengarannya benar.

Tampaknya jika Anda benar-benar menginginkan klausul "tidak ada dukungan" untuk diterapkan, maka Anda harus melisensikannya hanya sebagai BSD (bukan ganda). Jika Anda tidak peduli dengan klausul "no endorsement", maka MIT saja sudah cukup dan MIT / BSD berlebihan.

Tepat sekali. Jika Anda peduli dengan klausa khusus itu, tidak masuk akal juga untuk melisensikan karya yang sama di bawah lisensi tanpa klausul itu.

Demikian pula, karena lisensi MIT dan BSD keduanya "kompatibel dengan GPL" dan dapat didistribusikan kembali dalam proyek berlisensi GPL, maka lisensi ganda MIT / GPL juga tampaknya berlebihan.

Iya.

Meskipun, kadang-kadang produk perangkat lunak akan mengklaim sebagai dua lisensi sebagai MIT dan GPL (atau lisensi permisif dan GPL), tetapi pada kenyataannya mereka mengacu pada dua versi perangkat lunak yang berbeda.

Sebagai contoh, beberapa perangkat lunak dapat dikompilasi dan didistribusikan dengan lisensi permisif seperti BSD atau MIT, tetapi jika Anda menghilangkan beberapa perpustakaan dan karenanya beberapa fungsionalitas, itu dapat didistribusikan sebagai GPL. Perpustakaan yang dihilangkan biasanya adalah perpustakaan pihak ketiga yang tidak kompatibel dengan GPL tetapi masih bisa didistribusikan.

thomasrutter
sumber