Menggunakan C ++ / Java untuk mengembangkan perangkat lunak untuk tujuan komersial


9

Saya berencana mengembangkan program yang ingin saya jual nanti. Saya mencoba memutuskan bahasa yang akan dikodekan, dan telah menyempit ke C ++ atau Java.

Saya telah melalui lisensi GPL v2 dan v3 yang digunakan untuk GCC dan OpenJDK GNU (ya, saya bisa mengerti beberapa hal hukum, tapi jelas, tidak semuanya). Tetapi ada satu titik di mana semua orang tidak jelas (ini seharusnya menjadi salah satu hal pertama yang dijawab, IMO): jika saya mengembangkan sebuah program menggunakan C ++ / Java dan mengkompilasinya menggunakan kompiler GCC atau kompiler OpenJDK, dapatkah saya menjualnya tanpa harus untuk menempatkan program saya di bawah GPL juga?

Sejauh yang saya bisa tahu, saya memiliki hak penuh untuk menetapkan lisensi apa pun untuk program saya, tetapi ada satu hal: ada tertulis dalam lisensi bahwa saya tidak boleh menautkan ke perpustakaan yang berada di bawah GPL. Jika demikian, saya harus merilis program saya di bawah GPL.

Sekarang, saya tidak tahu apa yang di C ++ / Java dianggap sebagai perpustakaan, jadi jika saya menggunakan hal-hal normal di C ++ (iostream, daftar, peta, dll.) Atau kelas / antarmuka Java normal yang tersedia sebagai bagian dari JDK standar 6 distribusi (String, Daftar, Peta, dll.), Apakah ini merupakan 'penautan ke perpustakaan'?


1. Kami tidak melakukan nasihat hukum di sekitar sini. 2. Apa itu 'C ++ / Java'? 3. Lihatlah ke sekeliling dan lihat ribuan dan ribuan produk perangkat lunak komersial yang ditulis dalam Java, banyak dengan komponen JNI.
bmargulies

1
/ Di C ++ / Java hanya digunakan sebagai singkatan untuk "atau", yang merupakan bahasa Inggris yang benar-benar valid.
Robin Green

Ini terdengar seperti pertanyaan untuk opensource.stackexchange.com . (Jika belum dijawab di sana.)
Kevin Krumwiede

Jawaban:


13

jika saya mengembangkan program menggunakan C ++ / Java dan mengkompilasinya menggunakan kompiler GCC atau kompiler OpenJDK, dapatkah saya menjualnya tanpa harus meletakkan program saya di bawah GPL juga?

Iya. GPL secara khusus mengecualikan output dari menjalankan program:

output dari Program hanya tercakup jika isinya merupakan karya berdasarkan Program (terlepas dari telah dibuat dengan menjalankan Program).

yang berarti bahwa jika Anda memasukkan bit GCC atau sesuatu yang lain GPL di program Anda, maka ya itu harus GPL, jika tidak tidak - fakta bahwa kode objeknya diproduksi oleh kompiler GPL tidak relevan dengan apakah harus GPL .

Semua pustaka bahasa standar yang Anda tautkan tidak GPL, atau GPL tetapi memiliki pengecualian khusus untuk memungkinkan perangkat lunak milik Anda untuk ditautkan dengan mereka, jika Anda tidak memodifikasinya . Dalam kasus C ++ yang saya maksud libgcc, glibc dan libstdc ++; dalam kasus Java yang saya maksud adalah semua perpustakaan yang termasuk dalam JRE.

Secara teknis, Anda secara legal dapat menjual perangkat lunak GPL, tetapi hampir tidak ada yang menghasilkan uang dari melakukannya.


LGPL (Lesser GPL) memungkinkan aplikasi untuk menautkannya tanpa mengharuskan aplikasi itu menjadi GPLd sendiri. Perpustakaan GPL di sisi lain menular. Tapi Anda benar, output dari kompiler secara eksplisit dikecualikan dari ketentuan GPL.
Berin Loritsch

dan bagaimana jika saya memodifikasi perpustakaan bahasa standar? Bisakah saya melakukannya? lalu apa yang terjadi dengan lisensi program saya?
piotrek

