пользователь С++
0,1
рейтинг
12 января в 19:56

Разработка → Isotoxin: свободный мультипротокольный мессенджер с поддержкой Tox

Вы наверняка слышали о Tox. Напомню: это свободный защищенный p2p протокол для передачи сообщений, аудио и видео потоков между участниками Tox-сети. По сути — это альтернатива скайпу. Когда я впервые услышал о Tox, мой градус неприязни к скайпу был еще не слишком высок, но я уже начал поиск альтернатив. Мне очень понравилась идея, лежащая в основе Tox: мы пишем протокол со всеми нужными плюшками, а вы пишете к нему клиенты. Когда появились первые клиенты для сети Tox, я подумал: «черт возьми, я смогу сделать это не хуже!». Вобщем, подталкиваемый неприязнью к скайпу, я взялся за проект мессенджера своей мечты. Сейчас, когда в моем локальном hg-репозитории первому комиту исполнилось 19 месяцев и был сделан 414-й комит, я наконец то созрел до того, чтобы рассказать об этом клиенте широкой аудитории Хабра.



Что сделано


  • Полная поддержка всех текущих возможностей протокола tox, включая видеозвонки (исключая смену nospam, но я сильно сомневаюсь, что существует на свете человек, которому реально потребовалось этой возможностью воспользоваться)
  • Собственный протокол для общения внутри локальной сети (создавался в основном для отладки системы плагинов, но вполне работоспособен: имеется все тоже самое, что в tox, кроме видео)
  • Поддержка одновременной работы нескольких протоколов (можно, например, иметь сразу два подключения к tox с разных ID)
  • Стандартные возможности сферического мессенджера, такие как сохранение истории, аватары, смайлы, нотификация о приходе сообщения и др.
  • Продвинутые возможности, такие как метаконтакты, аудио/видео звонки, расшаривание десктопа, групповые чаты, поиск по сообщениям, передача файлов
  • Шифрование профиля паролем. Профиль — это файл, sqlite база, со всеми настройками и историей сообщений.
  • Поддержка «скинов» в интерфейсе
  • Автоматические обновления

более полный список
  • Поиск контактов в контакт листе
  • «Живой» поиск по сообщениям
  • Возможность НЕ хранить историю сообщений
  • Тэги контактов и фильтрация по тэгам (сделано в последней версии)
  • Можно посмотреть данные контакта, в том числе версию клиента (если это Isotoxin) и его Tox ID (nospam будет показан только в случае, если вы отправляли запрос на добавление)
  • Можно написать комментарий к контакту (просто описание, никуда не отправляется)
  • Аватарку и имя можно указывать для отдельных соединений
  • Можно сделать аватарку с web-камеры
  • Звуковые оповещения. Возможность выбирать звуки для оповещений
  • Поддержка наборов смайлов. Поддержка анимированных gif-смайлов
  • Передается время создания сообщения (надстройка над tox протоколом)
  • Поддержка bb-кодов в сообщения и имени. Если клиент на другой стороне не поддерживает bb-коды, имя ему присылается чистым
  • Мультиязычность. Язык можно переключать без перезагрузки
  • Автоматически включается статус «Отошел» (настраиваемо)
  • Разные способы отправки сообщений: Enter/Ctrl+Enter/Shift+Enter/Double Enter
  • Кастомизируемый формат отображения даты и времени сообщений
  • Возможность экспорта истории сообщений в txt или html файл (при желании, формат файла для экспорта можно настроить любой)
  • Показ и отправка нотификации о наборе текста
  • Автоматический прием файлов в зависимости от расширения файла
  • Показ картинок в списке сообщений, в том числе анимированных
  • Можно обрезать картинку перед отправкой. Саму картинку можно получить из файла, из буфера обмена, с web-камеры или сграбить рабочий стол. После обрезки автоматически выбирается формат jpg или png, в зависимости от итогового размера
  • Автообновления можно пустить через прокси
  • Настройка автозапуска
  • Сворачивание в «трей»
  • Для отдельных контактов можно включить автоматический прием голосового вызова с отключением микрофона
  • При передаче видео, изображение масштабируется на источнике под размеры приемника, т.о. экономится полоса
  • Генерация QR кода из текста сообщения, линка, или ID контакта или текущего Tox ID

