3 puan yazan GN⁺ 2025-10-27 | 1 yorum | WhatsApp'ta paylaş
  • D2, metin tabanlı olarak diyagram oluşturmaya imkân veren bir betik dili olup, kodla görsel materyalleri otomatik üretme yaklaşımı sunar
  • Kullanıcılar basit bir sözdizimiyle düğümleri ve ilişkileri tanımladığında, otomatik yerleşim motoru bunları görsel olarak konumlandırır
  • Belgedeki her kod parçacığı Playground'da doğrudan çalıştırılıp düzenlenebilir, böylece sonuçlar anında görülebilir
  • Ancak import kullanan bazı örnekler için, Playground'da doğrudan çalışmama istisnası vardır
  • Geliştiriciler için görsel dokümantasyon otomasyonu ve iş birliği verimliliğini artıran anlamlı bir araçtır

D2 Genel Bakış

  • D2, diyagramların kodla yazılabildiği bildirimsel bir betik dilidir; karmaşık yapıları metinle tanımlayıp otomatik olarak görselleştirme işlevi sunar
    • Kullanıcılar düğümleri, kenarları, grupları vb. basit bir sözdizimiyle ifade eder
    • Ortaya çıkan çıktı otomatik olarak hizalanır ve çeşitli stiller uygulanabilir
  • Bu dil, sürüm kontrolü ve iş birliği açısından avantajlıdır; kod incelemesine veya dokümantasyon otomasyon hatlarına kolayca entegre edilebilir

Playground Özellikleri

  • D2 belgelerindeki her kod parçacığı, Playground'da anında açılıp düzenlenebilen ve çalıştırılabilen etkileşimli bir özellik sunar
    • Kullanıcılar fareyi parçacığın üzerine getirdiğinde Playground bağlantısı etkinleşir
    • Bu sayede diyagramlar gerçek zamanlı olarak ayarlanabilir ve sonuçlar görsel biçimde doğrulanabilir
  • Ancak import ifadesi kullanan parçacıklar, harici kaynak gerektirdiği için Playground'da anında çalıştırılamama kısıtına sahiptir

Kullanım Anlamı

  • D2, görsel dokümantasyon otomasyonunu destekleyerek sistem tasarımı veya veri akışının kodla birlikte yönetilebilmesini sağlar
  • Geliştiriciler ve tasarımcılar aynı dille diyagram tanımlayabildiği için iş birliği verimliliği artar
  • Açık kaynak ekosisteminde kod tabanlı diyagram yazımının standartlaşmasını teşvik eden bir araç olarak değerlendirilir

