written on Saturday, December 7, 2013
Розробка дзвінківки зайшла в пізду. Сталося це з кількох причин, але головна — я сам собі буратіна, тому що надто довбався в програмуванні, не зливаючи розробку UI людям, які можуть зробити це швидше і краще за мене, але за гроші.
З точки зору кінцевого продукту — у вайбері вже зробили майже все, що я хотів. З технологічної — без відкритих стандартів і того, що у світі XMPP називають федерацією.
З позитивних результатів — я все-таки зробив BSD-ліцензований двигун голосового зв'язку, який можна вбудовувати куди завгодно і який сумісний з WebRTC. Двигун лежить на гітхабі: https://github.com/muromec/tcsip
Загалом я черговий раз довів собі відому річ — я можу все, але не все відразу. Я написав сервер, написав веб-інтерфейс, нативний клієнт під iOS і жаваскриптовий під WebRTC. Я ж до якогось моменту адмінив сервери. Спроби звалити частину роботи на якихось людей провалювалися через ту просту причину, що людям треба платити хоч якісь гроші.
При цьому перемикатися між контекстами "тут пишу жорсткач на C", а "там веб-формочки на бутстрапі" досить складно. Між серверним кодом на пайтоні, який колбасив SIP-повідомлення, і клієнтським на C — ще нічого, але всі інші задачі сильно різні, в результаті я починав займатися не тим, що реально було потрібно, а тим що було "ближче".
Одним з моментів, який демотивує — це те, що всім похуй. Начебто на мене підписана куча прогерів всякого юнікса, але ні по одній ссилці, які я кидав, не прийшло взагалі ніякого фідбеку крім того, що в мене страшний інтерфейс (дякую, кеп).
Не те щоб новиною для мене виявилося те, що слова і тексти я писати не вмію, презентувати свої вигадки не можу і взагалі роблю ніби сам собі незрозуміло що.
Варіант з тим, щоб викласти код двигуна і зробити проект цікавим хоча б айті-тусовочці теж не злетів.
Двигун, який лежить на гітхабі, представляє з себе демона, який всередині себе реалізує голосовий зв'язок з шифруванням сигнального (SIP/OpenSSL) і голосового (Opus/SRTP) потоків, відправку повідомлень (SIP MESSAGE) по тому ж зашифрованому каналу і історію з контакт-листом (TexR HTTPS API). Для аутентифікації клієнт використовує сертифікат X509 (те ж саме, що і клієнтські HTTPS, ЕЦП і так далі), який отримує з сервера по логіну-паролю (тоже HTTPS API).
Сам демон управляється по локальному сокету відправкою повідомлень, закодованих в msgpack. Там же на гітхабі є бібліотека https://github.com/muromec/texr.client для тикання демона. Це все навіть працює, але сервера я вже вимкнув, тому перевірити не вийде.