Bisakah saya menggunakan pustaka GPL sementara untuk prototyping dan membuat kode sumber yang akan datang ditutup?

23

Saya sedang mengerjakan prototipe untuk sistem perangkat lunak, yang (setidaknya pada awalnya) akan menjadi sumber tertutup.

Untuk menghemat waktu, saya berpikir untuk menggunakan (yaitu, menghubungkan secara statis) perpustakaan yang dilisensikan di bawah GPLv3 , sehingga saya dapat menguji desain saya dengan cepat. Jika saya mendistribusikan perangkat lunak pada tahap ini, saya harus mendistribusikan kode sumber.

Bagaimana jika saya tidak melakukannya, tetapi memuaskan diri saya bahwa sistem saya berfungsi, dan kemudian mengganti perpustakaan GPL dengan kode saya sendiri sebelum mendistribusikan? Apakah hasilnya akan "terkontaminasi" oleh GPL?

Saya memiliki perasaan bahwa mempertahankan perpustakaan GPL dalam sejarah Git saya atau tidak dapat membuat perbedaan.

Laurent S
sumber
16
Saya suka ungkapan "terkontaminasi oleh GPL".
Arseni Mourzenko
7
itu berjalan dengan baik dengan sifat viral dari lisensi :)
Laurent S
5
Benar saya jika saya salah, tetapi Anda ingin merilis sistem sumber tertutup, sementara secara bersamaan hosting kode pada git? (dan saya kira git ini dapat dibaca oleh orang lain, karena jika tidak mengapa Anda khawatir tentang memiliki lib GPL dalam sejarah?)
user2813274
3
@ user2813274, Anda dapat memiliki repositori Git pribadi.
Arturo Torres Sánchez
5
Ketika Anda menemukan pertanyaan ini menarik, Anda mungkin juga tertarik pada proposal untuk Open Source Stackexchange yang baru .
Philipp

Jawaban:

20

GPL menulis :

Anda dapat menyampaikan sebuah karya berdasarkan Program, atau modifikasi untuk memproduksinya dari Program, dalam bentuk kode sumber di bawah ketentuan bagian 4, asalkan Anda juga memenuhi semua ketentuan ini:

Jadi kondisi ini hanya berlaku jika karya Anda "didasarkan pada" perpustakaan, yang didefinisikan oleh lisensi sebagai berikut:

Untuk "memodifikasi" suatu karya berarti menyalin dari atau mengadaptasi semua atau bagian dari suatu karya dengan cara yang memerlukan izin hak cipta, selain dari pembuatan salinan yang tepat. Karya yang dihasilkan disebut "versi modifikasi" dari karya sebelumnya atau karya "berdasarkan" karya sebelumnya.

Artinya, program Anda "didasarkan pada" perpustakaan jika dan hanya jika itu adalah karya turunan menurut hukum hak cipta. Definisi hukum dari istilah itu agak bervariasi di antara yurisdiksi, dan biasanya tidak secara langsung menangani perangkat lunak. Misalnya, Undang-Undang Hak Cipta AS menulis:

"Karya turunan" adalah karya yang didasarkan pada satu atau lebih karya yang sudah ada sebelumnya, seperti terjemahan, aransemen musik, dramatisasi, fiksi, versi film, rekaman suara, reproduksi seni, abridgment, kondensasi, atau bentuk lain di mana sebuah karya dapat disusun kembali, diubah, atau diadaptasi. Sebuah karya yang terdiri dari revisi editorial, anotasi, elaborasi, atau modifikasi lain yang, secara keseluruhan, merupakan karya asli kepenulisan, adalah "karya turunan".

Apa artinya ini untuk perangkat lunak harus ditafsirkan oleh pengadilan, berdasarkan putusan serupa sebelumnya. Saya tidak cukup akrab dengan hukum kasus yang relevan di yurisdiksi Anda untuk mengatakan dengan pasti bagaimana pengadilan akan memutuskan kasus Anda. Orang bisa berpendapat bahwa "mengganti perpustakaan GPL dengan kode sendiri" adalah tindakan terjemahan, terutama jika kode Anda sangat terinspirasi oleh implementasi GPL. Bahkan menggunakan kembali API perpustakaan GPL bisa membuat Anda jatuh dalam air panas (lihat Oracle vs. Google ).

Jika jawabannya penting bagi Anda, saya sarankan mencari nasihat hukum yang kompeten daripada meminta orang asing di internet.

meriton - mogok
sumber
1
ok, ini menarik, saya tidak menyadari bahwa berbagi API dapat dianggap sebagai karya turunan.
Laurent S
Jawaban ini membuat poin yang sama yang saya coba buat dalam jawaban saya di bawah ini, tetapi dengan cara yang jauh lebih jelas. +1
Michael Shaw
23

Selama Anda tidak merilis perangkat lunak kepada siapa pun saat Anda menautkan ke perpustakaan GPL, Anda aman. Aspek viral dari GPL hanya muncul jika Anda mendistribusikan perangkat lunak Anda.

Akan lebih baik jika Anda dapat menemukan perpustakaan dengan lisensi yang lebih permisif, tentu saja, seperti LGPL atau APL2 atau MIT.

James McLeod
sumber
Jelas, saya akan mencoba mencari perpustakaan lain dengan lisensi permisif. Tapi gagal itu, sepertinya saya bisa memiliki kode GPL lama dalam sejarah git, dan tidak melanggar ketentuan itu, dengan mendistribusikan keadaan kode di masa depan.
Laurent S
5
Jawaban ini tidak mempertimbangkan risiko membuat karya turunan saat menerapkan versi baru perpustakaan.
Michael Shaw
4
@ Patol Perlu diingat bahwa jika sejarah git Anda dirilis, Anda telah merilis versi lama. Tidak harus dalam bentuk biner untuk menghitung.
piojo
2
@ poiojo Di sisi lain, yang paling mewajibkan Anda untuk melisensikan versi lama itu di bawah GPL (dan mendistribusikan sumber untuk itu); jika pada suatu saat Anda menemukan diri Anda dengan hak cipta tunggal untuk kode tersebut, Anda dapat membuat semua versi masa depan menjadi sumber tertutup (meskipun versi lama tetap berada di bawah GPL). Bergantung pada seberapa banyak barang berpemilik dalam versi lama, Anda mungkin atau mungkin tidak memiliki masalah.
cpast
1
Selama Laurent S adalah penulis dan pemilik hak cipta dari semua kode lain di sebelah GPL, ia juga aman. Dia dapat dan diizinkan untuk melepaskan seluruh pekerjaan berdasarkan ketentuan GPL3 untuk berjaga-jaga kalau-kalau ini mungkin hasilnya nanti. Ini mungkin tidak diinginkan, tetapi OP jelas aman dalam hal apa pun (jika hak cipta dimiliki).
hakre
8

Saya tidak berpikir pertanyaan Anda sebenarnya tentang GPL. Ini tentang prototipe dan apakah akan digunakan di masa depan sebagai dasar untuk sistem perangkat lunak yang dapat dikirim.

Jika Anda membuat prototipe sekali pakai dan Anda tidak akan menggunakan kembali salah satu kode di sistem yang dapat dikirim, lanjutkan dan gunakan pustaka GPL.

Tiga Pendekatan yang Dapat Anda Ambil

Namun, jika Anda ingin mengembangkan prototipe (sesuatu yang didorong oleh banyak manajer!) Anda memiliki tiga pendekatan yang dapat Anda ambil:

  1. Pindahkan bagian non-inti ke dalam aplikasi terpisah yang berkomunikasi dengan inti Anda melalui JSON atau REST API atau bahasa / pustaka Komunikasi Antar-Proses lainnya. Dengan demikian, bagian non-inti Anda dapat berupa GPL dan Anda dapat menggunakan pustaka GPL di dalamnya.
  2. Rancang kode Anda sehingga Anda dapat menukar perpustakaan. Ini berarti membuat fasad yang menyembunyikan detail implementasi. Saat Anda siap untuk beralih ke perpustakaan eksklusif atau perpustakaan MIT / BSD.
  3. Jangan menggunakan kode GPL sama sekali.

Saya sarankan Anda pergi dengan pendekatan pertama karena Anda memiliki pekerjaan sumber terbuka yang dapat Anda gunakan di masa depan sebagai bagian dari portofolio profesional Anda.

Pendekatan kedua juga baik karena itulah bagaimana Anda seharusnya merancang sistem, menciptakan fungsi / kelas yang tepat yang Anda butuhkan dan mematikannya sampai Anda memiliki pustaka atau kode khusus yang mengisi fungsionalitas itu.

