mirror of
https://github.com/cadmium-im/cadmium-docs-legacy.git
synced 2024-11-08 19:51:02 +00:00
7.2 KiB
7.2 KiB
Функциональные требования
Основное
- Возможность федерации (через клирнет, yggdrasil, прочее)
1.1. Возможность запретить, предпочитать, требовать SSL для федерации.
- Например, для yggdrasil SSL тупо избыточен, так как там каждая нода пытается подцепиться к каждой ноде, с которой общается, и SSL создаст излишнюю нагрузку. (pztrn)
- Возможность работать в режиме p2p через yggdrasil
- Валидация отправителя с помощью криптографических подписей и ключей
- Предлагаю сделать это опционально, так как многим юзерам это попросту не надо (ChronosX88)
- Полностью согласен, причем первую имплементацию надо делать без вот этого всего. И этот пункт больше к п.4 этого раздела подходит, похоже. (pztrn)
- Предлагаю сделать это опционально, так как многим юзерам это попросту не надо (ChronosX88)
- e2ee
- e2ee нужно делать "на плагинах", особенно если будем делать гейты в другие сети. Ибо у матрицы - OLM, у XMPP - OTR/OMEMO, и так далее. Для пользователя должна быть запилена прозрачная работа со всем этим добром. (pztrn)
- Однако, необходимо выбрать какой-то стандартный криптографический протокол для спеков (ChronosX88)
- Это не получится по причине наличия зоопарка разнообразного криптографического говна. Поэтому придется пилить это "на плагинах", так как для пользователя это все должно быть максимально прозрачно. (pztrn)
- Однако, необходимо выбрать какой-то стандартный криптографический протокол для спеков (ChronosX88)
- e2ee нужно делать максимально настраиваемым, чтобы была возможность форсировать e2ee или же не форсировать e2ee, так же как и включать e2ee для отдельных комнат/чатов. (pztrn)
- e2ee нужно делать "на плагинах", особенно если будем делать гейты в другие сети. Ибо у матрицы - OLM, у XMPP - OTR/OMEMO, и так далее. Для пользователя должна быть запилена прозрачная работа со всем этим добром. (pztrn)
- Возможность обслуживать одним инстансом сервера больше одного домена
- Feature-agnostic протокол, то есть возможность запилить поверх этого всего и чат, и форум, и блог/микроблог.
- Оставить некий слой расширяемости, как в XMPP (для девелоперов конечно же) (ChronosX88)
- Реализовать механизм CEP (Cadmium Enchancement Proposals), которые будут обсуждаться, а после принятия входить в основной протокол, или же уходить в CER (Cadmium Enchancements Repository).
- Возможность запилить транспорты (мосты, гейты) в другие IM сети.
- Тут возможно было бы круто попробовать впилить XMPP как первый гейт и попробовать реюзать транспорты оттуда. (pztrn)
- В таком случае, нам необходимо сделать AppService API, как в Матрице. (ChronosX88)
- Возможно, только с упором на наш новый протокол. И, опять же, мне кажется, что для транспортов (или AppService) использование HTTP REST API тупо изботочно, и тут хорошо можно поюзать вебсокеты, чтобы и не городить свои хендлеры соединений (все уже готово и есть), а реюзнуть ту же гориллу и JSON-RPC поверх. (pztrn)
- В таком случае, нам необходимо сделать AppService API, как в Матрице. (ChronosX88)
- Тут возможно было бы круто попробовать впилить XMPP как первый гейт и попробовать реюзать транспорты оттуда. (pztrn)
- Нативные клиенты под все ОС. Можно использовать Go+Qt5, так как мы пилим опенсорц.
- Остается вопрос с клиентом под iOS, но если сделаем годный протокол, который будет работать и позволит нормально смапить телегу в виде транспорта - у меня есть человек, который сделает клиент под iOS :) В принципе, учитывая наличие мака, я сам могу попробовать это сделать, но "как-нибудь потом", ибо мои целевые ОС - win/lin/macos/android (pztrn)
Чаты
- Чаты 1-на-1 (с сохранением/без сохранения истории)
- Многопользовательские (групповые) чаты
- Возможность легко делиться файлами (аналог HTTP upload из XMPP)
- Форварды и ответы на сообщения (как в Телеграме)
- Стикеры/GIF
- Реакции на сообщения
- Предлагаю это вынести из Core Specs, так как многим юзерам эта фича не очень важна (я проводил опрос) (ChronosX88)
- Я проводил опрос среди корпорастов, и она нужна :) Да и в реализации она не будет очень сложна. (pztrn)
- Предлагаю это вынести из Core Specs, так как многим юзерам эта фича не очень важна (я проводил опрос) (ChronosX88)
- Возможность создать обсуждение из сообщения (треды) как в Slack/Mattermost/Rocket.chat.
- Возможность создания кнопок к сообщениям (аналог клавиатуры из Telegram)
- Сделать это как расширение, по мне так это не совсем важная вещь. (ChronosX88)
- Это поможет сделать те же голосования, например. И сильно облегчить трансфер товарищей из телеграма, играющих в игры. (pztrn)
- Сделать это как расширение, по мне так это не совсем важная вещь. (ChronosX88)
- A/V связь, как минимум 1-на-1 (WebRTC/TURN).
- Групповая A/V связь желательна, но, учитывая сложность "готовки", предлагаю в самый конец списка приоритетов. (pztrn)
- Согласен, можем потом Jitsi заюзать. (ChronosX88)
- Групповая A/V связь желательна, но, учитывая сложность "готовки", предлагаю в самый конец списка приоритетов. (pztrn)
- Пользовательские каналы (как в Телеграме)
- Предлагаю это реализовать не как "подсистема" чата, а как отдельную сущность с возможностью комментирования и всем необходимым, в виде лайков-дизлайков. У телеграма все-таки это "костыль" больше, чем реально годная система. (pztrn)
- Система бесшовной истории переписки в чатах (as in Telegram). Необходим simple yet powerful API.