Bir bağımlılığın kritik işlevselliği bozulduğunda ve gelişimi engellediğinde ne yapmalı?


12

Dün işlerin etiketlere (SE ile ilgili sorular gibi) sahip olmasına izin vermek için üzerinde durulabilir eylemler kitaplığı kullanan bir Rails 5 API projesi üzerinde çalışıyordum . Rails 5 şu anda alfa desteğinde. Şu anda master ile birleştirilmeyi bekleyen bir hatayı düzeltmek için bir PR var; hata, özellik şubemin tamamlanınca yarıya kadar durmasına neden oldu - yükleme bozulduğu için kütüphanenin herhangi bir işlevselliğini uygulayamadım.

Hızlı bir düzeltme olarak, repoyu klonladım, PR'nin sahip olduğu aynı kodla sorunu çözdüm ve bugf nihayet anaya birleştirilene kadar Gemfile'ımı (bağımlılık sürüm kontrol dosyası) kendi Github çatalına işaret ettim.

Düzeltmenin basit olduğu ( ve birisinin zaten yapmış olduğu ) şanslıydım , bu yüzden sorunu çözebildim. Peki ya bu kütüphane başvurumun geliştirilmesi için kritik olsaydı? Ne durdurma hata düzeltme eğer benim gelişimini için geniş yayılmış sorun değildi diğer insanlar bu sefer yaptığımız gibi düzeltme hızla etrafında gelmedi bu yüzden?

Bu özelliğin diğer bağımlı özellikler üzerinde geliştirilmeden önce tamamlanması gerektiğini düşünün - bu durumda ne yapıyorsunuz? Benim için etiketleme, her şeyin ona dayandığı bir sonraki geliştirme ifadesi için kesinlikle kritikse - ancak etiketleme bağımlılığı yapılandırmam için hata yaptıysa ne olacak? Bir bağımlılığın kritik işlevselliği, (a) özellik (ler) in geliştirilmesini engellediğinde ne yapar?

Ve şüphesiz, saatlerce veya günlerce ofis koltuklarında kılıç dövüşleri bir seçenek değildir ...

Yanıtlar:


19

Bu, açık kaynaklı yazılım kullanmanızın nedenlerinden biri, değil mi?

"Çok pahalı, tescilli, kapalı kaynaklı kütüphanem aniden devrilirse ne olur? [Benim için büyük, yekpare yazılım şirketi] 'nde bunu düzeltecek biri olacak mı?" Açık kaynaklı yazılımla, en azından bu hatayı kendiniz düzeltme şansınız var.

Yazılımınız açık kaynaklı bir kitaplığa kritik bir bağımlılık gösteriyorsa, riski azaltmak için yapabileceğiniz üç şey vardır:

  1. Kod tabanına aşina olun, hatta kendiniz de katkıda bulunun. Bu açık kaynağı seçmenizin bir başka nedeni, değil mi?

  2. İlk kütüphane düşerse bir geri dönüş kütüphanesine sahip olun. Bu yüzden arayüzlere program yaparsınız; eğer gerekirse uygulamayı değiştirebilmeniz için, değil mi?

  3. Kanayan kenar için olan arzunuzu kararlılık gereksiniminize göre dengeleyin (yani alfa yazılımı kullanmayın). Ne içine girdiğinizi biliyordunuz, değil mi?


Cevabınız için teşekkürler Robert; evet Rails 5'i yeni özellikleri için kullanmaya karar verdim ve projeyi tamamen planlamamıştım ve bu kütüphanenin Rails 5 ile uyumluluk sorunları olacağını bilmiyordum. Düzeltme için Github deposunu izliyorum. Sanırım buradaki ana derslerden biri iyi planlamak . Geliştirmeye başlamadan önce bir saatlik daha fazla araştırma yapsaydım, sorunu görürdüm!
Chris Cirefice

11

Hataların veya özellik eksikliğinin, çalışmanızın durmasına neden olma riski yüksek olduğu uygulamalar geliştirmenin çözümü, yüksek riskli kütüphaneler kullanmamaktır. Sıkıcı ve topal biliyorum.

Bunun bir alfa sürümü olduğunu söyledin. Kritik projeler için alfa sürümlerini kullanmayın. Bir beta sürümü bile değil, 1.0 olsun, bu tür bir şey beklenebilir. Bir projede bu aşamanın tüm amacı problemleri bulmak ve projeyi sertleştirmektir.

Kendinizi bu durumda bulursanız, temelde yaptığınız şeyi yapmanız gerekir (tam olarak aynı şeyi yaptık). Fix ve proje PR.

Ancak çözüm, anlaşılan işlevsellik ve API'lere sahip daha kararlı kütüphaneler kullanıyor veya en azından kararlı bir sürümle geriye dönük uyumluluğu koruyor. Üzerinde kontrol sahibi olmadığınız ve başarılı olmanız gereken bir şeye% 100 bağlı olarak dikkatli olmalısınız.


1

Genellikle kendi yazdığınız bağdaştırıcıların veya paketleyicilerin arkasındaki üçüncü taraf kitaplıklarını gizlemeniz önerilir. Bunun iki yönlü avantajları vardır:

  • Kodunuzu değiştirmeden üçüncü taraf kitaplığını başka bir kitaplıkla değiştirebilirsiniz.
  • Kodunuzun geri kalanını kendi adaptör arayüzünüze karşı programlayabilirsiniz. Kütüphaneyle ilgili geçici bir sorun olması durumunda, kütüphane işlevinin kendi saplamasını / sahte veya basitleştirilmiş sürümünü takmanız yeterlidir. Bu şekilde , aşağı yönlü özelliklerinizin geliştirilmesi ve test edilmesi engellenmez (tam programın dağıtımı hala devam etmesine rağmen).
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.