Убил Electron: как написал свой Discord на чистом Rust
Сколько оперативной памяти съедает у вас Discord во время вечернего созвона с друзьями? Если вы сидите на Linux, официальное приложение на базе Electron частенько превращается в ненасытного монстра, который сжирает сотни мегабайт ОЗУ и садит батарею ноутбука просто за то, что вы открыли чат. Мне надоело терпеть эти тормоза, и я решил сделать то, на что многие махнули рукой: разобрать закрытый протокол Discord по винтикам и написать свой собственный, молниеносный нативный клиент на Rust с открытым исходным кодом. Проект получил название Chord, и сегодня я делюсь нашей первой открытой альфа-версией. Почему Electron всех задолбал Официальный Discord — это скрытый браузер Google Chrome под капотом. Для простого мессенджера это колоссально избыточно: мы получаем огромный расход памяти, долгий старт и микрофризы там, где их быть не должно. Я поставил перед собой амбициозную цель: создать клиент, который запускается мгновенно, работает напрямую с видеокартой (через движок GPUI/WGPU, как сверхбыстрый редактор Zed) и потребляет минимум ресурсов. Никакого DOM и лишних «обвязок» — только чистый системный код. Что удалось сделать: цифры и факты Путь реверс-инженерии и нативной разработки был непростым, но результаты говорят сами за себя: Скорость и память: Интерфейс выдает честные 120 FPS и тратит менее 60 МБ RAM — это примерно в 25 раз меньше, чем у официального клиента. Шифрование звонков: Мы внедрили сложный криптографический протокол DAVE (RFC 9420) для звонков на чистом Rust без закрытых бинарных модулей. Стриминг на Linux: Вечная боль линуксоидов — демонстрация экрана со звуком на Wayland. Мы победили ее: аппаратный захват через PipeWire и DMA-BUF выдает стабильные 1080p/60fps без фризов системы. Надежность кода: Каждая строчка защищена 1500+ автотестами (TDD) и мутационным тестированием, поэтому баги отлавливаются еще до сборки. Ложка дегтя: что пока в разработке Мы честно предупреждаем: это Developer Alpha, а не готовая замена для повседневного использования. Сейчас в проекте есть белые пятна: Автодополнение @тегов участников пока приходится вводить вручную. Вкладка личных сообщений (ДМ) временно скрыта — движок готов, но интерфейс списков еще на верстке. На огромных серверах (500+ каналов) глубокие ветки подгружаются с небольшой задержкой. Зачем я это выложил и кого ищу Довести проект до идеала в одиночку (даже с помощью ИИ-агентов) сложно. Нам нужен настоящий инженерный краудсорсинг. Если вы Rust-разработчик, системный девелопер, любящий возиться с Tokio, WebRTC и аудиокодеками, или реверс-инженер — добро пожаловать в проект! Вы получите крутой опенсорсный кейс в портфолио и сможете собрать свой идеальный легковесный мессенджер. 📦 Репозиторий проекта на GitHub 🚀 Релиз v0.1.0-alpha Вопрос к сообществу Как вы считаете, есть ли сегодня реальное будущее у нативных клиентов на Rust и WGPU против засилья Electron? Или веб-технологии победили окончательно просто потому, что разрабатывать на них дешевле и быстрее? Поделитесь своим мнением в комментариях и заглядывайте в репозиторий! #Rust #OpenSource #Discord #Linux #ReverseEngineering #Wayland #WebRTC #GPUI #Программирование #ПетПроект #Разработка #ИТ #Алгоритмы #Оптимизация #АрхитектураПО
· 2 ч
так его потом еще суппортить надо, много лет :) и вот вопрос будет ли кто этим заниматься...
независимо от стека - какая-то ниша у них есть (наблюдаю постоянно в чате рабочем жалобы на десктопную версию чата и не понимаю почему люди не юзают веб-версию)
но дело конечно не в том что разрабатывать веб-версии проще - их проще донести до пользователя, по-моему так
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён
· 2 ч
Всё зависит от того, есть ли команда и насколько она большая, а также от того, является ли проект открытым. Одному человеку будет сложно реализовать и поддерживать весь проект, даже с автоматизацией.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 2 ч
с точки зрения упрощения подбора команды, конечно, желательно тщательнее выбирать технологии. возможно Rust не самый простой вариант в смысле быстро заручиться поддержкой большой и опытной команды :)
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 2 ч
Согласен, при выборе технологий важно учитывать, насколько легко будет собрать команду. С другой стороны, не переписывать же всё на C++ ради Qt 🙂 Для работы с GUI. Задачи есть, решаем их по мере возможности — на доске их ещё полно.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён