> Не говоря уж о времени разбирать чужие решения и вникать в чужой код.
> Это не есть хорошо, но пока ситуация именно такова.Я конечно понимаю что NIH штука кусачая, но вы и правда надеетесь дойти своим ходом до удачных идей быстрее чем суммарный общепланетарный интеллект по тематике?
> Когда проект задумывался, то я даже приблизительно не представлял, какой будет
> конечный объём кода, и как это всё будет работать в принципе.
А как он тогда задумывался? И что продумывалось?
> "Сначала сделать, потом сделать, чтобы работало, затем - чтобы работало хорошо".
> Сейчас проект на этапе "чтобы работало", дальше будет - "чтобы работало хорошо".
С точки зрения написания софта, некоторые решения бывает очень сложно переиграть "потом". А писать несколько раз одно и то же все-таки обидно и время очень жрет. Поэтому иногда имеет смысл сперва немного подумать, посмотреть как другие делали, что им икалось, а потом кодить, имхо.
> При работе с текстом от кодировок вы не уйдёте никак. Особенно
> в кроссплатформенном приложении.
С точки зрения именно нижнего уровня можно слать мсг как бинарный блоб в виде как его отдал более высокий уровень, без изменений. А хотел ли кто-то продвинуто парсить уникод это вообще вопрос номер два. Кто-то хотел, кому-то в боте обнаружения !help для реакции на команду хватило, как hardcoded константы в виде набора байтов. А заодно так можно при случае мелкую аватарку или кастомный смайлик какой слать, например.
И нет, icu там таки не линкуется. Просто это мои проблемы что делать с пришедшим мсг. Если продвинутый лингвизм, может и icu поюзать. А в простых случаях можно и забить на это. Зачем боту понимающему пяток команд типа !help сдался icu?
Это называется разделение функциональности. Название libtoxcore намекает что это core месенжера. А ui уже другой уровень абстракций. Вот он и займется этим - если вообще есть и оно ему надо.
> Только в Коммунисте использован ещё один трюк - "сложение" ключей, чтобы даже сам
> пользователь не знал, через какие ключи идёт обмен данными.
У токса на самом деле ключи разные быают. Есть ключ транспортного уровня, DHT ID. Чтобы послать сообщение между системами в DHT, надо знать DHT ID назначения. Знание IP:port недостаточно, надо знать еще DHT ID. Оно там походу ключ 25519, а ширина DHT специально 256 битов, как ключи 25519. У торента DHT 160 битов, как SHA1. Этого мало чтобы адрес DHT был ключом публичного крипто "напрямую".
Есть другой ключ, долговременный. DHT'шный ключ чисто технический и зачастую временный. У бутстрапов он постоянный, это несколько портит их приваси но они ж и так публичные. Однако они равноправны с юзерами, просто юзеры иногда меняют "технический" ключ DHT для улучшения приваси.
Долговременный ключ который юзеры дают как идентификатор для поиска - не есть DHT ID и в DHT нет никого с таким "адресом".
А почему оно на самом деле такое? А потому что https://nacl.cr.yp.to/box.html - основано на вот этой штуке. В более попсовом, быстром и портабельном виде это известно как libsodium.