Но не любой текстовый редактор, поддерживающий совместную работу, о нет, моя работа — найти (ну хотя бы поискать) открытые текстовые редакторы с групповой работой в режиме реального времени (т.е.
не только простой текст, но и структурированный контент).
Таким образом, в этой статье основное внимание уделяется довольно нишевой категории инструментов с открытым исходным кодом и технологиям, на которых они работают. Если ваши интересы шире, вы можете обратиться к этому постоянно обновляемый список редакторов .
Так.
Я много раз прыгал со скал и нырял в практически бесконечное море программного обеспечения для совместной работы в реальном времени.
Полет вниз, это бодрящее погружение на дно бассейна, мне уже знакомо.
Обычно все начинается с некоторого первоначального волнения и удивления ( прыгнуть ) новые низкоуровневые технологии и исследовательская работа, за которыми следует чувство подавленности и желания выйти на поверхность ( эй, это довольно глубоко ) и изучить прикладную часть, а затем период, когда мои мысли лучше всего описать фразой: «Неужели я настолько глуп для этогоЭ» (вполне вероятно), потому что обычно документация, демо и код не совсем совпадают или не имеют смысла, компонент совместной работы на сервере не запускается и бывают пограничные ситуации, когда более двух пользователей вводят одно и то же слово и.
это конец всему( всплыл на поверхность, хватая ртом воздух ).
После этого трудно снова поднимать эту тему, следующий этап — это своего рода зимнее размышление, дремота, пережидание суровой погоды, когда я обычно оставляю недоделанный код работать месяцами… или годами.
До новых встреч, бесконфликтный реплицируемый тип данных!
Рис.
1. Прыжок Дело в том, что в 2017 году я был так взволнован перспективами одного алгоритма (типа CRDT ), описанный в исследовательская статья что потратил несколько дней и реализовал это в JavaScript , только чтобы узнать, что в самой научной статье содержится пограничная ситуация, для которой не дано никакого решения (ладно.
но, может быть, все-таки?).
В то время я обратился к автору, но не получил ответа и обнаружил, что этот конкретный крайний случай был рассмотрен в аналогичном алгоритме другой командой, но, черт возьми, из-за этих тонкостей реализации, возможно, я мог бы перенести его на Лисп.
.
ТАК, СТОП! Что тут происходит? Я, конечно, не хочу внедрять новый алгоритм из исследовательской работы и исправлять его проблемы! Что я делаю, как я сюда попал? Давайте перемотаем назад! Что мне (и, возможно, и вам, дорогой читатель) действительно нужно, так это готовый продукт, готовый редактор Plug-and-Play .
Что решает проблему совместной работы в режиме реального времени.
Это позволяет нескольким подключенным пользователям, находящимся на расстоянии тысяч миль друг от друга, редактировать структурированный документ, нажимая клавиши на своих клавиатурах, и видеть изменения друг друга на своих экранах.
Вот и все.
Однако с редакторами сложно.
и я не смог найти такой инструмент. Все еще.
2019 год наступил( зуд вернулся с силой ), и на этот раз появился не только волшебный редактор, но и по сути даже два претендента для выполнения долгожданной спецификации.
Я изначально хотел с вами полетать над полем и перечислить почти все текстовые редакторы для совместной работы, но кажется, что не добавит особой ценности .
Вместо этого давайте сосредоточимся на двух редакторах, которые могут быть «единственными».
Но редакторов два, и нужно сделать выбор — неплохо бы объективно рассмотреть, какой из них действительно лучше подходит. Я предлагаю глубоко научную систему классификации со следующими категориями (используя киви как стандартную единицу полезности):
- Открыть лицензия: добавляет 1 киви
(это тоже критерий исключения) - Поддерживать изображений : добавляет 1 киви
- Поддерживать столы : добавляет 1 киви
- Поддерживать списки : добавляет 1 киви
- Поддерживать математики : добавляет 1 киви
- Поддерживать сотрудничество в режиме реального времени : добавляет 1 киви
- Доступный серверные компоненты : 1 киви
- Поддерживать удаленный курсор и выделения: 1 киви
(то есть вы можете видеть курсоры других пользователей) - Работать в не в сети : 1 киви
(это довольно сложно определить) - Опыт работа на производстве: 1 киви
- Поддерживать мобильные устройства : 1 киви
Давайте начнем!
CKEditor 5
Рисунок 2. Интерфейс CKEditor 5 (один из возможных вариантов), источник
Начнем с CKEditor 5, последней версии от большая линейка качественных редакторов .
Он красивый.
Я знаю, я знаю, что это не критерий, и он в реальность не имеет значения (и мы можем даже не согласиться), но я просто должен был сказать, насколько это красиво.
Так вот, этот редактор берет много киви: он распространяется под лицензией GPL ( некоторое обсуждение ограничений здесь ), (+1), поддерживает изображения, таблицы, списки (+3), математика поддерживается плагином (+1), а также поддерживает сотрудничество в режиме реального времени с удаленным курсором и выделениями (+2).
Создатели CKEditor написали потрясающий подробный пост в блоге о том, как они его разработали за счет операционных изменений.
Однако я не удалось найти необходимую реализацию сервера для совместной работы в режиме реального времени, а во всей документации указана обязательная необходимость их облачного сервиса и (платного) компонента даже в GPL-совместимых проектах.
Уровень офлайн-поддержки определить сложно.
, но похоже, что он не совсем полноценен (например, редактор выдерживает кратковременное прерывание соединения, но не несколько дней автономного использования).
Наверное, полкиви? То же самое касается мобильной поддержки, также ведется работа над полной поддержкой (+0,5).
И последнее: CKEditor определенно используется в производстве, но мне не удалось найти список продуктов на его основе (+0,5).
Хороший редактор, но отсутствие сервера для совместной работы с открытым исходным кодом действительно удручает.
Общий рейтинг: 8,5/11
Редактор Атласкита
Рис.
3. Редактор Atlaskit от Atlassian Около года назад Atlassian запустил систему Атласкит Дизайн открытый исходный код, и вместе с ним появился много вкусности, включая полноценный готовый к использованию редактор на базе ПрозаЗеркало .
Я уже чувствую, что это тот самый редактор, который мы так долго искали! По словам многих, он выпущен под лицензией Apache 2.0. очень либеральная лицензия с открытым исходным кодом (+1 киви).
Он не только поддерживает изображения, таблицы и списки, но и поддерживает их исключительно хорошо (+3 киви)! Реализация таблиц, которой так не хватает большинству редакторов, здесь выполнена на отлично:
Рис.
4. Управление таблицами в Atlaskit Editor К сожалению, математика не поддерживается, но сам редактор основан на ProseMirror, поэтому добавить к нему существующее решение (+0,5) не должно стать проблемой.
Он определенно поддерживает совместную работу в реальном времени с удаленными курсорами и выделениями (+2), это один из лучших примеров поддержки пользовательского интерфейса, который я когда-либо видел (например, удаленные курсоры тускнеют, если они перекрываются с вашими, и другие приятные детали реализации).
Кроме того, судя по моему тестированию, офлайн-поддержка кажется очень надежной (+1) — вероятно, это связано с подход «центральной компетенции», который ProseMirror использует для сотрудничества .
Ого, мы уже достигли 7,5 киви, а пунктов еще много! Вперед! К сожалению, здесь мы сталкиваемся с суровой реальностью.
Как и в случае с CKEditor, не существует доступной серверной реализации для совместной работы в режиме реального времени.
Ленивые люди.
Главный облом.
Интересно, можно ли это исправить.
В любом случае, если и дальше идти по критериям вниз, то всё остальное достойно киви: абсолютно используется в продакшене (миллионы пользователей), и имеет мобильную поддержку (+2).
Когда я собирался объявить победителя (всего 9,5 киви) и опубликовать этот пост, всплыло кое-что еще.
Оказывается, логотипы и значки, используемые в редакторе, а также многие другие компоненты Atlaskit, лицензируются по очень ограничительной лицензии.
лицензия ADG , в котором говорится, что вы не можете использовать их за пределами вселенной Atlassian. Однако те же значки широко используются и тесно интегрированы в редактор.
Крупный облом номер два, и я забираю у них киви.
Мы вернулись к 8,5, и если вы посчитаете, то увидите, что результат теперь тот же.
И это окончательно.
Вот если бы с этими иконками можно было что-нибудь сделать.
Я подумал, что, несмотря на все последние достижения в области текстовых онлайн-редакторов, было бы очень грустно остаться с двумя замечательными редакторами с потрясающими функциями, которые до сих пор нельзя использовать в проектах с открытым исходным кодом - либо из-за проблем с лицензированием, либо из-за отсутствия доступных сборок.
блоки или и то, и другое.
Итак, сначала я разработал серверную часть (на основе PostgreSQL, платформы PubSweet и смеси REST/WebSockets), доступен код Здесь .
Это довольно просто, но выполняет свою работу и обеспечивает сохранение документов и канал связи в реальном времени.
Удивительно, но благодаря огромному сообществу ProseMirror мне удалось разобраться, как всё должно работать, не имея точной спецификации интерфейса (+1 киви).
И затем я заменены иконки , используемые редактором, иконки из набор Перо .
В частности, пришлось заменить три пакета.
Поскольку лицензия ADG, помимо прочего, запрещает любые производные работы, эти пакеты пришлось переделывать с нуля.
Вероятно, это привело к утрате некоторых функций, в основном с точки зрения доступности для людей с ограниченными возможностями, но создало хорошую открытую базу для дальнейшего развития.
Например, в некоторых случаях лучшей альтернативы иконкам нет , так что если вы хотите внести свой вклад в этот проект, вот ваше первое задание (+1 киви)! Все это означает, что теперь нам осталось всего полкиви до идеального результата (но мы, вероятно, справимся с математикой).
Произошло нечто, во что я не верил, когда начинал это путешествие.
Это также означает, что у нас есть явный победитель в этой битве, и в конечном итоге победил Atlaskit Editor. благодаря разнообразному, открытому и полезному сообществу ProseMirror .
Проверить проектная документация инструкции о том, с чего начать.
Я считаю, что если вы начинаете новый проект и рассматриваете возможность сотрудничества в режиме реального времени, это отличное место для начала, даже для всех.
оговорки .
Рис.
5. Демонстрация возможностей редактирования в реальном времени в Atlaskit Editor.
Итоговый (скорректированный) результат: 10,5/11.
Почетные упоминания
Я хотел бы упомянуть два редактора, хотя на данный момент у них нет готового решения для совместной работы в реальном времени, но оба они построены на основе библиотек, поддерживающих такую функциональность.
Возможно, у обоих есть планы на этот счет.
Рис.
6. Wax Editor (текстовый процессор на базе ProseMirror) Первый из них Воск (назван в честь древних восковых табличек) от Фонда Коко.
Этот текстовый редактор впервые сделано в библиотеке Вещество ( репозиторий ), а сейчас перестроен под ПрозаЗеркало ( репозиторий ).
Он исключительно функционален.
Это не совсем те функции, за которые мы даем киви, но, тем не менее, это отличные функции.
Изначально Wax был создан для макеты книг , он поддерживает примечания (нумерованные аннотации, распространенные в книгах), историю изменений, поиск и замену, орнаменты и другие.
Может быть, мне стоит дать тебе за это апельсины?
? В этом случае Wax получит 4 киви (открытая лицензия, изображения, листинги, производственное использование) и пару апельсинов, а может и четыре.
.
Это много фруктов!
Текстура
Рис.
7. Текстура, редактор на основе веществ.
Наконец у нас есть Текстура , очень специфический, профессиональный (но с открытым исходным кодом) редактор для создания научного контента в формате JATS (стандарт XML для журнальных статей).
Если мы попрактикуемся здесь в подсчете фруктов, у нас почти наверняка не хватит пальцев: открытая лицензия, таблицы, изображения, глубокая математическая поддержка, ссылки и перекрестные ссылки, списки, поддержка метаданных, список можно продолжать!
Я повторяю, и Wax, и Texture — отличные редакторы , и единственное, что удерживает их от максимального использования киви, — это отсутствие функций совместного редактирования в реальном времени, о чем и рассказывается в этой статье.
Заключение Если вы создаете систему, в которой совместное редактирование в режиме реального времени является ключевым компонентом, вы выбрали правильное время.
В прошлом году ландшафт повзрослел, и теперь есть почти открытые решения «подключи и работай».
Возможно, с вашей помощью ровно через год у нас будет целый ряд открытых проектов.
И, возможно, просто возможно, мы также будем использовать инструменты, созданные на основе этих открытых слоев, даже не подозревая об этом.
дальнейшее чтение
- Данные, пропитанные историей: причинно-следственные деревья и оперативные CRDT
- Уроки создания текстового редактора в реальном времени
- Пример текстового процессора HTML
- Совместное редактирование в ProseMirror
-
Сравнительный Анализ Hdfs 3 С Hdfs 2
19 Oct, 24 -
Почему Falcon 9Ft — Шедевр
19 Oct, 24