· kaynak Hacker News – Front Page (native)
Nolan Lawson, geliştiricilerin neden web platformunun yerleşik özelliklerini yok saydığını anlatıyor
Nolan Lawson'ın Hacker News ana sayfasına çıkan yazısı, 'platformu kullan' tavsiyesinin tarayıcı tarihinin, dağınık belgelendirmenin ve özellikleri elle yeniden yazmanın birçok geliştiricinin web'i öğrendiği yol olmasının göz ardı edildiğini savunuyor.

PouchDB üzerinde yıllarca çalışan ve W3C standart tartışmalarına katılan geliştirici Nolan Lawson, pek çok web geliştiricisinin neden 'platformu kullan' — yani tarayıcıların zaten sunduğu olanaklara dayanmak yerine bu yetenekleri JavaScript'te yeniden inşa etmek yerine onları kullanmak — şeklindeki köklü tavsiyeyi görmezden geldiğini inceleyen bir yazı yayımladı. Yazı Hacker News ana sayfasında öne çıktı.
Karşı çıktığı argüman
Lawson'ın yazdığı gibi, web standartları, performans ve erişilebilirlik savunucuları yıllardır basit bir tez ileri sürüyor: kendinizin inşa ettiği her şey muhtemelen eşdeğer bir tarayıcı özelliğinden daha yavaş çalışacak ve daha az kullanışlı olacak. Lawson kendini de bu savunucular arasında sayıyor ama şüphecilerin ısrarının ciddi bir açıklamayı hak ettiğini, göz ardı edilmemesi gerektiğini savunuyor.
Tarih, elle inşa etmeyi mantıklı kılmıştı
Lawson'a göre en bariz neden tarihsel. Uzun süreler boyunca tarayıcılar, üstlerine inşa edilen ekosistemin gerisinde kaldı ve jQuery gibi kütüphaneler gerçek boşlukları doldurdu. Tarayıcılar bir standart API'yi uyguladıktan sonra bile geliştiriciler çoğu zaman IE6 gibi geride kalanların yok olmasını beklemek zorundaydı. Lawson, kabaca 2020'lere kadar olan web'i düzensiz olarak nitelendiriyor ve bu ortamda kendi çözümünüzü inşa etmenin makul bir varsayılan olduğunu söylüyor. Bugün çoğu tarayıcının evergreen olduğuna, yılda kabaca yedi sürüm çıkaran Safari'nin tartışmalı istisna teşkil ettiğine dikkat çekiyor.
Alışkanlık, ergonomi ve belgelendirme
Aşınlık da önemli. React bileşenlerini npm'de aramaya alışmış geliştiriciler sorun ne olursa olsun npm'e uzanır; Lawson, npm'de sticky positioning aramasının paketler döndürdüğünü, oysa CSS'in bunu zaten hallettiğine işaret eden bir not çıkarmadığını gözlemliyor. Kütüphane yazarlarının hız için içeride ham DOM API'lerini kullanırken, doğrudan DOM işinden hoşlanmayan framework geliştiricilerine daha üst düzey primitive'ler sunduğu bir iş bölümünü tanımlıyor.
Begelendirme bu etkiyi büyüttü. npm paketleri cilalı README'ler ve örnek sitelerle gelirken, platform belgelendirmesi MDN — ve Google'ın daha ileriye dönük kolu olan web.dev — varsayılan başvuru kaynağı olana kadar bloglara, Stack Overflow'a ve CSS-Tricks gibi sitelere dağılmıştı. Dragula kütüphanesinin sitesini MDN'in sürükle-bırak sayfasıyla karşılaştıran Lawson, kütüphanenin pazarlamasının ikisi arasında hâlâ daha ikna edici olduğunu ima ediyor.
Kendin inşa etmek, insanların öğrenme yolu
Lawson'ın en keskin noktası, direncin tembellikle açıklanamayacağı. Hazır bir cevap isteyen geliştiriciler bunun npm'den, tarayıcıdan ya da rastgele bir gist'ten gelip gelmediğini umursamaz. Bunun yerine, Lawson'a göre belirli bir tür geliştirici, şeyler inşa etmeyi daha eğlenceli bulur, ortaya çıkan kodu akıl yürütmeyi daha kolay bulur ve elle bir araya getirilen şeye — bir IKEA etkisiyle — bağlanır. Bir modal iletişim kutusunu position: absolute, z-index, scroll kilitleme, Escape tuşu işleme, focus yakalama ve focus geri yüklemeyle inşa etme sürecini adım adım anlatır: kimine angarya, kimine keyifli bir eğitim ve yerleşik dialog elementinin tek satırlık kullanımı yerine yayımlanabilir bir kütüphaneyle sonuçlanabilecek bir süreç.
Bu yolun, diyor, tam olarak platform uzmanlığının oluşma biçimi olduğunu söylüyor. Bugünkü platformu-kullan savunucularının çoğu, polyfill, shim ve kütüphane yazarları olarak başladı. Lawson, PouchDB içindeki IndexedDB ve WebSQL araçları üzerindeki çalışmasını, W3C standart toplantılarında oturma ve IndexedDB spesifikasyonuna issue ve pull request açma güvenine bağlar. Doldurulacak bir platform boşluğu olmasaydı, bu uzmanlık düzeyine ulaştığından kuşkulu.
İşler ters gittiğinde, web'de ve web dışında
Bu içgüdüyü romantize etmiyor. Bazen platformu atlamak safha cehalettir; CSS'in daha iyi çözdüğü sorunlara getirilen sayısız JavaScript çözümünde olduğu gibi — bu kısmen geliştiricilerin CSS'in modelini hiç öğrenmemesinden, kısmen de CSS'in geçmişte satır kırpma gibi örüntülere kolay cevaplar verememesinden kaynaklanır. Örüntü web'in ötesine de uzanır: Lawson, işyerinde bir meslektaşıyla ClickHouse'ta büyük JSON blob'larını depolamak için birbirinden habersiz birbirine rakip iki geçici çözüm inşa etmiş; biri veriyi önceden sıkıştırırken diğeri ayrı bir anahtar-değer deposuna taşıyordu. İkisi de yanlış çıktı. Belgelendirmeyi okuyup bir benchmark çalıştırdıktan sonra Lawson, ClickHouse'un kendi sıkıştırma ve kolonlu depolamasının iki elle inşa edilmiş tasarımı da geride bıraktığını gördü.
Neden önemli
Yazı, uzun süredir süren bir kültür savaşı tartışmasını bir sistemler ve teşvikler sorununa dönüştürüyor. Geliştiriciler yerleşik olanakları atlıyorsa çare, daha yüksek sesle nasihat etmek değil; daha iyi bulunabilirlik ve belgelendirme, artı elle inşa etmenin birçok insanın platformu anlamasına giden yol olduğu kabulüdür. Mühendislik ekipleri için ClickHouse anekdotu pratik bir ders taşıyor: etrafına inşa etmeden önce platformun zaten ne yaptığını benchmark'layın. Tarayıcı üreticileri ve standart savunucuları içinse benimsenmeye giden yolun, npm paketlerinin yıllardır sunduğu cilalı geliştirici deneyiminden geçtiği anlamına geliyor.
- #web-platform
- #javascript
- #css
- #developer-experience
- #web-standards