- HTML ve CSS render edebilen bir tarayıcı, yalnızca 3 gün içinde bir insan ve bir LLM ajanı tarafından Rust ile doğrudan geliştirildi
- Proje yaklaşık 20.150 satır kodla tamamlandı; kaydırma, geri gitme, headless modu gibi temel özellikleri içeriyor
- Harici Rust kütüphaneleri olmadan Windows, macOS ve Linux'ta çalışacak şekilde tasarlandı
- Geliştirme süreci Codex ajanıyla iş birliği içinde yürütüldü; insan koordinasyon ve doğrulamayı üstlenirken ajan kod yazımını gerçekleştirdi
- Sonuç olarak 'bir insan + bir ajan' kombinasyonunun çok sayıda ajandan daha verimli olduğunu gösteren bir örnek oldu
Projeye genel bakış
- Amaç, HTML ve CSS render edebilen temel bir tarayıcıyı tamamen sıfırdan oluşturmak
- JavaScript desteklenmiyor
- Geliştirici buna “eğlencesine” başladı ve LLM ajanı (Codex) ile iş birliği içinde ilerledi
- 3 gün içinde tamamlama, harici Rust bağımlılığı yasağı, 3 büyük işletim sistemi desteği gibi kısıtlar belirlendi
- Tarayıcı kendi render motoruna sahip ve ekran görüntüsü alma, bağlantı tıklama ve regresyon testi özelliklerini içeriyor
1. Gün – İlk uygulama
- “Hello World” render etmekle başlanıp iç içe etiket işleme ve ekran görüntüsü alma özelliği eklendi
- HTML/CSS spesifikasyonu tanımlandı ve E2E testleri için görüntü karşılaştırma özelliği devreye alındı
- Sadece bir gün içinde X11 ve cURL kullanarak web sitelerini alıp render eden bir seviyeye ulaşıldı
- Kod tabanı yaklaşık 7.500 satıra çıktı, tüm dosyalar 1.000 satırın altında tutuldu
2. Gün – Özellik genişletme
- Testler sırasında pencerenin açılması sorununu çözmek için
--headless modu eklendi
- Pencere yeniden boyutlandırma, uyumluluk, performans ve yazı tipi render etme iyileştirildi
- İş akışı, web sitesi ekran görüntülerini paylaşmak ve Codex'in bunları yeniden üretmesini sağlamak üzerine kuruldu
- Kodun büyük bölümünü ajan yazdı, insan ise inceleme ve onay görevini üstlendi
3.~4. Gün – Tamamlama ve çapraz platform desteği
- Kaydırma, hata ayıklama günlükleri, geri düğmesi gibi tarayıcı için temel özellikler eklendi
- macOS ve Windows desteği geliştirildi ve testlerden geçti
- CI entegrasyonu ve sürüm yapısı tamamlandı, toplam geliştirme süresi yaklaşık 72 saat oldu
Sonuçlar ve kod istatistikleri
- Nihai kod tabanı yaklaşık 20.150 satırdan ve 72 dosyadan oluşuyor
- Başlıca dosyalar arasında
layout, style, platform, browser modülleri yer alıyor
- Cargo.lock boş, yani harici Rust paketi olmadan tamamen bağımsız çalıştırılabiliyor
- GitHub üzerinden CI ile derlenmiş ikili dosyalar ve kaynak kod doğrudan indirilebiliyor
Başlıca dersler
- Bir insan + bir ajan kombinasyonu, binlerce ajan kullanmaktan daha verimli
- Tek bir ajan, uzun süre boyunca tek bir kod tabanıyla çalışarak gerçek ilerleme sağlayabiliyor
- Her insanın kendi ajanına sahip olduğu bir yapıyla ölçeklenme potansiyeli var
- Yavaşlamak, ironik biçimde daha hızlı ve daha iyi sonuçlar doğurabiliyor
- Ajanı yöneten insanın rolü, sistem tasarımından daha önemli olabilir
- Sonuç olarak, “Birden fazla ajanı devreye sokmak geliştirmeyi hızlandırır mı?” sorusuna karşılık
tek bir insan-ajans iş birliğinin daha gerçekçi ve daha verimli olabileceğini gösteren bir örnek
4 yorum
Ben pek bilmiyorum da, Hacker News yorumlarında geçen
simon의 블로그nasıl bir blog da sürekli anılıyor acaba...?Simon Willison'ın yazdığı blog gönderisinin Hacker News'te sık anılmasının nedeni muhtemelen şunlar:
2025'te Hacker News'te en popüler olan bloglar arasında 1. sıradaki blog bu. İtibarı bir yana, yayımlanan yazı sayısı da oldukça fazla olduğu için, sıradan bir Hacker News kullanıcısının en sık ziyaret ettiği bloglardan biri olarak doğal biçimde bir ölçüt kabul edildiğini düşünüyorum.
Hacker News görüşleri
Bence bu, Cursor’un FastRender’ından çok daha iyi bir kod üretimli tarayıcı demosu
Yaklaşık 20 bin satır Rust ile çok daha küçük; görüntü ve metin render etmede yalnızca sistem kütüphanelerini kullanıyor ve kodu da okunması kolay
Örneğin flexbox uygulama koduna bakınca net şekilde görülüyor
Blogumu render eden bir ekran görüntüsü da paylaştım; CSS gradient’leri ve SVG ikonları iyi işliyor ama PNG’de başarısız oluyor
HTML+CSS render eden bir tarayıcının paralel ajan gösterimi için mükemmel bir görev olduğunu düşünmüştüm, ama tek bir kodlama ajanıyla bile bunun mümkün olması şaşırtıcı
Önemli olan sadece çok fazla token harcamak değil, ajanları etkili biçimde nasıl kullanacağını bilmek
Ben de birkaç gün sonra terk ettiğim birçok proje ürettim. Ajanlar geri bildirim olmadan sadece söyleneni yaptığı için, yanlış yöne gittiklerinde aslında daha derin bir çukur kazıyorlar
Claude alakasız bir yöne gitse bile, doğru ajan yapısı varsa yeniden toparlanabiliyor
Şu anda değerlendirici, araştırmacı ve uygulayıcı ajanları ayırdığım bir deney yürütüyorum
Puan bazlı olarak testleri genişletiyor veya başarısızlık nedenlerini araştırmalarını sağlıyor, iyileşme yoksa commit’i atıyorum
Böyle bir yapı kod kalitesini yönetmek açısından çok daha avantajlı
Kodun ucuz ve atılabilir olduğu bir çağda, iş akışının kendisinin değişmesi gerekiyor
1 kişi + 1 ajanın, 5 milyon dolar ve 1,6 milyon LOC’lik bir tarayıcıyı yendiği bir “David vs Goliath” hikayesi gibi hissettiriyor
Yapay zeka hâlâ bir kara kutu; herkes deney yaparak yönünü bulmaya çalışıyor
2026’nın üzerinden daha bir ay geçti ama bundan sonra ne tür deneyler çıkacağını görmek heyecan verici
Simon düzenli olarak HN’in 2026 tahmin başlığını gözden geçirse eğlenceli olabilir
3 günlük bir sınır koyup, Rust üçüncü taraf crate’leri olmadan yalnızca işletim sisteminin varsayılan kütüphanelerini kullanarak X11/Windows/macOS desteği sağlama kuralı koydu
Yaklaşık 20 bin LOC ile tamamladı; bunun 14 bin satırı motor, 6 bin satırı ise platform destek kodu
Kaynak kodu ve ikilileri paylaştı
Şimdi ise makine tarafından okunabilir test suite’leri sayesinde çok daha verimli
Eskiden IE’nin davranışı fiili standart gibiydi; şimdi Google, Apple ve diğerleri standardizasyona katkı veriyor, bu yüzden durum çok daha iyi
İşlevsellikten bağımsız olarak, böyle bir kod tabanının güvenlik denetimi nasıl olurdu merak ediyorum
Rust yardımcı olur ama sadece dilin sağladığı garantilerin yeterli olup olmadığından emin değilim
Rust yalnızca temel bellek hatalarını engeller; yerel dosyalara erişim gibi şeyleri engellemez
JS motoru olmadığı için veri sızdırmak zor, ama denetlense ciddi açıklar çıkması muhtemel görünüyor
Topluluk browserBench’i bekliyordu; sonunda başlamasına sevindim
Tarayıcılar en karmaşık yazılımlardan biri, bu yüzden böyle bir girişim sınır değerlendirmesi için bir referans noktası olacak
20 bin satırla bir tarayıcı yapmak pek aklıma yatmıyor
Sadece zlib bile 12 bin satır; bir şey eksik gibi geliyor
Acaba sadece işletim sisteminin render çağrılarını mı kullanıyor?
Hangi kütüphanelerin kullanıldığı README’de belirtilmiş
Ben çalıştırınca render oldukça dağınık göründü
Link renkleri ve alt çizgiler tutarlı değil, Windows’ta geri düğmesi de çalışmıyor
Yine de HN ana sayfasını ve Simon’un blogunu oldukça iyi render ediyor
Amaç, daha az LOC ile benzer işlevselliği hayata geçirmekti
Varsayılan stylesheet olmadığı için link renkleri tutarlı değil
Windows 11’de geri düğmesi çalışıyor. Eğer Windows 10 kullanıyorsanız sebep bu olabilir
Simon’un blogunu render etmek, AI tarayıcılarının temsilî hedefi haline gelecek gibi görünüyor
Ama şimdilik gerçek bir tarayıcıdan çok bir renderer seviyesinde
Servo gibi projelerde yapay zekanın API implementasyonu tarafını tamamlaması daha etkileyici olurdu
Yine de Cursor’un denemesinden daha iyi ve en azından “derleniyor” olması asgari bir ilerleme
Bunu tek başına yapsaydı ne kadar sürerdi merak ediyorum
Ajanın katkısını anlayabilmek için, o rehbere giren uzmanlığın derinliğini bilmek isterdim
Rust biliyorum ama X11, macOS ya da Windows API’lerini bilmiyordum; o yüzden başlamam bile zor olurdu
Yine de test, altyapı ve tasarım konusunda çok deneyimim var, bu da ajanla işbirliği yapmamda yardımcı oldu
bu projenin 2000 ölçütlerine göre 4,58 insan-yılı, 610 bin dolar,
2025 ölçütlerine göre ise 5,6 yıl, 1,38 milyon dolar büyüklüğünde olduğu tahmin ediliyor
Bu yazıyı ilginç kılan şey, ortaya çıkan üründen çok yapım süreci ve kısıtlar üzerine odaklanması
Çoğu yazı sonuç ürününe veya yazara odaklanırken, bu yazı süreç odaklı bir içgörü sunuyor
Bu yüzden gerçekten zor kısmın ne olduğunu ve sürecin hangi noktasında yanlış yapıldığını araştırmanın daha anlamlı olduğunu hissettim
Etkileyici bir çalışma
Erişilebilirliği (Accessibility) Rust bağımlılığı olmadan nasıl uygulayabileceklerini merak ediyorum
Windows/macOS tarafında UI Automation ve NSAccessibility ile mümkün, ama X11’de