cadmium-docs-legacy/requirements.md
2019-11-16 16:33:14 +04:00

46 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Основное
========
1. Возможность федерации (через клирнет, yggdrasil, прочее)
1.1. Возможность запретить, предпочитать, требовать SSL для федерации.
- Например, для yggdrasil SSL тупо избыточен, так как там каждая нода пытается подцепиться к каждой ноде, с которой общается, и SSL создаст излишнюю нагрузку. (pztrn)
2. Возможность работать в режиме p2p через yggdrasil
3. Валидация отправителя с помощью криптографических подписей и ключей
- Предлагаю сделать это опционально, так как многим юзерам это попросту не надо (ChronosX88)
- Полностью согласен, причем первую имплементацию надо делать без вот этого всего. И этот пункт больше к п.4 этого раздела подходит, похоже. (pztrn)
4. e2ee
- e2ee нужно делать "на плагинах", особенно если будем делать гейты в другие сети. Ибо у матрицы - OLM, у XMPP - OTR/OMEMO, и так далее. Для пользователя должна быть запилена прозрачная работа со всем этим добром. (pztrn)
- Однако, необходимо выбрать какой-то стандартный криптографический протокол для спеков (ChronosX88)
- Это не получится по причине наличия зоопарка разнообразного криптографического говна. Поэтому придется пилить это "на плагинах", так как для пользователя это все должно быть максимально прозрачно. (pztrn)
- e2ee нужно делать максимально настраиваемым, чтобы была возможность форсировать e2ee или же не форсировать e2ee, так же как и включать e2ee для отдельных комнат/чатов. (pztrn)
5. Возможность обслуживать одним инстансом сервера больше одного домена
6. Feature-agnostic протокол, то есть возможность запилить поверх этого всего и чат, и форум, и блог/микроблог.
- Оставить некий слой расширяемости, как в XMPP (для девелоперов конечно же) (ChronosX88)
7. Реализовать механизм CEP (Cadmium Enchancement Proposals), которые будут обсуждаться, а после принятия входить в основной протокол, или же уходить в CER (Cadmium Enchancements Repository).
8. Возможность запилить транспорты (мосты, гейты) в другие IM сети.
- Тут возможно было бы круто попробовать впилить XMPP как первый гейт и попробовать реюзать транспорты оттуда. (pztrn)
- В таком случае, нам необходимо сделать AppService API, как в Матрице. (ChronosX88)
- Возможно, только с упором на наш новый протокол. И, опять же, мне кажется, что для транспортов (или AppService) использование HTTP REST API тупо изботочно, и тут хорошо можно поюзать вебсокеты, чтобы и не городить свои хендлеры соединений (все уже готово и есть), а реюзнуть ту же гориллу и JSON-RPC поверх. (pztrn)
9. Нативные клиенты под все ОС. Можно использовать Go+Qt5, так как мы пилим опенсорц.
- Остается вопрос с клиентом под iOS, но если сделаем годный протокол, который будет работать и позволит нормально смапить телегу в виде транспорта - у меня есть человек, который сделает клиент под iOS :) В принципе, учитывая наличие мака, я сам могу попробовать это сделать, но "как-нибудь потом", ибо мои целевые ОС - win/lin/macos/android (pztrn)
Чаты
====
1. Чаты 1-на-1 (с сохранением/без сохранения истории)
2. Многопользовательские (групповые) чаты
3. Возможность легко делиться файлами (аналог HTTP upload из XMPP)
4. Форварды и ответы на сообщения (как в Телеграме)
5. Стикеры/GIF
6. Реакции на сообщения
- Предлагаю это вынести из Core Specs, так как многим юзерам эта фича не очень важна (я проводил опрос) (ChronosX88)
- Я проводил опрос среди корпорастов, и она нужна :) Да и в реализации она не будет очень сложна. (pztrn)
7. Возможность создать обсуждение из сообщения (треды) как в Slack/Mattermost/Rocket.chat.
8. Возможность создания кнопок к сообщениям (аналог клавиатуры из Telegram)
- Сделать это как расширение, по мне так это не совсем *важная* вещь. (ChronosX88)
- Это поможет сделать те же голосования, например. И сильно облегчить трансфер товарищей из телеграма, играющих в игры. (pztrn)
9. A/V связь, как минимум 1-на-1 (WebRTC/TURN).
- Групповая A/V связь желательна, но, учитывая сложность "готовки", предлагаю в самый конец списка приоритетов. (pztrn)
- Согласен, можем потом Jitsi заюзать. (ChronosX88)
10. Пользовательские каналы (как в Телеграме)
- Предлагаю это реализовать не как "подсистема" чата, а как отдельную сущность с возможностью комментирования и всем необходимым, в виде лайков-дизлайков. У телеграма все-таки это "костыль" больше, чем реально годная система. (pztrn)
11. Система бесшовной истории переписки в чатах (as in Telegram). Необходим simple yet powerful API.