Dapatkah Anda menggunakan lisensi open source yang lebih longgar dari yang dimiliki dependensi Anda?

Aug 17 2020

Tanpa kehilangan keumuman, misalkan Anda memiliki proyek Java open source dengan Gradle sebagai sistem build, dan Anda ingin menambahkan lisensi MIT padanya. Pertimbangkan kasusnya:

Kasus 1. Dari file build.gradle Anda menyatakan ketergantungan pada JUnit5 yang dilisensikan di bawah Eclipse Public License - v 2.0. Anda membuat beberapa pengujian dengannya di folder pengujian, dan semua itu bersama dengan folder src diunggah di GitHub. Bisakah proyek Anda dilisensikan di bawah MIT? Selanjutnya, Anda akan membuat paket dengan proyek Anda, tetapi pengujian JUnit5 tidak akan disertakan di dalamnya.

Kasus 2. Dari file build.gradle Anda menyatakan ketergantungan pada anotasi java dari JetBrains, yang dilisensikan di bawah Lisensi Apache 2.0. Bisakah proyek Anda dilisensikan di bawah MIT? Selain itu, Anda akan membuat paket dengan proyek Anda, dan Anda ingin dependensi melihat anotasi pada kode Anda, tetapi Anda tidak khawatir jika mereka dapat menggunakan anotasi dalam kode mereka.

TL; DR: Saya memahami bahwa jika Anda menyalin dan menempel file proyek, Anda hanya dapat melisensikan ulang dengan lisensi yang kompatibel, tetapi hal yang sama berlaku jika Anda hanya bergantung padanya melalui paket Maven / Gradle dan paket proyek yang Anda produksi tidak akan menahan mereka?

Jawaban

1 BartvanIngenSchenau Aug 18 2020 at 17:18

Saat Anda mendeklarasikan ketergantungan pada paket X, ada dua kemungkinan

  1. Paket X memiliki lisensi copyleft yang kuat, seperti GPL atau AGPL: Lisensi ini memiliki persyaratan bahwa aplikasi biner final dilisensikan di bawah lisensi GPL atau AGPL. Akibatnya, mereka membatasi lisensi yang dapat Anda pilih untuk kode Anda sendiri.

    Setiap build yang Anda distribusikan berisi paket X harus memiliki lisensi di bawah lisensi yang sama dengan paket X. Jika tidak ada build tanpa paket X, maka yang terbaik adalah melisensikan kode sumber juga dengan lisensi yang sama. Jika Anda juga memiliki build tanpa paket X, Anda dapat memilih lisensi yang kompatibel untuk kode sumber Anda.

  2. Paket X memiliki lisensi lain: Lisensi ini tidak memperluas cakupannya di luar file yang secara eksplisit dilisensikan dengan lisensi tersebut dan oleh karena itu, mereka tidak membatasi lisensi apa pun yang dapat Anda pilih untuk kode Anda sendiri.

    Dalam kasus ini, Anda dapat menggunakan lisensi sumber terbuka yang tidak terlalu membatasi, lisensi sumber terbuka yang lebih ketat, atau bahkan lisensi sumber tertutup yang kompatibel.

Kedua kasus yang Anda sebutkan (JUnit5 dan java-annotations) melibatkan lisensi dalam kategori kedua dan karenanya tidak memengaruhi pilihan lisensi yang Anda miliki untuk kode Anda sendiri.