المحررين النص الحر للتعاون



لسنوات عديدة كنت مسكونًا بهذا الحكة - في محاولة للعثور على محرر النصوص "المثالي" للتعاون. ولكن ليس فقط أي محرر نصوص يدعم التعاون ، أوه لا ، مهمتي هي العثور على (جيدًا ، على الأقل البحث عن) محررات نصية مفتوحة مع عمل جماعي في الوقت الفعلي (أي ليس فقط نص عادي ، ولكن أيضًا محتوى منظم). وبالتالي ، ينصب تركيز هذه المقالة على فئة متخصصة إلى حد ما من أدوات المصادر المفتوحة والتقنيات التي تعمل عليها. إذا كانت اهتماماتك أوسع ، يمكنك الرجوع إلى قائمة المحررين المحدثة باستمرار .

هكذا. لقد قفزت من الهاوية عدة مرات وغطيت في بحر لا نهاية له تقريبا من برامج التعاون في الوقت الحقيقي. يطير إلى أسفل ، وهذا الغوص تنشيط إلى أسفل التجمع ، وأنا أعلم بالفعل جيدا. عادةً ما يبدأ ببعض الإثارة والمفاجأة الأولية ( قفزة ) في التقنيات والأبحاث الجديدة ذات المستوى المنخفض ، ثم يأتي الشعور بالازدحام والرغبة في الظهور ( مهلاً ، عميق جداً هنا ) واستكشاف الجزء المطبق ، ثم الفترة التي يتم فيها وصف أفكاري بشكل أفضل مع العبارة: "هل أنا حقا غبي جدا لهذا؟" (من المحتمل جدًا) ، نظرًا لأن المستندات والعروض التوضيحية والرمز لا تتطابق عادةً أو منطقية تمامًا ، لا يبدأ مكون التعاون على الخادم وهناك حالات حدودية يقوم فيها أكثر من مستخدمين بإدخال نفس الكلمة و ... هذا كل شيء ( ظهرت ، يلهث للهواء ).

بعد ذلك ، من الصعب إثارة الموضوع مرة أخرى ، المرحلة التالية هي نوع من الفكر الشتوي ، في تدريبات ، في انتظار الطقس القاسي ، عندما عادةً ما أترك الكود نصف النهائي يعمل لعدة أشهر أو سنوات. حتى نلتقي مرة أخرى ، نوع بيانات منسوخ خالية من الصراع!


التين. 1. قفزة

الحقيقة هي أنه في عام 2017 كنت متحمسًا جدًا لآفاق خوارزمية واحدة (نوع من CRDT ) تم وصفها في مقال بحثي قضيت عدة أيام وقمت بتنفيذه في JavaScript ، فقط لمعرفة أن هناك حالة حدودية في المقالة العلمية التي لا يوجد حل (حسنا ... ولكن ربما كل نفس؟). في ذلك الوقت ، التفتت إلى المؤلف ، لكنني لم أتلقَ إجابةً ، ووجدت أن هذا الوضع الحدودي بعينه قد تم اعتباره في خوارزمية مماثلة من قبل فريق آخر ، لكن الجحيم ، بسبب هذه التفاصيل الدقيقة في التنفيذ ، ربما يمكنني نقلها إلى Lisp ... SO ، توقف! ما الذي يحدث هنا؟ بالطبع ، لا أريد تقديم خوارزمية جديدة من العمل البحثي وإصلاح مشاكلها! ماذا أفعل ، كيف وصلت إلى هنا؟ دعونا الترجيع!

إن ما أحتاج إليه (وربما أنت أيضًا ، عزيزي القارئ) هو محرّر التوصيل والتشغيل ، وهو منتج نهائي . مما يحل مشكلة التعاون في الوقت الحقيقي. مما يسمح لعدة مستخدمين متصلين ، على بعد آلاف الأميال ، بتحرير مستند منظم بالضغط على المفاتيح على لوحات المفاتيح ومشاهدة تغييرات بعضهم البعض على شاشاتهم. هذا كل شيء. ومع ذلك ، فإن المحررين صعبون ... ولم أتمكن من العثور على مثل هذه الأداة.

حتى الان

لقد حان عام 2019 ( عادت الحكة بالقوة ) ، وهذه المرة لم يظهر محرر السحر فقط ، ولكن في الحقيقة حتى اثنين من المتقدمين للوفاء بالمواصفات التي طال انتظارها. في البداية ، أردت أن أطير معك عبر الحقل وأذكر جميع محرري النصوص تقريبًا للتعاون ، لكن لا يبدو أنه يضيف قيمة كبيرة . بدلاً من ذلك ، دعونا نركز على محررين يمكن أن يصبحا "بهذه الطريقة".

ولكن هناك محرران ، وتحتاج إلى اتخاذ قرار - سيكون من الجيد التفكير بشكل موضوعي في أيهما مناسب حقًا. أقدم نظام تصنيف علمي عميق مع الفئات التالية (باستخدام الكيوي كوحدة قياسية للخير):

  1. فتح الترخيص: يضيف 1 الكيوي (هذا أيضًا معيار استثناء)
  2. دعم الصورة : يضيف 1 الكيوي
  3. دعم الجدول : يضيف 1 الكيوي
  4. قائمة الدعم: يضيف 1 الكيوي
  5. دعم الرياضيات : يضيف 1 الكيوي
  6. دعم التعاون في الوقت الحقيقي : يضيف 1 Kiwi
  7. مكونات الخادم المتاحة: 1 الكيوي
  8. المؤشر عن بعد ودعم تسليط الضوء: 1 الكيوي (أي يمكنك رؤية مؤشرات المستخدمين الآخرين)
  9. العمل دون اتصال : 1 الكيوي (من الصعب جدا تحديد)
  10. تجربة الإنتاج: 1 الكيوي
  11. دعم المحمول : 1 الكيوي

باستخدام نظام تسجيل النقاط هذا ، يمكن للمحرر الحصول على 11 وحدة من وحدات الكيوي بحد أقصى. لنبدأ!

كديتور 5



الشكل 2. CKEditor 5 واجهة (واحدة من الخيارات الممكنة) ، المصدر

لنبدأ مع CKEditor 5 ، أحدث إصدار من مجموعة كبيرة من المحررين الجودة . إنه جميل. أعرف أن هذا ليس معيارًا ، ولا يهم حقًا (وربما لا نتفق) ، لكن كان عليّ فقط أن أقول عن جماله. لذلك ، يأخذ هذا المحرر الكثير من الكيوي: إنه مرخص بموجب GPL ( مناقشة لبعض القيود هنا ) ، (+1) ، ويدعم الصور والجداول والقوائم (+3) ، ويدعم الرياضيات من قبل البرنامج المساعد (+1) ويدعم أيضًا التعاون في الوقت الفعلي الوقت مع المؤشر المحذوف والتحديدات (+2). قام مؤلفو CKEditor بكتابة منشور مدهش ومفصل حول كيفية تطويره باستخدام التحويلات التشغيلية.

ومع ذلك ، لم أتمكن من العثور على تطبيق الخادم الضروري للتعاون في الوقت الفعلي ، وتشير جميع الوثائق إلى الحاجة الإلزامية لمكون الخدمة السحابية والمكون (المدفوع) ، حتى في المشروعات المتوافقة مع GPL.

يصعب تحديد مستوى الدعم في وضع عدم الاتصال ، لكن يبدو أنه غير كامل تمامًا (على سبيل المثال ، يمكن للمحرر أن يقاوم اتصالًا متقطعًا لفترة قصيرة ، ولكن ليس لعدة أيام من العمل دون اتصال بالإنترنت). ربما نصف الكيوي؟ الأمر نفسه ينطبق على دعم المحمول ، وهناك أيضًا عمل على الدعم الكامل (+0.5). وفي اللحظة الأخيرة ، يتم استخدام CKEditor بالتأكيد في الإنتاج ، لكنني لم أتمكن من العثور على قائمة بالمنتجات القائمة عليها (+0.5).

محرر جيد ، لكن الافتقار إلى خادم تعاون مفتوح المصدر ميسور التكلفة أمر محبط حقًا.

التقييم الكامل: 8.5 / 11

محرر الأطلس



التين. 3. محرر الأطلس من قبل الأطلسية

منذ حوالي عام ، أطلقت شركة Atlassian نظام Atlaskit Design مفتوح المصدر ، وجاءت به الكثير من الأشياء الجيدة ، بما في ذلك محرر كامل جاهز للاستخدام يستند إلى ProseMirror . أشعر بالفعل أن هذا هو المحرر الذي كنا نبحث عنه! تم إصداره بموجب ترخيص Apache 2.0 ، وفقًا للكثيرين ، كترخيص مفتوح المصدر للغاية (+1 kiwi). لا يدعم الصور والجداول والقوائم فحسب ، بل يدعمها بشكل جيد للغاية (+3 كيوي)! إن تنفيذ الجداول ، وهو أمر يفتقر إليه معظم المحررين ، ممتاز هنا:


