Open Source .Net ve Ötesi

Yazının orjinali 2014'de yazıldığından bazı kısımları zaman aşımına uğramış olabilir. 2014'den bu yana Microsoft’a bakışım iyi anlamda değişti.

Bir kaç gün önce, Microsoft geliştirme bölümü başkan yardımcısı S. Somasegar MSDN bloğunda .NET’in open source olması ve birden fazla platformda çalışabilmesi ile ilgili aldıkları kritik bir dizi karardan bahsetti. Bir şirketin ürünlerinin kaynak kodlarını dünyaya açması alışkın olmadığımız bir durum değil, ancak bahsi geçen şirket Microsoft, ürün de .NET Framework olunca, yazılım dünyası için şaşırtıcı bir haber oldu.

Damping! Patron çıldırmış olmalı

Bu kararları özetlersek; .NET çekirdeği önümüzdeki aylarda açık kaynak haline getirilecek ve bunu takiben Linux ve Mac OS X için de genişletilecek. Ayrıca Visual Studio Community 2013 ile, bağımsız ve küçük geliştirme grupları, ticari kaygı gözetmeksizin, tüm fonksiyonları ile Visual Studio kullanabilecek.

Github linkleri: 
 MS hosted Github: http://microsoft.github.io/ 
 ASP.Net : https://github.com/aspnet 
 Dotnet Core: https://github.com/dotnet

Bu kararlarda benim en çok dikkatimi çeken .NET’in Linux ve MacOS versiyonlarının üretilecek olması, çünkü bu gelişme Microsoft’un bakış açısının tamamen değiştiğini gösteriyor.

Microsoft Open-Source’a karşı

Önce birkaç alıntıyla Microsoft’un open-source’a bakışının nasıl değiştiğini hatırlayalım;

  • 98'de Microsoft çalışanlarının, open-source yazılım ve linux e karşı stratejilerinin bulunduğu, Halloween documents diye adlandırılan bir takım gizli dökümanlar sızdırıldı. Dökümanlar o yıllarda Microsoft’un open source yazılımı nasıl bir tehtid olarak gördüğünü gösteriyordu.
  • 2001'de Steve Ballmer Linux’ü fikri mülkiyet haklarına saldıran bi kanser olarak tanımlamıştı. “Linux is a cancer that attaches itself in an intellectual property sense to everything it touches”
  • 2004'de Microsoft, Linux server kullanımını eleştiren ve Windows kullanmanın daha ucuz ve sağlıklı olacağını iddaa eden Get the Facts adında bir anti-linux kampanyası başlattı.
  • Fakat 2006'da Codeplex’i yayınlayarak kendi kaynak paylaşım platformunu ve open source topluluğunu yarattı.

Negatif örnekler çoğaltılabilir ama 2006'dan sonra Microsoft, özgür yazılıma karşı daha ılıman ve uzlaşıcı bir tavır takınmıştır. 2007'de “Microsoft Public License” ile kendi özgür yazılım lisanslarını geliştirdiler ve bu yıldan sonra da bir çok open-source proje yayınladılar. Hatta yıllarca Linux’e en çok destek veren 10 şirketten biriydiler(Sanırım şu an değiller)

Yani Microsoft’un .NET’in kodlarını açması çok da beklenmedik bir durum değil. Zira 7–8 yıldır Microsoft da kendi yöntemleriyle (shared source), özgür yazılım topluluğunun bir parçası. Ve eski katı yaklaşımları yok.

Ancak yıllardır Microsoft ürünleri ve .NET ile çalışan, Microsoft politikalarını takip eden bir geliştirici olarak şunu söyleyebilirim ki; bu kararlarda asıl şaşırtıcı olan Microsoft’un kendi kabuğundan çıkıp, “diğer” özgür yazılım dünyası ile barışmaya çalışmasıdır.

Peki Microsoft bu kararları neden alıyor? Open-source’a hep mesafeli kalmış, gelir politikasının çok büyük bir kısmı lisans satmak üzerine olan bir şirket, Windows Server pastasını neden Linux ile paylaşıyor?

Çok basit bir sebebi var! Çünkü artık, asıl patron böyle istiyor!

Developers! Developers, developers, developers….

2006 Şubat ayında Steve Ballmer, bilgi teknolojilerinde gerçek patronun kim olduğunu tüm dünyaya defalarca kez haykırdı.

Microsoft(öncesinde IBM), uzun yıllar yazılım sektörünün lideri olarak, oyunu kendi kurallarına göre oynatmak isteyen tekelci bir yaklaşım sergiledi.

Bu yaklaşım .net geliştiricileri üzerinde garip zorlayıcı tecrübeler yarattı. Microsoft her yeni .NET versiyonunda yepyeni (sözümona)standartlar ve uzantılar yarattı.Kendisine bağlı geliştiricileri, birbiriyle çok da ilgisi olmayan bu uzantıları(Webforms, WPF, WCF, Linq vs..) öğrenmeye zorladı. Özellikle 2005–2008 arasında .NET ile haşır neşir olduysanız(asp.net 2.0,3.0,3.5,3.5sp1), bir versiyona hakim olamadan yeni versiyon tanıtımları yapılmasının, her versiyonda platformu öğrenmeye sıfırdan başlıyormuş hissinin, insanı ne kadar ambale ettiğini bilirsiniz. Diğer yandan WebForms gibi, Winforms çakması saçma bir mimari ile, web’in işleyişine hiç hakim olmayan, high-level mutant developerlar yarattılar. Kendi kontrolleri dışındaki tüm standartlara, web teknolojilerine ve yaklaşımlara(HTML5, Cloud Computing vs..) uzun süre ayak dirediler. .Net’in kendisine münhasır, süper güçlü araçlarla donatılmış (yeni başlayan)geliştiricileri, çok hızlı grid doldurabiliyor ama gerçekte ne yaptığını bilmiyor, dışarıdaki dünyayı merakla ama korkuyla izliyordu.

Durum işverenler için de farklı değildi. Expensify’in kurucusu David Barrett 2011'de çok tartışılan bir yazı yayınlamıştı. Bu yazıdaki herşeye katılmasam da, McDonalds örneğine bayıldım. Özetle David Barrett; .NET’in McDonalds mutfağı gibi süper güçlü araçlarla donatılmış olduğunu, ama McDonalds’da çalışarak hiçbir zaman aşçı olamayacağınızı, menünün dışından bir şey talep edildiğinde, o şey için buton bulamayacağınızdan, zorlanacağınızı yazmış. Bu sebeple de .NET geliştiricilerini işe alırken şüpheyle yaklaştığından bahsetmiş. (Belki 2012'de .NET 4.5'u görse bu yazıyı yazmazdı.)

Aynı örneği kendi CV’niz üzerinden de verebilirsiniz. Sizce .NET, günümüzde(özellikle MS hegomonyasındaki Türkiyede) bir işe alınma sebebi mi? “.NET biliyorum” işveren etkileyecek kadar havalı bir cümle mi?

Ya da bildiğiniz büyük startupların kaç tanesi .Net ile yazıldı? Neden? Tek sebebi, Windows Server ya da SQL Server’ın çok pahalı olması mı?

Bu ve bunun gibi durumlar, içlerinde benim de bulunduğum, büyük bir kısmı geliştiricilerden oluşan, hatırı sayılır bir Microsoft-Haters Club yarattı.

Microsoft-Haters’ın hızla arttığı bir dönemde Javascript bayrak kaldırdı.Zamanında gelişimine destek verdikleri XMLHttpRequest objesi, ajax ile web 2.0'ı hazırlıyor, alınan bu kararların asıl zeminini oluşturuyordu. Node.js ile server tarafında hızla büyüyen bir topluluk oluşurken, front-end’de angular.js gibi bir çok MVW/MVC/MVVM kütüphanesi geliştirildi. Tabi Microsoft da boş durmadı ve ASPNET MVC, WEBAPI gibi esnek frameworkler geliştirdi ama geliştiriciler tatmin olmadı. İşbirliği ile büyüyen, açık kaynaklı, dinamik yapıların başarılarını gördükçe kendilerini dinazor gibi hissettiler. Ve yavaş yavaş(hala) .NET’den kopmalar oluyordu.

Geliştiricilerin Microsoft’a sırtını dönmeye başlamalarının sebepleri arasında;

  • Github’ın 2008'de açılması ve popülaritesinin hızla artması
  • AWS ile IAAS teknolojilerinin patlama yaşamasının
  • Google dünyasının (Android, Google Apps vb..) hızla büyümesi
  • MacOSX’in geliştiriciler arasında hızla popüler olması
  • Band genişliklerinin artması ile masaüstü uygulamalara ihtiyaç kalmaması vb. de gösterilebilir.

