Markdown आपको रोक रहा है
(newsletter.bphogan.com)- डेवलपर डॉक्यूमेंटेशन लिखने में व्यापक रूप से इस्तेमाल होने वाला Markdown अपनी सादगी और आसान पहुँच के कारण लोकप्रिय है, लेकिन संरचनात्मक अभिव्यक्ति की कमी की वजह से बड़े पैमाने के तकनीकी दस्तावेज़ों में इसकी सीमाएँ हैं
- Markdown एक implicit type system की तरह काम करता है, इसलिए consistency या schema validation संभव नहीं होती, और अलग-अलग Markdown flavor के बीच compatibility की समस्याएँ भी मौजूद हैं
- MDX जैसी extended syntax अभिव्यक्ति क्षमता बढ़ाती है, लेकिन सिस्टमों के बीच portability और standardization की कमी के कारण उल्टा जटिलता बढ़ा देती है
- reStructuredText, AsciiDoc, DocBook, DITA आदि explicit structure और semantic markup प्रदान करते हैं, जिससे reusability और machine interpretability मजबूत होती है
- छोटे दस्तावेज़ों के लिए Markdown पर्याप्त है, लेकिन बड़े पैमाने और multi-channel document management के लिए structured format की ओर जाना ज़रूरी है
Markdown की संरचनात्मक सीमाएँ
- Markdown इंसानों के लिए पढ़ने में आसान, सरल syntax के साथ GitHub या static site पर अच्छी दिखने वाली डॉक्यूमेंटेशन बना सकता है
- लेकिन यह content के meaning को व्यक्त नहीं कर पाता, इसलिए मशीन द्वारा समझी जा सकने वाली structural information की कमी रहती है
- search engine, LLM, IDE, AI agent आदि दस्तावेज़ की semantic structure का उपयोग करते हैं, लेकिन Markdown केवल सीमित HTML tag ही बनाता है
- Markdown में platform-specific syntax differences के कारण reuse या content integration के समय inconsistency की समस्या पैदा होती है
- नतीजतन Markdown lowest-common-denominator स्तर का format बनकर रह जाता है, जो जटिल दस्तावेज़ प्रबंधन के लिए उपयुक्त नहीं है
Markdown की implicit type समस्या
- Markdown explicit schema या type definition के बिना एक format है, इसलिए वही heading या list संदर्भ के अनुसार अलग अर्थ रख सकती है
- कई तरह के Markdown flavor मौजूद हैं, जिससे tools के बीच rendering differences पैदा होते हैं
- उदाहरण: कोई tool footnote को support करता है, जबकि दूसरा उसे ignore कर देता है
- MDX React component एम्बेड करके अभिव्यक्ति क्षमता बढ़ाता है, लेकिन systems के बीच compatibility की समस्या के कारण इसकी portability कम हो जाती है
- ऐसे extension Markdown की सीमाओं को पूरा करने की कोशिश तो हैं, लेकिन वे standardized न होने वाले अस्थायी workaround भर हैं
semantic markup का महत्व
- semantic markup content के रूप नहीं, बल्कि अर्थ का वर्णन करता है
- उदाहरण: “step” और “list item” दिखने में एक जैसे हो सकते हैं, लेकिन उनका अर्थ अलग होता है
- HTML5 ने
<section>,<article>,<aside>जैसे meaning-based tag पेश किए, जिससे structural expression मजबूत हुई - semantic markup के मुख्य लाभ
- conversion और reuse: एक ही content को HTML, PDF, ePub जैसे कई format में बदला जा सकता है
- machine interpretability: LLM या agent structure को स्पष्ट रूप से पहचानकर अधिक सटीक response दे सकते हैं
- Markdown ऐसी structural information नहीं दे पाता, इसलिए post-processing या conversion के दौरान information loss होता है
वैकल्पिक format की तुलना
- reStructuredText
- यह Python ecosystem के Sphinx में इस्तेमाल होने वाला format है, जो directive और role के जरिए structural meaning व्यक्त करता है
- code block, note, cross-reference (
:ref:) जैसे explicit structural elements को support करता है - बड़े पैमाने के तकनीकी दस्तावेज़ों के लिए उपयुक्त है और HTML तथा PDF generation को support करता है
- AsciiDoc
- यह attribute, conditional content, और include फीचर देने वाला एक semantic text format है
NOTE,WARNINGजैसे admonition, UI elements, shortcut notation जैसी तकनीकी दस्तावेज़ों के लिए विशेष अभिव्यक्तियाँ support करता है- AsciiDoctor के जरिए HTML, PDF, ePub, DocBook आदि में convert किया जा सकता है
- DocBook (XML)
- यह तकनीकी प्रकाशन के लिए XML-आधारित मॉडल है, जो
<command>,<note>,<xref>जैसे अर्थपूर्ण tag system प्रदान करता है - इसमें glossary, index, UI element, function name आदि जैसे विशेषज्ञ दस्तावेज़ों के लिए ज़रूरी tag शामिल हैं
- XSLT stylesheet के जरिए इसे अलग-अलग output format में बदला जा सकता है
- बड़े पैमाने के दस्तावेज़ structure validation और index generation में यह फायदेमंद है
- यह तकनीकी प्रकाशन के लिए XML-आधारित मॉडल है, जो
- DITA (Darwin Information Typing Architecture)
- यह enterprise technical documentation standard के रूप में इस्तेमाल होने वाली modular XML-based structure है
- topic-based XML architecture के रूप में
<task>,<step>आदि के जरिए procedural structure को स्पष्ट रूप से परिभाषित करती है - content reuse (
conref), filtering, multi-channel publishing जैसे enterprise document management standard के रूप में उपयोगी है - DITA Open Toolkit के जरिए rendering और conversion automation को support मिलता है
XML असुविधाजनक लगे, फिर भी इसकी ज़रूरत क्यों है
- Markdown हल्का है, लेकिन यह structure, standardization, और consistency से रहित एक अस्थायी समाधान है
- अगर आप Markdown में MDX, plugin, और custom script जोड़कर जटिलता बढ़ा रहे हैं,
तो लंबे समय में structured format को सीधे अपनाना अधिक स्थिर विकल्प है
तो फिर क्या करना चाहिए?
- README या one-off document जैसे छोटे दस्तावेज़ों के लिए Markdown पर्याप्त है, लेकिन
बड़े पैमाने, reuse, और multi-channel documentation के लिए reStructuredText, AsciiDoc, DocBook, DITA अधिक उपयुक्त हैं - अगर planning document, developer documentation, reuse, और large-scale management की ज़रूरत है, तो reST/AsciiDoc → DocBook/DITA क्रम में विचार करें
- सबसे समृद्ध संरचना वाले format को source के रूप में इस्तेमाल करना, और ज़रूरत पड़ने पर Markdown में convert करना बेहतर तरीका है
- Markdown output format के रूप में उपयोगी है, लेकिन source of truth के रूप में इस्तेमाल करने पर structural expansion कठिन हो जाती है
- मूल सामग्री को semantic structure से भरपूर format में रखना और Markdown को downstream output के लिए इस्तेमाल करना सबसे बेहतर है
7 टिप्पणियां
क्या rst, XML-आधारित फ़ॉर्मेट है? यह तो मैं पहली बार सुन रहा हूँ। सारांश अजीब है।
लगता है कि शीर्षक इस तरह लिखा गया था क्योंकि सारांश में इसे दूसरे XML formats के साथ जोड़कर चयन मानदंड की बात की गई थी.
मैंने इसे मूल पाठ के अनुसार ठीक कर दिया है.
अगर ज़रूरत हो तो Markdown में html लिखकर उस पर mermaid जोड़ दें, तो मोटे तौर पर काम चल जाता है.. लेकिन उसके आगे लगता है कि यह दस्तावेज़ के लिए दस्तावेज़ बनाने वाला काम बन जाता है
AI से पहले इंसान है। मैंने जो लिखा है उसे चुराओ मत। semantic वगैरह की बातें मत करो।
अगर कोई अलग तरह का syntax इस्तेमाल करना पड़े, तो एक और learning curve आएगी, dedicated parsing tools, viewer, editor वगैरह—इन सबका smooth support भी चाहिए होगा.. उस स्तर पर तो शायद Google Docs या Notion इस्तेमाल करना बेहतर हो, जिन्हें ज़्यादातर AI services के साथ आसानी से जोड़ा जा सकता है
Hacker News राय
Markdown की सबसे बड़ी ताकत यह है कि इसे दूसरे भाषाओं/फॉर्मैट्स की तुलना में बहुत व्यापक समर्थन मिलता है ज़्यादातर विकल्पों के लिए अलग टूल चाहिए होते हैं, और जहाँ Markdown पहले से समर्थित है वहाँ उनका इस्तेमाल नहीं हो सकता Google Docs भी एक छिपे हुए फीचर के रूप में Markdown paste को सपोर्ट करता है यह पूरी तरह परफेक्ट न भी हो, तो भी “इसे लगभग हर जगह इस्तेमाल किया जा सकता है” इसकी बड़ी खासियत है जैसे HTML, SGML से सरल था लेकिन ब्राउज़र सपोर्ट के कारण मानक बन गया, वैसे ही Markdown भी समय के साथ विकसित हो सकता है standardization की अस्पष्टता, फीचर की कमी, compatibility समस्याएँ आदि HTML4 के दौर जैसी लगती हैं इसे पूरी तरह बदलने के बजाय क्रमिक विकास ज़्यादा व्यावहारिक रास्ता लगता है
Markdown में कहीं भी HTML tag शामिल किए जा सकते हैं आधिकारिक दस्तावेज़ में भी यह स्पष्ट रूप से लिखा है इसलिए लेखक द्वारा कही गई सीमाएँ वास्तव में मौजूद नहीं हैं
याजैसे tag लिखने पड़ें, तो Markdown इस्तेमाल करने का मतलब ही क्या रह जाता है आख़िर अगर जवाब यही है कि “HTML लिख लो”, तो Markdown के अस्तित्व का कारण ही खत्म हो जाता हैविश्वविद्यालय में physics पढ़ते समय मैंने LaTeX में शोधपत्र लिखे थे chemistry विभाग Word इस्तेमाल करता था, यानी अलग-अलग क्षेत्रों के अपने-अपने मानक हैं TeX का version number अपने लक्ष्यपूर्ण perfection को π के मान के क़रीब लाकर व्यक्त करता है मौजूदा version 3.141592653 है, और यह 47 साल से स्थिर बना हुआ है TeX wiki, Pi version explanation देखें CLI tools के लिए manpage format भी उपयोगी है
Markdown किसी minimum viable product (MVP) जैसा है इसे सीखना आसान है, और render न होने पर भी पढ़ना आसान रहता है PDF बनाने का काम मैंने AsciiDoc से Typst में शिफ्ट किया, क्योंकि उसने accessibility समस्या हल कर दी लेकिन कोई भी markup language अपने-आप लेखन की गुणवत्ता नहीं बढ़ाती सिर्फ़ पेन बदल लेने से लेखन बेहतर नहीं हो जाता
इस लेख का स्वर यह है कि “Markdown LLM की प्रगति को रोकता है” लेकिन यह मान लेना अवास्तविक है कि semantic richness अपने-आप हासिल हो जाएगी टीम के अंदर वैसे काम के लिए समय ही नहीं होता, और Markdown काफ़ी है semantic web की बहस की तरह, आख़िर सवाल यही है कि डेटा को मेंटेन कौन करेगा
मैं अपना ब्लॉग Org-mode + Emacs में लिखता हूँ code block को जोड़कर दस्तावेज़ के भीतर ही execute करने की सुविधा मुझे खास तौर पर पसंद है Blorgit, lazyblorg जैसे platform भी इस्तेमाल किए, लेकिन setup झंझट भरा लगा, इसलिए सीधे HTML export करके rsync से सर्वर पर अपलोड करता हूँ Ruby script से index जोड़कर deploy करता हूँ यह Markdown की तुलना में कहीं ज़्यादा अभिव्यंजक और स्वाभाविक है
“Markdown में संरचना की कमी है” इस दावे से मैं आंशिक रूप से सहमत हूँ, लेकिन इसका द्वैतवादी नज़रिया खटकता है फॉर्मैट चुनने से पहले ज़रूरी संरचना को समझना चाहिए था इसलिए यह बात थोड़ी असहज भी लगती है और पूरी तरह सहमत होना भी मुश्किल है
DITA को Markdown के विकल्प के रूप में पेश करना पूरी तरह गलत दिशा में जाने जैसा है DITA बड़े enterprise के लिए बना XML system है, और उसका उद्देश्य Markdown से बिल्कुल अलग है यह केवल 5,000 से अधिक लोगों वाली, बहुभाषी product line जैसी परिस्थितियों में ही उपयुक्त है जहाँ Markdown फिट बैठता है, वहाँ DITA बिल्कुल उपयुक्त नहीं होगा दोनों ही समय की बर्बादी हैं
मैं Markdown को 10 साल से ज़्यादा समय से इस्तेमाल कर रहा हूँ, और यह अब भी अच्छी तरह काम करता है लेख की बातें पूरी तरह ग़लत नहीं हैं, लेकिन Markdown उपयोगकर्ताओं को आम तौर पर यही समस्याएँ महसूस नहीं होतीं ज़रूरत हो तो कोई और चीज़ इस्तेमाल की जा सकती है फिर भी शीर्षक अच्छा था, इसलिए लगभग 5 मिनट पढ़ लिया
MyST को Markdown का एक रूप बताकर फिर reStructuredText(rST) का उदाहरण देना अजीब लगा MyST का मकसद ही rST का विकल्प बनना है इसका syntax Markdown जैसा है, लेकिन यह structural meaning, directive, role आदि सब सपोर्ट करता है Sphinx issue में भी इससे जुड़ी चर्चा है
आजकल इस तरह के बहुत से लेख दिख रहे हैं।
टेक्स्ट फ़ाइल, Markdown, और ज़्यादा structured format
इस तरह बदलाव होते रहते हैं, इसलिए कोई एक चीज़ सही जवाब नहीं है; सही समय पर सही format का इस्तेमाल करना चाहिए।
और अगर हमेशा एक ही फ़ाइल में सब कुछ करने की कोशिश करेंगे तो समस्या होगी, इसलिए विषय के मुताबिक़ वर्गीकृत और व्यवस्थित करना अनिवार्य है।