Конечно, еще многое предстоит сделать, но того что сделано, вполне достаточно для комфортного использования.

Разработка


У меня довольно большой опыт в C++ и программировании под Windows. Глупо пренебрегать этим опытом, поэтому разработка была начата на C++ и под Windows. Однако, понимая всю важность поддержки разных платформ, я сразу решил минимизировать зависимость от winapi и других windows-only возможностей. У меня даже рендеринг текста не использует GDI, а написан свой. Для чтения шрифтов используется библиотека FreeType. Весь GUI, все контролы — всё написано с нуля и не привязано к системе. Вся работа с окнами winapi вынесена в отдельное место и максимально абстрагирована от логики интерфейса. Проблема за малым — научиться писать под линуксом. Пока что у меня на это нет времени. Может быть найдутся желающие портировать?
С самого начала я задумал модульную архитектуру. Исполняемый файл должен был уметь только GUI и ничего более. Все сетевые дела поручались модулям. Проще говоря — обычная система плагинов.
Одна из трудностей, с которой пришлось столкнуться в процессе разработки — полное нежелание ядра tox собираться под Visual Studio. Все дело оказалось в динамических массивах стандарта C99. irungentoo, главный разработчик ядра, отвергает любые просьбы убрать эти массивы из кода, говоря: «C99 — стандарт. Если msvc его не поддерживает, то это его проблемы». Если вам интересно мое личное мнение, то я считаю динамические массивы злом, т.к. они убивают константность оператора sizeof. Так что я вполне понимаю разработчиков компилятора msvc и их нежелание связываться с динамическими массивами. Итак, у меня было два пути: собирать toxcore отдельно через cygwin (как это делают остальные разработчики клиентов Tox под windows) или самому убрать динамические массивы из кода. Я выбрал второй путь и в результате на свет появился вот этот репозиторй. Это не прямой форк toxcore, а некая сборка из необходимых библиотек (libsodium, opus, vpx), которая легко и безграбельно собирается msvc компилятором (поддерживаются 2013 и 2015).
Почти весь код Isotoxin'а написан мной в одиночку, исключая несколько моментов, написанных моими друзьями, а также сторонних библиотек. Активно используются возможности C++11. В связи с выходом апдейта к 2015-й студии и исправления некоторых, критичных для меня, багов, планирую полностью перейти на этот компилятор, чтобы задействовать constexpr и C++14 по полной.

Архитектура


Когда я только начал писать первые строчки кода Isotoxin'а, в моих планах совершенно отсутствовало желание открывать исходники. Однако, имелось противоречие с лицензией GPL3, под которой предлагалось ядро tox. В чем противоречие? Если коротко, то эта лицензия требует открывать исходный текст программы, которая использует библиотеку под этой лицензией. Очевидное решение этой дилеммы — вынести реализацию протокола в отдельную динамическую библиотеку (dll) и открыть исходники этой dll.
Но я решил пойти немного дальше и не ограничился лишь только dll-кой. В итоге родилась следующая архитектура.
1. isotoxin.exe — чистый GUI. По началу я не хотел открывать его исходники. Чтобы повысить степень доверия к этому файлу, я даже решил полностью лишить его возможности работать с сетью. Позже, когда я все же отказался от закрытости, работа с сетью была возвращена, но только для одной цели — проверка и скачивание обновлений.
2. plghost.exe — Небольшой exe'шник, который загружает dll-ки протоколов. Точнее — только одну dll'ку. Запускается непосредственно из isotoxin.exe и общается с последним средствами межпроцессного взаимодействия, транслируя его команды в dll протокола и отправляя обратно результат.
3. proto.*.dll — Собственно dll'ки протоколов. Реализуют единый интерфейс.

У этой архитектуры есть достоинства и недостатки.