التين. 4. إدارة الجداول في محرر Atlaskit

لسوء الحظ ، الرياضيات غير مدعومة ، لكن المحرر نفسه يعتمد على ProseMirror ، لذلك يجب ألا يكون هناك مشكلة لإضافة حل موجود (+0.5) إليه. إنه بالتأكيد يدعم التعاون في الوقت الفعلي مع المؤشرات والتحديدات عن بُعد (+2) ، وهذا أحد أفضل أمثلة واجهة المستخدم للدعم الذي رأيته في حياتي على سبيل المثال (على سبيل المثال ، يتم تغميق المؤشرات عن بُعد في حالة تداخلها مع بياناتك الخاصة وتفاصيل أخرى رائعة للتنفيذ ). بالإضافة إلى ذلك ، من الاختبار الذي أجريته ، يبدو الدعم في وضع عدم الاتصال صلبًا جدًا (+1) - ربما يرجع ذلك إلى نهج "الكفاءة المركزية" الذي يستخدمه ProseMirror للتعاون . نجاح باهر ، وصلنا بالفعل إلى 7.5 كيلو ، والعديد من النقاط! المضي قدما!

لسوء الحظ ، ها نحن نواجه حقيقة قاسية. مثل CKEditor ، لا يوجد تطبيق من جانب الخادم متاح للتعاون في الوقت الفعلي. الناس كسول. المشكله كبيرة. وأتساءل عما إذا كان يمكن إصلاح هذا؟

في أي حال ، إذا استمرت النزول وفقًا للمعايير ، فسيكون كل شيء آخر يستحق qiwi: يتم استخدامه بالتأكيد في الإنتاج (ملايين المستخدمين) ، ولديه دعم محمول (+2). تمامًا كما كنت على وشك الإعلان عن الفائز (إجمالي 9.5 كيلو بايت) ونشر هذه المشاركة ، ظهر شيء آخر. اتضح أن الشعارات والشارات المستخدمة في المحرر والعديد من مكونات Atlaskit الأخرى مرخصة بموجب ترخيص ADG المقيِّد للغاية ، والذي ينص على أنه لا يمكنك استخدامها خارج عالم Atlassian. ومع ذلك ، يتم استخدام الرموز نفسها على نطاق واسع ودمجها بإحكام في المحرر. الرئيسية المشكله رقم اثنين ، وأخذ الكيوي منهم. عدنا إلى 8.5 ، وإذا كنت تعول ، سترى أن النتيجة هي نفسها الآن. وهو نهائي.

الآن ، إذا كنت تستطيع فعل شيء باستخدام هذه الرموز ...

اعتقدت أنه بعد كل التطورات الحديثة في برامج تحرير النصوص على الإنترنت ، سيكون من المحزن جدًا البقاء مع اثنين من المحررين الرائعين بميزات مذهلة لا تزال غير قادر على استخدامها في مشاريع مفتوحة المصدر - إما بسبب مشكلات الترخيص ، أو عدم وجود لبنات بناء يمكن الوصول إليها ، أو كل ذلك ، وآخر.

لذلك ، أولاً طورت جانب الخادم (استنادًا إلى PostgreSQL وإطار PubSweet ومزيج REST / WebSockets) ، يتوفر الرمز هنا . الأمر بسيط للغاية ، لكنه يؤدي وظيفته ويضمن استمرار المستندات وقناة الاتصال في الوقت الفعلي. والمثير للدهشة أنه بفضل مجتمع ProseMirror الضخم ، تمكنت من معرفة كيفية عمل كل شيء دون الحاجة إلى تحديد مواصفات واجهة (+1 kiwi).

ثم استبدلت الرموز التي يستخدمها المحرر برموز من مجموعة الريش . على وجه الخصوص ، كان لا بد من استبدال ثلاث حزم. نظرًا لأن ترخيص ADG ، من بين أمور أخرى ، يحظر أي عمل مشتق ، يجب إعادة إنشاء هذه الحزم من نقطة الصفر. ربما ، بسبب هذا ، فقدت بعض الوظائف ، وذلك بشكل رئيسي من وجهة نظر إمكانية وصول الأشخاص ذوي الإعاقة ، ولكن تم إنشاء قاعدة مفتوحة جيدة لمزيد من التطوير. على سبيل المثال ، في بعض الحالات ، لا توجد بدائل أفضل للأيقونات ، لذلك إذا كنت ترغب في المساهمة في هذا المشروع ، فهذه هي المشكلة الأولى (+1 kiwi)!

