Seringkali proyek perangkat lunak sumber terbuka memiliki folder yang disebut "contrib". Misalnya, Django memilikinya . Untuk apa ini?
project-structure
Kolonel Panic
sumber
sumber
Contrib
folder ini yang terus saya lihat di proyek?" - "Mengapa, atau mengapa suatu proyek tidak memiliki satu?" - "Apakah ada konvensi standar untuk hal ini yang harus saya ketahui?"Jawaban:
Hal ini untuk perangkat lunak yang telah contrib usikan ke proyek, tetapi yang tidak mungkin benar-benar dipertahankan oleh para pengembang inti. Memberinya nama "contrib" atau "Contrib" adalah konvensi yang sudah lama mapan, tetapi sebenarnya tidak ada yang istimewa dengan namanya, dan biasanya hanya digunakan oleh proyek-proyek yang cukup besar.
sumber
Melihat proyek open source populer yang muncul dalam pikiran, saya tidak melihat penyebutan folder "contrib":
Satu-satunya yang memiliki folder "contrib" adalah Django. Untuk Django, peran folder ini sudah dijelaskan dalam dokumentasi :
Bab 16 dari The Django Book berisi deskripsi yang lebih rinci tentang peran direktori ini dan daftar konten.
Contoh lain adalah Solr . Dengan
gitstats
, kita bisa mendapatkan statistik tentang kontributor.Kemudian, kita hanya dapat memilih
contrib
direktori dengan menjalankan:dan dapatkan statistik sekali lagi:
Jadi penulis teratas praktis sama, yang berarti bahwa itu bukan kontribusi dari pihak luar. Melihat direktori di dalam
contrib
folder, tampaknya sekali lagi, itu adalah "berbagai alat tambahan, opsional", persis seperti di Django. Misalnya, Anda tidak memerlukan Handler Permintaan Impor Data untuk membuat Solr berfungsi, tetapi jika Anda ingin mengimpor data dari basis data atau XML, senang memilikinya dalamcontrib
folder. Sama untuk pengurangan peta, Anda mungkin tidak perlu, tetapi ada beberapa kasus di mana Anda melakukannya.Apakah itu plugin atau add-on? Saya tidak akan menggunakan istilah ini. Pengaya dan pengaya memiliki integrasi spesifik dengan aplikasi utama. Sebagai contoh, sebuah plugin tidak diharapkan untuk menjalankan standalone, tetapi dihosting di dalam aplikasi utama. Di sisi lain,
contrib
berisi alat yang mungkin dapat menjalankan standalone.sumber
Contrib
(melihat yang lain sekarang di Akka.NET)! - Saya tidak tahu mengapa mereka memiliki folder bernama itu, atau apa konvensi untuk konvensi penamaan ini. - Tak satu pun dari hal-hal yang disebutkan sejauh ini cocok dengan semua cara yang saya lihat "contrib" digunakan. - sepertinya setiap proyek memiliki hal-hal yang benar-benar berbeda di sana (Akka.Net tampaknya menempatkan seperempat basis kode yang bagus di sana: Akka.Clustering, Logging, DI, Kegigihan, TestKits, dll ...).Ini dimaksudkan untuk perpustakaan atau komponen yang berkontribusi pada proyek, tetapi tidak dimiliki atau bagian dari proyek itu sendiri. Saya selalu menggunakannya sebagai lokasi umum atau bersama untuk menempatkan perpustakaan pihak ketiga yang saya gunakan.
Misalnya, Anda mungkin memiliki:
Kemudian referensi mereka di masing-masing komponen proyek menggunakan jalur relatif, sehingga tidak ada jenis pengaturan atau konfigurasi yang diperlukan sebelum membangunnya. Itu akan membangun langsung dari repo di mana pun itu diperiksa secara lokal.
sumber
vendor
atauthirdparty
.Git adalah contoh yang bagus untuk perangkat lunak sumber terbuka yang menggunakan konvensi ini:
https://github.com/git/git/tree/master/contrib
Berikut kutipan yang relevan dari file README.md:
sumber