Ali’ye cevaben: Neden Laravel kullanıyorum?

Ali Gündoğdu, Neden Laravel Kullanmıyorum başlıklı bir yazı yayınlamış. Çok fazla yazacak şey bulamıyorum, fırsat bulmuşken bir yazayım dedim. Hem Laravel kullandığım için söz hakkı düştüğünü düşündün hem de polemik olsun dedim. Gerçi burada Laravel’i düşündüğünüz kadar savunmayacağım.

PHP’de aşağı yukarı herkesin hikayesi aynıdır. Önce fonksiyonlar.php dosyası vardır, sonra sınıf kavramıyla tanışılır. Bir klasör içerisinde resim yükleme, form doğrulama, veritabanı, email gönderme, belki smarty gibi bir template motoru vardır ve artık bunları kullanmaya başlarız. Tebrikler, kendi frameworkümüzü yapmayı başardık :)

Zaman geçtikçe bu bize yetmez. Gerek yapmaya başladığımız projeler büyür, gerek bizim ufkumuz genişler. Adım adım, büyürüz ve gerçek bir framework ile tanışırız. (Bu arada direkt büyük projenin içine düşen ya da araştırmacı ruhuyla programlamaya düzgün başlayan bazı şanslı veletler vardır, onlara dicek söz yok. Döngüyü bozdunuz ulan!)

Mesela ben bu frameworklerden ilk olarak Yii ile tanıştım (ismen tanıştık). Bir yazılımcı abimiz; böyle böyle bişey var, süper, şunu yapıyo, bunu yapıyo gibi şeyler söyleyince neymiş la bu bir bakayım dedim. Baktım ve hiç bir şey anlamadım. Bana bir kaç gömlek üstün geldi. Çünkü framework nedir bilmiyorken direkt Yii ile başlamak, ağır bir model kavramı ile tanışmak zordu. Gel zaman git zaman, rahmetli Codeigniter abimiz ile tanıştım. CI’yi öğrenmem yaklaşık 1 günümü aldı. Çünkü gerçekten çok basit bir dökümantasyonu vardı. “+Ne yapmak istiyorsun? -Resim yükleyeceğim. +Buyur, bu şekilde yapabilirsin” gibi net cevaplar içeren bir dökümantasyon. Düşünmene gerek yok, fazla araştırmana gerek yok. Copy-paste yeterli :) Neyse, CI beni uzun bir süre götürdü. Ben bunu baya baya kullandım.

Gün geldi, ihtiyaçlar büyüdü. CI’nin geliştirmesi durduruldu, zaten sürekli $this-> yazmaktan kollarım yoruldu. Daha sonra Ali’yle bir projeye başladık. Çok şükür, CI’nin adı bile geçmedi projede. En azından o bilinç varmış. Ali’nin yazısında bahsettiği, Symfony/Silex, ZF1, Doctrine içeren yapıyı kullanmaya başladık. Ne de iyi yapmışız!

Peki Laravel bu yazının neresinde? Başlayalım Laravel kısmına. Kendi yönettiğin projelerde belki kendine has bir yapı kullanmak güzel, fakat ileride projeyi devretmen gerekirse ya da projeye birilerini dahil etmen gerekirse sıkıntı yaşayabilirsin. Bunun temel sebebi dökümantasyondur. Ne nasıl yapılırın cevabını iyi vermen gerekiyor. Bunun için eğer kendi yapını kullanacaksan, en başından itibaren sürekli dökümantasyon yazman gerekiyor. Kod yorumlarından bahsetmiyorum, bildiğin framework dökümantasyonu gibi yazman gerekiyor. Burada bir parantez açıyorum. Kullandığınız her parçanın bir dökümantasyonu var. Her biri süper dökümantasyon olsa da sizin yapınızda bir bütün oluşturmayacak. Sizin yazdığınız dökümantasyonda bu parçaları birleştirmeniz gerekiyor.

