Bir yazılım projesi ilk bakışta birkaç klasör, binlerce satır kod ve sabırsız bir geliştiricinin kahvesinden ibaret görünebilir. Oysa modern bir uygulama, tek başına yaşayan bir organizma değildir. Kimlik doğrulama için bir paket, veri işleme için başka bir kütüphane, arayüz için onlarca eklenti ve bunların altında daha küçük bağımlılıklar bulunur. Bu yapı, yağmur ormanındaki canlı çeşitliliğine şaşırtıcı derecede benzer: Her tür kendi işini yapar, ama sistemin davranışı tek tek parçaların toplamından daha karmaşıktır.
Bağımlılık ağacı değil, canlı bir ağ
Yazılım dünyasında bağımlılıklar genellikle “ağaç” metaforuyla anlatılır. Bir proje ana gövdedir; kullandığı paketler dallar, onların paketleri ise ince dallardır. Fakat gerçek tablo çoğu zaman ağaçtan çok bir mantar miselyumunu andırır. Aynı küçük kütüphane, yüzlerce farklı projeye görünmez bağlarla hizmet edebilir. Tarih biçimlendiren bir araç, şifreleme modülü ya da metin ayrıştırıcı, milyonlarca kullanıcının farkında olmadan güvendiği ortak bir altyapıya dönüşebilir.