Apa cara terbaik untuk menyediakan versi sumber terbuka dan tertutup secara aman?

8

Perusahaan saya ingin mengembangkan dan merilis proyek perangkat lunak sumber terbuka bersama dengan versi yang disempurnakan kepemilikan, mirip dengan VirtualBox pra-4.0.

Apa cara terbaik untuk mempertahankan dua basis kode sedemikian sehingga perubahan ke versi open source dapat dengan mudah dimasukkan ke dalam versi komersial dengan risiko minimal mendorong kode eksklusif ke produk open source?

rkjnsn
sumber

Jawaban:

9

Saya akan membuat 2 proyek.

  1. Proyek OSS yang dapat menjalankan standalone.
  2. Kode kepemilikan yang tergantung pada kode proyek OSS.

Anda dapat memiliki ketergantungan menjadi membangun waktu atau menjalankan ketergantungan waktu. Jika Anda ingin setiap paket menjadi standalone, maka Anda dapat meminta paket proprietary menarik file OSS yang dibutuhkan selama pembuatan / pembuatan paket. Jika Anda baik-baik saja dengan ketergantungan run time, Anda hanya bisa mengemas kode hak milik sendiri, dan memilikinya tergantung pada paket OSS pada run time.

Manfaat:

  • Membebaskan Anda dari duplikasi kode.
  • Dapatkan perbaikan bug di keduanya untuk biaya mendapatkannya dalam satu.
  • Hapus batas antara OSS dan Proprietary.
dietbuddha
sumber
1
+2: Jika memungkinkan, buatlah plugins fungsi hak milik. Pengalaman orang-orang dengan versi OSS akan membangkitkan selera mereka dan mereka dapat langsung membeli / menginstal fungsi-fungsi baru saat menjalankan aplikasi. Anda bahkan dapat mengaturnya sehingga setiap plugin berpemilik memiliki masa percobaan X hari. Ini tidak hanya memecahkan masalah manajemen basis kode Anda, itu membuat pemasaran mudah .
Peter Rowell
1

Kontrol Sumber & Percabangan

Root akan menjadi kode yang umum untuk kedua distribusi. Anda juga akan (mungkin) membuat dua cabang dari root Anda:

Open Source

Closed Source

Open Sourcemungkin akan mencerminkan akar Anda dalam skenario ini. Secara teratur, Anda akan bergabung Open Sourcedan Closed Sourcedengan tangan ( Closed Sourcekemungkinan tidak akan mendapatkan banyak pembaruan).

Dengan cara ini, Anda dapat menyimpan perangkat tambahan di Closed Sourcecabang Anda , dan menarik perubahan baru dari versi Open Source.

Mendambakan
sumber
Apakah ada cara untuk melakukan ini menggunakan repositori terpisah? Kami berharap repositori yang berisi kode sumber terbuka dapat dilihat oleh publik.
rkjnsn
0

Tergantung pada lisensi open source yang tidak disebutkan dalam pertanyaan. GPL memberikan masalah terbesar dalam hal ini dan tautan statis atau tautan runtime dicurigai.

Baca FAQ untuk hasil terbaik; jangan percayai jawaban lain. Menggunakan plugin tidak sepenuhnya sah. Banyak produk komersial melanggar GPL dengan cara yang berbeda & pada dasarnya terlihat sebaliknya.

http://www.gnu.org/licenses/gpl-faq.html

Jika sebuah program dirilis di bawah GPL menggunakan plug-in, apa saja persyaratan untuk lisensi plug-in? Itu tergantung pada bagaimana program memanggil plug-in-nya. Jika program menggunakan fork dan exec untuk memanggil plug-in, maka plug-in adalah program yang terpisah, sehingga lisensi untuk program utama tidak membuat persyaratan untuknya.

Jika program secara dinamis menautkan plug-in, dan mereka membuat panggilan fungsi satu sama lain dan berbagi struktur data, kami percaya mereka membentuk program tunggal, yang harus diperlakukan sebagai perpanjangan dari program utama dan plug-in. Ini berarti plug-in harus dirilis di bawah GPL atau lisensi perangkat lunak bebas yang kompatibel dengan GPL, dan bahwa persyaratan GPL harus diikuti ketika plug-in tersebut didistribusikan.

Jika program secara dinamis menautkan plug-in, tetapi komunikasi di antara mereka terbatas untuk menjalankan fungsi 'utama' plug-in dengan beberapa opsi dan menunggu untuk kembali, itu adalah kasus batas.

Jonathan Cline IEEE
sumber
Jika Anda memegang hak cipta untuk perangkat lunak GPL, maka Anda dapat mendistribusikan sendiri plugin sumber tertutup - pemegang hak cipta asli adalah orang yang menetapkan aturan lisensi dan tentu saja tidak terikat oleh lisensi. Di sisi lain, itu berarti bahwa 1) Anda tidak dapat menerima kontribusi GPL tanpa memerlukan penugasan hak cipta kepada Anda, dan 2) bahwa orang lain tidak dapat mendistribusikan plugin dengan perangkat lunak GPL.
Han
Mengapa Anda mempercayai FAQ dari sumber lain? Itu berasal dari sumber yang mungkin paling bias. Dan jika saya menempatkan pekerjaan saya di bawah GPL, tidak masalah jika FSF mengatakan GPL mengatakan Anda bisa melakukan X. Jika hukum dan lisensi mengatakan Anda tidak bisa, saya masih bisa menuntut Anda dan saya masih akan menang.
David Schwartz
"Mengapa kamu mempercayai FAQ dari sumber lain?" Karena FAQ didasarkan pada kasus-kasus dunia nyata sebelumnya, bukan hipotesis kursi dari penulis blog pertukaran stack yang reputasi teknisnya hanya terlihat sebagian besar oleh poin yang diberikan oleh popularitas daripada oleh kebenaran.
Jonathan Cline IEEE
Kami belum mengambil lisensi untuk versi open source. Kami memiliki hak cipta pada semua kode, jadi melepaskannya di bawah dua lisensi terpisah seharusnya tidak menjadi masalah.
rkjnsn
Jika Anda belum mengambil lisensi maka Anda jauh lebih baik menggunakan lisensi berbasis BSD daripada lisensi viral (viral = arti berbasis GPL). Banyak produk yang berhasil menggunakan netbsd yang tertanam dalam produk server dengan kode berpemilik (bagian nilai tambah) yang langsung diintegrasikan ke dalam pohon. Meskipun sebagai penulis lain menunjukkan, Anda dapat merilis menggunakan lisensi ganda .. yang mungkin membingungkan untuk penjualan & mkting sekalipun. Mungkin contoh yang berhasil untuk referensi adalah Apple Darwin ("Apple Public Source License", sekarang lisensi Apache): en.wikipedia.org/wiki/Darwin_(operating_system)#License
Jonathan Cline IEEE