Rudolf Olah
sumber
2
Memasukkan kode GPL ke proses lain tidak berarti itu bukan lagi bagian dari program, dan karenanya tidak lagi relevan untuk melisensikan sisanya. Ini dapat membantu memisahkan mereka dengan cukup baik.
Deduplicator
1
@Dupuplikator jika mereka aplikasi terpisah itu tidak cukup, mereka harus diperlakukan sebagai basis kode yang terpisah, Anda benar. Agak suka apa yang Twitter lakukan dengan Bootstrap dan apa yang Facebook lakukan dengan semua perpustakaannya. Sumber terbuka non-inti dengan kode hak milik inti.
Rudolf Olah
@ Ibu, saya tidak bisa melakukan 1, karena itu perangkat lunak tertanam. 2 adalah pikiran pertama saya, tetapi melihat apa yang Ptolemy dan meriton katakan, sepertinya saya akan membuat karya turunan, jadi 3 mungkin cara yang harus dilakukan.
Laurent S
1
Re: "Saya tidak berpikir pertanyaan Anda sebenarnya tentang GPL": Saya tidak setuju. Lisensi perangkat lunak tentunya dapat melarang penggunaan semacam ini. Sebuah jawaban yang mengabaikan bagian "GPL" dari pertanyaan, dan menganggapnya sebagai pertanyaan umum tentang lisensi open-source dengan ketentuan yang membatasi dan perilaku viral, harus menggunakan "kami tidak tahu, Anda akan memiliki untuk membaca ketentuan lisensi ".
ruakh
Jika Anda membuat karya turunan, dan membuangnya, Anda masih telah membuat karya turunan dan Anda hanya dapat melakukannya dengan izin / lisensi dari pemegang hak cipta asli. Dengan GPL Anda memiliki lisensi itu (jika Anda tidak pernah mendistribusikan karya turunan sebelum membuangnya). Dengan lisensi lain, Anda mungkin tidak memiliki izin. Menggugat Anda untuk kerusakan mungkin sulit sekalipun.
gnasher729
5

Saya dapat memikirkan dua aspek untuk dipertimbangkan dengan pendekatan Anda. Yang pertama adalah langsung, dengan tidak mendistribusikan proyek Anda atau (atau karena itu GPLv3 , membuatnya tersedia untuk umum) sementara Anda menggunakan kode yang dirilis di bawah GPL, sulit untuk melihat bagaimana Anda akan diminta untuk mendistribusikan kode Anda di bawah lisensi GPL juga di bawah ketentuan redistribusi.

Aspek kedua mungkin lebih penting bagi Anda. Saat Anda membuat implementasi Anda sendiri untuk menggantikan pustaka GPL, Anda harus berhati-hati untuk tidak membuat karya turunan. Meskipun saya yakin Anda memiliki niat baik, untuk tidak secara langsung menyalin kode sumber - Anda lebih cenderung tidak menyalin bagian signifikan dari API perpustakaan.

Jika ini adalah produk komersial, risiko ini perlu dipertimbangkan dan dinilai dengan membaca dengan cermat lisensi GPLv3, dan jika ada keraguan, meminta pendapat hukum profesional.

Michael Shaw
sumber
4

Jika Anda berencana untuk menulis kode Anda sendiri untuk mengganti kode GPL Anda akan memiliki masalah potensial karena Anda tidak menulis kode di lingkungan kamar yang bersih. Anda benar-benar ingin memiliki seseorang yang belum pernah melihat kode GPL menulis pustaka pengganti. Di sisi lain, jika Anda hanya ingin menukar perpustakaan GPL dengan perpustakaan yang sudah diterbitkan yang berada di bawah lisensi lain maka ini bukan masalah, perpustakaan lain mungkin sudah ditulis dalam lingkungan ruangan yang bersih.

Elin
sumber
2

Jika Anda memberikan akses ke revisi menggunakan kode GPL, mereka akan sepenuhnya GPL. Tapi Anda tidak mau, karena itu tidak akan menjadi sumber tertutup ...

Untuk keadaan selanjutnya yang tidak lagi menggunakan kode GPL, bahwa Anda menggunakan kode GPL beberapa waktu sebelumnya sama sekali tidak relevan.

Deduplicator
sumber
2

GPL hanya dipicu pada distribusi ... Anda dapat melakukan apa pun yang Anda inginkan jika Anda tidak merilis versi modifikasi atau karya turunan.

Saya memiliki perasaan bahwa mempertahankan perpustakaan GPL dalam sejarah Git saya atau tidak dapat membuat perbedaan.

Jika Anda bermaksud mempublikasikan sumber Anda ke repositori publik seperti GitHub , maka ya, Anda mungkin memiliki masalah. Hanya menggunakan git tidak relevan jika bersifat pribadi.

Corey Goldberg
sumber