Haruskah kode sumber yang dirilis di bawah GPL dapat dibaca oleh manusia?

22

Dalam menanggapi pertanyaan lain , poster menyarankan bahwa di bawah GPL:

... Anda perlu memberikan [kode] yang dapat dibaca manusia, bukan versi yang dilucuti spasi putih ...

Menurut saya, keterbacaan menurut saya bersifat subyektif dan tidak mungkin secara eksplisit diminta oleh GPL. Apakah itu?

Armand
sumber

Jawaban:

37

GPL mensyaratkan bahwa itu adalah versi yang disukai untuk mengedit. Jika Anda biasanya menulis dalam kode yang dikaburkan, dan membuat perubahan langsung di dalamnya, maka itulah sumber untuk GPL. Jika Anda bekerja pada versi yang dapat dibaca, dan kemudian menjalankannya melalui segala jenis obfuscator, versi yang dapat dibaca adalah apa yang GPL anggap sebagai sumbernya.

"Keterbacaan" bersifat subyektif dan tidak didefinisikan. Adalah legal untuk mengeluarkan kode yang benar-benar buruk, sulit dimengerti, di bawah GPL. Tidak sah untuk mengambil versi yang Anda buat perubahan, menghapus spasi putih atau membuatnya kurang mudah dibaca, dan menyebutnya sumber di bawah GPL.

David Thornley
sumber
1
sangat menarik, terima kasih. Apakah ada bagian tertentu dari lisensi yang menyatakan ini?
Armand
12
GPLv2, Syarat dan Ketentuan, dari klausa 3: "Kode sumber untuk suatu karya berarti bentuk karya yang disukai untuk membuat modifikasi.".
David Thornley
4
Pembatasan ini hanya berlaku untuk pemegang lisensi. Untuk kode Anda sendiri (tidak ada kode GPL eksternal yang ditarik), Anda dapat mengaburkan sebanyak yang Anda inginkan dan masih menempelkan stiker GPL di atasnya (untuk memberikan hak kepada orang lain). nVidia melakukan ini dengan kode driver kembali pada hari (1998 atau lebih)
Patrick Georgi
2
Yang mengatakan, itu tidak ada artinya untuk "menampar stiker GPL" pada pekerjaan di mana Anda tidak memberikan kode sumber yang dapat digunakan, seperti pada contoh nVidia. Anda mungkin juga telah menggunakan lisensi kepemilikan. Jelas nVidia ingin dilihat berbagi kode mereka tanpa benar-benar berbagi kode mereka.
thomasrutter
1
Hanya karena penasaran. Bagaimana jika Anda bekerja di editor berpemilik yang menyimpan sumber dalam bentuk terenkripsi? Secara teoritis Anda memiliki kode dalam cara Anda bekerja dengannya, namun, tidak ada orang lain yang dapat bekerja dengannya karena ini adalah alat berpemilik yang tidak dapat diakses oleh siapa pun.
Aidiakapi
6

Mengambil GPL v3, di bagian 1 Anda memiliki:

"Sumber Terkait" untuk sebuah karya dalam bentuk kode objek berarti semua kode sumber yang diperlukan untuk menghasilkan, menginstal, dan (untuk pekerjaan yang dapat dieksekusi) menjalankan kode objek dan memodifikasi pekerjaan, termasuk skrip untuk mengontrol aktivitas tersebut.

Jika komentar dan ruang putih dilucuti, serta nama fungsi dan variabel berubah, Anda tidak akan dapat memodifikasi pekerjaan secara wajar.

Tambahan:

Sumber yang sesuai untuk pekerjaan dalam bentuk kode sumber adalah pekerjaan yang sama.

Pekerjaan yang sama, bukan pekerjaan yang diubah.

Jadi, untuk memperjelas poin saya sebelumnya, kode sumber harus tidak diubah, saya berasumsi tulisan manusia == dapat dibaca manusia. Tapi ya, Anda bisa menulis langsung di tempat yang dianggap tidak dapat dibaca manusia.

David
sumber
4

