Прошло много времени с тех пор, как я написал первый код для этого проекта. Тогда это было скорее доказательством концепции, а node.js была супер новой технологией. Я мало знал о работе с большими кодовыми базами и о том, как поддерживать код в чистоте. Он никогда не предназначался для масштабирования, и я скопировал много кода со старого Etherpad, который сам не понимал. Когда я покинул проект, похоже, что большая часть кода упала. Хотя, похоже, пользовательский спрос на этот проект все еще высок.
Все это заставило меня задуматься, как бы я его сегодня написал. Я бы удостоверился, что он использует новые технологии, которые делают его более стабильным. Нам приходилось изобретать велосипед здесь много раз просто потому, что еще не было устоявшихся рамок для решения наших проблем. Я бы использовал машинописный текст на стороне сервера и клиента, чтобы избежать ошибок типа. Создавайте все, используя подход, основанный на тестировании, и делайте его более объектно-ориентированным. Эти вещи должны упростить людям участие, поскольку запросы на вытягивание могут быть проверены по типу и тестированию. На стороне клиента мы могли бы запустить новый редактор с response, который не использует редактируемый контент, возможно, есть даже один, который мы могли бы использовать повторно. Это должно помочь нам избежать такого количества ошибок, связанных с редактированием контента, специфичного для браузера. Перезапись, вероятно, нарушит сторонний код, который использует остальные API или API плагина. Я думаю, что это будет нормально, так как в конечном итоге будет проще создать больше функций.
Пока это всего лишь мысли, и мне любопытно, что вы думаете. Я не уверен, что во мне говорит только разработчик, который хочет сделать все новым и красивым, и что на самом деле нет большого варианта использования. Или, может быть, я ошибаюсь, и я не единственный, кто так думает. В настоящее время я являюсь подрядчиком, и если вы согласны со мной здесь и хотели бы спонсировать такие усилия, пожалуйста, свяжитесь с нами.
@Pita наверняка переписанный Etherpad был бы намного лучше, чем текущий, хотя я подозреваю, что это займет ОЧЕНЬ много времени. Вещи, которые можно улучшить с помощью идей, которые вы упомянули выше:
iframe
, который иногда становится кошмаром. С другой стороны, это может сломать множество вещей внутри Etherpad-core и его плагинов, но это стоимость, которую нам, возможно, придется в конечном итоге с более чистыми и простыми базами кода;ace2_inner.js
;Итак, да, я согласен, что это была бы отличная идея, и после этого Etherpad будет намного лучше . Я не уверен, сколько времени это займет, но было бы здорово иметь это. Дайте мне знать, если вам понадобится пара дополнительных рук для работы, я буду рад помочь.
А как насчет переписывания (или его части) в Rust? Это похоже на ажиотаж, и у него есть много преимуществ для систем, которые должны быть безопасными и быстрыми ...
А как насчет переписывания (или его части) в Rust? Это похоже на ажиотаж, и у него есть много преимуществ для систем, которые должны быть безопасными и быстрыми ...
Я большой поклонник Rust, но думаю, что еще слишком рано делать чистый сервер Rust или интерфейс wasm.
Один из подходов, который я считаю очень жизнеспособным, - это писать собственные модули на Rust вместо C / C ++ ... например, привязки Neon Rust / Node сегодня работают довольно хорошо: https://github.com/neon-bindings/neon
Я согласен с тем, что стоит серьезно подумать о React для внешнего интерфейса, или, если не React, то хотя бы рассмотреть компоненты, подумать о потоке данных и т. Д. React обладает инструментами и осведомленностью разработчиков, хотя это, вероятно, поможет привлечь участников.
Я согласен с @lpagliari в том, что это потребует переосмысления и, возможно, поломки существующих плагинов Etherpad, однако цель создания плагинов может быть лучше достигнута с помощью компонентов в стиле React, а не с текущим подходом, который используют большинство плагинов.
Одна вещь, которую я слышу от людей, когда спрашиваю, какие проблемы у них возникают с Etherpad, - это поддержка мобильных устройств. Наличие единого адаптивного интерфейса, вероятно, имеет наибольший смысл, и это было бы хорошей возможностью для решения этой задачи.
Также стоит изучить полный набор рекомендаций по прогрессивным веб-приложениям.
Спасибо всем за отзывы по этому поводу. Похоже, что большинство людей согласны с переписыванием внешнего интерфейса в React. Я начну думать о том, как это сделать, а потом, может быть, позже мы перейдем к бэкэнду.
@fralix Я сам немного поиграл с Rust, и мне нравятся идеи, лежащие в его основе. Но я должен был понять, что экосистема все еще намного меньше, чем у JS. Поэтому я думаю, что найти поддержку разработчика будет слишком сложно.
@rhelmer Каковы текущие проблемы с мобильными устройствами? Я думаю, если бы мы сделали это приоритетом при переписывании внешнего интерфейса, было бы легче обосновать
Привет, народ,
Я только что наткнулся на эту ветку, глядя на репо (у меня есть работающая установка etherlite, и она мне нравится). Большое спасибо за создание этого замечательного инструмента.
Если вы подумываете о переписывании с использованием современной веб-среды, особенно реагируете, я рекомендую вам вместо этого взглянуть на preact (гораздо более быстрый vdom diff / render) и абсолютно совместим со всей экосистемой React. См. Https://github.com/Rich-Harris/js-framework-benchmark для некоторых чисел.
Также ознакомьтесь с общими библиотеками компонентов, такими как react-material-ui, react-bootstrap и т.п. Тогда вы получите отзывчивость бесплатно, и вам не придется много встречаться и общаться с SASS, МЕНЬШЕ всего.
Определенно используйте веб-пакет для сборки (в настоящее время лучший опыт разработчиков с горячей перезагрузкой и отладкой с поддержкой исходных карт и babel).
Кроме того, перед использованием REDUX или аналогичного инструмента: проверьте mobx для управления состоянием. С декораторами ES7 (очень часто используемым плагином babel) он избавляется от большого количества шаблонов управления состоянием. Вы возвращаетесь к кодированию своих моделей, определяете наблюдаемые объекты, и весь ваш пользовательский интерфейс реактивно обновляется при изменении состояния с помощью mobx.
@Pita есть поводу ?