Laravel’in dökümantasyonu, öğrenme açısından oldukça iyi hazırlanmış durumda. Tam benim gibi üşengeç, dummy(bu tam olarak ne demek bilmiyorum, havalı durur diye düşündüm) tiplere hitap ediyor. Öğrenmesi kolay, geliştirme yapması hızlı. Ama burada, Ali’nin bahsettiği, geriye dönük dökümantasyon sorunu ortaya çıkıyor. Bugün 5 sürümü hazırlanan Laravel için 1 yıl sonra 4 sürümüne ait dökümantasyona erişebilecek miyiz ve tüm talepleri karşılayabilecek mi? Evet, versiyonlama sistemi başlı başına sıkıntılı. Ben belki de bu geriye dönük dökümantasyonu ve versiyonlamayı göz ardı ederek bir hata yapıyorum ama burada tercih ettiğim şey hızlı öğrenme süreci. Hızlı öğrenme süreci sayesinde hem projeyi daha hızlı gerçekleştirebilir hem de gelecekte birisinin projeye dahil olması durumunda adaptasyon kolay olur ki zaten bugün elini sallasan Laravel bilen birine çarpıyor. (Eskiden CI öyleydi :))

Bu konudaki sorulması gereken soru şu: Kullandığın frameworkün geriye dönük desteğinin kısıtlı olmasına ne kadar tölerans gösterebilirsin?

Diğer bir noktadan, “kendi yapını oluşturmak” bir takım sıkıntıları daha doğuruyor. Bunlardan ilki dökümantasyondu. İkinci problem ise, her ne kadar güçlü frameworkleri arkana alsan da, sen gerek mimari açıdan gerekse pratik açıdan doğru bir yapı kurabiliyor musun? Örneğin ben bunu kesinlikle göze alamıyorum. Tek başıma girdiğim bir projede artık kendi yapımı kullanamam. Çünkü bunu oluşturabilecek kadar yeterli teknik bilgiye sahip değilim. Hatta şöyle diyelim, eskisi kadar cahil değilim, bu yüzden kendi yapımı oluşturamam :) Ama 2-3 kişi olursun, herkes belli bir bilgi birikimine sahiptir, o zaman kendi yapını kurma girişimlerine başlayabilirsin. Gerek doğru/en iyi mimariyi kurabilmek, gerek hataların takibini yapabilmek ve sorunları çözebilmek, gerek ne bileyim başka şeyler için bir ekip olmak bu konuda çok işe yarayacaktır. Ki biz Ali ile kendi yapımızı kullanalım dediğimizde sadece ikimiz oluşturmadık bunu. Dışarıdan arkadaşlar da buna gerek fikir gerek kod anlamında katkıda bulundu ve hala daha geliştirmeye devam ediyoruz. (Geliştirmeden kasıt, örneğin composer ile yeni araçlar ekliyoruz, değiştiriyoruz. Ya da klasör yapımızda değişiklikler yapıyoruz. Kendimiz için en mükemmel yapıyı oluşturmaya çalışıyoruz)

Peki ya Laravel’de Taylor’un tek adamcılığı? Biz bu tabloya ülkemizden alışığız, o yüzden beni çok rahatsız etmedi, desem yanlış olur. Ama Laravel üzerindeki tartışılması gereken en büyük konu bu değil. Zira, Laravel bir özgür yazılım. İsteyen aynı kodlardan Paraver adında bir framework yapar. (Gerçi MIT lisans bu kadar özgür mü bilmiyorum, birisi aydınlatırsa çok sevinirim.) Neyse, aslında demek istediğim bu değildi ama demiş bulundum. Şunu diyecektim; Laravel üzerindeki tüm kararları tek bir kişi versin. Belki bu kullanmamak için bir sebep olabilir. Ama bunun kilit bir şey olduğunu düşünmüyorum. Bununla birlikte Ali’nin yazısında Ubuntu’nun pencere kapatma butonlarını topluluk ısrarlarına rağmen solda tutmasına atıfta bulunularak bir kıyaslama yapılmış. Ben bir Ubuntu kullanıcısıyım. Bazı dayatmalarından, hatta spyware’a varan uygulamalarından rahatsızım. Ubuntu’dan daha iyisi var. Arch linux. Ama sırf kurulumu bile ömrümden ömür çalıyor. Ki daha hiç kuramadım (çok uğraşmadım). Ubuntu(Canonical) her ne kadar saçma sapan kararlar verse de, bu onu kullanmayacağım anlamına gelmiyor. Bir gün çizmeyi aşar, o zaman bırakır ve ona en yakın dağıtıma geçerim. (Gerçi spyware a doğru yol alması çizmeyi aştığını göstermez mi?) Örneğin Mint. Ubuntu’nun tüm paketlerini destekliyor. Demek istediğim de bu, Laravel konusunda tek adamcılık en büyük sorun değil. Bugün böyle bir sıkıntı varsa, yarın başka birisi Laravel ile %100 uyumlu başka bir framework çıkartır, oradan yürünür. Bu konudaki özet ise şu; Laravel’i seven Taylor Otwell ile sevsin. Sevmeyen de sevmesin.