كل هذا يعني أننا الآن فقط نصف qiwi من النتيجة المثالية (لكن من المحتمل أن نكون قادرين على التعامل مع الرياضيات). ما حدث كان ما لم أؤمن به عندما بدأت هذه الرحلة. وهذا يعني أيضًا أن لدينا فائزًا واضحًا في هذه المعركة ، وفي النهاية ، فاز محرر Atlaskit بفضل مجتمع ProseMirror المتنوع والمفتوح ومفيد . تحقق من وثائق المشروع للحصول على تعليمات حول مكان البدء. أعتقد أنه إذا كنت تبدأ مشروعًا جديدًا وتدرس إمكانية التعاون في الوقت الفعلي ، فهذا مكان رائع للبدء ، حتى مع كل المحاذير .


التين. 5. إظهار قدرات التحرير في الوقت الحقيقي في محرر Atlaskit

النتيجة النهائية (المصححة): 10.5 / 11

أذكر الشرفاء


هناك محرران أود أن أذكرهما ، على الرغم من أنهما ليس لديهما الآن حل جاهز للتعاون في الوقت الفعلي ، ولكن كلاهما مبنيان على رأس المكتبات التي تدعم هذه الوظيفة. ربما لديهما خطط.


التين. 6. محرر الشمع (معالج النصوص المستند إلى ProseMirror)

الأول هو الشمع (سميت باسم أقراص الشمع القديمة) من مؤسسة كوكو. تم إنشاء معالج النصوص هذا أولاً في مكتبة Substance ( مستودع ) ، والآن تم إعادة بنائه تحت ProseMirror ( مستودع ). هي معبأة حصرا مع وظيفة. هذه ليست بالضبط الوظائف التي نقدم لها الكيوي ، لكنها مع ذلك وظائف ممتازة. تم تصميم Wax في الأصل لتنضيد الكتب ، وهو يدعم الملاحظات (التعليقات التوضيحية الشائعة في الكتب) ، وتغيير السجل ، والبحث والاستبدال ، والزخارف وغيرها. ربما تعطي البرتقال لذلك ؟ في هذه الحالة ، سيتلقى Wax 4 kiwis (الترخيص المفتوح والصور والقوائم والاستخدام في الإنتاج) واثنين من البرتقال ، ربما أربعة. . هذا كثير من الفاكهة!

نسيج



التين. 7. الملمس ، محرر المواد القائمة

أخيرًا ، لدينا Texture ، محرر خاص ومحترف جدًا (لكن مفتوح المصدر) لإنشاء محتوى علمي بتنسيق JATS (معيار XML لمقالات المجلات). إذا كنت تمارس عد الفاكهة ، فمن المؤكد أننا سوف نفد أصابعك: ترخيص مفتوح ، جداول ، صور ، دعم رياضيات عميق ، روابط وإشارات مرجعية ، قوائم ، دعم بيانات التعريف ، والقائمة تطول! أكرر أن كلاً من Wax و Texture محرران رائعان ، والشيء الوحيد الذي يمنعهما من الحد الأقصى لمقدار الكيوي هو عدم وجود ميزات التحرير المشترك في الوقت الفعلي ، والتي تكرسها هذه المقالة.

استنتاج


إذا كنت تقوم بإنشاء نظام يكون فيه التحرير التعاوني في الوقت الفعلي مكونًا رئيسيًا ، فقد اخترت الوقت المناسب. في العام الماضي ، نضجت المشهد ، والآن ظهرت حلول مفتوحة للتوصيل والتشغيل تقريبًا . ربما ، بمساعدتكم ، في غضون عام بالضبط ، سيكون لدينا مجموعة كاملة من المشاريع المفتوحة. وربما ، فقط ممكن ، سوف نستخدم أيضًا أدوات مبنية على هذه الطبقات المفتوحة ، دون حتى معرفة ذلك.

مزيد من القراءة


  1. البيانات التي غمرتها التاريخ: الأشجار السببية و CRDTs التشغيلية
  2. الدروس المستفادة من إنشاء محرر نصوص في الوقت الفعلي
  3. مثال معالج النصوص من HTML
  4. شارك في التحرير في ProseMirror

Source: https://habr.com/ru/post/ar451204/


All Articles