- Wordgard ब्राउज़र में rich text editor बनाने के लिए एक open source JavaScript लाइब्रेरी है, जो ProseMirror के निर्माता द्वारा बनाए गए नए editor foundation पर आधारित है
- यह free-form HTML editor की तुलना में document structure control पर ज़्यादा ध्यान देती है, जिससे developer यह बारीकी से तय कर सकते हैं कि किस तरह का content और semantic structure अनुमति होगी
- जटिल custom editor को ध्यान में रखते हुए यह schema-based model और extension-केंद्रित संरचना प्रदान करती है, और ज़रूरत के अनुसार फीचर्स को बदला या संशोधित किया जा सकता है
- accessibility, internationalization, RTL·bidirectional documents, structured content, functional style, और collaborative editing जैसी आवश्यकताओं को editor foundation स्तर पर संभालती है
- MIT लाइसेंस वाला permissive open source प्रोजेक्ट है, लेकिन bug reports का स्वागत करता है और Pull request स्वीकार नहीं करता
document structure को नियंत्रित करने वाला editor foundation
- Wordgard ब्राउज़र के भीतर rich text editor लागू करने के लिए एक open source JavaScript लाइब्रेरी है
- यह free-form HTML editor नहीं, बल्कि developer को समर्थित content के प्रकार और document structure को सटीक रूप से नियंत्रित करने वाला semantic rich text editor system है
- यह document structure को बारीकी से परिभाषित करने और custom document elements बनाने के लिए schema-based approach प्रदान करता है
- programming interface को सामान्य उपयोगिता और flexibility को ध्यान में रखकर डिज़ाइन किया गया है, ताकि इसे बड़े requirements वाले custom editor की foundation के रूप में इस्तेमाल किया जा सके
extensibility, accessibility, और collaboration features
- editor की अधिकांश सुविधाएँ extension के रूप में लागू की गई हैं, इसलिए यदि वे आवश्यकता के अनुसार न हों तो उन्हें बदला या संशोधित किया जा सकता है
- accessibility features screen reader users, केवल keyboard इस्तेमाल करने वाले users, और mobile device environments को ध्यान में रखती हैं, साथ ही UI internationalization भी सपोर्ट करती हैं
- दाएँ से बाएँ लिखी जाने वाली भाषाओं के लिए content और interface दोनों में direction awareness सपोर्ट करती है, और bidirectional content तथा RTL documents को संभाल सकती है
- document tree में tables, nested lists, captions वाले figure, और custom structures जैसे structured content शामिल हो सकते हैं
- system का बड़ा हिस्सा स्पष्टता और testability के लिए functional style में लिखा गया है
- कई users एक ही document को एक साथ संपादित कर सकते हैं और concurrent edits को merge करने वाली collaborative editing को सपोर्ट करता है
लाइसेंस और प्रोजेक्ट संचालन
- लाइसेंस MIT है, और development code.haverbeke.berlin पर चल रहा है
- bug reports का स्वागत है, लेकिन Pull request स्वीकार नहीं किए जाते
- प्रोजेक्ट चर्चा और सवालों के लिए forum उपयोग करने की सिफारिश की जाती है, और bugs को issue tracker में रिपोर्ट करना चाहिए
1 टिप्पणियां
Hacker News की राय
ज़्यादातर लोग शायद “क्यों?” जानना चाहेंगे। यह दस्तावेज़ ProseMirror से अंतर बताता है, इसलिए उस सवाल का सबसे नज़दीकी जवाब यही लगा: https://wordgard.net/docs/prosemirror/
ध्यान देने वाली एक बात यह है कि कोई upgrade path नहीं है। ProseMirror के साथ कई concepts साझा हैं, लेकिन migrate करने के लिए काफी काम करना पड़ेगा। Obsidian CodeMirror-आधारित है, इसलिए शायद नहीं बदलेगा, लेकिन tiptap.dev जैसी जगहों पर असर हो सकता है
@merijn, जानना चाहूँगा कि क्या आप समझा सकते हैं कि switching cost उठाने लायक Wordgard क्यों है
संशोधन: देखा कि Marijn के निजी ब्लॉग में कई मुद्दों पर बात की गई है, और बेहतर context के लिए https://marijnhaverbeke.nl/blog/wordgard-0.1.html को HN पर submit किया है
लेकिन ब्लॉग पोस्ट में बताए मुताबिक, ProseMirror में जिन कुछ समस्याओं से सामना हुआ, उनसे बचने के लिए काफी नई design insights जमा हो गई थीं, इसलिए नया iteration बनाना चाहा
वेबसाइट के docs section में ब्लॉग पोस्ट का link जोड़ दूँगा
और नाम merijn नहीं, marijn है
landing page पर “क्या” से ज़्यादा “क्यों” की जानकारी चाहिए लगती है
editor से अलग, design करने वाले artist ने सच में impress किया। बहुत polished और तुरंत ध्यान खींचने वाला: https://kamilastankiewicz.com/
लगभग 25 साल पहले स्कूल newspaper के लिए PHP-Nuke site चलाने के लिए WYSIWYG editor सेट करना बड़ी बाधा था, और याद है कि आखिरकार उसे पार कर लिया था
ऐसी functionality के लिए 15 साल पहले ही पास हो चुका कोई web standard implementation न होना समझ से बाहर है
यह हैरान करने लायक बढ़िया दिखता है
हाल ही में कुछ ऐसा ही ढूँढ रहा था और आखिरकार खुद बना लिया, जिसमें block-based Operational Transformation (OT) से local server पर sync किया और remote server के लिए diff-based sync जोड़ा
system guide पढ़ते हुए लगातार सिर हिला रहा हूँ। समानताएँ और contrasts देखकर काफी validation जैसा महसूस हो रहा है
एक बहुत basic area है जहाँ हर editor fail हुआ है: क्या iPhone से editor के अंदर पूरा वाक्य type किया जा सकता है
Wordgard यह test पास नहीं कर पाया। autocorrect या keyboard suggestions से आने वाला input निगल लिया जाता है, और partially typed या गलत spelling वाले words delete हो जाते हैं
mobile Safari और Android Chrome अपने desktop sibling browsers के विपरीत बहुत अजीब behavior करते हैं, और standards को भी काफी ढीले ढंग से लेते हैं। इसलिए ठीक से काम कराने के लिए अक्सर लंबी tail वाले workaround code की ज़रूरत पड़ती है
Wordgard भी आखिरकार वहाँ पहुँचेगा, लेकिन first release से पहले focus architecture पर था
selection नहीं होता, autocorrect टूट जाता, text पर tap करने से cursor move नहीं करता, input रुक जाता, element focus खो दे फिर भी keyboard गायब नहीं होता—ऐसा सब था
पिछले दशकों में web में सही rich text element जोड़ने की कई कोशिशें हुई हैं, लेकिन पता नहीं सब क्यों fail हुईं। शायद यह बड़ा, complex और बिना reward वाला काम है
proper native rich text support web की बड़ी blind spots में से एक है। native platforms ने यह समस्या दशकों पहले हल कर ली थी
करीब 6 साल पहले @ style remote resource autocomplete, यानी दूसरे users या documents को reference करने की capability, research और implement करने में बहुत मेहनत की थी। इस editor का extension model ProseMirror का evolved रूप लगता है
अच्छा होगा अगर यह dinosaur example के आधार पर खुद बनाने वाली चीज़ न होकर built-in default feature हो। ऐसी text editor library इस्तेमाल करते समय मेरा number one use case यही होता है, और उसके बाद WYSIWYG
first-class mobile support भी उतना ही ज़रूरी है
ProseMirror को TipTap के साथ इस्तेमाल करते समय दिक्कत यह थी कि document के JSON representation को programmatically manipulate करके data extract करना बहुत बार करना पड़ता है। इसके लिए statically typed representation चाहिए होता है, या कम से कम strongly preferred हो जाता है
ProseMirror में इसके लिए कोई खास mechanism नहीं है, इसलिए आखिरकार दो में से एक करना पड़ा
Wordgard अभी try नहीं किया है, इसलिए नहीं जानता कि यह इस समस्या को handle करता है या नहीं, लेकिन यह एक pain point है जिसे solve किया जाए तो अच्छा होगा
website का artwork खूबसूरत है। ध्यान खींचने का यह तरीका जैसे फिर से भूला हुआ याद आ गया हो
web पर WYSIWYG मुझे पसंद नहीं। forum post को लंबा और tedious तरीके से format करो और tab बंद कर दो तो सब गायब
local text editor इस्तेमाल करके web form में Ctrl+V से paste करना पसंद करता हूँ। Markdown हो तो ऐसा किया जा सकता है
गलती से tab बंद करने के बाद पहली बार यह अनुभव हुआ तो सच में सुखद surprise था
point यह है कि यह tech problem नहीं, product problem है
notes app में मैंने WYSIWYG इस्तेमाल करने का फैसला किया, क्योंकि split view के लिए जगह नहीं है और मैं सिर्फ raw Markdown भी नहीं देखना चाहता था
WYSIWYG से सबसे बड़ी शिकायत यह है कि वह बाधा बन सकता है। जैसे verbatim block बना दिया और कभी-कभी उस block से बाहर निकल ही नहीं पाते। Teams की बात कर रहा हूँ। शायद इसी वजह से LaTeX इतना पसंद था
काफी समय बाद असली art देखकर सच में खुशी हुई। अच्छा लग रहा है