1 yorum

 
GN⁺ 2025-10-27
Hacker News görüşleri
  • D2’nin ortak geliştiricisi olarak son dönemde animasyon özelliklerini genişletme fikri üzerinde çalıştığını söylüyor
    İlgili tartışmayı GitHub Discussion üzerinde açmış, görüş duymak istiyor

    • Son zamanlarda LLM kullanarak mimari kararları hızlıca görselleştiriyor
      Genelde mermaid kullanıyor ama D2’nin daha esnek bir arayüz sunup sunamayacağını merak ediyor
      LLM ile entegre tool calling özelliği ya da MCP gibi kullanıcı dostu arayüzler için plan olup olmadığını da sormak istiyor
    • D2’nin gerçekten harika bir araç olduğunu düşünüyor. Özellikle AWS ağ yerleşimini otomatikleştirme sırasında faydalı olmuş
      Çok sayıda nesneyi render ederken motorla uğraşmak zorunda kalmaması hoşuna gitmiş
      Ancak sdk/d2lib dokümantasyonu yetersiz olduğu için başta biraz deneme yanılma yaşamış
    • D2’yi birkaç aydır kullandığını ve öğrenmesinin kolay olmasına şaşırdığını söylüyor
      Ama gösterişli animasyonların mutlaka gerekli olduğunu düşünmüyor. Vurgu gerektiğinde sadece rengi değiştirmek daha sezgisel geliyor
    • Animasyonun amacını merak ediyor. Sunum sırasında her tıklamada öğeler eklenirse ve bağlantılar yumuşak biçimde vurgulanırsa güzel olacağını düşünüyor
      Ama metin değişikliği yüzünden tüm diyagramın oynaması dikkat dağıtıcı olabilir
      Ayrıca Swimlane diyagramları için resmi destek görmek istiyor
    • “Level 4 - dramatic mode ;)” diyerek dramatik SVG örneğini paylaşıyor
  • D2 ya da Penrose gibi araçları Python ile sararak veri odaklı diyagram betikleme denemeleri yapıyor
    Ancak çoğu bildirime dayalı araç “declare, then tweak” iş akışını desteklemediği için kullanışsız buluyor
    Penrose’ta düzeltme yapmak kolay ama sonuçlar rastgele ve öngörülemez olabiliyor

    • D2’de özel yerleşim ayarı sadece kapalı kaynak motorda mümkün
      Açık kaynak motorda mümkün değil ama Freehand özelliği ile kısmen ayarlanabiliyor
  • D2 sözdiziminin genel amaçlı programlama dillerinde ne kadar yakından uygulanabileceğini merak etmiş
    Python’da operatör aşırı yükleme kısıtları nedeniyle tamamen aynı DSL zor, ama string operatörü aşırı yükleme ile benzer bir şey denenebilir

    • Python’da da biraz hileyle a <- b | "edge" benzeri bir sözdizimi taklit edilebilir
      Ama bunu gerçekten kullanırsa hayalet olup musallat olacağını diye şaka yapıyor
    • Scala’da kullanıcı tanımlı operatörler mümkün olduğu için "x" --> "y" | "hello world" gibi bir DSL yapılabiliyor
      Yine de aşırı kullanmak iyi bir fikir değil
    • Ruby’de de x >> y << "label" biçiminde basit bir iç DSL yazılabiliyor
      Diagram sınıfında bir nesne modeli kurup buna bir renderer bağlamak da mümkün
  • mgmt projesinin ana yazarı olarak DAG’lerle çok çalıştığını söylüyor
    Düğümler ve kenarlar eklenip çıkarılırken görsel olarak kararlı ve animasyonlu geçişlere sahip bir diyagrama ihtiyaç duyuyor
    Graphviz’de her anlık görüntüde yerleşim oynadığı için rahatsız edici buluyor

    • d2’nin watch özelliğiyle dosyaları adım adım değiştiren basit bir script hilesi kullanılarak benzer bir etki elde edilebileceği belirtiliyor
  • D2’nin Sketch modu ile etkileşimli özellikleri gerçekten çok faydalı bulunuyor
    Tooltip’ler ve bağlantılar sayesinde diyagramların kullanım değeri ciddi biçimde artıyor

  • D2’yi uzun süredir kullandığını ve kurum içinde de aktif olarak önerdiğini söylüyor
    Ama kurumsal lisans ücretleri çok yüksek olduğu için yalnızca kişisel kullanımda kalmış
    TALA lisansının yıllık 3000 dolar, kişisel kullanımın da 120 dolar olması pahalı bulunuyor
    Helm chart ya da sistem açıklamalarını LLM’e verip otomatik diyagram üretme özelliğini ise devrim niteliğinde görüyor

    • Kişisel olarak TALA’nın çıktı kalitesini en zayıf buluyor. Çoğunlukla ELK motorunu kullanıyor
  • D2’nin ASCII render desteği son dönemde gündem olmuştu
    İlgili tartışma önceki gönderide sürüyor

  • D2 oldukça eski olmasına rağmen hâlâ mermaid kadar tanınmıyor gibi görünüyor
    Özellik bakımından çok daha güçlü olduğu için daha fazla kişi tarafından bilinmesini istiyorlar

    • Kendisi de D2’yi daha çok seviyor ama mermaid birçok platformda yerleşik destek sunduğu için pratik bir tercih olmaya devam ediyor
    • D2’yi ilk kez duyduğunu ve mermaid’e göre hangi yönlerden daha iyi olduğunu soruyor
  • Kendi yapay zeka platformları zo.computer üzerinde diyagram üretim aracı olarak D2’yi benimsemişler
    mermaid’den daha yüksek ifade gücü sunduğu için AI tabanlı görselleştirme için uygun buluyorlar

    • Bunun nasıl uygulandığını merak ediyor. D2 için MCP sunucusunu kendilerinin mi kurduğunu soruyor
    • “Ben, LinkedIn/X’i katlanılabilir hale getirdiğin için teşekkürler” diye selam gönderiyor
  • D2 harika olsa da PlantUML ya da mermaid karşısında belirleyici bir fark yaratan özelliği eksik görünüyor
    Hâlâ “diyagram kodunun killer app’i” denebilecek şeyi bekliyorlar

    • Bu tür araçlarla büyük kod tabanlarını görsel olarak keşfetmek mümkün olursa bunun büyük bir avantaj olacağı söyleniyor
    • D2’nin güçlü yanı bağımsız çalışan bir derleyici olması ve ASCII render desteği sunması
      npm kurulumu gerektirmemesi de beğeniliyor
      Ancak mermaid, Obsidian gibi araçlarla entegrasyon konusunda daha güçlü
    • “O killer program hangi özelliklere sahip olmalı?” sorusu ortaya atılıyor