Apakah ada kode JavaScript yang hanya digunakan untuk situs web, open source?

12

Pertanyaan yang ditulis ulang:

Saya tidak menanyakan pertanyaan terkait JavaScript, tetapi semua bahasa "klien" digunakan di web (HTML5, JavaScript, CSS, dan sebagainya). Jika saya meletakkan kode JavaScript (yaitu GPL) di situs web saya, dan situs web ini dapat diakses oleh siapa pun melalui web, apakah saya melanggar GPL dengan cara apa pun?

Apa yang terjadi jika saya ingin menjual kode klien (HTML, CSS, JavaScript) kepada seseorang? Apakah saya memerlukan lisensi lain dalam hal ini?

Bukankah JavaScript (bila digunakan untuk situs web) selalu merupakan sumber terbuka? Saat Anda membuka halaman web, Anda selalu dapat membaca sumbernya.

Apakah saya juga perlu merilis kode sisi server saya jika saya menjual situs web yang berisi kode JavaScript GPLed?

Apa yang terjadi jika situs web ini dapat diakses sebagian (sebagian gratis dan yang lain mengharuskan Anda membayar) tetapi kode GPL (bagian yang sama) digunakan di kedua sisi situs web?

Bagaimana jika kode GPL hanya di bagian situs web yang mengharuskan Anda membayar untuk mengaksesnya?

Jika saya menjual situs web ke pelanggan dengan cara ini:

  1. Saya menjual Anda (satu kali biaya) semua kode yang berhubungan dengan klien (JavaScript, HTML dan CSS)
  2. Saya tidak menjual kode sisi server kepada Anda, Anda menyewanya (Saya tidak ingin Anda menggunakan kembali kode sisi server saya)

Jika saya menggunakan beberapa kode JavaScript GPLed, apakah saya melanggar sesuatu? (Situs web dapat diakses dari siapa pun melalui web.)

Edit 2:

Menambahkan pertanyaan spesifik baru:

Bagaimana jika situs web dapat bekerja tanpa kode sisi server, maksud saya, JavaScript hanya memanggil beberapa halaman PHP yang berisi data dalam format JSON. Orang lain dapat membangun situs web dengan sisi klien, tetapi mereka perlu memberikan data. Dalam hal ini JavaScript memanggil kode "PHP" (tapi bukan sebaliknya) saya pikir. Dalam hal ini, apakah saya melanggar GPL?

Fire-Dragon-DoL
sumber
4
Kemampuan untuk "melihat" kode tidak ada hubungannya dengan lisensi sehingga JavaScript tidak berbeda dari yang lainnya. Anda sebaiknya dilayani dengan berkonsultasi dengan pengacara yang ahli dalam bidang ini.
Sparky
Untuk javascript di situs web, di mana Anda secara khusus berbicara tentang kode GPL? yaitu, apakah kode secara eksplisit dilisensikan di bawah GPL?
Philip
Yah, saya tidak menjual produk apa pun. Saya hanya menanyakan ini karena saya tidak mengerti bagaimana cara kerjanya. Saya secara khusus menanyakan apakah bahasa yang berhubungan dengan klien belum semuanya "GPL" (Anda mengunduh sumbernya setiap kali Anda mengunjungi halaman web)
Fire-Dragon-DoL
Dalam aplikasi non-sepele, kode sumber Anda bukan hanya Javascript, tetapi juga kode sisi server Anda. Apakah Anda ingin melepaskan semua itu untuk umum? Karena itulah yang dikatakan GPL. Tidak dikatakan Anda dapat melepaskan sebagian dan masih mematuhi lisensi.
Robert Harvey

Jawaban:

3

Dalam hal GPL, unit rilis adalah unit lisensi.

Jika situs web Anda, dan javascriptnya adalah satu hal yang berfungsi bersama, maka keseluruhannya memiliki lisensi yang efektif. Jika ada bagian yang merupakan GPL, lisensi keseluruhan yang efektif adalah GPL. (Ini tidak berlaku untuk LGPL, MIT, dll.)

Jika Anda meng-hosting situs web, dan pelanggan Anda membeli akses ke layanan, maka Anda belum mendistribusikan atau menyampaikan kode sisi server, sehingga GPL tidak relevan. (AGPL mengubahnya, dan menyatakan bahwa Perangkat Lunak sebagai layanan harus memiliki sumbernya dirilis.)