Maka pengecualian tidak berlaku dan Anda harus mengikuti ketentuan lengkap dari lisensi yang relevan. Juga, ada implikasi merek dagang dalam kasus Java - lebih baik tidak menyebutkan Java atau OpenJDK dalam dokumentasi atau iklan Anda sama sekali jika Anda menggunakannya (tetapi lihat kasus pengadilan Oracle v Google).
Robin Green

8

Baik GCC dan OpenJDK memiliki pengecualian eksplisit:

... Saat Anda menggunakan GCC untuk mengkompilasi suatu program, GCC dapat menggabungkan bagian-bagian dari file header GCC tertentu dan pustaka runtime dengan program yang dikompilasi. Tujuan Pengecualian ini adalah untuk memungkinkan kompilasi program non-GPL (termasuk kepemilikan) untuk menggunakan, dengan cara ini, file header dan pustaka runtime yang dicakup oleh Pengecualian ini. ...

... Ketika GNU Classpath digunakan tanpa dimodifikasi sebagai pustaka kelas inti untuk mesin virtual, kompiler untuk java languge, atau untuk program yang ditulis dalam bahasa pemrograman java, itu tidak mempengaruhi lisensi untuk mendistribusikan program-program tersebut secara langsung ...



0

OpenJDK adalah GPL tetapi dengan pengecualian untuk menautkan ke perpustakaan. http://en.wikipedia.org/wiki/OpenJDK

Menggunakan kelas OpenJDK akan merupakan menghubungkan ke perpustakaan yang saya pikir (rt.jar).

Sebuah perpustakaan dalam konteks itu, dari sudut pandang Jawa, jelas merupakan toples ketergantungan, perang, kelas, dll. Pokoknya, saya yakin Anda dapat secara legal menjual aplikasi Java - ada lebih dari beberapa di luar sana yang menggunakan Oracle / Sun belum mengambil tindakan hukum.


Hal yang sama berlaku untuk libstdc ++ - ini juga memiliki pengecualian.
Robin Green

Baik rt.jar dan libstdc ++ adalah implementasi dari spesifikasi yang bukan GPL. Pada dasarnya, jika saya menautkan aplikasi saya ke versi libstdc ++ yang tidak GPL, itu akan berfungsi secara identik (dengan asumsi spec telah diterapkan dengan benar) di kedua versi. Fakta bahwa platform secara dinamis memuat versi GPL dari perpustakaan tidak diperhitungkan terhadap aplikasi Anda. Anda menulis ke standar platform, dan dilindungi oleh lisensi apa pun yang Anda inginkan.
Berin Loritsch

0

Jangan khawatir, ini adalah pertanyaan pemrograman komputer, atau setidaknya satu yang berkaitan erat dengan programmer.

Dari yang saya tahu, jika Anda membuat perangkat lunak yang terhubung dengan beberapa kode GPL, Anda harus merilis kode sumber Anda jika Anda mendistribusikan program Anda.

Itu tidak berarti bahwa Anda harus merilis kode Anda ke sourceforge yaitu Tetapi jika pihak ketiga meminta Anda untuk kode, Anda harus menyediakannya.


Poin itu tidak relevan karena kegiatan yang dijelaskan dalam pertanyaan tidak, hal-hal lain dianggap sama, melibatkan penautan ke kode GPL.
Robin Green

Pertanyaan di atas: jika saya mengembangkan program menggunakan C ++ / Java dan mengkompilasinya menggunakan kompiler GCC atau kompiler OpenJDK, dapatkah saya menjualnya tanpa harus meletakkan program saya di bawah GPL juga?

Saya pikir saya jelas menyatakan bahwa jika Anda MENGGUNAKAN kode GPL, Anda harus merilis.

Maaf, saya tidak akurat - dalam beberapa kasus memang melibatkan penautan ke kode GPL dalam beberapa hal, tetapi misalnya pengecualian Classpath berlaku, jadi Anda tidak harus melepaskan kode Anda di bawah GPL.
Robin Green

ahh, oke kalau begitu, tidak tahu tentang itu
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.