Достоинства.
  • Разграничение обязанностей кода. Нельзя просто взять, и вызвать какую угодно функцию протокола из GUI и наоборот. Это дисциплинирует и помогает писать четкий и безопасный код с минимумом ошибок.
  • Надежность. Ошибки протокола, приводящие к падению, не уронят GUI. В случае падения plghost.exe, последний просто загружается заново. Пользователь может даже не заметить проблемы.
  • Защищенность. Пользователь — параноик — может обложить plghost.exe разными правилами работы с диском, например, полностью ограничить запись и чтение. Все будет работать, как ни в чем не бывало, и даже, если злоумышленник сможет использовать уязвимость реализации протокола для доступа к коду, он не сможет покинуть песочницу.
  • На будущее — поддержка одновременной работы как 32-битных, так и 64-битных реализаций протоколов. Достаточно собрать 64-битную версию plghost.exe. Т.о. выпуск 64-битной версии Isotoxin'а (а я не исключаю, что это произойдет), не повлечет за собой необходимость срочного выпуска 64-битных же версий сторонних протоколов, если таковые появятся.

Недостатки. А как же без них.
  • Значительное усложнение кода и его отладки. Одновременный дебаг нескольких exe-шников — это не сахар.
  • «лишний» файл (plghost.exe)
  • Требования к ресурсам системы немного выше. Все же запуск дополнительного exe'шника на каждый работающий протокол не бесплатно.

Список недостатков получился каким-то маленьким и несерьезным. Ничего сверх этого я придумать не смог. А, следовательно, выбор архитектуры считаю правильным.

Внешний вид


Признаю, дизайнер из меня аховый, поэтому я сразу заложил в программу возможность смены внешнего вида. Проще говоря, поддерживаются «скины». Пока что доступна только одна тема. Увы, моего времени на всё и сразу не хватает. В ближайшее время я планирую сделать поддержку раскрашивания темы. Под спойлером несколько скриншотов Isotoxin'а.
Скрины
Главное окно. Версия уже устарела, но внешний вид, практически не изменился.

Установка пароля в окне настроек

Подготовка изображения к отправке — можно обрезать лишнее

Преимущества


Понятно, что каждый разработчик старается хвалить свой продукт. Постараюсь быть максимально объективным. В настоящее время наиболее популярным и богатым на возможности среди всех клиентов, поддерживающих сеть tox, следует признать qTox. Однако Isotoxin обходит qTox почти по всем пунктам (исключая, разумеется, поддержку не-windows).
  • Портабельность. В какой то момент qTox перестал быть портабельным. Возможно, портабельность ему снова вернули, я не знаю, не проверял.
  • Поддержка XP. qTox больше нельзя запустить под Windows XP. Для кого-то это может быть проблемой. Isotoxin работает под XP без проблем
  • Стабильность. Isotoxin уже практически не падает. Каждое падение — это моя личная трагедия. Пока не докопаюсь до причины падения, не успокаиваюсь. qTox у меня падал, даже без активного использования
  • Дополнительные возможности, которых нет в протоколе. В своем форке toxcore я ввожу новые возможности, разумеется, с обратной совместимостью. Когда Isotoxin обнаруживает на другом конце провода тоже Isotoxin, то эти возможности включаются. Одна из таких возможностей — неограниченная длинна сообщений (другие клиенты следуют рекомендации создателей ядра и режут длинные сообщения по пробелу)

Есть еще много чего, но я не буду всё описывать, чтобы не захламлять статью и не превращать ее в рекламу.

Планы


Планов на будущее много. Помимо добавления протоколов (очень хочется добавить Telegram и джаббер), есть большое желание портировать под линукс. Для знающего человека это не должно составить проблемы. Как я уже писал выше, никаких особых возможностей «винды» я не использую. Вобщем, идея в том, чтобы сделать полноценную замену скайпу.

Ссылки