Yukarıdaki videodan da anlaşılacağı gibi, Microsoft, güçlü teknolojilere sahip olmanın yeterli olmadığını, asıl önemli olanın büyük topluluklara hitap etmek olduğunu daha 2006 yılında anlamıştı. Geliştiricileri kazanmak gelecekteki teknolojilere sahip olmaktı.

Yeni Dünya, Yeni Microsoft…

Microsoft teknolojilerinin, şimdiye kadar yazılım piyasası üzerinde kötü bir önyargı ürettiği kesin. Çünkü artık dünya eskisi gibi değil. Eskiden “Hiç kimse IBM aldı diye kovulmaz” mış. (“No One Ever Got Fired for Buying IBM”). Ama yeni dünyada, çok fazla başarılı alternatif var, ürün yaratmak eskisinden çok daha kolay ve rekabetçi. Bir teknolojinin, cross-platform olması, hızlı ve kolay geliştirilebilmesi, ölçeklenebilir olması ya da büyük bir topluluğa sahip olması, en az güvenilir olması kadar önemli.

Microsoft bugün kaybettiği geliştiricileri geri kazanmak ve topluluğunu büyütmek için çok çok önemli bir adım atıyor. Artık yalnızca lisans satmanın doğru bir gelir yöntem olmadığının, Azure gibi bulut servislerin geleceği şekillendireceğinin farkında ve bu yüzden kontrolü geliştiricilere veriyor ve onları rahat ettirmeye çalışıyor.

Visual Studio’yu ücretsiz kullanıma açıyor, yetmiyor Omnisharp ile “istersen Sublime kullan” diyor, yetmiyor “al Asp.net senin olsun nerde istersen orada kullan” diyor, yetmiyor Visual Studio’ya popüler javascript araçlarının(knockout, angular.js, grunt) desteklerini veriyor, yetmiyor linux’e destek veriyor, yetmiyor Microsoft Sync, XBOX gibi innovatif ürünlere yöneliyor, yetmiyor, yetmedi, yetmeyecek. Yeni Microsoft geliştiricilerle barışmak için olabildiğince agresif olacak gibi duruyor.

Son sözler

Microsoft’un verdiği bu kararlar ne kadar başarılı olacak, hangi dengeleri değiştirecek söylemek çok zor. Şimdiden “Xamarin, Mono ne olacak?”, “Özellikle Javacıların aklını çelebilecek mi?”, “Ucuz Linux dağıtımları varken neden Windows Server kullanılacak?”, “Bu kadarı yeter mi, yoksa yetmez ama evet mi?” gibi bir çok soru işareti doğmuş durumda. Başarılı olur ya da olmaz bilinmez ama, benim izlenimim bir yazılım geliştirme platformunun açık kaynak kodlu olmasının bir lüks değil, bir ihtiyaç olarak görüldüğü ve Microsoft’un kararının çok doğru bir adım olarak değerlendirdiği yönünde.

Son yıllarda server tarafında node.js ve golang ile de çalıştım. İkisi de açık kaynaklı ve ikisi de bence muhteşem diller. Bir platformun açık kaynaklı olması, hem platformu hem de topluluğu çok daha hızla geliştiriyor. Aksine günümüzde bir framework’ün kaynak kodunu kapatmasının komik gözüktüğünü bile söyleyebilirim. OOP’nin bile gerekliliğinin tartışıldığı bugünlerde tüm teknoloji şirketlerinin olabildiğine saydam ve işbirlikçi davranması, yazılımda vazgeçilemez diye birşeyin kalmadığını anlamaları gerekiyor.

Ben kişisel olarak, bir projede kullanılan teknolojinin öneminin ikincil hatta üçüncül olduğuna inanıyorum. Ancak yine de projenin başarılı olabilmesi için teknolojilerin trade-off’larına hakim olmak ve doğru ihtiyaçla eşleştirebilmek gerekiyor. Bunun için bence geliştiricilere düşen, dev şirketlerin imkanlarını seferber ettikleri bu altın dönemde, tüm teknolojilere mümkün olduğunca yakın durabilmek, fırsat buldukça yeni teknolojilerle oynayabilmek, Microsoft, Google, Amazon diye ayırt etmeden bir dizi teknoloji şirketini gözden kaçırmadan izlemek olacaktır.

Kolay gelsin.


Originally published at www.eferhatg.com on November 17, 2014.