Несколько недель назад была представлена идея «честного российского мессенджера» с открытым кодом и прозрачной системой compliance. Сегодня проект «Ласточка» уже имеет рабочие версии Web-клиента и Android-приложения, а серверная часть запущена в production и обрабатывает реальные подключения. Пока iOS-версия находится в планах.
Сервер построен на форке Tinode — популярного open-source решения с богатым функционалом: личные и групповые чаты, каналы, индикаторы набора текста, подтверждения доставки и прочтения, поддержка WebRTC и push-уведомлений. Это позволило избежать разработки с нуля и сконцентрироваться на кастомизации и соответствии требованиям.
Вместо форка стандартного Web UI команда создала новый интерфейс на React, TypeScript и Tailwind CSS с поддержкой темной темы и отзывчивого дизайна. Android-приложение переписано на Kotlin с использованием Jetpack Compose и собственной реализацией WebSocket-клиента для полного контроля над соединением и обработкой ошибок.
Протокол обмена данными основан на WebSocket и JSON, а архитектура строится вокруг типизированных топиков с гибкой системой прав доступа. Однако разработчики столкнулись с некоторыми трудностями, такими как увеличение размера данных при передаче изображений в base64, неявное уведомление об окончании сессии и тонкая грань compliance с лицензией GPL v3.
Особое внимание уделено юридическим требованиям: хранение данных пользователей в соответствии с законом об ОРИ, идентификация через номер телефона, блокировка противоправного контента и двухфакторная аутентификация для регуляторов. Для этого compliance-сервис реализован как отдельный бинарник с аудиторским логом, что обеспечивает юридическую надежность и соответствие лицензии.
Проект открыт для участников — код скоро будет доступен на GitHub под лицензией GPL v3. Участники получат доступ к реальному production-коду, смогут влиять на развитие и получить опыт работы над серьезным мессенджером.
«Ласточка» — это свободная, прозрачная и российская альтернатива зарубежным мессенджерам, соответствующая современным техническим и законодательным требованиям.
Связаться с автором можно в Telegram: @Anton_Budylin.