Etherpad-lite: RFC: Думаю о переписывании (я знаю)

Созданный на 31 янв. 2018  ·  7Комментарии  ·  Источник: ether/etherpad-lite

Прошло много времени с тех пор, как я написал первый код для этого проекта. Тогда это было скорее доказательством концепции, а node.js была супер новой технологией. Я мало знал о работе с большими кодовыми базами и о том, как поддерживать код в чистоте. Он никогда не предназначался для масштабирования, и я скопировал много кода со старого Etherpad, который сам не понимал. Когда я покинул проект, похоже, что большая часть кода упала. Хотя, похоже, пользовательский спрос на этот проект все еще высок.

Все это заставило меня задуматься, как бы я его сегодня написал. Я бы удостоверился, что он использует новые технологии, которые делают его более стабильным. Нам приходилось изобретать велосипед здесь много раз просто потому, что еще не было устоявшихся рамок для решения наших проблем. Я бы использовал машинописный текст на стороне сервера и клиента, чтобы избежать ошибок типа. Создавайте все, используя подход, основанный на тестировании, и делайте его более объектно-ориентированным. Эти вещи должны упростить людям участие, поскольку запросы на вытягивание могут быть проверены по типу и тестированию. На стороне клиента мы могли бы запустить новый редактор с response, который не использует редактируемый контент, возможно, есть даже один, который мы могли бы использовать повторно. Это должно помочь нам избежать такого количества ошибок, связанных с редактированием контента, специфичного для браузера. Перезапись, вероятно, нарушит сторонний код, который использует остальные API или API плагина. Я думаю, что это будет нормально, так как в конечном итоге будет проще создать больше функций.

Пока это всего лишь мысли, и мне любопытно, что вы думаете. Я не уверен, что во мне говорит только разработчик, который хочет сделать все новым и красивым, и что на самом деле нет большого варианта использования. Или, может быть, я ошибаюсь, и я не единственный, кто так думает. В настоящее время я являюсь подрядчиком, и если вы согласны со мной здесь и хотели бы спонсировать такие усилия, пожалуйста, свяжитесь с нами.

Question

Все 7 Комментарий

@Pita наверняка переписанный Etherpad был бы намного лучше, чем текущий, хотя я подозреваю, что это займет ОЧЕНЬ много времени. Вещи, которые можно улучшить с помощью идей, которые вы упомянули выше:

  • используя редактор React без редактируемого содержимого, мы бы избавились от имеющегося у нас водопада iframe , который иногда становится кошмаром. С другой стороны, это может сломать множество вещей внутри Etherpad-core и его плагинов, но это стоимость, которую нам, возможно, придется в конечном итоге с более чистыми и простыми базами кода;
  • Используя подход, основанный на TDD, мы могли бы увеличить охват тестированием, который у нас есть в настоящее время. В настоящее время некоторые части кода не имеют очень хорошего покрытия (если оно вообще есть), что я понимаю, поскольку никто не имел очень хороших знаний об исходном коде Etherpad, когда Etherpad-lite переписывался. Но, имея хорошее тестовое покрытие, мы сможем изменять части ядра редактора, не боясь сломать что-нибудь. Я лично всегда боюсь что-то сломать, когда мне нужно что-то изменить, например, в ace2_inner.js ;
  • при использовании других инструментов и фреймворков для выполнения вещей, которые Etherpad не должен обрабатывать, кодовая база будет намного проще и менее подвержена ошибкам. И я почти уверен, что эти ребята знают, как справляться с другими вещами намного лучше, чем мы; :-)

Итак, да, я согласен, что это была бы отличная идея, и после этого 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 есть поводу ?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги