Что сделано
- Полная поддержка всех текущих возможностей протокола 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/Rotkaermota/Isotoxin
Блог, посвященный проекту: isotoxin-dev.livejournal.com
Комментарии (55)
Kanedias
12.01.2016 21:40+3Что всё-таки сподвигло открыть код? Да ещё и под GPLv3?
Ohar
13.01.2016 13:36Для этого должна быть особая веская причина?
gaelpa
13.01.2016 14:48Вроде нет, но если изначально не планировалось, значит были какие-то свои соображения. Поделитесь?
isotoxin
13.01.2016 16:00+3Думаю ответ вас разочарует. Просто хотел избежать критики моего стиля программирования. Это ведь мой первый opensource проект, до этого весь мой код был доступен ограниченному кругу лиц. Но потом понял — нечего тут стесняться. Работает? Стабильно работает? Значит всё хорошо. А если что-то не нравится — милости просим всё исправить и сделать еще лучше. На то он и opensource.
Kanedias
14.01.2016 08:59Если руки дойдут, в феврале возьму. На wxWidgets-порт или Qt-обёртку обижаться не будете?
isotoxin
14.01.2016 17:21Нет, не буду. Просто мне кажется, что это излишне. У меня UI движок порождает готовую картинку, которую просто нужно выплюнуть на экран, а с этим, как я понимаю, неплохо справляется голый X11. Впрочем, в вопросах программирования под никсы я полный профан.
ComodoHacker
18.01.2016 11:10Со своим рендерингом шрифтов вы IMHO переборщили. Выглядит не очень. Лучше использовать какую-нибудь хорошую кроссплатформенную библиотеку, например Cairo.
Scratch
12.01.2016 21:50Профиль в своём формате? Стандартный от токса не подойдет?
isotoxin
12.01.2016 22:07+1Профиль в своем формате — sqlite база. Стандартный формат токса не предусматривает возможности хранения истории, а я хотел сделать все в одном файле, т.к. это удобнее. Однако, Isotoxin понимает стандартный профиль. В диалоге добавлении tox соединения, можно выбрать tox-save файл и из него будет импортирован ToxID и список друзей.
Zifix
12.01.2016 22:19+26Глупо пренебрегать этим опытом, поэтому разработка была начата на C++ и под Windows. Однако, понимая всю важность поддержки разных платформ, я сразу решил минимизировать зависимость от winapi и других windows-only возможностей. У меня даже рендеринг текста не использует GDI, а написан свой. Для чтения шрифтов используется библиотека FreeType. Весь GUI, все контролы — всё написано с нуля и не привязано к системе.
С нуля? Но зачем? Почему не тот же Qt?
P.S. Сказать по правде, интерфейс выглядит плохо, напоминает эксперименты 15 летней давности.Source
12.01.2016 22:31+3Такая же мысль возникла… только про wxWidgets
IRainman
13.01.2016 00:10Поддерживаю на счёт wxWidgets, применить его для GUI, а для всего остального уже есть связка C++ STL + Boost (который фактически расширение STL и с каждым новым стандартом из него многое приходит). Самое главное это то, что wxWidgets выглядит «как родной», по сути им и являясь на всех платформах, чего нельзя сказать про тот же Qt, который на всех платформах выглядит как Qt и идеально вписывается только в KDE окружение.
isotoxin
12.01.2016 23:07+1Вы поверите, если я скажу, что люблю программировать? Я ж не ради денег это делаю.
А что касается внешнего вида — это просто из меня плохой дизайнер — сделал как смог. С технической стороны нет никаких ограничений — все контролы формируются из полноценных RGBA изображений и их внешний вид ограничен только фантазией дизайнера.
Ну и это вопрос вкуса. Мне, например, интерфейс Windows 10 не нравится. Как раз «напоминает эксперименты 15 летней давности», а это вроде как самое лучшее, что есть.norguhtar
13.01.2016 07:48+8Вам как бы намекают, что хорошим тоном является использование нативных виджетов. Опять же не привязано к системе, но собрать не под windows никак. И смысл?
CaptainFlint
14.01.2016 00:30+2Дело не только во внешнем виде. Вот попробовал я прожку и сразу же напоролся на многочисленные недоделки в поведении окон Isotoxin, когда отсутствует стандартная функциональность, а все рефлексы, накопленные годами, оказываются не при делах, и только бессильно материшься, когда очередное привычное действие не срабатывает. Начиная от чисто стилистических несостыковок (типа коряво-размытых шрифтов или неожиданной смены указателя мыши при перетаскивании окна) и заканчивая незакрывающимися по Esc диалогами, неработающим значком системного меню и тому подобными проблемами.
Сторонние библиотеки тем и хороши, что разрабатываются отдельным коллективом, который вылизывает все эти мелочи, в то время как вы получаете возможность не изобретать велосипед, а направить любовь к программированию на создание действительно уникальной функциональности. Плюсом идёт готовая кроссплатформенность из коробки.
Sergey6661313
12.01.2016 23:08+1некоторые вещи 15-ти летней давности НАМНОГО лучше современных.
IRainman
13.01.2016 00:03При этом их поддержка для разработчиков на пару порядков сложнее и дороже либо уже вообще закончилась. Т.е. я к тому, что с клиентом для Tox так сейчас не получится ибо, с наибольшей вероятностью, просто приведёт к закапыванию проекта в очень скором времени ибо его поддержка станет причинять БОООЛЬ.
CaptainFlint
12.01.2016 22:38+9Однако, имелось противоречие с лицензией GPL3, под которой предлагалось ядро tox. В чем противоречие? Если коротко, то эта лицензия требует открывать исходный текст программы, которая использует библиотеку под этой лицензией. Очевидное решение этой дилеммы — вынести реализацию протокола в отдельную динамическую библиотеку (dll) и открыть исходники этой dll.
На самом деле GPL требует, чтобы открывался весь код, который динамически связывается в процессе выполнения (за исключением системных компонентов). Поэтому DLL не помогла бы: exe-файл, который грузит GPL-библиотеку, всё равно пришлось бы открывать. DLL спасла бы положение лишь при лицензии LGPL, которая такое позволяет.
В текущей архитектуре проекта открытая и закрытая (потенциально) части разнесены по двум разным процессам, так что тут GPL не нарушается, но на всякий случай решил уточнить, чтобы кто-нибудь не наступил на грабли, прочтя процитированный текст.
Mugik
13.01.2016 00:59-22У меня один вопрос с точки зрения не радости программирования, а реальной применимости. Я понимаю вы очень гордитесь своим творением и упоминаете, что пишете его в одиночку и уже очень давно и вложили в проект много сил и времени.
Но простите, а для чего это? Зачем мне ваш p2p мессенджер с возможностью видеосвязи? Почему мне не подходит скайп. К тому же сейчас скайп выпустил веб-версию, что даёт прямо в браузере звонить. Ну хорошо, у вас p2p связь и как бы это надежно и безопастно для клиентов. Но, а что если я просто обыватель и не видел исходников, как вы меня убедите, что сервер не читает и не хранит переписку и не пишет видео? Мало кто поверит вам наслово.
Я считаю это игрушкой, школьным проектом или проектом на 1 курсе для ознакомления с плюсами и возможностью p2p передачи.
Вообще кто-то кроме вас пользуется этим мессенджером. Всё, что я вижу сейчас, это как талантливый программист занимается непонятно чем.Klaster
13.01.2016 08:28+12Почему мне не подходит скайп
Так то вообще всем наплевать подходит он вам или нет. Автору вот не подходит. И он написал свой. Уважуха. Я так не могу, но хотел бы.
Но, а что если я просто обыватель и не видел исходников, как вы меня убедите, что сервер не читает и не хранит переписку и не пишет видео? Мало кто поверит вам наслово.
На что простите вы предлагаете верить? Или просто априори верить нельзя никому?
Randl
13.01.2016 12:20+6Автор вообще-то воспользовался существующим протоколом (Tox), а не изобрел свой.
Ohar
13.01.2016 13:40+3Почему мне не подходит скайп.
как вы меня убедите, что сервер не читает и не хранит переписку и не пишет видео
Скайп делает и то и другое и (потенциально) третье, но вас вроде это вроде как не смущает.
isotoxin
13.01.2016 15:36+3Есть люди, в том числе и за рубежом, которые прямо сейчас используют Isotoxin и он их устраивает внешним видом и функциональностью. Ну или они просят меня что-то поменять и я с радостью иду им на встречу. Даже если бы это был всего один человек (кроме меня), я был бы рад.
Я занимаюсь тем, чем мне нравится заниматься — программированием. Кому-то это приносит пользу и меня это устраивает. Я не зарабатываю на этом денег и видимо поэтому вы решили, что я занимаюсь «непонятно чем». Чем же, по вашему, я должен заниматься?
billyevans
13.01.2016 01:17А что плохого в неконстантности sizeof для динамических массивов?
Вроде есть alloca() можно ее использовать, но массивы это тоже самое только лучше. Мне вообще не понятно как писать на С без динамических массивов на стеке, либо уродливую alloca() использовать, либо malloc на каждый чих, но тогда можно и на перле/Java и остальном писать.isotoxin
13.01.2016 15:48Я сужу с точки зрения C++. Возможно для C неконстантный sizeof и не является проблемой.
Если более предметно — toxcore. Там динамические массивы используются в основном для генерации пакета, который имеет максимальный размер, что то порядка 1.4kb (чуть меньше). И я не вижу причин не создавать на стеке эти самые 1.4 килобайта, и просто использовать из них не всё. Это бы даже быстрее работало, т.к. выделить на стеке константное количество байт всяко быстрее, чем неконстантное.0xd34df00d
13.01.2016 16:00Эм, а в чём проблема с точки зрения C++ до тех пор, пока это всё не просачивается в API?
isotoxin
13.01.2016 16:51константным sizeof'ом можно, например, инстанцировать шаблоны. Понятно, что на неконстантный компилятор мог бы и ругнуться, но, мне кажется, сущность языка, которая может быть константной и неконстантной в зависимости от контекста — это плохо. Больше путаницы, сложнее компилятор. Я просто уверен, что C и C++ строится одним и тем же компилятором msvc. И делать поддержку неконстантного sizeof, чтобы уметь собирать код стандарта, которого на самом деле не так и много, при том, что всегда можно выкрутиться при помощи alloca, в ms просто сочли экономически нецелесообразным.
isotoxin
13.01.2016 17:02А вообще, мне кажется, что в архитектуре компилятора msvc есть какая-то беда с константностью. Т.е. им отчего-то трудно обеспечивать поддержку стандарта в этой области. Думаю, не случайно constexpr появился только в 2015-й студии, хотя мог бы еще в 2010-й, когда стали делать поддержку C++11. Но это исключительно мое мнение на основе ощущений.
0xd34df00d
13.01.2016 17:06Там вообще много проблем, вспомнить хотя бы напрочь сломанный two-phase lookup.
0xd34df00d
13.01.2016 17:05В 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 просто сочли экономически нецелесообразным.
Ну, вы с таким кодом вот встретились.isotoxin
13.01.2016 17:37Ну, вы с таким кодом вот встретились.
В Isotoxin'е использованы 16 сторонних C библиотек. И только в toxcore используются эти массивы.
mtp
13.01.2016 01:40+1Ничего себе! Я поражен. Когда-то, во времена распространенности ICQ, мне очень нравилась Miranda — простой, но чрезвычайно расширяемый клиент. Ваши скрины и описание прямо-таки ностальгию вызвали.
(Посмотрел, оказывается, она уже тоже Tox умеет. Мир развивается. Круто же)
Желаю вам найти единомышленников и запилить большой проект с плагинами, скинами и радостным сообществом.
nikitasius
13.01.2016 01:55qTox у меня падал, даже без активного использования
У меня работает с утра до вечера и не падает (18 контактов и 3 чата на 40 человек в сумме). toxic вообще вторые сутки работает с логированием.
Собственный протокол для общения внутри локальной сети
Зачем было оставлять собственный протокол? Интереса ради спрашиваю.
исключая смену nospam
Очень полезная вещь, когда айди написан везде, со временем появятся и спам боты.ReaM
18.01.2016 09:09У меня работает с утра до вечера и не падает (18 контактов и 3 чата на 40 человек в сумме). toxic вообще вторые сутки работает с логированием.
*Нервный смех*
qtox как и utox два самых глючных и недоработанных приложения на моем компьютере
И это абсолютно все версии, я их обновляю постоянно в надежде и с мыслью — «ну ребята ну вы уже несколько лет разрабатываете это приложение, сделайте хотя бы чтобы оно просто не крэшилось каждый час я уж не говорю про качество звука».
Vinchi
13.01.2016 04:23+2вроде бы новость отличная, но… Собственный протокол для общения внутри локальной сети — вот от этого надо бы уйти — либо переносите плюшки в основной протокол расширяя его, либо плюшки почти никто не сможет использовать если ваш клиент не станет самым популярным. Ну и над внешним видом поработайте — это одна из причин почему я не захотел ставить ваше «чудо» вместо qtox.
isotoxin
13.01.2016 14:21+1Собственный протокол для общения внутри локальной сети — вот от этого надо бы уйти
Этот протокол создавался для отладочных целей. Понимаете, в текущей архитектуре нужно иметь хотя бы два работающих протокола, чтобы как следует все отладить. Так-то я никому этот протокол не навязываю. А если вы удалите proto.lan.dll, так он даже места на вашем диске занимать не будет.
Но, может быть вы имеете в виду нечто другое — то что я вношу в tox изменения, которые задействованы только в Isotoxin'е? Но, во первых, эти изменения никак не влияют на работу Isotoxin'а с другими tox-клиентами, т.е. соблюден принцип полной обратной совместимости. Во вторых, кто ж мне позволит внести эти плюшки в основной код протокола? Для этого нужно быть своим в среде разработчиков, а я там никто. Мне так кажется. Может я и ошибаюсь. В любом случае, нужно обосновать эти изменения, чтобы их приняли. А с английским у меня плохо.
По внешнему виду — тут я пас. Я, конечно, продолжу улучшать движок интерфейса и приводить внешний вид к современным канонам красоты. Но это всё очень субъективно. И я понятия не имею, чем именно для вас внешний вид qTox'а более привлекателен. Может цветами? В следующей версии я сделаю возможность выбирать цвета.dvor
13.01.2016 14:48Но, может быть вы имеете в виду нечто другое — то что я вношу в tox изменения, которые задействованы только в Isotoxin'е? Но, во первых, эти изменения никак не влияют на работу Isotoxin'а с другими tox-клиентами, т.е. соблюден принцип полной обратной совместимости. Во вторых, кто ж мне позволит внести эти плюшки в основной код протокола? Для этого нужно быть своим в среде разработчиков, а я там никто. Мне так кажется. Может я и ошибаюсь. В любом случае, нужно обосновать эти изменения, чтобы их приняли. А с английским у меня плохо.
Если плюшки хорошие, то может все же имеет смысл попробовать внести их в toxcore?
Думаю, у меня с английским получше, могу поспрашивать и помочь оформить. Что там еще есть, кроме неограниченной длины сообщения?
Можно на d@dvor.me отвечать.
0xd34df00d
13.01.2016 15:12+1Ну и над внешним видом поработайте — это одна из причин почему я не захотел ставить ваше «чудо» вместо qtox.
По опыту разработки стрёмных и не нравящихся среднему пользователю софтин, от такого предложения очень трудно отталкиваться.
horlon
13.01.2016 12:59«Так что я вполне понимаю разработчиков компилятора msvc и их нежелание связываться с динамическими массивами.»
Это скорее их недоработка, зато другого, не поддерживаемого иными компиляторами, они понапихали и дальше пихают наплевав на все стандарты…
Sergey6661313
13.01.2016 19:58хотелось бы чтобы видео двойным кликом мыши открывалось на весь экран. И чтобы масштабировать было можно…
В целом очень понравилось.
serf
14.01.2016 18:53Надо бы такой под линукс, и чтобы без скинов со времен винампа, то есть вообще без скинов.
Сейчас похоже qTox самый толковый клиент, кто-то может оценить?
Kempston
15.01.2016 04:27Спасибо. Буду пользоваться. Небольшой недочет: если окно программы не помещается в экран — например, включена экранная клавиатура — то интерфейс постоянно перерисовывается.
ploop
Как собрать под другие платформы?
Wedmer
Добавить в проект код для других платформ)