Açık Kaynak .NET Üzerine
Yazılımcılar arasındaki standart muhabbetlerden biridir; “Microsoft geriden gelir”. İnterneti geç keşfetmiştir. Konsola sonradan girmiştir. Veri tabanı pazarına geç dalmıştır. Java’dan yıllar sonra benzerini çıkartmıştır. iPhone ve Android’in arkasından çok çok gecikerek yeni nesil mobil dünyaya dalmıştır. Amazon’dan yıllar sonra buluta başlamıştır.
Hep bir şeylere gecikmiştir Microsoft.
Ama tarihsel bilgiyle söyleyebiliriz ki geç kaldığı ve geç girdiği çoğu pazarı büyütüp, kendini büyük oyuncu hâline getirmiştir. En güzel örneği veri tabanı pazarı. SQL Server, ilk yıllarında adı bile anılmazken artık Oracle’a ciddi bir rakiptir. Konsolda XBOX gerçeği vardır. .NET, Java’nın karşısına sağlam dikilmiş ve zaman içerisinde özellik seti olarak onu geçmiştir.
Microsoft çoğu şeye geç kalmıştır ama Açık Kaynak Kod’a oldukça geç kalmıştır. Daha çok özel mülk kodlarla hareket etmiş ve bırakın kod açmayı, açık kodcuların bulunduğu ortamda bile bulunmamıştır. Açık koddan hep kaçmıştır.
Son 5 senede bazı özel yazılım parçalarını açık kod ortamında geliştirme denemeleri yaptı Microsoft. Belki şahit oldunuz. MEF böyle gelişti. Entity Framework böyle gelişti. Bu küçük denemeler, camia tarafından ciddiye alınmadı. Çünkü Microsoft içeride kodu kendi geliştiriyor, açık kodun üstüne basıyordu. Yani aslında proje kapalı gelişiyor, arada bir açıklaşıyordu.
Microsoft yakın bir süre önce ASP.NET’i ve derleyicileri tamamen açık kaynak yaptı. Geçtiğimiz haftalarda da .NET’in sunucu tarafında çalışan Core kısmını. Artık bu yazılım platformları, halkın gözünün önünde, halkın katkısıyla gelişecek. Şunu da not olarak ekleyelim; Microsoft çok önce kodlarını görücüye çıkarmıştı. Şu anki değişiklik, kodların Open Source modelinde geliştirilecek olması.
Öyle bir noktaya geldik ki insanlık olarak; platformların açık gelişmesinin kapalı gelişmesine göre avantajları daha fazla. Microsoft da bu denklemi kurdu ve platformlarını geliştirme yükünü dünya ile paylaştı. Android’in nefes kesen gelişimi elbette model olarak duruyor önünde.
Microsoft yaptığı dikey büyümelerle, uç birim cihazdan arka birim sunucuya kadar her noktada ürün satabiliyor. Ara katmanlardaki platformları da halka açarak zemini genişletiyor.
Microsoft’un aşırı derecede geliştirici ilgisine ihtiyacı var. Ve bunun için elinden gelen ne varsa yapıyor. Visual Studio’yu anti-Microsoft dünyanın tüm ürünlerine entegre etmiş durumda. Microsoft’tan uzak kalmak için başka dünyalara göçenler, kullandıkları yazılımların ve araçların en iyi Microsoft ortamında desteklendiğini görünce çıldırıyor olmalı.
Bu büyük endüstride, incecik hassas bir bağı temsil ediyor geliştiriciler. Ve dikkat edin tüm firmalar, o hassas kitleyi kendi taraflarına çekmek ve kendi platformlarında üretim yapmak için ikna etmeye çalışıyor. Apple, Swift dilini üretirken de aynı şeyi düşünüyordu. Google, Android için IDE yazmaya uğraşırken de aynısını düşünüyor. Microsoft’un geliştiricilerin ayağına kırmızı halı sermediği kalıyor.
Olayı biraz büyütmekte sakınca yok.
.NET’in sunucu taraflı teknolojileri açık kaynağa geçerken, acaba neden istemci taraflı teknolojileri (Windows Forms, WPF, WinRT) yerinde kaldı? Biraz kafa yoralım.
İstemci taraflı teknolojilerin büyük kısmı Windows’un “native” katmanlarına bağımlı. Bu kısmı ne açık kaynak yapmak ne de çapraz platform yapmak işlerine gelmemiş olabilir. Ayrıca Windows Forms gibi artık olgunlaşmış bir teknolojide çok gelişme olmayacaktır.
Burada WPF biraz ayrı duruyor. Çünkü ilginç bir şekilde Microsoft bizi WPF’in hortladığına inandırdı. Bu hortlamanın, Windows 10 gibi masa üstünün tekrar hortlamasıyla paralellik teşkil ettiğini elbette fikredebiliyoruz. Tamamen yıkım olan Windows 8, kullanıcı deneyimine verdiği zararın fazlasını WPF’in istikbâline vermişti. Daha genç yaşta, alacağı nice güncellemeler, fix’ler ve kazanacağı gelişimler varken WinRT lehine boynu vurulmuştu. XAML ekibi .NET altından çıkarılıp Windows altına alınmış ve sahipsizleştirilmişti.
Gel zaman git zaman… birçok tahminin aksine Windows, 8’in arayüzünde diretemedi. Artık masa üstünde, masa üstü olan bir Windows var. Windows 10’a bakarsanız, bu vurgu daha da yüksek. Mahcup bir eskiye dönüş görüyorsunuz. Ve artık masa üstü uygulamalarla WinRT uygulamalar arasında anlamsız bir ayrım yaşıyorsunuz. Windows’un pencere yönetiminden tamamen kopuk, tek ekranda yaşayan tam ekran WPF uygulamaları. Yani WinRT. Aynı uygulamayı performansına yatırım yapılacağı söylenen WPF ile yazsanız, elbette daha yetenekli olacak.
WPF ile ilgili en şirin isteği bir Reddit yorumunda gördüm. Adam ne olur WPF’i Mac ve Linux’a taşıyın diyordu. Kimsenin bu maliyete gireceğini zannetmem. UI, yerinde ağırdır. OS X ekranında Cocoa iyi durur. Windows ekranında WPF/Win32/WinRT (of of) iyi durur. Linux ekranında da herhalde GTK+ ya da QT iyi durur. Ya da Linux’ta ekran değil, kara konsol iyi durur. Mobil platformlar zaten “native” olayında daha hassas. Tüm bunlardan geriye kalan da “web”. Web gibi bir evrensellik varken, tutup “native” katmanlarla sıkı fıkı bir teknolojiyi platformlar arasında taşımak, çok heyecan verici olmayacaktır. Microsoft web tarafını (ASP.NET) zaten diğer platformlara taşıdığına göre WPF ile ilgili rüyalar, hülyalara dönüşecektir.
1 Comment
Ömer
14 Temmuz 2016 at 13:34Çok güzel bir yazı olmuş…