Javascript yang merupakan bagian dari aplikasi Anda tidak secara otomatis dilisensikan dengan cara apa pun. Sebenarnya, mengunduh javascript untuk menjalankannya di browser adalah pelanggaran hak cipta. Tentu saja itu konyol. Mungkin ada lisensi tersirat untuk menjalankan kode, tetapi hanya itu.

Jika Anda menggunakan perpustakaan Javascript, maka Anda harus mematuhi lisensi perpustakaan itu. Jika lisensi itu adalah GPL, saya mengerti bahwa itu berarti seluruh aplikasi Anda adalah GPL. Ini mungkin mengapa jQuery memiliki lisensi ganda - pilihan Anda, MIT atau GPL. Tanpa opsi untuk menggunakan lisensi MIT, itu hanya bisa digunakan oleh aplikasi GPL.

Sean McMillan
sumber
4

Pertama: Anda sepenuhnya berhak untuk menggunakan kode Open Source dalam proyek komersial selama Anda mematuhi batasan lisensi (yang terutama bahwa Anda membiarkan semua atribusi di tempat dan bahwa Anda membuat perubahan tersedia di bawah lisensi yang sama).

GPL adalah, saya mengerti, salah satu lisensi yang lebih ketat ketika mencoba memaksakan lisensi itu pada bagian lain dari suatu proyek. Saya tidak berpikir itu pernah diuji di pengadilan tetapi interpretasi yang selalu saya lihat adalah bahwa jika kode GPL dibiarkan dalam modul terpisah itu sendiri yang hanya direferensikan (yaitu bahwa mereka diperlakukan sebagai produk yang sepenuhnya berdiri sendiri yang hanya Anda gunakan), Anda harus baik-baik saja.

Jika Anda tidak yakin tentang ini dan / atau ingin lebih aman ada lisensi lain yang kurang preskriptif.

Kedua: Kemampuan untuk melihat kode dan hak untuk menggunakannya sepenuhnya terpisah . Saya tidak bisa menghapus JavaScript dari situs mana pun dan menggunakannya hanya karena saya bisa melihatnya. Jika saya mendapat akses ke sumber Windows, bahkan secara legal, itu tidak menjadikannya milik saya. Web mengharuskan bahwa banyak kode terlihat, Anda masih dapat melisensikannya seperti yang Anda inginkan.

Ketiga: Dalam hal lisensi, sisa situs ini berada di bawah, sangat tidak mungkin klien Anda akan senang membayar Anda untuk sesuatu kemudian Anda menjadikannya open source . Selain dari dasar "mengapa kami membayar sesuatu yang baru saja Anda bagikan", itu mungkin akan memiliki konsekuensi untuk desain dan merek dan memungkinkan orang lain untuk meminjam elemen identitas perusahaan mereka. Jika Anda menjualnya kepada mereka maka mereka ingin itu menjadi milik mereka . Jika Anda akan menjualnya sedikit, Anda harus memberi tahu mereka bahwa ada OSS di sana karena Anda tidak dapat menjualnya, hanya kode lain yang menggunakannya.

Keempat: Itu model yang sangat aneh menjual sedikit kode dan menyewa yang lain . Mereka tampaknya sangat saling bergantung sehingga yang satu sebagian besar tidak berharga tanpa yang lain. Saya kira secara teknis mereka mungkin mengambil desain ujung depan yang telah Anda lakukan dan menambalnya menjadi sesuatu yang lain tetapi umumnya ketika itu terjadi orang baru saja memulai dari awal.

Mengingat bahwa dua bagian tidak terlalu berguna tanpa satu sama lain, saya akan mengusulkan agar mereka membayar penyesuaian untuk perangkat lunak sebagai produk layanan yang Anda miliki. Itu adalah Anda memiliki semua kode, Anda hanya dapat menyesuaikannya dengan spesifikasi mereka (yaitu merek front end cara mereka). Jadikan itu jauh lebih rapi dan sederhana.

