Ben devam eden misyon uygulanması, genişleme, ve bizim yüksek trafikli sitenin içerik yönetim sistemi bakım bir proje üzerinde kurşun geliştirici duyuyorum. CMS içi bir çözüm, ne de bir açık kaynak projesi değildir - bu bir satıcıdan alınan pahalı bir üründür. Ne yazık ki, çok ... biz diyelim ... enterprisey strong> ürün.
Uzun bir geri-hikaye kısa yapmak için kendi teslim durumda ürün sadece şirketin teknik gereksinimlerini karşılamak vermedi. Saticimizla çekirdek ürünü değişen ve kolayca yeni sürümlerine yükseltme yeteneğini kaybetmeden iş gereklerini yerine getirmek için özgürce değiştirebilir kod temeli bir kısmını belirlenen; Ancak, çekirdek ürünün kod temeli doğası (çok sıkı bağlama, hiçbir DI, her yerde tekil, "sihirli" bir sürü), "Bizim garanti işeme" olmadan bizim gereklerini yerine (ve onların hataları düzeltmek) için hiçbir şekilde sadece yoktu, tabiri caizse, ve çekirdek uygulama uzakta hack.
Bu nedenle, esas itibarıyla:
- Bu ürünün biz çekirdek sistem uzakta hack olmadan çalışması gereken şekilde çalışmak yapamazsınız.
- Biz sorunsuz satıcının ürünün yeni sürümlerine yükseltmek için yeteneğimizi ödün vermeden çekirdek sistem uzakta kesmek olamaz.
- Biz ürün ile sıkışmış ve yükseltme kapasitesi terk edemez.
- GOTO 1
Biz muhtemelen bu ikilemle karşı karşıya olan tek takım ... hala zaman geçtikçe yeni sürümlerine yükseltme mümkün olurken ihtiyaçlarını karşılamak için üçüncü parti kodunu değiştirmek için geçmişte kullanılan bazı stratejiler nelerdir olamaz?
Ne ben bugüne kadar yaptığım şudur:
- Değişti davranış - (üstlenmeden pratik bir miktar olmadan ve çoğu zaman mümkün değildir, mümkün olduğunda) birim testleri oluşturun.
- Mümkün olduğunda, mümkün olduğunca kod temeli belirlenen "müşteri alan" modifikasyon kadar yapın.
- Bir SVN vendor branch yeni sürümleri birleştirmek için kullanılacak ilk, değiştirilmemiş uygulama düzenlendi.
Satıcı dalları yalnızca biz uygulamak için hangi değişiklikleri bilmek garanti olacaktır, ancak biz karşılaşmak olasıdır çatışmaların kabus ile bize hiç yardımcı olmayacaktır.
Başka ne, bir şey varsa, biz daha sonra ağrıyı hafifletmek için şimdi ne yapabilirsiniz?