Сайт проекта: isotoxin.im
Форум проекта: isotoxin.im/forum
Сайт проекта в сети i2p: isotoxin.i2p (тут, бывает, появляются промежуточные версии)
Исходный код: github.com/isotoxin/isotoxin
Блог, посвященный проекту: isotoxin-dev.livejournal.com
isotoxin @isotoxin
карма
26,0
рейтинг 0,1
пользователь С++
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (55)

  • +2
    Как собрать под другие платформы?
    • +5
      Добавить в проект код для других платформ)
  • +3
    Что всё-таки сподвигло открыть код? Да ещё и под GPLv3?
    • 0
      Для этого должна быть особая веская причина?
      • 0
        Вроде нет, но если изначально не планировалось, значит были какие-то свои соображения. Поделитесь?
        • +3
          Думаю ответ вас разочарует. Просто хотел избежать критики моего стиля программирования. Это ведь мой первый opensource проект, до этого весь мой код был доступен ограниченному кругу лиц. Но потом понял — нечего тут стесняться. Работает? Стабильно работает? Значит всё хорошо. А если что-то не нравится — милости просим всё исправить и сделать еще лучше. На то он и opensource.
          • 0
            Если руки дойдут, в феврале возьму. На wxWidgets-порт или Qt-обёртку обижаться не будете?
            • 0
              Нет, не буду. Просто мне кажется, что это излишне. У меня UI движок порождает готовую картинку, которую просто нужно выплюнуть на экран, а с этим, как я понимаю, неплохо справляется голый X11. Впрочем, в вопросах программирования под никсы я полный профан.
              • 0
                если посмотреть на uTox, то там тоже вроде свои средства отрисовки.
              • 0
                Со своим рендерингом шрифтов вы IMHO переборщили. Выглядит не очень. Лучше использовать какую-нибудь хорошую кроссплатформенную библиотеку, например Cairo.
  • 0
    Профиль в своём формате? Стандартный от токса не подойдет?
    • +1
      Профиль в своем формате — sqlite база. Стандартный формат токса не предусматривает возможности хранения истории, а я хотел сделать все в одном файле, т.к. это удобнее. Однако, Isotoxin понимает стандартный профиль. В диалоге добавлении tox соединения, можно выбрать tox-save файл и из него будет импортирован ToxID и список друзей.
  • +2
    В tox так и не появилась поддержка множества устройств с одним аккаунтом?
    • 0
      Нет, это архитектурная проблема, пока не до неё
  • +26
    Глупо пренебрегать этим опытом, поэтому разработка была начата на C++ и под Windows. Однако, понимая всю важность поддержки разных платформ, я сразу решил минимизировать зависимость от winapi и других windows-only возможностей. У меня даже рендеринг текста не использует GDI, а написан свой. Для чтения шрифтов используется библиотека FreeType. Весь GUI, все контролы — всё написано с нуля и не привязано к системе.
    С нуля? Но зачем? Почему не тот же Qt?

    P.S. Сказать по правде, интерфейс выглядит плохо, напоминает эксперименты 15 летней давности.
    • +3
      Такая же мысль возникла… только про wxWidgets
      • 0
        Поддерживаю на счёт wxWidgets, применить его для GUI, а для всего остального уже есть связка C++ STL + Boost (который фактически расширение STL и с каждым новым стандартом из него многое приходит). Самое главное это то, что wxWidgets выглядит «как родной», по сути им и являясь на всех платформах, чего нельзя сказать про тот же Qt, который на всех платформах выглядит как Qt и идеально вписывается только в KDE окружение.
    • +1
      Вы поверите, если я скажу, что люблю программировать? Я ж не ради денег это делаю.
      А что касается внешнего вида — это просто из меня плохой дизайнер — сделал как смог. С технической стороны нет никаких ограничений — все контролы формируются из полноценных RGBA изображений и их внешний вид ограничен только фантазией дизайнера.
      Ну и это вопрос вкуса. Мне, например, интерфейс Windows 10 не нравится. Как раз «напоминает эксперименты 15 летней давности», а это вроде как самое лучшее, что есть.
      • +8
        Вам как бы намекают, что хорошим тоном является использование нативных виджетов. Опять же не привязано к системе, но собрать не под windows никак. И смысл?
      • +2
        Дело не только во внешнем виде. Вот попробовал я прожку и сразу же напоролся на многочисленные недоделки в поведении окон Isotoxin, когда отсутствует стандартная функциональность, а все рефлексы, накопленные годами, оказываются не при делах, и только бессильно материшься, когда очередное привычное действие не срабатывает. Начиная от чисто стилистических несостыковок (типа коряво-размытых шрифтов или неожиданной смены указателя мыши при перетаскивании окна) и заканчивая незакрывающимися по Esc диалогами, неработающим значком системного меню и тому подобными проблемами.

        Сторонние библиотеки тем и хороши, что разрабатываются отдельным коллективом, который вылизывает все эти мелочи, в то время как вы получаете возможность не изобретать велосипед, а направить любовь к программированию на создание действительно уникальной функциональности. Плюсом идёт готовая кроссплатформенность из коробки.
    • +1
      некоторые вещи 15-ти летней давности НАМНОГО лучше современных.
      • 0
        При этом их поддержка для разработчиков на пару порядков сложнее и дороже либо уже вообще закончилась. Т.е. я к тому, что с клиентом для Tox так сейчас не получится ибо, с наибольшей вероятностью, просто приведёт к закапыванию проекта в очень скором времени ибо его поддержка станет причинять БОООЛЬ.
      • 0
        А можно пример?
  • 0
    А вы не пробовали Clang под Windows? Или Clang/C2?
  • +9
    Однако, имелось противоречие с лицензией GPL3, под которой предлагалось ядро tox. В чем противоречие? Если коротко, то эта лицензия требует открывать исходный текст программы, которая использует библиотеку под этой лицензией. Очевидное решение этой дилеммы — вынести реализацию протокола в отдельную динамическую библиотеку (dll) и открыть исходники этой dll.
    На самом деле GPL требует, чтобы открывался весь код, который динамически связывается в процессе выполнения (за исключением системных компонентов). Поэтому DLL не помогла бы: exe-файл, который грузит GPL-библиотеку, всё равно пришлось бы открывать. DLL спасла бы положение лишь при лицензии LGPL, которая такое позволяет.

    В текущей архитектуре проекта открытая и закрытая (потенциально) части разнесены по двум разным процессам, так что тут GPL не нарушается, но на всякий случай решил уточнить, чтобы кто-нибудь не наступил на грабли, прочтя процитированный текст.
  • –22
    У меня один вопрос с точки зрения не радости программирования, а реальной применимости. Я понимаю вы очень гордитесь своим творением и упоминаете, что пишете его в одиночку и уже очень давно и вложили в проект много сил и времени.

    Но простите, а для чего это? Зачем мне ваш p2p мессенджер с возможностью видеосвязи? Почему мне не подходит скайп. К тому же сейчас скайп выпустил веб-версию, что даёт прямо в браузере звонить. Ну хорошо, у вас p2p связь и как бы это надежно и безопастно для клиентов. Но, а что если я просто обыватель и не видел исходников, как вы меня убедите, что сервер не читает и не хранит переписку и не пишет видео? Мало кто поверит вам наслово.

    Я считаю это игрушкой, школьным проектом или проектом на 1 курсе для ознакомления с плюсами и возможностью p2p передачи.

    Вообще кто-то кроме вас пользуется этим мессенджером. Всё, что я вижу сейчас, это как талантливый программист занимается непонятно чем.
    • +2
      Там же написано что открытый протокол
    • +12
      Почему мне не подходит скайп

      Так то вообще всем наплевать подходит он вам или нет. Автору вот не подходит. И он написал свой. Уважуха. Я так не могу, но хотел бы.

      Но, а что если я просто обыватель и не видел исходников, как вы меня убедите, что сервер не читает и не хранит переписку и не пишет видео? Мало кто поверит вам наслово.

      На что простите вы предлагаете верить? Или просто априори верить нельзя никому?
    • +6
      Автор вообще-то воспользовался существующим протоколом (Tox), а не изобрел свой.
    • +3
      Почему мне не подходит скайп.

      как вы меня убедите, что сервер не читает и не хранит переписку и не пишет видео

      Скайп делает и то и другое и (потенциально) третье, но вас вроде это вроде как не смущает.
    • +3
      Есть люди, в том числе и за рубежом, которые прямо сейчас используют Isotoxin и он их устраивает внешним видом и функциональностью. Ну или они просят меня что-то поменять и я с радостью иду им на встречу. Даже если бы это был всего один человек (кроме меня), я был бы рад.
      Я занимаюсь тем, чем мне нравится заниматься — программированием. Кому-то это приносит пользу и меня это устраивает. Я не зарабатываю на этом денег и видимо поэтому вы решили, что я занимаюсь «непонятно чем». Чем же, по вашему, я должен заниматься?
  • 0
    А что плохого в неконстантности sizeof для динамических массивов?
    Вроде есть alloca() можно ее использовать, но массивы это тоже самое только лучше. Мне вообще не понятно как писать на С без динамических массивов на стеке, либо уродливую alloca() использовать, либо malloc на каждый чих, но тогда можно и на перле/Java и остальном писать.
    • 0
      Я сужу с точки зрения C++. Возможно для C неконстантный sizeof и не является проблемой.
      Если более предметно — toxcore. Там динамические массивы используются в основном для генерации пакета, который имеет максимальный размер, что то порядка 1.4kb (чуть меньше). И я не вижу причин не создавать на стеке эти самые 1.4 килобайта, и просто использовать из них не всё. Это бы даже быстрее работало, т.к. выделить на стеке константное количество байт всяко быстрее, чем неконстантное.
      • 0
        Эм, а в чём проблема с точки зрения C++ до тех пор, пока это всё не просачивается в API?
        • 0
          константным sizeof'ом можно, например, инстанцировать шаблоны. Понятно, что на неконстантный компилятор мог бы и ругнуться, но, мне кажется, сущность языка, которая может быть константной и неконстантной в зависимости от контекста — это плохо. Больше путаницы, сложнее компилятор. Я просто уверен, что C и C++ строится одним и тем же компилятором msvc. И делать поддержку неконстантного sizeof, чтобы уметь собирать код стандарта, которого на самом деле не так и много, при том, что всегда можно выкрутиться при помощи alloca, в ms просто сочли экономически нецелесообразным.
          • 0
            А вообще, мне кажется, что в архитектуре компилятора msvc есть какая-то беда с константностью. Т.е. им отчего-то трудно обеспечивать поддержку стандарта в этой области. Думаю, не случайно constexpr появился только в 2015-й студии, хотя мог бы еще в 2010-й, когда стали делать поддержку C++11. Но это исключительно мое мнение на основе ощущений.
            • 0
              Там вообще много проблем, вспомнить хотя бы напрочь сломанный two-phase lookup.
          • 0
            В C константным sizeof'ом можно инициализировать enum'ы:
            void f (int n)
            {
                int vla [n];
            
                enum FooEnum
                {
                    FE0 = sizeof (int),
                    
                    // не соберется, ругаясь
                    // enumerator value for 'FE1' is not an integer constant
                    //FE1 = sizeof (vla) 
                };
            }
            


            Я-то к тому спросил, что в C++ VLA нет, поэтому с точки зрения C++ это может быть плохо лишь в том случае, если код, использующий VLA, является частью API.

            И делать поддержку неконстантного sizeof, чтобы уметь собирать код стандарта, которого на самом деле не так и много, при том, что всегда можно выкрутиться при помощи alloca, в ms просто сочли экономически нецелесообразным.

            Ну, вы с таким кодом вот встретились.
            • 0
              Ну, вы с таким кодом вот встретились.

              В Isotoxin'е использованы 16 сторонних C библиотек. И только в toxcore используются эти массивы.
  • +1
    Ничего себе! Я поражен. Когда-то, во времена распространенности ICQ, мне очень нравилась Miranda — простой, но чрезвычайно расширяемый клиент. Ваши скрины и описание прямо-таки ностальгию вызвали.

    (Посмотрел, оказывается, она уже тоже Tox умеет. Мир развивается. Круто же)

    Желаю вам найти единомышленников и запилить большой проект с плагинами, скинами и радостным сообществом.
  • 0
    qTox у меня падал, даже без активного использования

    У меня работает с утра до вечера и не падает (18 контактов и 3 чата на 40 человек в сумме). toxic вообще вторые сутки работает с логированием.

    Собственный протокол для общения внутри локальной сети

    Зачем было оставлять собственный протокол? Интереса ради спрашиваю.

    исключая смену nospam

    Очень полезная вещь, когда айди написан везде, со временем появятся и спам боты.
    • 0
      У меня работает с утра до вечера и не падает (18 контактов и 3 чата на 40 человек в сумме). toxic вообще вторые сутки работает с логированием.

      *Нервный смех*
      qtox как и utox два самых глючных и недоработанных приложения на моем компьютере

      image
      И это абсолютно все версии, я их обновляю постоянно в надежде и с мыслью — «ну ребята ну вы уже несколько лет разрабатываете это приложение, сделайте хотя бы чтобы оно просто не крэшилось каждый час я уж не говорю про качество звука».
  • +2
    вроде бы новость отличная, но… Собственный протокол для общения внутри локальной сети — вот от этого надо бы уйти — либо переносите плюшки в основной протокол расширяя его, либо плюшки почти никто не сможет использовать если ваш клиент не станет самым популярным. Ну и над внешним видом поработайте — это одна из причин почему я не захотел ставить ваше «чудо» вместо qtox.
    • +1
      Собственный протокол для общения внутри локальной сети — вот от этого надо бы уйти

      Этот протокол создавался для отладочных целей. Понимаете, в текущей архитектуре нужно иметь хотя бы два работающих протокола, чтобы как следует все отладить. Так-то я никому этот протокол не навязываю. А если вы удалите proto.lan.dll, так он даже места на вашем диске занимать не будет.
      Но, может быть вы имеете в виду нечто другое — то что я вношу в tox изменения, которые задействованы только в Isotoxin'е? Но, во первых, эти изменения никак не влияют на работу Isotoxin'а с другими tox-клиентами, т.е. соблюден принцип полной обратной совместимости. Во вторых, кто ж мне позволит внести эти плюшки в основной код протокола? Для этого нужно быть своим в среде разработчиков, а я там никто. Мне так кажется. Может я и ошибаюсь. В любом случае, нужно обосновать эти изменения, чтобы их приняли. А с английским у меня плохо.
      По внешнему виду — тут я пас. Я, конечно, продолжу улучшать движок интерфейса и приводить внешний вид к современным канонам красоты. Но это всё очень субъективно. И я понятия не имею, чем именно для вас внешний вид qTox'а более привлекателен. Может цветами? В следующей версии я сделаю возможность выбирать цвета.
      • 0
        Но, может быть вы имеете в виду нечто другое — то что я вношу в tox изменения, которые задействованы только в Isotoxin'е? Но, во первых, эти изменения никак не влияют на работу Isotoxin'а с другими tox-клиентами, т.е. соблюден принцип полной обратной совместимости. Во вторых, кто ж мне позволит внести эти плюшки в основной код протокола? Для этого нужно быть своим в среде разработчиков, а я там никто. Мне так кажется. Может я и ошибаюсь. В любом случае, нужно обосновать эти изменения, чтобы их приняли. А с английским у меня плохо.


        Если плюшки хорошие, то может все же имеет смысл попробовать внести их в toxcore?
        Думаю, у меня с английским получше, могу поспрашивать и помочь оформить. Что там еще есть, кроме неограниченной длины сообщения?

        Можно на d@dvor.me отвечать.
    • +1
      Ну и над внешним видом поработайте — это одна из причин почему я не захотел ставить ваше «чудо» вместо qtox.

      По опыту разработки стрёмных и не нравящихся среднему пользователю софтин, от такого предложения очень трудно отталкиваться.
  • 0
    «Так что я вполне понимаю разработчиков компилятора msvc и их нежелание связываться с динамическими массивами.»
    Это скорее их недоработка, зато другого, не поддерживаемого иными компиляторами, они понапихали и дальше пихают наплевав на все стандарты…
  • 0
    Как мне запустить 2 версии одновременно на одном компьютере?
    • 0
      запускать вторую копию с ключем multi (описание ключей есть тут)
      правда, если вторая копия будет пытаться открывать тот же профиль, то тоже не запустится. Специально делал защиту, иначе можно логически покарраптить профиль
      • 0
        Спасибо!
  • 0
    хотелось бы чтобы видео двойным кликом мыши открывалось на весь экран. И чтобы масштабировать было можно…
    В целом очень понравилось.
    • 0
      На весь экран хочу сделать, но перед этим хочу переписать передачу видео. В текущем варианте видео сильно портится на слабых каналах. Я уже писАл об этом.
  • 0
    Интересный проект. С нетерпением буду ждать порта на linux.
  • 0
    Надо бы такой под линукс, и чтобы без скинов со времен винампа, то есть вообще без скинов.

    Сейчас похоже qTox самый толковый клиент, кто-то может оценить?
  • 0
    Спасибо. Буду пользоваться. Небольшой недочет: если окно программы не помещается в экран — например, включена экранная клавиатура — то интерфейс постоянно перерисовывается.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.