Menggunakan kode di bawah Lisensi Apache 2.0 dalam program saya menggunakan Lisensi MIT

8

Saya menggunakan kode sumber dari contoh kode yang dilisensikan di bawah Lisensi Apache 2.0 dalam program saya. Sekarang saya ingin menerbitkan program dan kode sumber di GitHub menggunakan Lisensi MIT. Saya telah membaca yang berikut dalam lisensi:

Anda harus menyebabkan file yang dimodifikasi untuk membawa pemberitahuan menonjol yang menyatakan bahwa Anda mengubah file;

Tetapi saya tidak mengubah file apa pun yang baru saya salin bagian kode yang relevan ke file sumber saya.

Sekarang inilah pertanyaan saya:

Saya tahu saya harus menambahkan salinan Lisensi Apache 2.0 ke dalam proyek saya, tetapi apakah saya harus memasukkan apa pun ke file sumber saya untuk memublikasikan kode program / sumber saya dengan benar?

Karena ini adalah program baris perintah apakah saya harus menambahkan saklar -lisensi dan menampilkan lisensi atau apakah saya harus menambahkan output "USAGE"?

Apakah saya harus meletakkan Lisensi MIT ke dalam setiap file sumber saya atau apakah cukup untuk memiliki salinannya dalam proyek?

Terima kasih sebelumnya!

MemphiZ
sumber
Bisakah Anda menempatkan bagian-bagian yang Anda ambil dari proyek berlisensi-Apache dalam file sendiri? Kemudian Anda dapat memasukkan persyaratan lisensi Apache di sana. Anda tidak perlu menambahkan pemberitahuan ke bagian "Penggunaan" dari program Anda.
Brandin
Sayangnya saya tidak bisa karena pada dasarnya hal klien / server dan itu akan merusak kode jika saya harus.
MemphiZ
Saya kira Anda bisa memberi penjelasan di bagian atas file mana di bawah lisensi. Tapi itu mungkin akan membingungkan. Secara pribadi saya akan terlihat lebih sulit untuk memisahkan kode lisensi lain ke file lain. Ini mungkin muncul ke pertanyaan teknis tentang bagaimana menerapkannya dalam bahasa pemrograman yang Anda gunakan. Sebagai contoh jika Python Anda dapat dengan mudah memasukkannya ke dalam paket sendiri dan kemudian memanggilnya dari kode Anda sendiri.
Brandin
"Tetapi saya tidak mengubah file apa pun yang baru saya salin bagian kode yang relevan ke file sumber saya." Lalu Anda mengubahnya; Anda menghapus bagian yang tidak Anda butuhkan. Oleh karena itu Anda harus memperjelas bahwa potongan kode tersebut adalah versi modifikasi dari kode asli. Anda juga harus memperjelas bahwa perpustakaan Anda dilindungi oleh lisensi MIT dan Apache.
David Arno
Apakah ada alasan Anda tidak ingin menggunakan Lisensi Apache untuk pekerjaan Anda? Apache dan MIT secara fungsional hampir sama. (Lisensi apache memiliki beberapa hibah hak paten yang tidak ada lisensi MIT). Memiliki satu lisensi akan membuat segalanya lebih mudah bagi Anda dan pengguna potensial.
Craig

Jawaban:

3

Karena bagian dari sumber dilisensikan di bawah satu lisensi (Apache 2.0) dan bagian di bawah lisensi yang berbeda (MIT), penting bahwa setiap file membawa pemberitahuan yang menyatakan lisensi mana yang berlaku untuk konten file itu.

Sangat disarankan untuk hanya memiliki satu lisensi untuk setiap file sumber, jadi Anda harus memiliki kode yang Anda salin dari perpustakaan pihak ketiga dalam file sumber terpisah (atau beberapa file sumber terpisah). File-file ini harus memiliki pemberitahuan hak cipta yang mengacu pada lisensi Apache dan menyatakan bahwa Anda menyalin kode dari perpustakaan pihak ketiga.

Untuk kode Anda sendiri yang ingin Anda terbitkan di bawah lisensi MIT, disarankan untuk menempatkan lisensi MIT secara keseluruhan dalam komentar di bagian atas file Anda.
Lisensi MIT tidak terlalu lama, dan itu akan menghindari semua kebingungan tentang apa lisensi kode berada di bawah bahkan jika file terpisah dari sisa proyek.


Jika tidak mungkin memisahkan kode di bawah lisensi yang berbeda ke dalam file yang terpisah, maka Anda dapat melanjutkan seperti ini (dengan asumsi sebagian kecil file berada di bawah lisensi Apache):

  • Letakkan file sumber Anda di bawah lisensi MIT
  • Tepat di bawah pernyataan hak cipta & lisensi, tambahkan komentar bahwa sebagian file berada di bawah lisensi yang berbeda.
  • Segera di atas kode yang berada di bawah lisensi Apache, tambahkan blok komentar yang memberikan detail hak cipta dan lisensi untuk kode yang mengikutinya.
    Untuk menghindari membingungkan orang lain, ini harus dilakukan pada granularity fungsi.
Bart van Ingen Schenau
sumber
Bagaimana jika saya tidak dapat memisahkan kode di bawah Lisensi Apache dari yang lain karena akan benar-benar memecahkan kode atau membuatnya tidak dapat dibaca?
MemphiZ
1
@ DemiZ Bahasa pemrograman apa itu? Mungkin Anda harus memposting pertanyaan di SO. "Saya punya kode ini di sini - bagaimana saya bisa meletakkannya di file sendiri"
Brandin
@MemphiZ: Menambahkan apa yang dapat Anda lakukan jika Anda tidak dapat memisahkan fungsi ke file yang berbeda.
Bart van Ingen Schenau