Jon Hopkins
sumber
Mhhh sekarang saya ragu: ketika saya membuat sebuah situs web untuk pelanggan, siapa pelanggannya: orang yang saya jual situs web saya atau pengguna yang akan mengaksesnya? Jika saya menjual semua situs web sebagai produk GPL (dengan sumber begitu) ke pelanggan saya, apakah saya harus merilis kode sumber bahkan untuk semua orang yang menavigasi di situs web itu?
Fire-Dragon-DoL
@ Fire-Dragon-DoL - Pelanggan Anda adalah orang yang membayar tagihan Anda. Jika Anda GPL kode Anda, Anda harus membuatnya tersedia untuk umum untuk semua orang, di mana saja , bukan hanya pelanggan dan / atau pengguna Anda (dan setiap orang memiliki hak untuk menggunakan kembali kode itu).
Jon Hopkins
Pada bagian terakhir (penjelasan Anda benar-benar pintar, terima kasih): Mengingat bahwa dua bagian tidak benar-benar berguna tanpa masing-masing yang lain : dalam hal ini jika saya menggunakan kode GPL apakah saya masih harus melepaskan sumber? Karena saya dapat membaca kalimat Anda sebagai "Saya menjual Anda layanan menyesuaikan perangkat lunak, bukan perangkat lunak itu sendiri yang masih milik saya"
Fire-Dragon-DoL
Untuk menjawab komentar terakhir Anda: Saya tidak yakin, maksud saya GPL mengatakan Anda harus melepaskan kode dengan perangkat lunak Anda, tetapi jika seseorang menavigasi di situs web saya, saya tidak memberinya program, ia menggunakan program saya , Saya pikir itu berbeda. GPL tidak mengatakan Anda harus merilis program Anda.
Fire-Dragon-DoL
1
@ Jon Anda hanya perlu memberikan sumbernya kepada orang-orang yang mendapatkan biner; tidak kepada siapa pun yang bertanya. (Tentu saja, mereka mendapatkan hak untuk memberi kepada siapa pun yang mereka inginkan, tetapi Anda tidak diharuskan melakukannya.)
Sean McMillan
3

Secara umum, jika Anda menggunakan kode GPL di mana saja dalam proyek Anda, dan Anda mendistribusikan ulang proyek Anda (yaitu menjualnya atau memberikannya kepada orang lain), Anda harus merilis kode sumber proyek Anda kepada publik secara keseluruhan untuk memenuhi persyaratan lisensi GPL.

Jika Anda menyediakan situs web yang menghadap publik sendiri sebagai layanan menggunakan sisi server kode GPL, Anda mungkin OK, karena ini tidak dianggap redistribusi.

Kode Javascript di browser tampak seperti area abu-abu bagi saya. Secara teknis, Anda mendistribusikan kembali kode GPL ke browser semua orang, yang akan memicu persyaratan untuk merilis sumber Anda sendiri.

Sunting: Untuk membuktikan maksud saya, sekarang saya akan memasukkan teks dari FAQ perizinan situs web ExtJS. ExtJs adalah kerangka kerja Javascript yang dilisensikan di bawah GPL. Ini adalah interpretasi mereka tentang bagaimana lisensi bekerja sehubungan dengan kerangka kerja mereka (italics mine):

Berasal dari Pekerjaan
Ketika sebuah program perangkat lunak memanggil kode yang dilisensikan di bawah GPLv3, maka program perangkat lunak tersebut menjadi karya turunan dari kode GPL dan karenanya tunduk pada lisensi hak cipta GPLv3. Jika program perangkat lunak kemudian "disampaikan" kepada pengguna, GPLv3 mensyaratkan bahwa kode sumber untuk program perangkat lunak itu juga "disampaikan." “Penyampaian” untuk aplikasi web dipicu ketika pengguna di luar badan hukum yang membuat aplikasi menggunakan aplikasi.

Definisi Program Perangkat Lunak
Untuk program perangkat lunak yang dibangun menggunakan arsitektur web saat ini yang menggunakan antarmuka layanan berbasis jaringan jarak jauh untuk komunikasi internal alih-alih tautan statis atau dinamis tradisional, program perangkat lunak yang relevan adalah totalitas kode aplikasi, termasuk kode yang dijalankan pada server dan kode yang dijalankan pada klien, asalkan kode server merupakan bagian integral dari aplikasi.