Pertanyaannya tidak termasuk beberapa informasi penting. Jika Anda adalah penulis tunggal, Anda dapat merilis kode Anda sendiri di bawah lisensi apa pun yang Anda inginkan (termasuk GPL) tanpa harus mengikuti semua aturannya. Dengan demikian Anda dapat mengirimkan kode dalam bentuk yang tidak disukai untuk mengeditnya, dan tidak melanggar undang-undang hak cipta apa pun. Apakah orang lain dapat memperpanjang kode Anda dengan semangat berada di bawah lisensi Perangkat Lunak Bebas masih dipertanyakan, sehingga hanya sedikit yang mungkin akan mencoba.

Namun sebagian besar waktu Anda tidak akan menjadi satu-satunya penulis karya. Anda akan memanfaatkan kode yang ada, menciptakan karya turunan. Karya semacam itu harus mengikuti aturan gabungan dari garis keturunannya atau Anda tidak akan memiliki izin untuk mendistribusikannya tanpa melanggar hak cipta.

Untuk memperjelas ini, berikut beberapa contoh (IANAL):

  • Jika Anda menggunakan pustaka GPL dalam kode Anda, Anda tidak akan diizinkan untuk mengirimkan kode sumber Anda sendiri hanya dalam bentuk dikaburkan kecuali (seperti yang ditulis David Thornley) yang sebenarnya adalah bentuk di mana Anda menulis dan mengeditnya.
  • Jika Anda menggunakan pustaka LGPL dalam kode Anda, Anda akan diizinkan untuk mengirimkan kode sumber Anda sendiri hanya dalam bentuk yang dikaburkan. Ini karena LGPL hanya mengharuskan Anda untuk dapat menggunakan karya yang menggunakan perpustakaan dengan versi perpustakaan yang lebih baru.
  • Jika Anda memperluas pustaka LGPL, ini akan menjadi seperti kasus GPL, dan Anda harus mengirimkan kode yang tidak dikaburkan (sekali lagi kecuali jika Anda benar-benar mengeditnya).
Michael Urman
sumber
1
Anda harus mengikuti semua aturan lisensi, terlepas dari siapa yang memiliki hak cipta. Jika Anda memutuskan ingin menggunakan perpustakaan JS Anda di situs web Anda sendiri, dan juga merilisnya di bawah GPL, Anda mungkin ingin melakukannya secara terpisah. Pertanyaan ini bukan tentang LGPL, meskipun jika pembatasan serupa berlaku untuk LGPL karena GPL menganggap keterbacaan kode maka akan sangat membantu untuk disebutkan di sini.
Armand
@Alison: Ketentuan lisensi berlaku untuk yang menggunakan (dan mendistribusikan kembali, dalam hal ini) karya, bukan kepada yang awalnya membuatnya dan melisensikan kepada Anda.
Paŭlo Ebermann
1
@Alison Disagreed. Jika Anda adalah satu-satunya pemilik karya tersebut, Anda dapat melepaskannya sesuka hati. Oleh karena itu Anda dapat mendistribusikannya di bawah ketentuan (lisensi ajaib yang tidak ditentukan di sini), dan memungkinkan orang lain untuk mendistribusikannya kembali di bawah persyaratan GPL - GPL hanya menambahkan hak untuk memungkinkan orang lain mendistribusikan kembali karya-karya yang berasal dari Anda. Tentu saja ini bukan skenario yang mungkin, seolah-olah Anda tidak percaya pada GPL dan merupakan pemilik tunggal, Anda tidak akan menggunakannya.
Michael Urman
Anda tidak harus mengirimkan kode sumber Anda sendiri yang menggunakan pustaka LGPL, asalkan bahasa tersebut memungkinkan binari. Anda harus mengirimkan apa yang memungkinkan pengguna untuk mengubah bagian LGPLed dan membangun kembali aplikasi (meskipun GPLv2 memungkinkan Anda untuk mencegah pengguna menginstal versi yang diubah). Jika Anda menggunakan sumber pengiriman, baik karena kebutuhan atau kemudahan, itu dapat dikaburkan.
David Thornley
Poin bagus. Saya akan mengedit posting saya untuk tidak lagi mengatakan LGPL tidak menempatkan persyaratan pada pekerjaan yang menggunakannya.
Michael Urman