वास्तविक समय सहयोगी संपादन के लिए कई चीजें प्रभावी होने की आवश्यकता होती है। यहां के अधिकांश अन्य उत्तर समस्या के केवल एक पहलू पर केंद्रित हैं; अर्थात् वितरित राज्य (उर्फ साझा-परिवर्तनीय-राज्य)। परिचालन परिवर्तन (ओटी), संघर्ष-मुक्त प्रतिकृति डेटा प्रकार (सीआरडीटी), विभेदक सिंक्रनाइज़ेशन, और अन्य संबंधित प्रौद्योगिकियां निकट-वास्तविक समय वितरित राज्य को प्राप्त करने के सभी दृष्टिकोण हैं। अंतिम स्थिरता पर अधिक ध्यान केंद्रित करता है, जो प्रत्येक प्रतिभागियों के राज्य के अस्थायी भिन्नता की अनुमति देता है, लेकिन यह गारंटी देता है कि प्रत्येक प्रतिभागी राज्य अंततः बंद हो जाने पर अभिसरण करेगा। अन्य उत्तरों ने इन प्रौद्योगिकियों के कई कार्यान्वयन का उल्लेख किया है।
हालांकि, एक बार जब आप परिवर्तनीय स्थिति साझा कर लेते हैं, तो आपको उचित उपयोगकर्ता अनुभव प्रदान करने के लिए कई अन्य सुविधाएं चाहिए। इन अतिरिक्त अवधारणाओं के उदाहरण में शामिल:
- पहचान: कौन लोग आपके साथ सहयोग कर रहे हैं कर रहे हैं।
- उपस्थिति: वर्तमान में आपके साथ "यहां" संपादन कौन कर रहा है।
- संचार: बातचीत, है कि उपयोगकर्ताओं को कार्रवाई
- सहयोगात्मक cueing समन्वय करने के लिए अनुमति देने के ऑडियो, वीडियो, आदि,: विशेषताएं है कि अन्य प्रतिभागियों क्या कर रहे हैं के रूप में संकेत दे और/या क्या करने वाले हैं।
साझा कर्सर और चयन सहयोगी क्यूइंग (ए.के.ए. सहयोग जागरूकता) के उदाहरण हैं। वे उपयोगकर्ताओं को इरादे और संभावित प्रतिभागियों के अगले कार्यों को समझने में सहायता करते हैं। मूल पोस्टर आंशिक रूप से साझा म्यूटेबल राज्य और सहयोगी क्यूइंग के बीच इंटरप्ले के बारे में पूछ रहा था। यह महत्वपूर्ण है क्योंकि किसी दस्तावेज़ में कर्सर या चयन का स्थान आमतौर पर दस्तावेज़ के भीतर स्थानों के माध्यम से वर्णित किया जाता है। मुद्दा यह है कि एक कर्सर का स्थान (उदाहरण के लिए) दस्तावेज़ के संदर्भ पर निर्भर है। जब मैं कहता हूं कि मेरा कर्सर इंडेक्स 37 पर है, तो इसका मतलब है कि दस्तावेज़ में वर्ण 37 है जिसे मैं देख रहा हूं। आपके संपादन या अन्य उपयोगकर्ताओं के कारण आपके पास अभी दस्तावेज़ हो सकता है, और इसलिए आपके दस्तावेज़ में अनुक्रमणिका 37 सही नहीं हो सकता है।
तो कर्सर स्थानों को वितरित करने के लिए आप जिस तंत्र का उपयोग करते हैं उसे किसी भी तरह से सिस्टम के तंत्र के बारे में कम से कम अवगत कराया जाना चाहिए जो साझा परिवर्तनीय स्थिति पर समेकन नियंत्रण प्रदान करता है। आज चुनौतियों में से एक यह है कि कई ओटी/सीआरडीटी, बिडरेक्शनल मैसेजिंग, चैट और अन्य पुस्तकालयों के बाहर, वे अलग समाधान हैं जो एकीकृत नहीं हैं। इससे एक अंतिम उपयोगकर्ता प्रणाली बनाना मुश्किल हो जाता है जो एक अच्छा उपयोगकर्ता अनुभव प्रदान करता है, और अक्सर डेवलपर को तकनीकी चुनौतियों का सामना करने के लिए छोड़ दिया जाता है।
आखिरकार, एक प्रभावी वास्तविक समय सहयोगी संपादन प्रणाली को लागू करने के लिए, आपको इन सभी पहलुओं पर विचार करने की आवश्यकता है; और हमने इतिहास, प्राधिकरण, आवेदन स्तर संघर्ष समाधान, और कई अन्य पहलुओं पर भी चर्चा नहीं की है। आपको ऐसी प्रौद्योगिकियों को बनाना या ढूंढना होगा जो इन अवधारणाओं में से प्रत्येक का समर्थन करते हैं जो आपके उपयोग के मामले में समझ में आता है। फिर आपको उन्हें एकीकृत करना होगा।
अच्छी खबर यह है कि सहयोगी संपादन का समर्थन करने वाले अनुप्रयोग अधिक लोकप्रिय होते जा रहे हैं। जो तकनीकें उन्हें निर्माण करने में सहायता करती हैं वे परिपक्व हैं और नए महीने हर महीने उपलब्ध हो रहे हैं। Firebase उन पहले समाधानों में से एक था जिन्होंने इन अवधारणाओं में से कई में उपयोग करने में आसान एपीआई में लपेटने की कोशिश की थी। एक नया-कॉमर Convergence (पूर्ण प्रकटीकरण, मैं कनवर्जेन्स लैब्स का संस्थापक हूं), एक इन-इन-वन एपीआई प्रदान करता है जो इन सहयोगी संपादन पहलुओं में से अधिकांश का समर्थन करता है और वास्तविक समय के निर्माण के समय, लागत और जटिलता को काफी कम कर सकता है सहयोगी संपादन क्षुधा।
https://quill-sharedb-cursors.herokuapp.com
यह ShareDB (OT) बंद आधारित है बैकएंड और Quill रिच टेक्स्ट संपादक के रूप में काम:
तो अगर मैं http://code.google.com/p/google-diff-match-patch/ का उपयोग करना चाहता था, और कहें कि प्रत्येक 0.5 सेकंड में एक diff उत्पन्न करें, इसे सर्वर पर भेजें और अन्य सभी diffs खींचें और उन्हें सर्वर से वापस कर दें, क्या आपको लगता है कि यह काम करेगा? क्या यह डेटाबेस में संग्रहीत बहुत सारे डेटा को जोड़ नहीं सकता है? –
वास्तविक संचालन परिवर्तन की तुलना में संसाधनों के संदर्भ में यह शायद अधिक महंगा है। मुझे लगता है कि यदि आपके पास कुछ उपयोगकर्ता हैं तो यह काम कर सकता है। –
यदि आप परिचालन परिवर्तन के कार्यान्वयन की तलाश में हैं, तो मैं Google-MobWrite को देखने का सुझाव दूंगा (लिंक लिंक किए गए प्रश्न में पाया जा सकता है)। – gamers2000