
कई सालों तक मैं इस खुजली से त्रस्त था - सहयोग के लिए "संपूर्ण" पाठ संपादक खोजने की कोशिश कर रहा था। लेकिन सहयोग का समर्थन करने वाले किसी भी पाठ संपादक को नहीं, अरे नहीं, मेरा काम ढूंढना है (अच्छी तरह से, कम से कम देखो)
समूह पाठ के साथ खुले पाठ संपादकों को वास्तविक समय में (यानी न केवल सादे पाठ, बल्कि संरचित सामग्री)। इस प्रकार, इस लेख का ध्यान खुले स्रोत उपकरण और उन तकनीकों पर है जो वे चलाते हैं। यदि आपकी रुचियां व्यापक हैं, तो आप
संपादकों की लगातार अपडेट की गई सूची को संदर्भित कर सकते हैं।
So. मैं कई बार एक चट्टान से कूद गया और वास्तविक समय के सहयोग कार्यक्रमों के लगभग अंतहीन समुद्र में डुबकी लगाई। नीचे उड़ते हुए, इस स्फूर्तिदायक कुंड के तल में, मैं पहले से ही अच्छी तरह से जानता हूं। आमतौर पर यह नए निम्न-स्तर की प्रौद्योगिकियों और अनुसंधान में कुछ प्रारंभिक उत्साह और आश्चर्य (
लीप ) के साथ शुरू होता है, फिर भीड़ की भावना और उभरने की इच्छा (
हे, यहां बहुत गहरी है ) और लागू भाग का पता लगाने, और तब अवधि जब मेरे विचारों को वाक्यांश के साथ सबसे अच्छा वर्णन किया गया है: "क्या मैं वास्तव में इसके लिए इतना मूर्ख हूं?" (काफी संभावना), क्योंकि आमतौर पर प्रलेखन, डेमो और कोड काफी मेल नहीं खाते या समझ में नहीं आते हैं, सर्वर पर सहयोग घटक शुरू नहीं होता है और सीमा रेखा की स्थिति होती है जब दो से अधिक उपयोगकर्ता एक ही शब्द दर्ज करते हैं, और ... यह सब समाप्त होता है (
सामने आया, हवा के लिए हांफना )।
उसके बाद, विषय को फिर से उठाना मुश्किल है, अगले चरण एक विचार की सर्दी है, एक ड्रिल में, गंभीर मौसम की प्रतीक्षा कर रहा है, जब मैं आमतौर पर महीनों के लिए अर्द्ध-तैयार कोड काम करता हूं ... या साल।
जब तक हम फिर से मिलते हैं, एक संघर्ष-मुक्त प्रतिकृति डेटा प्रकार!
अंजीर। 1. लीपतथ्य यह है कि 2017 में मैं एक
शोध आलेख में वर्णित एक एल्गोरिथ्म (एक प्रकार का
CRDT ) की संभावनाओं के बारे में इतना उत्साहित था कि मैंने कई दिन बिताए और इसे
जावास्क्रिप्ट में लागू किया, केवल यह पता लगाने के लिए कि वैज्ञानिक लेख में एक सीमावर्ती स्थिति है जिस पर कोई समाधान नहीं दिया गया है (अच्छी तरह से ... लेकिन शायद सभी एक ही?)। उस समय, मैंने लेखक की ओर रुख किया, लेकिन कोई जवाब नहीं मिला, और पाया कि इस विशेष सीमा स्थिति को एक अन्य टीम द्वारा इसी तरह के एल्गोरिदम में माना जाता था, लेकिन नरक, कार्यान्वयन में इन सूक्ष्मताओं के कारण, शायद मैं इसे लिस्प - एसओ में स्थानांतरित कर सकता था। , बंद करो! यहाँ क्या हो रहा है? बेशक, मैं शोध कार्य से एक नया एल्गोरिथ्म शुरू नहीं करना चाहता और इसकी समस्याओं को ठीक करना चाहता हूं! मैं क्या कर रहा हूँ, मैं यहाँ कैसे आया?
चलो रिवाइंड करें!क्या मैं (और शायद आप भी, प्रिय पाठक) वास्तव में एक
प्लग-एंड-प्ले संपादक, एक तैयार उत्पाद है । जो वास्तविक समय के सहयोग की समस्या को हल करता है। जो कई जुड़े हुए उपयोगकर्ताओं को, हजारों मील की दूरी पर, कीबोर्ड पर कीज़ दबाकर एक संरचित दस्तावेज़ को संपादित करने और उनके स्क्रीन पर एक दूसरे के परिवर्तनों को देखने की अनुमति देता है। वह सब है।
हालांकि, संपादक मुश्किल हैं ... और मुझे ऐसा कोई उपकरण नहीं मिला।
अब तक।
वर्ष 2019
आ गया है (
खुजली बल के साथ वापस आ गई है ), और इस बार न केवल जादू संपादक दिखाई दिया, बल्कि वास्तव में लंबे समय से प्रतीक्षित विनिर्देश को पूरा करने के लिए
दो आवेदक भी। प्रारंभ में, मैं आपके साथ क्षेत्र में उड़ान भरना चाहता था और सहयोग के लिए लगभग सभी पाठ संपादकों को सूचीबद्ध
करता था , लेकिन यह
बहुत अधिक मूल्य नहीं जोड़ता है । इसके बजाय, दो संपादकों पर ध्यान केंद्रित करें जो "इस तरह से" बन सकते हैं।
लेकिन दो संपादक हैं, और आपको एक विकल्प बनाने की आवश्यकता है - यह उद्देश्यपूर्ण रूप से विचार करना अच्छा होगा कि कौन सा वास्तव में बेहतर अनुकूल है। मैं निम्नलिखित श्रेणियों के साथ एक गहरी वैज्ञानिक वर्गीकरण प्रणाली प्रदान करता हूं (अच्छे की एक मानक इकाई के रूप में कीवी का उपयोग करके):
- खुला लाइसेंस: 1 कीवी जोड़ता है
(यह भी एक बहिष्करण मानदंड है)
- छवि का समर्थन: 1 कीवी जोड़ता है

- तालिका का समर्थन: 1 कीवी जोड़ता है

- सूची का समर्थन: 1 कीवी जोड़ता है

- गणित का समर्थन: 1 कीवी जोड़ता है

- वास्तविक समय सहयोग का समर्थन: 1 qiwi जोड़ता है

- उपलब्ध सर्वर घटक : 1 कीवी

- रिमोट कर्सर और हाइलाइट समर्थन: 1 कीवी
(यानी आप अन्य उपयोगकर्ताओं के कर्सर देख सकते हैं)
- काम ऑफ़लाइन : 1 कीवी
(यह निर्धारित करना बहुत कठिन है)
- उत्पादन अनुभव : 1 कीवी

- मोबाइल सपोर्ट: 1 कीवी

इस तरह की स्कोरिंग प्रणाली के साथ, संपादक को अधिकतम 11 कीवी इकाइयां मिल सकती हैं। चलो शुरू हो जाओ!
सीकेडिटर ५
चित्र 2. CKEditor 5 इंटरफ़ेस (संभावित विकल्पों में से एक), स्रोतचलो CKEditor 5 के साथ शुरू करते हैं,
गुणवत्ता संपादकों की एक
बड़ी पंक्ति से नवीनतम संस्करण। वह सुंदर है। मुझे पता है, मुझे पता है कि यह एक मानदंड नहीं है, और यह वास्तव में कोई फर्क नहीं पड़ता (और हम भी सहमत नहीं हो सकते हैं), लेकिन मुझे सिर्फ इसकी सुंदरता के बारे में कहना था। तो, यह संपादक बहुत कीवी लेता है: यह जीपीएल (
यहां सीमाओं की कुछ चर्चा ) के तहत लाइसेंस प्राप्त है, (+1), छवियों, तालिकाओं, सूचियों (+3) का समर्थन करता है, गणित प्लगइन (+1) द्वारा समर्थित है और यह
वास्तविक समय सहयोग का भी समर्थन करता है। हटाए गए कर्सर और चयन (+2) के साथ
समय । CKEditor के रचनाकारों ने एक अद्भुत,
विस्तृत ब्लॉग पोस्ट लिखा
कि कैसे उन्होंने परिचालन परिवर्तनों का उपयोग करके
इसे विकसित किया ।
हालांकि, मुझे वास्तविक समय के सहयोग के लिए
आवश्यक सर्वर कार्यान्वयन नहीं मिला , और सभी दस्तावेज GPL के साथ संगत परियोजनाओं में भी उनकी क्लाउड सेवा और (भुगतान) घटक के लिए अनिवार्य आवश्यकता को इंगित करते हैं।
ऑफ़लाइन समर्थन का स्तर निर्धारित करना मुश्किल है , लेकिन ऐसा लगता है कि यह पूरी तरह से पूर्ण नहीं है (उदाहरण के लिए, संपादक थोड़े समय के लिए डिस्कनेक्ट किए गए कनेक्शन का सामना कर सकता है, लेकिन ऑफ़लाइन काम करने के कई दिनों तक नहीं)। शायद आधा कीवी? मोबाइल समर्थन पर भी यही लागू होता है, पूर्ण समर्थन (+0.5) पर भी काम होता है। और आखिरी क्षण, CKEditor निश्चित रूप से उत्पादन में उपयोग किया जाता है, लेकिन मुझे इसके आधार पर उत्पादों की सूची नहीं मिल पाई (+0.5)।
एक अच्छा संपादक, लेकिन एक सस्ती ओपन सोर्स सहयोग सर्वर की कमी वास्तव में निराशाजनक है।
पूरी रेटिंग: 8.5 / 11









एटलस्किट संपादक
अंजीर। 3. एटलसियन द्वारा एटलस्किट संपादकलगभग एक साल पहले,
एटलसियन ने ओपन सोर्स
एटलस्किट डिज़ाइन सिस्टम लॉन्च किया, और इसके साथ
बहुत सारे उपहार आए, जिसमें
प्रोसेमिरर पर आधारित एक पूर्ण विकसित, रेडी-टू-
यूज़ एडिटर शामिल
था ।
मुझे पहले से ही लगता है कि यह वह संपादक हो सकता है जिसकी हम तलाश कर रहे थे! यह अपाचे 2.0 लाइसेंस के तहत जारी किया गया है, कई के अनुसार, एक
बहुत ही अनुमित खुले स्रोत लाइसेंस (+1 कीवी) के रूप में। यह न केवल छवियों, तालिकाओं और सूचियों का समर्थन करता है, बल्कि असाधारण रूप से अच्छी तरह से उनका समर्थन करता है (+3 कीवी)! तालिकाओं का कार्यान्वयन, जिसमें अधिकांश संपादकों की कमी है, यहाँ उत्कृष्ट है:
अंजीर। 4. एटलस्किट संपादक में तालिकाओं का प्रबंधनदुर्भाग्य से, गणित का समर्थन नहीं किया गया है, लेकिन संपादक खुद प्रोसेमिरर पर आधारित है, इसलिए इसमें एक मौजूदा समाधान (+0.5) जोड़ने की समस्या नहीं होनी चाहिए। यह निश्चित रूप से दूरदराज के अभिशापों और चयनों (+2) के साथ वास्तविक समय के सहयोग का समर्थन करता है, यह मेरे द्वारा देखे गए समर्थन के सबसे अच्छे यूआई उदाहरणों में से एक है (उदाहरण के लिए, दूरस्थ कर्सर को अपने स्वयं के साथ अतिव्यापी होने पर अंधेरा हो जाता है, और अन्य महान कार्यान्वयन विवरण )। इसके अलावा, मेरे परीक्षण से, ऑफ़लाइन समर्थन बहुत ठोस (+1) लगता है - यह संभवतः
"केंद्रीय योग्यता" दृष्टिकोण के कारण है जो प्रोसेमिरोर सहयोग के लिए उपयोग करता है । वाह, हमें पहले से ही 7.5 कीवी, और कई और अंक मिले हैं! आगे बढ़ो!
दुर्भाग्य से, यह यहाँ है कि हम एक कठोर वास्तविकता के साथ सामना कर रहे हैं। CKEditor की तरह, वास्तविक समय के सहयोग के लिए कोई सर्वर-साइड कार्यान्वयन उपलब्ध नहीं है। आलसी लोग। बड़ा बुमराह। मुझे आश्चर्य है कि अगर यह तय किया जा सकता है?
किसी भी मामले में, यदि आप मापदंड के अनुसार नीचे उतरते रहते हैं, तो बाकी सब कुछ कीवी के लायक है: यह निश्चित रूप से उत्पादन (लाखों उपयोगकर्ताओं) में उपयोग किया जाता है, और इसमें मोबाइल समर्थन (+2) है। जिस तरह मैं विजेता (कुल 9.5 कीवी) की घोषणा करने वाला था और इस पोस्ट को प्रकाशित किया, कुछ और ही सामने आया। यह पता चला है कि संपादक और कई अन्य एटलस्किट घटकों में उपयोग किए जाने वाले लोगो और बैज को बहुत ही प्रतिबंधात्मक
एडीजी लाइसेंस के तहत लाइसेंस प्राप्त है, जो बताता है कि आप उन्हें एटलसियन ब्रह्मांड के बाहर उपयोग नहीं कर सकते हैं। हालांकि, समान आइकन व्यापक रूप से उपयोग किए जाते हैं और संपादक में कसकर एकीकृत होते हैं। मेजर बुमर नंबर दो, और मैं उनसे कीवी लेता हूं। हम 8.5 पर लौट आए, और यदि आप गिनती कर रहे हैं, तो आप देखते हैं कि परिणाम अब वही है। और वह अंतिम है।
अब, अगर आप इन आइकन के साथ कुछ कर सकते हैं ...मैंने सोचा था कि ऑनलाइन पाठ संपादकों में हाल के सभी अग्रिमों के बाद, दो शानदार संपादकों के साथ रहना बहुत दुखद होगा, जिन्हें आप अभी भी खुले स्रोत परियोजनाओं में उपयोग नहीं कर सकते हैं - या तो लाइसेंसिंग मुद्दों के कारण, सुलभ भवन ब्लॉकों की कमी, या दोनों कि, और एक और।
इसलिए, पहले मैंने सर्वर साइड विकसित किया (पोस्टग्रेसीक्यूएल, पब्स्वाइट फ्रेमवर्क और आरईएसटी / वेबस्केट मिक्स पर आधारित), कोड
यहां उपलब्ध
है । यह काफी सरल है, लेकिन यह अपना काम करता है और वास्तविक समय में दस्तावेजों और संचार चैनल की दृढ़ता सुनिश्चित करता है। आश्चर्यजनक रूप से, विशाल प्रोसेमिरोर समुदाय के लिए धन्यवाद, मैं यह पता लगाने में सक्षम था कि एक सटीक इंटरफ़ेस विनिर्देश (+1 कीवी) के बिना सब कुछ कैसे काम करना चाहिए।
और फिर मैंने संपादक द्वारा इस्तेमाल किए गए आइकन
को पंख सेट से आइकन के साथ
बदल दिया । विशेष रूप से, तीन पैकेजों को बदलना पड़ा। चूंकि एडीजी लाइसेंस, अन्य चीजों के अलावा, किसी भी व्युत्पन्न कार्य को प्रतिबंधित करता है, इन पैकेजों को खरोंच से फिर से तैयार करना पड़ा। शायद, इस वजह से, कुछ फ़ंक्शन खो गए थे, मुख्य रूप से विकलांग लोगों के लिए पहुंच के दृष्टिकोण से, लेकिन आगे के विकास के लिए एक अच्छा खुला आधार बनाया गया था। उदाहरण के लिए,
कुछ मामलों में आइकन के लिए बेहतर विकल्प नहीं हैं , इसलिए यदि आप इस परियोजना में योगदान करना चाहते हैं, तो यहां पहली समस्या है (+1 कीवी)!
इसका मतलब यह है कि अब हम सही परिणाम से केवल आधा क्यूई हैं (लेकिन हम गणित के साथ सामना करने में सक्षम होने की संभावना है)। क्या हुआ था जब मुझे यह यात्रा शुरू करने पर विश्वास नहीं हुआ। इसका यह भी अर्थ है कि इस लड़ाई में हमारे पास एक स्पष्ट विजेता है, और अंततः एटलस्किट संपादक ने
विविध, खुले और सहायक प्रोसेमिरोर समुदाय के लिए धन्यवाद जीता। कहां से शुरू करें, इसके निर्देशों के लिए
प्रोजेक्ट डॉक्यूमेंटेशन देखें । मेरा मानना है कि यदि आप एक नई परियोजना शुरू कर रहे हैं और वास्तविक समय में सहयोग की संभावना पर विचार कर रहे हैं, तो यह शुरू करने के लिए एक शानदार जगह है, यहां तक कि सभी
केवेट के साथ भी।
अंजीर। 5. एटलस्किट संपादक में वास्तविक समय संपादन क्षमताओं का प्रदर्शनअंतिम (सही) परिणाम: 10.5 / 11











माननीय मेंशन
ऐसे दो संपादक हैं जिनका मैं उल्लेख करना चाहूंगा, हालांकि अभी उनके पास वास्तविक समय के सहयोग के लिए तैयार समाधान नहीं है, लेकिन दोनों ही पुस्तकालयों के शीर्ष पर बनाए गए हैं जो इस कार्यक्षमता का समर्थन करते हैं। शायद दोनों की योजना है।
अंजीर। 6. वैक्स संपादक (ProseMirror- आधारित वर्ड प्रोसेसर)कोको फाउंडेशन से पहला
वैक्स (प्राचीन मोम की गोलियों के नाम पर) है। यह
शब्द प्रोसेसर पहले
पदार्थ पुस्तकालय (
रिपॉजिटरी ) पर बनाया
गया था , और अब इसे
प्रोसेमिरर (
रिपॉजिटरी ) के तहत फिर से बनाया गया है। यह विशेष रूप से कार्यक्षमता के साथ पैक किया जाता है। ये वास्तव में वे कार्य नहीं हैं जिनके लिए हम कीवी देते हैं, लेकिन फिर भी वे उत्कृष्ट कार्य हैं। वैक्स मूल रूप से
टाइपसेटिंग पुस्तकों के लिए बनाया गया था, यह नोट्स (पुस्तकों में सामान्य रूप से क्रमांकित एनोटेशन), इतिहास को बदलने, खोज और बदलने, गहने और अन्य का समर्थन करता है। हो सकता है कि इसके लिए संतरे दें

? इस मामले में, वैक्स को 4 कीवी (खुले लाइसेंस, चित्र, सूची, उत्पादन में उपयोग) और संतरे के एक जोड़े, संभवतः चार प्राप्त होंगे।








। यह बहुत फल है!
बनावट
अंजीर। 7. बनावट, पदार्थ आधारित संपादकअंत में, हमारे पास जेएटीएस प्रारूप (जर्नल लेखों के लिए एक्सएमएल मानक) में वैज्ञानिक सामग्री बनाने के लिए एक बहुत विशिष्ट, पेशेवर (लेकिन खुला स्रोत) संपादक है। यदि आप फलों की गिनती का अभ्यास करते हैं, तो हम लगभग निश्चित रूप से उंगलियों से बाहर निकलेंगे: एक खुला लाइसेंस, टेबल, चित्र, गहरा गणित समर्थन, लिंक और क्रॉस-रेफरेंस, सूची, मेटाडेटा समर्थन, सूची चलती है!



मैं दोहराता हूं,
वैक्स और टेक्सचर दोनों अद्भुत संपादक हैं , और केवल एक चीज जो उन्हें कीवी की अधिकतम राशि से रखती है, वह वास्तविक समय सह-संपादन सुविधाओं की कमी है, जिसे यह लेख समर्पित है।
निष्कर्ष
यदि आप एक ऐसी प्रणाली बना रहे हैं जिसमें वास्तविक समय सहयोगी संपादन एक प्रमुख घटक है, तो आपने सही समय चुना है। पिछले साल, परिदृश्य परिपक्व हो गया है, और अब
लगभग प्लग-एंड-प्ले खुले समाधान यहां दिखाई दिए हैं। शायद, आपकी मदद से, ठीक एक साल में हमारे पास खुली परियोजनाओं का एक पूरा सेट होगा। और शायद, केवल संभव है, हम इन खुली परतों के शीर्ष पर बने उपकरणों का भी उपयोग करेंगे, इसके बारे में भी जानने के बिना।
आगे पढ़ रहे हैं
- इतिहास-संक्रमित डेटा: कारण पेड़ और परिचालन CRDTs
- एक वास्तविक समय पाठ संपादक बनाने से सबक
- HTML वर्ड प्रोसेसर उदाहरण
- ProMMirror में सह-संपादन