Contoh
Katakanlah aplikasi memiliki front-end (yang menghasilkan halaman web yang terhubung dengan Ext JS JavaScript) yang berkomunikasi melalui JSON / HTTP dengan layanan backend. Layanan backend ini berisi logika persetujuan dan validasi untuk aplikasi ini saja. Bahkan jika hanya front-end yang menggunakan kode Ext JS, Anda harus mempertimbangkan bahwa kombinasi ujung depan dan belakang merupakan aplikasi, dan kode sumber untuk belakang dan ujung depan perlu disediakan untuk pengguna akhir aplikasi di bawah GPLv3 jika aplikasi digunakan oleh pengguna akhir yang bukan bagian dari badan hukum yang sama yang memegang lisensi GPLv3 ke kode Ext JS.

Robert Harvey
sumber
2
Ini salah, GPL tidak berfungsi seperti ini. Memasukkan tautan ke file JS GPL di output kode PHP Anda tidak membuat kode PHP Anda open source.
user229044
@meager: Lihat hasil edit saya.
Robert Harvey
Kelihatannya itu sepenuhnya salah. Bagaimana jika back-end saya diarahkan ke situs pihak ketiga yang menggunakan file JS GPL? Apakah saya harus membuka sumber seluruh aplikasi saya? Saya tidak berpikir ini akan bertahan di pengadilan mana pun. Maaf.
Rob
1

Untuk situs web dengan javascript sisi klien, mereka masih memiliki kodenya. Jika Anda hanya mengambil kode itu dan menggunakannya sebagai kode Anda, itu mungkin merupakan pelanggaran IP. Saya kira saya tidak tahu apakah mereka tidak menyertakan lisensi dengannya. Ada juga masalah ketidakberlakuan. Saya kira berbicara dengan pengacara, tetapi mereka mungkin tidak akan memberi tahu Anda sesuatu yang bermanfaat.

Proyek dengan campuran lisensi itu rumit. Kode GPL yang berinteraksi dengan perpustakaan lain, mungkin termasuk ujung belakang sisi server, mengharuskannya juga GPL. Lisensi open source lainnya kurang ketat, seperti LGPL, dan lisensi BSD.

Dan tidak, jika Anda tidak ingin dia menggunakan kembali kode php Anda, maka itu tidak cocok dengan model GPL. Jika Anda merilis kode Anda di bawah GPL, maka Anda BERKEWAJIBAN untuk menyerahkan kode sumber.

Jadi sepertinya Anda membuat situs web untuk seseorang dan Anda tidak ingin membagikan kode Anda kepada siapa pun. Mengapa Anda melihat open source sama sekali? Jika open source, Anda memberikan kode.

Philip
sumber
Saya tidak menjual apa pun saat ini, saya hanya menanyakan ini karena saya pikir sebuah situs web sebagai 2 bagian yang berbeda, situs web klien dan situs web server. Bagian pertama gratis sedangkan bagian kedua tidak. Jika situs web "opensource" haruskah Anda melepaskan kode sumber sisi server? Saya merasa agak sulit, itu akan menciptakan bencana atas keamanan!
Fire-Dragon-DoL
2
Ini tidak benar. Jika bagian dari proyek adalah GPL, seluruh proyek harus dirilis di bawah lisensi yang kompatibel dengan GPL (dengan asumsi itu semua dianggap sebagai program yang sama, dan tidak dapat dipecah-pecah). Dan menjadi GPL tidak mencegah Anda menjualnya, itu hanya berarti bahwa Anda harus menyediakan sumbernya dengan binari, dan tidak dapat membatasi redistribusi lebih lanjut.
KeithB
Bagaimana jika situs web dapat bekerja tanpa kode sisi server, maksud saya, javascript hanya memanggil beberapa halaman php yang berisi data dalam format json. Orang lain dapat membangun situs web dengan sisi klien, tetapi mereka perlu memberikan data. Dalam hal ini, javascript memanggil kode "php" (tetapi tidak sebaliknya) saya pikir. Dalam hal ini, apakah saya melanggar GPL?
Fire-Dragon-DoL
@KeithB ACK! Kamu benar. Saya sedang memikirkan GTK dan SDL, tetapi itu adalah LGPL. Terima kasih.
Philip
Ya LPGL adalah lisensi yang baik, saya ingin memahami GPL karena ... yah, saya pikir ini lebih sulit untuk dipahami
Fire-Dragon-DoL