Ali’nin yazısına büyük çoğunlukla yanıt vermekle birlikte neden Laravel kullandığımı özetlemeye çalıştım. Belki söyleyecek daha çok şey var ama uzadıkça uzayacak gibi duruyor. En iyisi burada bırakmak. Son olarak şunu söylemek istiyorum; Laravel’i “mükemmel” olduğu için kullanmıyorum. Zaten mükemmel de değil. Kullanma sebebim, kurması, geliştirme yapması, öğrenmesi hızlı olması. Bazen kararlılığa bakarsınız, bazen hıza bakarsınız. (Mesela telefonumda stabil olan Samsung firmwarelerini kullanmak yerine Cyanogen modun, telefonum için unofficial modunu kullanıyorum. Cyanogen mod bile unofficial iken ben onun unofficial sürümünü kullanıyorum düşünün :))

Dipnotlar:

* Kendi yapın dediğimiz kavramı biraz açmak gerekli. Burada kastedilen şey “kendi framework”ün değil. Belli başlı frameworkleri arkana alıyorsun, belki sadece beğendiğin kısımlarını alıyorsun ve kendine göre onları kullanıyorsun. Ama burada yine kafana göre bir kullanma geliştirmiyorsun. Bu konuda dahi belli başlı standartlar, teknik konular var. Belki dizin yapın farklı olur, belki config dosyaların ve kullanımın farklı olur. Ama en nihayetinde temelde hepsi aynıdır.

* Kendi yapınızı oluşturma konusunda şu kaynak oldukça fayda sağlayacaktır: https://github.com/fabpot/Create-Your-Framework

Ali’ye cevaben: Neden Laravel kullanıyorum?” üzerine 7 düşünce

  1. Eren

    Kendi gelistirdigim php frameworku yillardir kullaniyorum ve bunun da avantajlari var. Or. Baskalarinin yaptiklarini takip etmeniz gerekmiyor ve kendi ihtiyaclariniza gore daha ozgur gelistirmeler yapabiliyorsunuz. Elbette yazinizda da bahsettiginiz dezavantajlar da yok degil.

    Cevapla
    1. shibby Yazar

      Senin yazındaki 1,2,3,7 maddeler üzerinde yorum yapıldı. 6,8 anlamsız geldiği için yorumlamadım, 4 ve 5 i yorumlamaya üşendim.
      Kaldı ki yazı seni yanlışlamak için değil neden Laravel kullandığıma dair 3-5 fikir vermek amaçlı.
      Ortaya çıkan videoyu izlemedim çünkü sence komik :)

      Bu arada, ben üşenmeyip paragraf paragraf yazı yazıyorum ve buna dair konuyla alakasız 2 cümle yorum yapıyorsun. Tartışma bu şekilde olmaz biliyorsun. Sabahın köründe yollamışsın ona veriyorum artık :)

      Cevapla
  2. Geri izleme: Laravel Başlangıç Rehberi – 1 | Yusuf Karaçin

  3. selmand

    çok fazla kod, evet gerçekdende işinizi hızlandırması gereken yapı size gerçekden de çok fazla kod yazmanızı gerektirmemeli! daha az kod yazmalıyız. nette framework güzel ama dökümantasyon cidden kötü, umarım bir gün daha iyi olurlar…

    Cevapla
    1. shibby Yazar

      merhaba, adresinizi ve tckimlik numaranızı iletirseniz avukatlarım size dava açıcajlshadlahdlasd
      yürü lan.

      Cevapla

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir