Praktik terbaik untuk merilis aplikasi PHP open source

10

Saya seorang pengembang PHP untuk mencari nafkah tetapi belum pernah bekerja atau berkontribusi pada proyek open source sebelumnya.

Saya mengembangkan CMS untuk saya gunakan sendiri. Saya memiliki prototipe yang berfungsi dan saya pikir setelah siap (mungkin beberapa bulan) ini bisa menjadi sesuatu yang menarik bagi komunitas PHP.

Saya seorang pengembang yang cukup percaya diri tetapi ada bidang-bidang di mana pengetahuan saya kurang, terutama ketika menyangkut masalah open source:

  • Apa cara terbaik untuk mempublikasikan proyek dan / atau menemukan orang lain yang mungkin tertarik berkolaborasi
  • CMS saya diberdayakan oleh CakePHP dan pada dasarnya duduk sebagai layer di atasnya. Saya telah memotong proyek CakePHP di GitHub: Saya pernah menggunakan sistem kontrol versi (SVN) sebelumnya, tetapi saya cukup baru di GIT, jadi saya ingin memastikan saya melakukan sesuatu dengan "cara terbaik"
  • Bagaimana saya bisa mengetahui tentang masalah perizinan? Lisensi open source mana yang terbaik untuk aplikasi saya? Juga, proyek saya meminjam dari banyak proyek open source lainnya, misalnya saya memiliki bagian kode (yang telah banyak saya modifikasi) tetapi yang memiliki pemberitahuan hak cipta / lisensi - Saya tidak tahu apa kewajiban saya dalam hal menyimpan ini di

Ini hanya beberapa contoh dari pertanyaan yang saya miliki, tetapi saya merasa seperti harus ada sumber daya di luar sana yang akan berguna bagi saya. Di mana tempat terbaik untuk memulai, apa komunitas / situs terbaik di luar sana yang mencakup masalah ini? Saya sudah melihat-lihat tetapi belum bisa datang dengan banyak ...

pengguna916336
sumber
Apakah ada beberapa jawaban yang baik tentang hal-hal lisensi, ada ide tentang pertanyaan lain? Mungkin harus membagi ini menjadi beberapa posting!
user916336

Jawaban:

5

Saya bukan Pengacara, tetapi saya akan mencoba yang ini.

CakePHP dilisensikan di bawah lisensi MIT , yang pada dasarnya berarti memungkinkan penggunaan kembali dalam perangkat lunak berpemilik dengan ketentuan bahwa lisensi didistribusikan dengan perangkat lunak itu. Ini kompatibel dengan lisensi GPL , yang dirilis oleh banyak proyek sumber terbuka.

Adapun proyek lain yang Anda "pinjam", Anda harus memeriksa jenis lisensi mereka dan memeriksa kompatibilitasnya satu sama lain dan jenis lisensi yang Anda putuskan untuk digunakan. Jika salah satu dari mereka menggunakan lisensi GPL , Anda juga harus merilis dengan GPL, sebagai ketentuan dari negara lisensi

GPL adalah lisensi copyleft pertama untuk penggunaan umum, yang berarti bahwa karya turunan hanya dapat didistribusikan dengan ketentuan lisensi yang sama.

...

GPL adalah lisensi copyleft pertama untuk penggunaan umum, yang berarti bahwa karya turunan hanya dapat didistribusikan dengan ketentuan lisensi yang sama.

Saran saya adalah untuk merilis di bawah lisensi GNU GPL v3 karena memberi Anda hak kepemilikan yang memadai atas pekerjaan Anda sementara memungkinkan orang lain untuk menggunakannya dalam proyek komersial dan terbuka. Ingat, bagaimanapun, lisensi dari proyek "pinjaman" harus kompatibel .


Adapun praktik terbaik dengan Git dan Github, gunakan git submoduleuntuk memasukkan proyek lain di perpustakaan Anda sendiri. Ini lebih baik daripada memasukkan file secara langsung karena Anda tidak akan mengaktifkan kembali pekerjaan itu sebagai milik Anda.

$ git submodule add git://github.com/cakephp/cakephp.git vendor/cake-php
$ git submodule update --init
adlawson
sumber
git submodule juga sesuatu yang saya tidak jelas. Sebagai contoh, proyek saya menggunakan jQuery dan jQuery UI - bagaimana saya bisa memasukkannya sebagai submodule karena sumber di GitHub dibagi menjadi banyak file dan folder. Saya memiliki hal yang sama dengan HTMLPurifier yang juga saya gunakan. File yang saya butuhkan ada dalam satu subfolder, tetapi dengan git submodule sepertinya saya tidak punya pilihan selain memasukkan banyak hal tambahan yang tidak saya perlukan yang akan mengurangi proyek saya secara tidak perlu, atau seperti yang Anda katakan lakukan pekerjaan orang lain sebagai saya sendiri!
Seperti sifat lisensi, Anda tidak dapat berpisah dan hanya menyertakan file yang Anda inginkan. Anda harus memasukkan seluruh proyek saat ini dikemas. git submodule add git://github.com/jquery/jquery.git public/vendor/jquery
adlawson
Yang lain sepertinya tidak melakukan ini: ambil Wordpress, mereka sepertinya baru saja memasukkan file yang sudah diperkecil yang mereka butuhkan dari jQuery ke dalam folder dan mengikatnya: github.com/wordpress/wordpress/tree/master/wp-includes/js / ...
1
WordPress menggunakan SVN untuk kontrol versi. Repositori Github mereka hanyalah sebuah cermin. Sejauh yang saya ketahui, tidak ada kemampuan "submodule" di SVN, sehingga mereka tidak memiliki pilihan selain untuk mengaktifkannya kembali. Pada catatan lain, jangan menggunakan WordPress sebagai contoh praktik terbaik.
adlawson
Kecuali saya melewatkan sesuatu, sepertinya tidak ada cara untuk melakukan ini dalam kasus jQuery. Lihatlah repo mereka github.com/jquery/jquery , itu hanya ratusan file .js individu dan skrip pembuatan - jadi saya tidak dapat memasukkannya ke dalam proyek saya tanpa hanya mengunduh salinan dari jquery.com dan melakukan sendiri , atau saya salah?
0

Lihatlah panduan ini dari Eric S. Raymond (buku lainnya juga layak dibaca).

Secara pribadi, saya tidak akan terlalu mengkhawatirkannya - Anda tidak akan menghasilkan uang dari hal ini secara langsung, dan tidak ada orang lain, karena sudah ada banyak CMS tujuan umum gratis yang luar biasa. Saya sarankan Anda menggunakan lisensi paling liberal yang Anda bisa (MIT atau BSD), kecuali jika Anda meminjam kode yang berada di bawah lisensi viral (biasanya GPL atau beragamnya), dalam hal ini Anda dipaksa ke lisensi itu dengan satu atau lain cara.

Pastikan untuk membaca dengan cermat semua lisensi perpustakaan dan snippet yang Anda gunakan; mereka harus menyatakan apakah Anda diizinkan mendistribusikan ulang dan memodifikasi kode, dan apakah Anda perlu memasukkannya ke dalam karya turunan (sebagian besar lisensi memerlukannya, dan bahkan bagi yang tidak, atribusi adalah yang paling dapat Anda lakukan untuk berterima kasih kepada penulis asli untuk pekerjaan mereka).

tammmer
sumber