Nette Tarihçesi
Nette'nin başlangıcı, yazarı David Grudl'un saf PHP'nin artık yeterli olmadığı uygulamalar yazabileceği uygun bir framework aramaya başladığı 2004 yılına dayanmaktadır. O zamanlar mevcut çözümlerden hiçbiri ona uymadı, bu yüzden daha sonra Nette adını alacak yeni bir framework'ün özelliklerini yavaş yavaş çizmeye başladı.
O zamanlar Symfony, Laravel veya Ruby on Rails gibi mevcut framework'ler henüz yoktu. Java dünyasında standart JSF (JavaServer Faces) framework'üydü ve rakip .NET'te ise ASP.NET Webforms vardı. Her ikisi de yeniden kullanılabilir UI bileşenleri kullanarak sayfalar oluşturmaya izin veriyordu. David, onların soyutlama yöntemlerini ve oturum veya sözde postback kullanarak durumsuz HTTP protokolü üzerinde durum bilgisi oluşturma çabalarını hatalı ve temelden işlevsiz olarak değerlendirdi. Kullanıcılara ve arama motorlarına bir dizi zorluk çıkardılar. Örneğin, bir bağlantıyı kaydederseniz, daha sonra altında farklı bir içerik bulduğunuzda şaşırırdınız.
Sayfaları yeniden kullanılabilir UI bileşenlerinden oluşturma olasılığı David'i büyüledi, bunu o zamanlar masaüstü uygulamaları oluşturmak için popüler bir araç olan Delphi'den iyi biliyordu. Delphi için açık kaynaklı bileşen pazarlarını beğendi. Bu nedenle, durumsuz HTTP ile tam uyum içinde çalışacak bir bileşen framework'ünün nasıl oluşturulacağı sorusunu çözmeye çalıştı. Kullanıcılar, SEO ve geliştiriciler için dostane olacak bir konsept arıyordu. Ve böylece Nette doğmaya başladı.
Nette adı, yazarın banyoda Gillette tıraş jeli kabını sadece llette görülecek şekilde çevrilmiş halde fark etmesiyle tesadüfen ortaya çıktı.
Binlerce saatlik araştırma, düşünme ve yeniden yazma takip etti. Brno'nun arkasındaki bir köydeki tozlu bir garajda, gelecekteki framework'ün ilk taslakları ortaya çıktı. Mimarinin temeli, o zamanlar artık unutulmuş olan PHP framework'ü Mojavi tarafından kullanılan ve daha sonra Ruby on Rails etrafındaki heyecan sayesinde popülerleşen MVC deseni oldu. İlham kaynaklarından biri, Honza Tichý'nin hiç yayınlanmamış phpBase framework'üydü bile.
Yazarın blogunda, yakında çıkacak olan Nette hakkında makaleler yayınlanmaya başladı. Bunun bir vaporware olduğu şakası yapıldı. Ancak Ekim 2007'de Prag'daki PHP Semineri konferansında David, Nette'yi halka tanıttı. Bu arada, bu konferanstan bir yıl sonra, daha sonra Avrupa'nın en büyük BT konferanslarından biri haline gelen WebExpo gelişti. O zaman bile Nette, bahsedilen bileşen modeli, çift yönlü yönlendirici, presenter'lar arasında belirli bir bağlantı kurma yöntemi vb. gibi bir dizi orijinal konseptle övündü. Formları, çözülmüş kimlik doğrulaması, önbellekleme vb. vardı. Nette'deki her şey bugün hala orijinal konseptinde kullanılıyor.
Nette'de controller terimi yerine presenter kullanılır, çünkü kodda con ile başlayan çok fazla kelime olduğu söylenir (controller, front controller, control, config, container, …)
2007'nin sonunda David Grudl kodu da yayınladı ve böylece Nette sürüm 0.7 gün ışığına çıktı. Framework hemen büyük ilgi gördü. Etrafında, her ay Posobota etkinliğinde buluşmaya başlayan hevesli bir programcı topluluğu oluştu. Toplulukta, harika PHPStan aracının yazarı Ondřej Mirtes gibi bugünün birçok kişiliği vardı. Nette'nin gelişimi hızla ilerledi ve sonraki iki yılda, framework'ün bugünkü hemen hemen tüm bölümlerinin temellerinin atıldığı 0.8 ve 0.9 sürümleri yayınlandı. Ruby on Rails için Hotwire veya Symfony UX Turbo'dan 14 yıl önce gelen AJAX snippet'leri dahil.
Ancak o zamanki Nette'de önemli bir şey eksikti. Bağımlılık enjeksiyonu konteyneri (DIC). Nette, sözde service locator kullanıyordu ve amaç tam olarak bağımlılık enjeksiyonuna geçmekti. Ama böyle bir şey nasıl tasarlanırdı? O zamanlar DI deneyimi olmayan David Grudl, yaklaşık yarım yıldır DI kullanan Vašek Purchart ile öğle yemeğine gitti. Konuyu birlikte tartıştılar ve David, uygulamaların tasarımı hakkında düşünme şeklini tamamen değiştiren bir kütüphane olan Nette DI üzerinde çalışmaya başladı. DI konteyneri, framework'ün en başarılı bölümlerinden biri haline geldi. Ve daha sonra iki yan ürüne de yol açtı: Neon formatı ve Schema kütüphanesi.
Bağımlılık enjeksiyonuna geçiş oldukça zaman aldı ve Nette'nin yeni sürümü birkaç yıl beklendi. Bu nedenle, nihayet çıktığında, doğrudan 2 numarasını taşıyordu. Yani Nette sürüm 1 mevcut değil.
Nette, 2012 yılında 2.0 sürümüyle modern tarihini başlattı. Ayrıca, bugün Explorer olarak adlandırılan, veritabanıyla çalışmak için alışılmadık derecede kullanışlı bir araç içeren Nette Database'i de getirdi. Bu kütüphane başlangıçta David Grudl'un komşusu ve popüler Adminer aracının yazarı Jakub Vrána tarafından programlanmıştı. Daha sonraki gelişimi üç yıl boyunca Jan Škrášek tarafından üstlenildi.
2014 yılında Nette 2.1 yayınlandı ve kısa bir süre sonra Nette 2.2 geldi. Bu nasıl mümkün oldu? Sürüm 2.2, sürüm 2.1 ile aynıydı, sadece yirmi ayrı pakete bölünmüştü. PHP dünyasında Composer aracı yerleşti ve kütüphane oluşturma şeklini değiştirdi. Nette böylece monolit olmaktan çıktı ve daha küçük bağımsız parçalara ayrıldı. Her biri kendi deposu, sorun izleyicisi ve kendi geliştirme hızı ve sürümlemesiyle. Nette'de, monolitik framework'lerde yaygın olan, içinde hiçbir şey değişmemiş olmasına rağmen bir paketin yeni bir sürümünün yayınlanması gibi saçmalıkların yaşanması gerekmez. Git depolarının bölünmesi birkaç haftalık hazırlık ve yüzlerce saatlik makine süresi gerektirdi.
Nette ayrıca Sitepoint dergisi tarafından düzenlenen en iyi PHP framework'ü için dünya çapında yapılan ankette harika bir 3. sırada yer aldı.