Kemarin saya sedang mengerjakan proyek API Rails 5 yang menggunakan perpustakaan tindakan-sebagai-taggable-on untuk memungkinkan hal-hal untuk memiliki tag (seperti pertanyaan pada SE). Rails 5 saat ini dalam dukungan alpha. Saat ini ada PR untuk memperbaiki bug yang menunggu untuk digabungkan menjadi master; bug menyebabkan cabang fitur saya terhenti setengah jalan sampai selesai - saya tidak bisa mengimplementasikan fungsi perpustakaan karena memuat rusak.
Sebagai perbaikan cepat, saya cukup mengkloning repo, memperbaiki masalah dengan kode yang sama dengan yang dimiliki PR, dan mengarahkan Gemfile (file kontrol versi ketergantungan) ke garpu Github saya sendiri, hingga perbaikan bug akhirnya digabungkan kembali menjadi master.
Saya beruntung bahwa perbaikannya sederhana ( dan seseorang telah melakukannya ), jadi saya dapat mengatasi masalah tersebut. Tetapi bagaimana jika perpustakaan ini sangat penting untuk pengembangan aplikasi saya? Bagaimana jika perbaikan bug yang menghentikan perkembangan saya bukanlah masalah yang tersebar luas untuk orang lain , jadi perbaikannya tidak terjadi dengan cepat seperti yang terjadi saat ini?
Bayangkan bahwa fitur ini perlu diselesaikan sebelum pengembangan fitur - fitur dependen lainnya - apa yang Anda lakukan dalam situasi itu? Bagaimana jika, bagi saya, penandaan benar - benar penting untuk frasa pengembangan berikutnya, di mana segala sesuatu bergantung padanya - tetapi ketergantungan penandaan disadap untuk konfigurasi saya? Apa yang dilakukan seseorang ketika fungsionalitas kritis suatu dependensi menghambat pengembangan (a) fitur?
Dan, tentu saja, pertarungan pedang di kursi kantor selama berjam-jam atau berhari-hari bukanlah pilihan ...
sumber
Solusi untuk mengembangkan aplikasi di mana bug atau kurangnya fitur memiliki risiko tinggi menyebabkan pekerjaan Anda berhenti adalah dengan tidak menggunakan perpustakaan berisiko tinggi. Membosankan dan timpang, saya tahu ..
Anda mengatakan ini adalah rilis alpha. Jangan gunakan rilis alpha untuk proyek-proyek penting. Ini bahkan bukan rilis beta, apalagi 1.0 jadi hal seperti ini diharapkan. Inti dari tahap ini dalam suatu proyek adalah untuk menemukan masalah dan mengeraskan proyek.
Jika Anda menemukan diri Anda dalam situasi ini, pada dasarnya Anda harus melakukan apa yang Anda lakukan (kami telah melakukan hal yang persis sama). Perbaiki dan PR proyek.
Tetapi solusinya menggunakan pustaka yang lebih stabil dengan fungsi dan API yang dipahami atau setidaknya mempertahankan kompatibilitas ke belakang ke versi stabil. Anda harus waspada tergantung 100% pada sesuatu yang tidak dapat Anda kendalikan dan butuhkan untuk berhasil.
sumber
Biasanya disarankan untuk menyembunyikan perpustakaan pihak ketiga di belakang adaptor atau pembungkus yang Anda tulis sendiri. Ini memiliki dua keuntungan:
sumber