Markdown sizi geride tutuyor
(newsletter.bphogan.com)- Geliştirici dokümantasyonu yazımında yaygın biçimde kullanılan Markdown, sadeliği ve erişilebilirliği sayesinde popüler olsa da, yapısal ifade gücünün yetersizliği nedeniyle büyük ölçekli teknik dokümanlarda sınırlamalara sahiptir
- Markdown, örtük bir tip sistemi gibi çalışır; bu yüzden tutarlılık ya da şema doğrulaması mümkün değildir ve farklı Markdown türevleri (flavor) arasında uyumluluk sorunları da bulunur
- MDX gibi genişletilmiş sözdizimleri ifade gücünü artırsa da, sistemler arasında taşınabilirlik ve standardizasyon eksikliği nedeniyle aksine karmaşıklığı artırır
- reStructuredText, AsciiDoc, DocBook, DITA gibi alternatifler açık yapı ve anlamsal işaretleme (semantic markup) sunarak yeniden kullanılabilirliği ve makine tarafından yorumlanabilirliği güçlendirir
- Küçük ölçekli dokümanlar için Markdown yeterli olsa da, büyük ölçekli ve çok kanallı doküman yönetimi için yapılandırılmış biçimlere geçiş gereklidir
Markdown'ın yapısal sınırları
- Markdown, insanın kolay okuyabildiği basit bir sözdizimiyle GitHub ya da statik sitelerde iyi görünen dokümanlar üretmeyi sağlar
- Ancak içeriğin anlamını tarif edemediği için makinenin anlayabileceği yapısal bilgi yetersiz kalır
- Arama motorları, LLM'ler, IDE'ler ve yapay zeka ajanları dokümanın anlamsal yapısından yararlanır; ancak Markdown yalnızca sınırlı HTML etiketleri üretir
- Markdown, platforma göre değişen sözdizimi farkları nedeniyle yeniden kullanımda ya da içerik birleştirmede tutarsızlık sorunları yaratır
- Sonuç olarak Markdown, en düşük ortak payda düzeyinde bir biçimdir ve karmaşık doküman yönetimi için uygun değildir
Markdown'ın örtük tip sorunu
- Markdown, açık bir şema ya da tip tanımı olmayan bir biçimdir; bu nedenle aynı başlık ya da liste bağlama göre farklı anlamlar taşıyabilir
- Birçok Markdown türevi (flavor) bulunduğundan, araçlar arasında render farkları oluşur
- Örneğin bazı araçlar dipnotları desteklerken, diğerleri bunları yok sayar
- MDX, React bileşenleri ekleyerek ifade gücünü genişletir; ancak sistemler arası uyumluluk sorunları nedeniyle taşınabilirliği düşüktür
- Bu tür genişletmeler Markdown'ın sınırlarını aşma çabası olsa da, standartlaşmamış geçici çözümlerden öteye gitmez
Anlamsal işaretlemenin önemi
- Anlamsal işaretleme, içeriğin biçimini değil anlamını tanımlar
- Örneğin “adım (step)” ile “liste öğesi” görsel olarak aynı olsa da anlam olarak farklıdır
- HTML5,
<section>,<article>,<aside>gibi anlam temelli etiketler ekleyerek yapısal ifadeyi güçlendirmiştir - Anlamsal işaretlemenin temel avantajları
- Dönüştürme ve yeniden kullanım: Aynı içerik HTML, PDF, ePub gibi farklı biçimlere dönüştürülebilir
- Makine tarafından yorumlanabilirlik: LLM'ler ya da ajanlar yapıyı açık biçimde algılayarak daha doğru yanıtlar verebilir
- Markdown bu tür yapısal bilgileri sağlayamadığı için, son işlem ya da dönüşüm sırasında bilgi kaybı yaşanır
Alternatif biçimlerin karşılaştırması
- reStructuredText
- Python ekosistemindeki Sphinx'te kullanılan bir biçimdir; directive ve role yapılarıyla yapısal anlam ifade eder
- Kod blokları, notlar (
note), çapraz başvuru (:ref:) gibi açık yapısal öğeleri destekler - Büyük ölçekli teknik dokümanlar için uygundur ve HTML ile PDF üretimini destekler
- AsciiDoc
- attribute, koşullu içerik ve include özellikleri sunan bir anlamsal metin biçimidir
NOTE,WARNINGgibi uyarılarla birlikte UI öğeleri, kısayol gösterimleri gibi teknik dokümantasyona özel ifadeleri destekler- AsciiDoctor ile HTML, PDF, ePub, DocBook gibi biçimlere dönüştürülebilir
- DocBook (XML)
- Teknik yayıncılık için XML tabanlı bir modeldir ve
<command>,<note>,<xref>gibi anlam taşıyan etiket sistemleri sunar - Sözlükçe, dizin, UI öğeleri, fonksiyon adları gibi uzman dokümanlarda gerekli etiketleri içerir
- XSLT stylesheet'leri aracılığıyla farklı çıktı biçimlerine dönüştürülebilir
- Büyük ölçekli doküman yapısı doğrulaması ve indeks üretimi için avantajlıdır
- Teknik yayıncılık için XML tabanlı bir modeldir ve
- DITA (Darwin Information Typing Architecture)
- Kurumsal teknik dokümantasyon standardı olarak kullanılan modüler XML tabanlı bir yapıdır
- Konu tabanlı XML mimarisi ile
<task>,<step>gibi süreçsel yapıları açıkça tanımlar - İçerik yeniden kullanımı (
conref), filtreleme, çok kanallı yayıncılık gibi alanlarda kurumsal doküman yönetimi standardı olarak kullanılır - DITA Open Toolkit ile render ve dönüşüm otomasyonu desteklenir
XML rahatsız edici görünse de neden gerekli?
- Markdown hafiftir, ancak yapı, standart ve tutarlılıktan yoksun geçici bir çözümdür
- Markdown'a MDX, eklentiler ve özel script'lerle karmaşıklık ekliyorsanız,
uzun vadede doğrudan yapılandırılmış bir biçim benimsemek daha istikrarlıdır
Peki ne yapılmalı?
- README ya da tek seferlik dokümanlar gibi küçük ölçekli belgeler için Markdown yeterlidir; ancak
büyük ölçekli, yeniden kullanılabilir ve çok kanallı dokümantasyon için reStructuredText, AsciiDoc, DocBook ve DITA daha uygundur - Planlama dokümanları, geliştirici dokümanları, yeniden kullanım ve büyük ölçekli yönetim gerekiyorsa reST/AsciiDoc'tan başlayıp ardından DocBook/DITA değerlendirilebilir
- En zengin yapısal özelliklere sahip biçimi kaynak olarak kullanıp, gerekirse Markdown'a dönüştürmek daha doğru bir yaklaşımdır
- Markdown, çıktı biçimi olarak kullanışlıdır; ancak tek gerçek kaynak (source of truth) olarak kullanıldığında yapısal olarak genişlemesi zordur
- En iyi yaklaşım, kaynağı anlamsal yapısı zengin bir biçimde tutup Markdown'ı aşağı akış çıktısı için kullanmaktır
7 yorum
rst XML tabanlı bir format mı? Bunu ilk kez duyuyorum. Özet tuhaf.
Özet açısından diğer XML formatlarıyla birlikte değerlendirip seçim ölçütlerinden söz ederken başlığın o şekilde yazılmış gibi görünüyor.
Orijinal metne uygun olacak şekilde düzelttim.
Gerektiğinde Markdown içinde HTML kullanıp üstüne
mermaidekleyince aşağı yukarı oluyor.. ama onun ötesi, sanki belge için belge işi yapmaya dönüşüyor gibiYapay zekadan önce insan gelir. Yazdığımı çalmayın. Semantik falan diyorsunuz.
Özel bir sözdizimi kullanılacaksa bunun için ayrıca bir öğrenme eğrisi oluşur; buna özel ayrıştırma araçları, görüntüleyici, editör vb. her şeyin de sorunsuz şekilde desteklenmesi gerekir.. O seviyedeyse, çoğu yapay zeka hizmetiyle sorunsuz bağlanabilen Google Docs ya da Notion kullanmak belki de daha iyidir
Hacker News görüşleri
Markdown’ın özü, diğer dillerde olmayan geniş destek görmesi Alternatiflerin çoğu ayrı araçlar gerektiriyor ve Markdown’ın zaten desteklendiği ortamlarda kullanılamıyor Hatta Google Docs bile gizli bir özellikle Markdown yapıştırmayı destekliyor Kusursuz olmasa da, avantajı “her yerde kullanılabilmesi” HTML, SGML’den daha basitti ama tarayıcılar destekleyince standart haline geldi; Markdown da zamanla gelişebilir Standardizasyondaki belirsizlik, özellik eksikliği ve uyumluluk sorunları HTML4 dönemine benziyor Tamamen değiştirmektense kademeli evrim daha gerçekçi bir yol gibi görünüyor
Markdown, her yerde HTML etiketleri içerebilir Resmî belgede de açıkça belirtiliyor Bu yüzden yazarın sözünü ettiği kısıt aslında yok
ya dagibi etiketler yazmak gerekecekse Markdown kullanmanın anlamı kalmaz Sonuçta cevap “HTML kullan” olacaksa Markdown’ın varlık nedeni ortadan kalkarÜniversitede fizik okurken makalelerimi LaTeX ile yazdım Kimya bölümü Word kullanıyordu; yani standart alanlara göre değişiyor TeX’in sürüm numarası, hedeflenen tamamlanmışlık düzeyini π değerine yaklaşacak şekilde ifade ediyor Mevcut sürüm 3.141592653 ve 47 yıldır istikrarlı biçimde korunuyor TeX wiki, Pi sürüm açıklaması bakılabilir CLI araçları için manpage formatı da faydalı
Markdown, minimum uygulanabilir ürün (MVP) gibi bir şey Öğrenmesi kolay ve render edilmemiş haliyle de okunaklı PDF üretimini AsciiDoc’tan Typst’e taşıdım; erişilebilirlik sorunlarını çözdü Ama hiçbir işaretleme dili yazının kalitesini kendi başına artırmaz Kalemi değiştirmek yazıyı daha iyi yapmaz
Bu yazının tonu, “Markdown LLM gelişimini engelliyor” iddiası üzerine kurulu Ama anlamsal zenginliğin otomatik olarak elde edilebileceği varsayımı gerçekçi değil Ekip içinde böyle şeylere zaman yok ve Markdown yeterli geliyor Semantik web tartışmalarında olduğu gibi, mesele sonunda veriyi kimin yöneteceğine çıkıyor
Blogumu Org-mode + Emacs ile yazıyorum Kod bloklarını bağlayıp belge içinde çalıştırabilme özelliğini özellikle seviyorum Blorgit, lazyblorg gibi platformları da kullandım ama kurulum zahmetli olduğu için doğrudan HTML’ye aktarım yapıp rsync ile sunucuya yüklüyorum Ruby betiğiyle indeks ekleyip yayımlıyorum Markdown’dan çok daha ifade gücü yüksek ve doğal
“Markdown’ın yapısı yetersiz” iddiasına kısmen katılıyorum ama ikili karşıtlıkla yaklaşılması rahatsız edici Bir format seçmeden önce ihtiyaç duyulan yapının ne olduğunu anlamak gerekirdi Bu yüzden biraz sinir bozucu ve tam olarak katılmak zor
DITA’nın Markdown alternatifi olarak sunulması tam anlamıyla alakasız bir iddia DITA, büyük ölçekli kurumsal XML sistemidir; amacı Markdown’la tamamen farklı Ancak 5 binden fazla kişinin olduğu, çok dilli ürün hatları gibi ortamlarda uygundur Markdown kullanılan bir senaryoda DITA asla uygun olmaz İkisi de zaman kaybı
Markdown’ı 10 yılı aşkın süredir kullanıyorum ve hâlâ gayet iyi çalışıyor Yazının iddiası tamamen yanlış değil ama Markdown kullanıcılarının hissettiği bir sorun da değil Gerekirse başka bir şey kullanılır Yine de başlığı güzel olduğu için 5 dakika kadar okudum
MyST’ten Markdown’ın bir türü diye söz edip ardından yeniden reStructuredText(rST) örneğini vermek tuhaf Oysa MyST’in amacı tam da rST’nin yerine geçmek Sözdizimi Markdown benzeri ama yapısal anlam, directive ve role gibi özelliklerin hepsini destekliyor Sphinx sorunu içinde de ilgili tartışma var
Bu aralar bu tür yazıları sıkça görüyorum.
Metin dosyaları, Markdown, daha yapılandırılmış formatlar...
Böyle değişirken tek bir doğru yok; doğru zamanda doğru formatı kullanmak yeterli.
Ayrıca her şeyi her zaman tek bir dosyada yapmaya çalışınca sorun çıkıyor; bu yüzden konuya göre sınıflandırmak ve sistematik hale getirmek kaçınılmaz.