Tüm nay-söyleyicilerle zıt olarak, gerçek iş ihtiyacını varsayalım.
(örneğin, teslim edilebilirlik kaynak kodudur, müşteriler aynı iş kolundandır ve bu nedenle birbirleriyle yarışırlar ve iş modeli sırlarını gizli tutmaya söz verir)
Ayrıca, şirketinizin tüm dallarını korumak için araçlara sahip olduğunu varsayalım, yani ya insangücü (diyelim 100 geliştiriciler birleştirme adanmış, 5 günlük bırakma gecikmesini varsayarak; veya 10 devs varsayarak 50 günlük sürede gecikme Tamam olduğu) veya otomatik birleştirmeleri gerçekten hem test edilir böyle müthiş otomatik test çekirdek spec ve uzatma spec her dalında ve "temiz" birleştirmezseniz böylece yalnızca değişiklikler insan müdahalesi gerektirir. Müşterileriniz yalnızca özelleştirmeler için değil, bakımı için ödeme yaparsa, bu geçerli bir iş modeli olabilir.
(Ve nay-sayers) sorumu, her müşteriye teslimattan sorumlu özel bir kişi var mı? Diyelim ki, 10.000 kişilik bir şirketseniz, durum böyle olabilir.
Bu , bazı durumlarda eklenti mimarisi tarafından ele alınabilir , diyelim ki çekirdeğinizin gövdesi, eklentiler bagajda veya dallarda tutulabilir ve her müşterinin yapılandırması benzersiz bir şekilde adlandırılmış bir dosyadır veya müşteri şubesinde tutulur.
Eklentiler çalışma zamanında yüklenebilir ya da derleme zamanında yerleşik olabilir.
Gerçekten birçok proje bu şekilde yapılır, temelde aynı sorun hala geçerlidir - basit temel değişiklikler bütünleşmek için önemsizdir, çatışma değişiklikleri geri alınmalı ya da birçok eklentide değişiklik yapılmalıdır.
Eklentilerin yeteri kadar iyi olmadığı durumlar vardır, o zaman çekirdeğin birçok içindekileri ayarlanması gerektiğinde, eklenti arayüz sayısı işlenemeyecek kadar büyük hale gelir.
İdeal olarak, bu , gövdenin çekirdek kod olduğu ve dalların da yön olduğu, boyuta yönelik programlama tarafından ele alınacaktır (ekstra kod ve ekstraları göbeğe nasıl bağlayacağınızla ilgili talimatlardır).
Basit bir örnek olarak, foo
özelin çekirdekten önce veya sonra koştuğunu veya klass.foo
değiştirdiğini ya da sardığını ve giriş veya çıkışı değiştirebileceğini belirtebilirsiniz.
Bunun için bir sürü kütüphane var, ancak birleşme çatışmaları sorunu ortadan kalkmıyor - temiz birleşme AOP tarafından yönetiliyor ve çatışmalar hala insan müdahalesine ihtiyaç duyuyor.
Son olarak, bu tür bir işletme gerçekten branş bakımı ile ilgilenmelidir , yani müşteriye özel X özelliği o kadar yaygındır ki, tüm müşteriler ödeme yapmasa da, onu çekirdeğe taşımak daha ucuz olur mu?