Jika ada yang bingung tentang lisensi perangkat lunak seperti saya, inilah cara saya melihatnya sekarang. Lisensi perangkat lunak mengontrol apa yang dapat dilakukan orang dengan kode Anda. Lisensi MIT memungkinkan orang melakukan apa saja. Katakanlah Anda membangun pustaka penguraian JSON dengan lisensi MIT. Startup dapat mengambil kode Anda, memodifikasinya, dan menjualnya sebagai bagian dari layanan API berbayar mereka tanpa memberi Anda apa pun kembali. Mereka hanya perlu menyimpan pemberitahuan hak cipta Anda di komentar kode. React menggunakan MIT, jadi Facebook bisa membuatnya berpemilik, tetapi mereka memilih untuk tetap terbuka. Ini adalah lisensi "lakukan apa pun yang Anda inginkan". GPL memaksa berbagi. Bayangkan Anda membuat kerangka kerja web di bawah GPL. Jika seseorang memodifikasi kerangka kerja Anda untuk menambahkan fitur baru, mereka juga harus merilis modifikasi tersebut sebagai GPL. Mereka tidak dapat menjual versi berpemilik. WordPress menggunakan GPL, jadi semua tema dan plugin WordPress juga harus GPL. Jika Anda membangun CMS komersial di atas WordPress, seluruh CMS Anda menjadi GPL. Ini membuat semuanya tetap open source. Apache 2.0 menangani paten dengan lebih baik. Anda menulis perpustakaan pembelajaran mesin dan seseorang menyumbangkan algoritme. Kemudian, mereka mencoba menuntut pengguna atas pelanggaran paten pada algoritme itu. Dengan lisensi Apache, mereka secara otomatis kehilangan hak untuk menggunakan perpustakaan Anda. Ini adalah perlindungan terhadap troll paten. Kubernetes menggunakan Apache 2.0 karena perusahaan cloud khawatir tentang masalah paten. BSD pada dasarnya adalah MIT dengan kata-kata yang berbeda. Anda membuat perpustakaan jaringan di bawah BSD. Aturan yang sama dengan MIT, orang dapat melakukan apa pun yang mereka inginkan. FreeBSD menggunakan ini, itulah sebabnya Apple dapat mengambil kode BSD dan memasukkannya ke macOS tanpa melepaskan kode sumber macOS. Sebagian besar pengembang hanya menggunakan MIT sekarang karena lebih jelas. LGPL adalah GPL untuk perpustakaan. Anda membuat perpustakaan pembuatan PDF di bawah LGPL. Perusahaan dapat menggunakan perpustakaan Anda di perangkat lunak milik mereka tanpa membuat seluruh aplikasi mereka LGPL. Tetapi jika mereka memodifikasi kode pustaka Anda sendiri, perubahan tersebut harus LGPL. Pemutar media VLC menggunakan LGPL sehingga aplikasi lain dapat menyertakan pemutaran video tanpa menjadi GPL. Kepemilikan berarti Anda mengontrol segalanya. Anda membangun mesin database dan menyimpannya sebagai kepemilikan. Perusahaan membayar Anda biaya lisensi untuk menggunakannya. Mereka tidak dapat melihat kode sumber, tidak dapat memodifikasinya, tidak dapat mendistribusikannya kembali. Oracle Database bekerja dengan cara ini. Anda menghasilkan uang dari lisensi tetapi membatasi siapa yang dapat menggunakannya. Lisensi ganda memberikan opsi. Anda merilis database di bawah lisensi GPL dan komersial. Proyek open source menggunakan versi GPL secara gratis. Perusahaan yang tidak menginginkan pembatasan GPL membayar lisensi komersial. MySQL melakukan ini. Startup menggunakan MySQL gratis, perusahaan besar sering membeli lisensi komersial. Domain publik menyerahkan semua hak. Anda membuat fungsi hash dan meletakkannya di domain publik. Siapa pun dapat melakukan apa saja dengannya, tidak ada batasan, tidak diperlukan atribusi. SQLite melakukan ini. Instansi pemerintah menyukainya karena tidak ada risiko hukum. Membangun perpustakaan yang Anda ingin semua orang gunakan? Pilih MIT. Ingin memastikan perbaikan kembali ke komunitas? Gunakan GPL. Khawatir tentang paten dalam perangkat lunak perusahaan? Pergi dengan Apache. Membangun bisnis di sekitar kode Anda? Tetap berpemilik. Ingin kebebasan maksimal bagi pengguna? Coba domain publik. Kuncinya adalah mencocokkan tujuan Anda dengan batasan lisensi. Jangan hanya menyalin apa yang dilakukan proyek lain tanpa memahami mengapa mereka memilih lisensi itu.
22,32K