Nette'in Tarihi

Nette'in kökeni, yazarı David Grudl'un uygulama yazmak için uygun bir framework aramaya başladığı 2004 yılına uzanır; çünkü saf PHP artık yetmiyordu. O zaman elde bulunan çözümlerin hiçbiri ihtiyaçlarını karşılamadığından, yavaş yavaş yeni bir framework'ün özelliklerini taslak hâline getirmeye başladı; bu framework sonradan Nette adını aldı.

O sıralarda Symfony, Laravel ya da Ruby on Rails gibi modern framework'ler henüz yoktu. Java dünyasında JSF (JavaServer Faces) standarttı, rakip .NET dünyasında ise ASP.NET WebForms egemendi. İkisi de yeniden kullanılabilir arayüz bileşenleriyle sayfa kurmaya olanak tanıyordu. Ancak David, onların soyutlama yöntemlerini ve durumsuz HTTP protokolü üzerinde oturumlarla ya da postback denen tekniklerle durumluluğu taklit etme çabalarını kusurlu ve temelden bozuk buluyordu. Bunlar kullanıcılar ve arama motorları için sayısız zorluğa yol açıyordu. Örneğin bir bağlantıyı kaydettiyseniz, sonradan altında farklı bir içerik bulmak sizi şaşırtabilirdi.

Sayfaları yeniden kullanılabilir arayüz bileşenlerinden kurma fikri, bunu o dönemin popüler masaüstü uygulama aracı Delphi'den bilen David'i büyülüyordu. Delphi için açık kaynak bileşenler sunan pazar yerlerini seviyordu. Böylece şu sorunun yanıtını aradı: durumsuz HTTP ile tam bir uyum içinde çalışacak bileşen tabanlı bir framework nasıl yapılır? Kullanıcılara, SEO'ya ve geliştiricilere aynı ölçüde dost bir kavram aradı. Ve Nette böyle şekillenmeye başladı.

Nette adı, yazarın bir Gillette tıraş jeli kutusunu yalnızca llette kısmı görünecek şekilde çevrilmiş hâlde fark ettiği banyoda rastlantıyla doğdu.

Binlerce saatlik araştırma, düşünme ve yeniden yazma izledi. Brno dışında bir köydeki tozlu bir garajda, geleceğin framework'ünün ilk taslakları ortaya çıktı. Mimari temel, o zamanlar artık unutulmuş PHP framework'ü Mojavi'nin kullandığı ve sonradan Ruby on Rails çevresindeki heyecanla popülerleşen MVC (Model-View-Controller) deseni oldu. İlham kaynaklarından biri, Honza Tichý'nin hiç yayımlanmayan phpBase framework'üydü bile.

Nette'in dünya merkezi, 2005

Yaklaşan Nette hakkında yazılar, yazarın blogunda görünmeye başladı. Onun bir vaporware olduğuna dair şakalar dolaşıyordu. Ama sonra, Ekim 2007'de Prag'daki PHP Seminar konferansında David, Nette'i kamuoyuna tanıttı. Bu arada bu konferans bir yıl sonra, Avrupa'nın en büyük BT konferanslarından biri olan WebExpo'ya dönüştü. Nette daha o zamandan, sözü edilen bileşen modeli, çift yönlü router, presenter'lar arasında bağlantı kurmanın kendine özgü yolu gibi birkaç özgün kavramla övünüyordu. Formları vardı, kimlik doğrulamayı, önbelleklemeyi ve daha fazlasını çözüyordu. Tüm bu temel kavramlar Nette'de bugün de özgün biçimleriyle kullanılıyor.

Nette'de controller yerine presenter terimi kullanılır; söylenene göre kod tabanında con ile başlayan çok fazla sözcük olduğu için (controller, front controller, control, config, container, …).

2007'nin sonunda David Grudl kodu yayımladı ve Nette 0.7 gün ışığını gördü. Framework hemen büyük bir ilgi topladı. Çevresinde coşkulu bir programcı topluluğu oluştu ve Posobota adlı aylık buluşmalar başladı. Bu topluluk, bugün öne çıkan pek çok ismi barındırıyordu; örneğin mükemmel PHPStan aracının yazarı Ondřej Mirtes. Nette'in gelişimi hızla ilerledi ve sonraki iki yılda, framework'ün bugünkü parçalarının neredeyse tümünün temelini atan 0.8 ve 0.9 sürümleri çıktı. Buna, Ruby on Rails için Hotwire ya da Symfony UX Turbo gibi teknolojilerden 14 yıl önce gelen AJAX snippet'leri de dahildi.

Ancak ilk Nette'de can alıcı bir öğe eksikti: bir Dependency Injection Container (DIC). Nette bir service locator kullanıyordu ve plan bağımlılık enjeksiyonuna geçmekti. Ama böyle bir şey nasıl tasarlanır? O zaman DI deneyimi olmayan David Grudl, yaklaşık altı aydır DI kullanan Václav Purchart ile öğle yemeği yedi. Konuyu tartıştılar ve David, uygulama tasarımına yaklaşımı tümüyle değiştiren Nette DI kütüphanesi üzerinde çalışmaya başladı. DI container, framework'ün en başarılı parçalarından biri oldu ve sonradan iki yan ürün doğurdu: NEON biçimi ve Schema kütüphanesi.

Bağımlılık enjeksiyonuna geçiş epey zaman aldı ve topluluk Nette'in yeni sürümü için birkaç yıl bekledi. Bu yüzden sonunda çıktığında doğrudan 2.0 olarak numaralandı. Yani Nette 1 sürümü diye bir şey yok.

Nette modern çağına 2012'de 2.0 sürümüyle başladı. Bu sürüm ayrıca, bugün Explorer olarak bilinen, veritabanlarıyla çalışmak için olağanüstü kullanışlı bir araç içeren Nette Database'i getirdi. Bu kütüphaneyi özgün olarak, David Grudl'un komşusu ve popüler Adminer aracının yazarı Jakub Vrána programladı. Sonraki gelişimini üç yıl boyunca Jan Škrášek üstlendi.

2014'te Nette 2.1, kısa süre sonra da Nette 2.2 çıktı. Bu nasıl oldu? 2.2 sürümü özünde 2.1 ile aynıydı, ama yirmi ayrı pakete bölünmüştü. Composer aracı PHP dünyasında yerleşmiş ve kütüphanelerin tasarlanma biçimini değiştirmişti. Nette monolit olmaktan çıktı ve her birinin kendi deposu, sorun izleyicisi, geliştirme hızı ve sürümlemesi olan daha küçük, bağımsız parçalara ayrıldı. Bu, monolitik framework'lerde yaygın olan, bir pakette hiçbir şey değişmemiş olsa bile yeni sürümünün çıkması gibi saçmalıkları önler. Git depolarının asıl bölünmesi haftalarca hazırlık ve yüzlerce saat makine zamanı aldı.

Nette ayrıca SitePoint dergisinin düzenlediği küresel en iyi PHP framework anketinde etkileyici bir 3. sırayı elde etti.