Комментарии 81
Кстати, в обсуждении проекта 2tox, идет дискуссия на тему переписывания частей ядра на Rust. Мне кажется это отличная идея и отличное применение языка.

Предлагаю желающим подключаться.
Всё время при прочтении статьи думал о том, что если бы они писали Tox на Rust, не было бы таких проблем.
В этом смысле проще. Каждый unsafe в rust коде надо еще обосновать. Отсутствие обоснования — автоматический довод в пользу рефакторинга.

Плюс к этому, все unsafe-ы легко ищутся по тексту.
Тоже верно, но запутать код так, чтобы там расплодились логические бомбы rust не помешает.
Разумеется. Но так можно сказать про любой язык и любой проект, написанный с его помощью.
Было бы круто иметь вменяемые тесты, и ещё подробное описание протокола. Оно-то вроде бы есть?
Что-то мне начинает казаться, что не безопаснее ли будет это всё переписать на rust'е? Он за очень многие вещи сразу по рукам даст.
Ну что значит переписать? Нет документации, тестов, ожидаемого поведения, описания протокола. В процессе переписывания я расшифровываю их код, приходит понимание того, что они хотели сделать. Пишу юнит тесты так, чтобы можно было подсунуть им разную имплементацию: мою или toxcore. Таким образом есть ненулевая вероятность устроить безболезненный перевод гуя с одной библиотеки на другую.

Вы можете начать переписывать с C++ на Rust с использованием моего набора тестов. Это будет куда проще, чем начинать с C.
А что об этом авторы toxcore говорят?

Вообще, можно только некоторые самые опасные функции на rust перенести.
«Самых опасных» функций у них нет. Они используют криптографические библиотеки и делегируют тестирование на другой проект. Проблема в том, что у них везде сумасшедшая и недокументированная адресная арифметика. Там надо переписывать 50% на Rust.
Куча арифметики, раздолбайское отношение к коду в мастере, напрашивается вопрос, а сам протокол и алгоритмы то там адекватные?
Открыл репозиторий kpp/2tox и что я вижу? Два файла (ридми и лицензия), закоммиченные месяц назад. Негусто. Когда что-то реальное в ствол будет сливаться из других (а там их штук пять) веток? Хотелось бы увидеть что-то более значимое, чем пустой репозиторий.
В мастер попадет только после массового тестирования. А пока что наслаждайтесь веткой develop.
Если правки вносились бы в master по желанию левой пятки, то 2tox ничем бы тогда принципиально не отличался от toxcore.
И ещё вопрос к автору: с одной стороны вы пишете, что не специалист по безопасности, с другой стороны замахнулись на собственную реализацию toxcore. Можно как экспы хапнуть, так и опозориться — не страшно было начинать? Что вообще двигало?
Я не зря написал в заголовке статьи: они приняли мой PR, указанные выше проблемы являются установленными фактами и признанными проблемы безопасности. Из этого следует несколько возможных выводов:
  1. Я, не специалист, знаю больше, чем они, и значит могу писать свою реализацию
  2. Я не знаю больше, чем они, но написать хуже, чем они, просто невозможно


Собственная реализация просто необходима, потому что иначе это будут заплатки в их коде, которые будут повышать доверие к проекту, но по факту, он как был дырявым, таковым и будет. Мне понадобился месяц в IRC канале, чтобы переубедить их, что надо использовать sodium_memzero, который имеется только в библиотеке Sodium, и, таким образом, полностью уйти от NaCl.

Да и вообще, я написал эту статью, чтобы предостеречь людей от бездумного доверия Tox. Что с этим делать — решать лично вам.
Ну, совсем уходить от NaCl тоже как-то не ок, как мне кажется :(
От себя добавлю следующее: даже не будучи специалистом по безопасности, можно помочь проекту эту самую безопасность повысить. Для начала, стоит поднять общее качество кода и снизить порог вхождения в него.

Как известно, хороший код отличается от плохого в том числе и метрикой «WTF per minute». Роман потратил огромное количество времени и сил чтобы разобраться в «хитросплетениях сюжета». Эта информация покоится либо в головах разработчиков, либо явно выражена в коде/комментариях.

Если код будет написан аккуратно, все основные моменты будут хорошо и прозрачно документированы, если все сложные и потенциально опасные места будут отмечены явно, то специалистам по безопасности (коими мы не являемся) будет гораздо проще увидеть проблемы.

Разумеется и желание их исправлять будет больше, если с кодом работать приятно и не приходится просеивать лапшу через дуршлаг.
Не забудьте поделить на количество строк во всем проекте и нормировать на суммарное время их прочтения.
Прикольно, не знал раньше:
Факи..
/usr/src/linux/fs/notify/inotify/inotify_user.c: * fucked up somewhere.
/usr/src/linux/fs/xfs/xfs_btree.h: case XFS_BTNUM_MAX: ASSERT(0); /* fucking gcc */; break; \
/usr/src/linux/fs/xfs/xfs_btree.h: case XFS_BTNUM_MAX: ASSERT(0); /* fucking gcc */; break; \
/usr/src/linux/arch/sparc/kernel/head_32.S: /* XXX Fucking Cypress… */
/usr/src/linux/arch/parisc/kernel/sys_parisc.c:/* Fucking broken ABI */
/usr/src/linux/arch/m68k/include/asm/sun3ints.h:/* master list of VME vectors — don't fuck with this */
/usr/src/linux/arch/x86/kernel/cpu/cpufreq/powernow-k7.c: * Some Athlon laptops have really fucked PST tables.
/usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't even give the
/usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't even give the
/usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't try to access
/usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't even give the
/usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't even give the
/usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't try to access
/usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't even give the
/usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't even give the
/usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't try to access
/usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't even give the
/usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't even give the
/usr/src/linux/arch/mips/pci/ops-bridge.c: * IOC3 is fucked fucked beyond believe… Don't try to access
/usr/src/linux/arch/mips/sgi-ip22/ip22-setup.c: * fucking with the memory controller because it needs to know the
/usr/src/linux/Documentation/DocBook/kernel-locking.tmpl: If you don't see why, please stay the fuck away from my code.
/usr/src/linux/net/ipv4/netfilter/nf_nat_snmp_basic.c: * (And this is the fucking 'basic' method).
/usr/src/linux/net/core/skbuff.c: /* Fuck, we are miserable poor guys… */
/usr/src/linux/lib/vsprintf.c: * Wirzenius wrote this portably, Torvalds fucked it up :-)
/usr/src/linux/drivers/media/video/bt819.c: BUG? Why does turning the chroma comb on fuck up color?
/usr/src/linux/drivers/mtd/mtd_blkdevs.c: registered, to prevent the link/init ordering from fucking
/usr/src/linux/drivers/ide/cmd640.c: * These chips are basically fucked by design, and getting this driver
/usr/src/linux/drivers/scsi/qlogicpti.h:/* Am I fucking pedantic or what? */
/usr/src/linux/drivers/net/sunhme.c:/* Only Sun can take such nice parts and fuck up the programming interface
/usr/src/linux/drivers/net/sunhme.c: /* This card is _fucking_ hot… */
/usr/src/linux/drivers/watchdog/shwdt.c: * brain-damage, it's managed to fuck things up one step further…

Спасибо вам большое за эту статью. Не думал, что в токсе возникнет конкуренция, но это должно быть хорошо )
Две совместимые реализации tox'а вместо одной — это же отлично!
Что-то мне кажется, что это чудеса. В какой-то момент появится желание чуть чуть переделать протокол, ну например, чтобы наконец можно было с нескольких устройств юзать один id, или хотя бы чтобы можно было несколько id группировать в один контакт.
Я уж молчу про то, что уязвимости ещё бывает не из за деталей реализации, а by design.
Такое уже давно происходит, например в проекте isotoxin, когда базовая функциональность поддерживается всеми клиентами, но «близкие родственники» могут предоставлять еще и дополнительную нестандартную функциональность. Тем не менее, не ошибается только тот кто ничего не делает.
Просто я боюсь при таком раздолбайстве core группы как-бы не закончилось всё форком :)
Мне кажется, при таком подходе любой форк будет лучше ванильки. Не обязательно этот.
Главное, чтобы не получилось как с XEPами.
Надеюсь, вокруг проекта недостаточно бюрократов, чтобы выработать свой какой-нибудь TOXEP.
Согласен. Только у меня большое подозрение, что они не могут реализовать некоторые хотелки из-за запутанного кода. А отлавливать уязвимости by design будет проще в красивом и понятном коде, как высказался выше Halt.
Звучит логично, но захотят ли они потом вашу либу делать референсной, вместо своей. Да и есть ли у проекта люди уровня Николая Дурова?
Тут уже пусть люди ногами голосуют. Если протокол будет-более менее совместим, остальное будет делом техники.

Конечно, нарушение совместимости протокола — это самое серьезное что можно сделать, и в эту сторону надо смотреть очень осторожно.
А вот две несовместимые реализации — это уже печально. Если своё новое добавлять, то обычная реализация с новой должны работать настолько хорошо, насколько работают друг с другом две худшие реализации (то есть без деградации).
НЛО прилетело и опубликовало эту надпись здесь
В данном случае уместно использовать sodium_memzero, потому что библиотека Sodium уже влинковывается.
Можете присоединиться к нашему проекту 2tox, который мы потихоньку пилим с Halt на замену toxcore.


Через два месяца (как с момента публикации статьи и ноде) появится новая статья на хабре от других кодеров, приблизительно в таком же стиле, но в конце будет:
Можете присоединиться к нашему проекту 3tox, который мы потихоньку пилим с username на замену toxcore и 2tox.


С одной стороны это замечательно, и это опенсорс. На этом плюсы кончились. Из минусов: сейчас tox таки начитает развиваться, и количество нод с декабря февраль выросло с 19 до 37.
Вместо запила второго, третьего и, вероятно, четвертого репозитария полезнее писать код вместе с разрабами, для связи есть #tox-dev и #tox.

Там адекватные ребята. Самый нервный — грейхантер, у него вечно бомбит на критику. Автор toxic'а (фригман) его противовес.
У них сейчас дилемма — с тем, что они задумали (хотя бы новые группы с правами) им придется свернуть со старого курса «простоты» и даже как-то хранить инфу на нодах, о чего они отплевывались 2 недели назад, или изобретать что-то более сложное для этого.
Прошу прощения, вы статью читали? Автор общается с разработчиками. Исправления описанных проблем уже влиты в оригинальный репозиторий, — это раз. Второе — сама структура оригинального проекта мешает рефакторингу внедрению новых изменений.
Конечно прочитал. Так же я поднял логи IRC за месяц по каналам #tox-dev и #tox и не увидел grep'ом там ваших бесед (halt/humbug/kpp), а только упоминания 2tox самими разрабами токса и их ботом (который новости постит с гитхаба).

Для меня все равно загадка, почему не поговорить с ними по душам и не сделать toxcore 2.0 совместно?
Грепайте по LearnC.

Для меня все равно загадка, почему не поговорить с ними по душам и не сделать toxcore 2.0 совместно?

Я начал писать 2.0 и попытался обосновать свое решение данной статьей. Вы знаете, я не из тех людей, который переманивает разработчиков путём переговоров на IRC канале. Я не собираюсь заманивать их воздушными мечтами о том, что «вот сейчас-то наконец-то взлетит». Я тихо пилю код.
А можно ссылочку на логи? Или вы постоянно находитесь в чате?
Я не понимаю ваших претензий. Даже Столманн был бы мной доволен, я починил баги, отправил исправления в toxcore. Несмотря на то, что я решил создать свой репозитарий, я помогаю основному.

2tox и 3tox. И пускай! Чем больше, тем лучше! Только если это будет обоснованное решение, а не веление мизинца левой ноги. Лично я не хочу форкаться от toxcore, потому что тогда код будет заражен их багами. Вы же не считаете, что я нашел все ошибки?)) Я продемонстрировал качество кода и общее отношение к подходу разработки.
В данном случае уместно использовать sodium_memzero, потому что библиотека Sodium уже влинковывается. Более того, это кроссплатформенно.
Ещё с прошлой публикации покопался в исходника, поустанавливал клиенты. Ничего прорывного, классного не увидел. Те, кто действительно беспокоится о своей безопасности не станут использовать написанные не им самим приложения, да и вряд ли люди, которые нуждаются в секретности пересылают информацию в мессенджерах. Простые смертные будут писать в вк или использовать скайп.

Открытый, опен-сорсный, ну ок. Век мессенджеров прошел. Теперь соц сети правят балом. Не понимаю почему это вызывает такой интерес.
Факт №1. В master-ветку попадает код, который падает на тестах


Время вопросов по статье, а именно по вашей стилистике. Я не С/C++ кодер, но открыв toxcore/jobs/105970831 я вижу:

FAIL: onion_test
../auto_tests/onion_test.c:136:F:basic:test_basic:0: Onion failed initializing.
../auto_tests/onion_test.c:372:F:announce:test_announce:0: Failed to create onions. 0



FAIL: TCP_test
../auto_tests/TCP_test.c:46:F:basic:test_basic:0: Failed to connect to TCP relay server
../auto_tests/TCP_test.c:143:F:some:test_some:0: Failed to connect to TCP relay server
../auto_tests/TCP_test.c:399:F:client:test_client:0: Wrong status. Expected: 5, is: 4
../auto_tests/TCP_test.c:589:F:tcp_connection:test_tcp_connection:0: could not send packet.
../auto_tests/TCP_test.c:686:F:tcp_connection2:test_tcp_connection2:0: could not send packet.



FAIL: tox_test
../auto_tests/tox_test.c:927:F:many_clients_tcp:test_many_clients_tcp:0: add relay error
../auto_tests/tox_test.c:1022:F:many_clients_tcp_b:test_many_clients_tcp_b:0: add relay error



FAIL: dht_autotest
../auto_tests/dht_test.c:595:E:DHT_test:test_DHT_test:0: (after this point) Test timeout expired



Для меня это носит характер сетевых проблем на Тревисе (занятые порты или еще бох весть какие траблы). Проверяю у себя:

make check
make[3]: Leaving directory '/usr/tox20160205/toxcore-master/build'
make  check-TESTS
make[3]: Entering directory '/usr/tox20160205/toxcore-master/build'
make[4]: Entering directory '/usr/tox20160205/toxcore-master/build'
PASS: encryptsave_test
PASS: messenger_autotest
PASS: crypto_test
PASS: network_test
PASS: assoc_test
PASS: onion_test
PASS: TCP_test
PASS: tox_test
PASS: dht_autotest
make[5]: Entering directory '/usr/tox20160205/toxcore-master/build'
make[5]: Nothing to be done for 'all'.
make[5]: Leaving directory '/usr/tox20160205/toxcore-master/build'
============================================================================
Testsuite summary for tox 0.0.0
============================================================================
# TOTAL: 9
# PASS:  9
# SKIP:  0
# XFAIL: 0
# FAIL:  0
# XPASS: 0
# ERROR: 0
============================================================================
make[4]: Leaving directory '/usr/tox20160205/toxcore-master/build'
make[3]: Leaving directory '/usr/tox20160205/toxcore-master/build'
make[2]: Leaving directory '/usr/tox20160205/toxcore-master/build'
make[2]: Entering directory '/usr/tox20160205/toxcore-master'
make[2]: Leaving directory '/usr/tox20160205/toxcore-master'
make[1]: Leaving directory '/usr/tox20160205/toxcore-master'
root@l64tox1:/usr/tox20160205/toxcore-master#




Все тесты пройдены. На последнем свежем мастере. Если же проводить тесты во время работающей ноды, то у меня они начали фейлить:

make check
make[3]: Leaving directory '/usr/tox20160205/toxcore-master/build'
make  check-TESTS
make[3]: Entering directory '/usr/tox20160205/toxcore-master/build'
make[4]: Entering directory '/usr/tox20160205/toxcore-master/build'
PASS: encryptsave_test
PASS: messenger_autotest
PASS: crypto_test
PASS: network_test
PASS: assoc_test
PASS: onion_test
FAIL: TCP_test
FAIL: tox_test
PASS: dht_autotest
make[5]: Entering directory '/usr/tox20160205/toxcore-master/build'
make[5]: Nothing to be done for 'all'.
make[5]: Leaving directory '/usr/tox20160205/toxcore-master/build'
============================================================================
Testsuite summary for tox 0.0.0
============================================================================
# TOTAL: 9
# PASS:  7
# SKIP:  0
# XFAIL: 0
# FAIL:  2
# XPASS: 0
# ERROR: 0
============================================================================
See build/test-suite.log
============================================================================
Makefile:2642: recipe for target 'test-suite.log' failed
make[4]: *** [test-suite.log] Error 1
make[4]: Leaving directory '/usr/tox20160205/toxcore-master/build'
Makefile:2748: recipe for target 'check-TESTS' failed
make[3]: *** [check-TESTS] Error 2
make[3]: Leaving directory '/usr/tox20160205/toxcore-master/build'
Makefile:2891: recipe for target 'check-am' failed
make[2]: *** [check-am] Error 2
make[2]: Leaving directory '/usr/tox20160205/toxcore-master/build'
Makefile:505: recipe for target 'check-recursive' failed
make[1]: *** [check-recursive] Error 1
make[1]: Leaving directory '/usr/tox20160205/toxcore-master'
Makefile:794: recipe for target 'check' failed
make: *** [check] Error 2



Вот вывод cat build/test-suite.log

test-suite.log
=====================================
   tox 0.0.0: build/test-suite.log
=====================================

# TOTAL: 9
# PASS:  7
# SKIP:  0
# XFAIL: 0
# FAIL:  2
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

FAIL: TCP_test
==============

Running suite(s): TCP
33%: Checks: 6, Failures: 4, Errors: 0
../auto_tests/TCP_test.c:37:F:basic:test_basic:0: Failed to bind to all ports
../auto_tests/TCP_test.c:219:F:some:test_some:0: Failed to bind to all ports
../auto_tests/TCP_test.c:385:F:client:test_client:0: Failed to bind to all ports
../auto_tests/TCP_test.c:589:F:tcp_connection:test_tcp_connection:0: could not send packet.

FAIL: tox_test
==============

Running suite(s): Tox
Toxes are online, took 8 seconds
tox clients connected took 2 seconds
tox clients messaging succeeded
3427
Toxes are online again after reloading, took 8 seconds
tox clients connected took 2 seconds
Starting file transfer test.
100MB file sent in 12 seconds
Starting file streaming transfer test.
Starting file 0 transfer test.
test_few_clients succeeded, took 24 seconds
test_many_clients succeeded, took 19 seconds
test_many_clients_tcp succeeded, took 10 seconds
test_many_clients_tcp_b succeeded, took 9 seconds
friends connected, took 16 seconds
83%: Checks: 6, Failures: 1, Errors: 0
../auto_tests/tox_test.c:1221:F:many_group:test_many_group:0: Bad number of group peers. expected: 32 got: 30, tox 30




Поэтому не слишком ли вы громко без учета окружения написали, что «В master-ветку попадает код, который падает на тестах»?
Нет, не слишком громко. Если тесты падают на CI — но их ремонт откладывается в неопределенное будущее, это означает, что тестам в принципе не уделяется достаточного внимания. А в таком случае уже не важно что тесты проходят на машине разработчика — с таким подходом там наверняка покрытие тестами недостаточное.
У вас никнейм на humbug не похож, значит вы не автор статьи не можете за него ответить.

Что до различия на клиенте:
make check я такой же вызываю, а gcc (Debian 4.9.2-10) 4.9.2 и, опять таки, читайте что я написал про окружение, в котором проходит тест. И когда в моем случае он прошел, а когда зафейлил.
Вот именно. Чтобы тесты стали нормальными — надо просто вынести их с веб-сервера. Раз это до сих пор не сделано — значит, на тесты всем наплевать.
Если CI флапает в красный через раз — толку от таких тестов ноль. Их все просто игнорируют.
Вы молодец, вас зря минусуют. Дайте мне время ответить на ваши вопросы.
Но у меня то на день тестов они все нормально прошли. И фейл был только у сетевых из-за работающей паралельно ноды. При остановке ноды они все были пройдены. Нода обновлена и теперь работает свежая.
Все верно. На момент написания статьи у меня фейлилось, потом меня попросили ребейзнуться, сейчас этой баги нет.
Так а в чем проблема то была с сетевыми тестами?
Я же в тот самый день (5го февраля) тестил — и тесты прошли (лог в комменте).
Вы читали мое сообщение? Я же говорю, удалите коммиты(ревертните, ребейзнитесь или еще как). На момент написания статей их не было в мастере, тесты падали. Потом я отребейзился на мастер, какой-то из этих коммитов починил флоппирование теста.

Ой всё.
>>> Именно increment_nonce частенько используется сервером для генерации нового nonce.
Извиняюсь за нубский вопрос, т.е. получается что токс все-таки имеет централизированый сервер? Или что имеется в виду под словом сервер?
Есть DHT ноды. Нужно ведь кому-то анонсировать маршруты и как-то коммутировать клиентов. Аналог торрент-сервера из мира торрентов: данные не хранит, но знает, где их можно достать.
Странно, в Kad 15 летней давности уже умели обходиться без «коммутирующих» нод, зачем в Tox их добавили в архитектуру?
Предполагаю, чтобы уменьшить количество передаваемых данных внутри DHT, что актуально в то время (до введения TCP-relay) для телефонов было.
Если ваши пулл-реквесты принимают, то почему бы не продолжить контрибьютить вместо того, чтобы пилить свой проект? Зачем распылять силы? Неужели это тот случай, когда проще переписать, чем отрефакторить? Или есть какие то фундаментальные разногласия с разработчиками?
Насколько я понял потому что проблема системная, код ведь не сам такой стал, его таким сделали разработчики, которых такое состояние вроде как устраивает.
Ну опять-таки поговорить с разработчиками, объяснить, предложить решения, ограничения какие-то или код ревью. Было ли что это из этого сделано, или заранее признано безрезультатным? Кроме ответа по поводу тестов, никакой реакции разработчиков на замечания в статье нет.

Конечно, Tox относительно небольшой проект и его возможно переписать с нуля. С другой стороны, именно из-за малого сообщество, хорошо бы было сконцентрировать все силы вместе.
Помните историю, когда у них увели бабки и домен? Я, как дочь офицера, могу отметить неоднозначность этой ситуации.

Обсуждение WTF строчки кода:
<LearnC> Hi! onion_client.c: is_path_used  iterates over onion_paths but uses only the last of nodes. is it OK?
<linux-modder> that last  bit  made no sense are you asking if compiling that way is ok or  confirming that the .c  file is written right ?
<stal> LearnC: it's probably fine
<LearnC> it makes no sence to pass pointer to the whole array if you use only 1 value
<stal> i don't think there was a conscious decision to write it that way
<stal> maybe gentoo just did it that way when he factored that code out of random_path

Единственная реакция — перед строчкой добавили комментарий.

Мы не слышали про ntohl и htonl:
/* Redefinitions of variables for safe transfer over wire. */
#define TOX_AF_INET 2
#define TOX_AF_INET6 10
#define TOX_TCP_INET 130
#define TOX_TCP_INET6 138

        if (data[len_processed] == TOX_AF_INET) {
            ipv6 = 0;
            host_family = AF_INET;
        } else if (data[len_processed] == TOX_TCP_INET) {
            if (!tcp_enabled)
                return -1;

            ipv6 = 0;
            host_family = TCP_INET;
        } else if (data[len_processed] == TOX_AF_INET6) {
            ipv6 = 1;
            host_family = AF_INET6;
        } else if (data[len_processed] == TOX_TCP_INET6) {
            if (!tcp_enabled)
                return -1;

            ipv6 = 1;
            host_family = TCP_INET6;
        } else {
            return -1;
        }


Мы экономим байтики(длина пакета меняется в зависимости от IP адреса ноды):
            uint32_t size = PACKED_NODE_SIZE_IP4;

            if (packed_length + size > length)
                return -1;

            data[packed_length] = net_family;
            memcpy(data + packed_length + 1, &nodes[i].ip_port.ip.ip4, SIZE_IP4);
            memcpy(data + packed_length + 1 + SIZE_IP4, &nodes[i].ip_port.port, sizeof(uint16_t));
            memcpy(data + packed_length + 1 + SIZE_IP4 + sizeof(uint16_t), nodes[i].public_key, crypto_box_PUBLICKEYBYTES);
            packed_length += size;
        } else if (ipv6 == 1) {
            uint32_t size = PACKED_NODE_SIZE_IP6;

            if (packed_length + size > length)
                return -1;

            data[packed_length] = net_family;
            memcpy(data + packed_length + 1, &nodes[i].ip_port.ip.ip6, SIZE_IP6);
            memcpy(data + packed_length + 1 + SIZE_IP6, &nodes[i].ip_port.port, sizeof(uint16_t));
            memcpy(data + packed_length + 1 + SIZE_IP6 + sizeof(uint16_t), nodes[i].public_key, crypto_box_PUBLICKEYBYTES);
            packed_length += size;


Ну и касательно моего личного отношения к обитателям их канала: мне их жаль.
<LearnC> grayhatter, hi
<LearnC> I have just answered your comment in my PR #1506
<LearnC> Can we communicate a little bit closely?
* Rowen_Stipe puffs on a pipe while wearing a bathrobe,"How closely you intend to get?"
<cisc_> you sure that's a pipe?
* cisc_ is now known as cisc
<danieli> it's something nasty in a pipe disguise
* Rowen_Stipe takes a large hit and holds it,"Yeah, It's a pipe alright" exhales a plume of smoke.
<LearnC> haha thats funny to joke on a non native englishspeaker
<danieli> english is my fourth language
<danieli> don't complain
<danieli> (was it sarcasm? I don't even know anymre)
<danieli> anymore*
<Rowen_Stipe> LearnC: Even if you wern't a nativ enlighs epeaker the joke would of been made.


Randl, я люблю свои глаза, поэтому копаться в какулях не люблю. Переписывание кода начинается с тестов, а не с переписывания) Но к тестам у них особое отношение, следовательно…
В любом более или менее крупном проекте в какой-то монет появляется неидеальный код, костыли, откровенный говнокод и т.д. Не знаю ни одного проекта, которому удалось этого избежать.
Ваше решение понятно — вам не хочется рыться в чужом говнокоде. С точки зрения сообщества, развития Tox я считаю ваше решение непродуктивным.
Это классика опенсорса — если нет людей которые работают над проектом за деньги, то каждый делает то, что ему нравится — а мало кому нравится вычитывать говнокод или фиксить баги. Само наличие такого кода — результат такого подхода.
Насчёт личного отношения — хорошие программисты редко бывают хорошими людьми. С тем же Линусом много кому неприятно работать…
Не обижайтесь уж так на них, пацаны просто пошутили немного («closely» действительно звучит как будто вы хотите «сблизиться» с ним). Хотя грамматическая ошибка в последней строке («would of» вместо «would've»/«would have») намекает на что, что там сидят школьники. Я бы предпочел, если бы криптографией занимались люди более образованые (с ученой степенью в идеале).
Хороший теоретик не всегда хороший практик. Теоретический Computer science ближе к математике, чем к программированию. Чтобы выявить уязвимости в коде существует аудит, который у Tox в планах.
Кроме того, неграмотный человек != плохой программист.
З. Ы. Бакалавр тоже ученая степень. Так что она хотя бы у части разработчиков наверняка есть
намекает на что, что там сидят школьники.
Ой, да сколько людей путают your и you're.
А еще «there/their/they are», да. Но этого немного разного порядка ошибки. Впрочем, неважно. Слово «школьники» было употреблено в переносном смысле. Посыл был в том, что если человек делает такую ошибку, я бы предпочел не доверять ему писать код, от которого может зависеть моя безопасность. Криптографию программировать должны грамотные люди, а не студенты-второкурсники, которым море по колено :)
Вот, 16 строк до и после ника, для полноты картины. Вся техничка вырезана, ибо там ипшники и хабр не ест большие комменты (^.*?has left #tox.*?$, ^.*?is now known as.*?$, ^.*?has joined.*?$, ^.*?has quit.*?$). Если там какие-то диалоги между -- и -- бещ вас, это значит вы или вошли или вышли в этот момент.
grep -A 16 -B 16 LearnC irc.freenode.#tox.weechatlog >> LearnC.tox.txt
2016-01-24 15:45:28 t-ask If I remove someone from my contacts list, do I appear then as offline for that person?
2016-01-24 15:45:46 t-ask btw. are there any developments in bringing tox to ubuntu phones?
2016-01-24 15:46:32 Rowen_Stipe t-ask: Yes, that's what happens. They just see you going perminately offline, you're not removed from their friendlist.
2016-01-24 15:47:32 t-ask Rowen_Stipe: ok, fine. Btw. is qtox still the best choice for desktop usage?
2016-01-24 15:47:47 t-ask "best" in quotes ;)
2016-01-24 15:48:01 Rowen_Stipe It has the most features to it certainly.
2016-01-24 15:48:22 Rowen_Stipe But best is always a relative term with Tox clients
--
2016-01-24 19:31:03 cisc_ www.dailydot.com/politics/anonymity-homeland-security-erik-barnett
2016-01-24 19:31:26 cisc_ what a fucking moron that guy is, how he is even getting paid taxpayer dollars is beyond me
2016-01-24 19:33:37 Rowen_Stipe cisc_: Cause the people that aren't half dead are working in the privet sector.
2016-01-24 19:37:24 cisc_ maybe the American people should be able to see everything he does online, in real time
2016-01-24 19:38:04 @zero-one we're back at SCaLE again
2016-01-24 19:38:09 cisc_ oh wait.. when it comes to the congress & the senate they're immune to their own laws
2016-01-24 19:38:13 @zero-one join the groupchat via groupbot
2016-01-24 19:38:34 @zero-one password is "scale14x"
2016-01-24 19:38:53 @zero-one everyone is hungover and shit, so the floor is pretty empty right now
2016-01-24 19:39:17 Impyy lol
2016-01-24 19:39:28 Rowen_Stipe XD
2016-01-24 19:42:18 LearnC grayhatter, hi
2016-01-24 19:42:43 LearnC I have just answered your comment in my PR #1506
2016-01-24 19:43:45 LearnC Can we communicate a little bit closely?
2016-01-24 19:46:25 * Rowen_Stipe puffs on a pipe while wearing a bathrobe,"How closely you intend to get?"
2016-01-24 19:46:56 cisc_ you sure that's a pipe?
2016-01-24 19:47:33 danieli it's something nasty in a pipe disguise
2016-01-24 19:48:04 * Rowen_Stipe takes a large hit and holds it,"Yeah, It's a pipe alright" exhales a plume of smoke.
2016-01-24 19:48:09 LearnC haha thats funny to joke on a non native englishspeaker
2016-01-24 19:48:23 danieli english is my fourth language
2016-01-24 19:48:29 danieli don't complain
2016-01-24 19:48:42 danieli (was it sarcasm? I don't even know anymre)
2016-01-24 19:48:45 danieli anymore*
2016-01-24 19:49:10 Rowen_Stipe LearnC: Even if you wern't a nativ enlighs epeaker the joke would of been made.
2016-01-24 19:49:21 LearnC would have*
2016-01-24 19:50:31 danieli LearnC: it's not "illegal" to use "of" instead of "have" in british english, it's just a relaxation of pronounciation
2016-01-24 19:51:23 LearnC do you want to discuss a my intention of close communication or to discuss that you don't correctly zero memory?
2016-01-24 19:51:40 LearnC That is what I found and I created a pull request
2016-01-24 19:52:13 LearnC you cannot use memset before free memory and rely on that kind of code
2016-01-24 19:52:21 danieli >memset
2016-01-24 19:52:26 danieli >reliable
2016-01-24 19:52:33 LearnC no
2016-01-24 19:53:37 Impyy LearnC, do you think there's a way to keep nacl compatibility?
2016-01-24 19:54:04 LearnC If there is a function in NaCl to zero memory than yes
2016-01-24 19:55:13 Impyy I think that function is a libsodium feature, it doesn't exist in nacl
2016-01-24 19:55:19 LearnC Implementing such a function may lead to security problems, unless there are some good skilled cryptographers who are both know how compiler works
2016-01-24 19:55:33 LearnC Impyy, no, its not a feature. msdn.microsoft.com/en-us/library/windows/hardware/ff562768%28v=vs.85%29.aspx
2016-01-24 19:56:25 Impyy LearnC, consider me corrected
2016-01-24 19:56:45 Impyy anyways I've never really understood why it's important to have nacl compatibility
2016-01-24 19:56:58 Impyy solely depending on libsodium seems fine
2016-01-24 19:57:26 LearnC I understand there might be some backward compatibility you want to save
2016-01-24 19:57:36 @nurupo it's either we copy the function from libsodium sources and use that or drop nacl support
2016-01-24 19:57:52 @nurupo i'm not sure how important is nacl support
2016-01-24 19:58:11 LearnC And it's up to irungentoo to decide
2016-01-24 19:59:00 LearnC What about timing attacks on publick keys comparison?
2016-01-24 19:59:46 LearnC Do you agree we have to use crypto functions provided by NaCl/Sodium to cmp keys or any sensitive data instead of memcmp?
2016-01-24 20:01:59 LearnC danieli, or maybe you think >memcmp is >reliable ?
2016-01-24 20:03:39 LearnC Rowen_Stipe, or maybe memcmp is pronounced more relaxed in British English than sodium_memcmp?
2016-01-24 20:03:43 danieli LearnC: depends on the context, usually not
2016-01-24 20:04:05 @nurupo Impyy: nacl is written by a well known cryptographer and has hardware optimizations. at the time tox started, sodium was quite slow and didn't even build on windows, so it wasn
2016-01-24 20:04:25 @nurupo *so it wasn't ready for use yet
2016-01-24 20:04:33 LearnC nurupo, the aim of the project to be secure, right?
2016-01-24 20:04:46 @nurupo right now though, we might consider dropping nacl
2016-01-24 20:05:04 @nurupo LearnC: talk to irungentoo about this
2016-01-24 20:05:16 LearnC thats why I am here
2016-01-24 20:05:22 LearnC w8 4 him
2016-01-24 20:06:50 @nurupo he is usually not on irc during weekends
2016-01-24 20:06:51 cisc dropping nacl and switch to what?
2016-01-24 20:07:05 @nurupo cisc: sodium
2016-01-24 20:07:12 cisc ok
2016-01-24 20:14:22 leer10 zero-one: which group has the password scale14x?
2016-01-24 20:17:21 Rowen_Stipe leer10: message groupbot info
2016-01-24 20:17:42 leer10 Rowen_Stipe cool got it :)

2016-01-24 20:46:37 __init__ is here anybody who tested new groupchats?
2016-01-24 20:47:25 -- Mode #tox [+o SylvieLorxu] by ChanServ
2016-01-24 20:49:25 @grayhatter LearnC: yeah, what did you want to discuss?
2016-01-24 20:50:03 LearnC we have already discussed it with other people in this channel
2016-01-24 20:50:12 LearnC you may read logs
2016-01-24 20:50:50 __init__ grayhatter, update wiki.tox.chat/clients
2016-01-24 20:52:51 @grayhatter __init__: update what?
2016-01-24 20:53:00 @grayhatter LearnC: did you see my GH comment?
2016-01-24 20:53:07 __init__ info about utox
2016-01-24 20:53:37 @grayhatter it's seems updated
2016-01-24 20:53:45 @grayhatter what part did you think was outdated?
2016-01-24 20:54:09 __init__ do you have contact aliases and save file encryption?
2016-01-24 20:54:29 LearnC grayhatter, no. I have read it right now. grayhatter it would be zero secure for nacl
2016-01-24 20:58:37 @grayhatter __init__: done, thank you!
2016-01-24 20:59:06 @grayhatter LearnC: you want to add sodium_memzero correct?
2016-01-24 20:59:13 LearnC yes
2016-01-24 20:59:17 @grayhatter doing so would break NaCL?
2016-01-24 20:59:29 LearnC yes
2016-01-24 21:00:21 LearnC grayhatter, you may find a similar function in NaCl. If you find it, I will write a wrapper not to break NaCl dependency
2016-01-24 21:00:37 @grayhatter so instead of adding the feature for those who use libsodium, making them more secure. Intsead you're saying "if we don't force libsodium, and break NaCL I'm not going to add any code"
2016-01-24 21:00:39 __init__ i hope new groupchats with new group audio will be ready soon. looks like group audio doesn't work right now
2016-01-24 21:01:12 @grayhatter you said writing a custom wrapper, and using ifdef to make libsodium memzero would be insecure
2016-01-24 21:01:16 @zero-one i don't think the new groupchats implementation includes any changes to audio
2016-01-24 21:01:27 @grayhatter I don't understand how doing that would make toxcore LESS secure than it is now
2016-01-24 21:01:32 @zero-one grayhatter: can you confirm
2016-01-24 21:01:39 @grayhatter zero-one: new groupchats have NO audio support
2016-01-24 21:01:59 @grayhatter mannol agreed to add it after they get merged
2016-01-24 21:02:08 @zero-one oh
2016-01-24 21:02:11 __init__ and when it will happen?
2016-01-24 21:02:12 @zero-one i didn't even know that
2016-01-24 21:02:23 @grayhatter tux3 said he'd add groupchats to to qTox after they get audio
2016-01-24 21:02:44 @grayhatter irungentoo said he'd merge groupchats after qTox uTox and Toxic support them
2016-01-24 21:02:54 @grayhatter > we're never going to get new groupchats
2016-01-24 21:03:23 __init__ sounds bad. did you test it?
2016-01-24 21:03:35 @grayhatter __init__: test what?
2016-01-24 21:03:41 __init__ new groupchats
2016-01-24 21:03:46 @grayhatter yeah, they're awesome
2016-01-24 21:03:54 @grayhatter they work on uTox
2016-01-24 21:03:57 @grayhatter and toxic
2016-01-24 21:03:59 @grayhatter and antox
2016-01-24 21:04:09 @grayhatter and Antidote??
2016-01-24 21:04:17 @zero-one BlameAliens:
2016-01-24 21:04:39 Impyy LearnC, excuse my lack of knowledge on this topic, but could crypto_verify be what you're looking for?
2016-01-24 21:04:59 BlameAliens sup
2016-01-24 21:05:13 BlameAliens No groupchats for Antidote or objctox yet
2016-01-24 21:06:19 __init__ grayhatter, is it possible to share files using groupchats in utox right now?
2016-01-24 21:07:45 @grayhatter __init__: no file sharing in groups for any client
2016-01-24 21:07:50 @grayhatter (no core support)
2016-01-24 21:07:55 LearnC Impyy, crypto_verify ~ memcmp, we are looking for a function to zero bytes, not to compare them
2016-01-24 21:08:07 @grayhatter Jfreegman: agreed to add basic file system after groupchats get mereged
2016-01-24 21:08:13 @grayhatter support*
2016-01-24 21:08:30 @grayhatter LearnC: memset() && memcmp()
2016-01-24 21:08:52 @grayhatter (both so the the optimiser won't drop that command)
2016-01-24 21:09:07 Impyy LearnC, well that could replace the use of sodium_memcmp, correct?
2016-01-24 21:09:54 LearnC Impyy, you were right to use crypto_verify to cmp memory, it is both NaCl and Sodium function
2016-01-24 21:10:49 LearnC But I have not found such a function in NaCl to zero memory not to be dropped by optimizer
2016-01-24 21:11:33 Impyy right, me neither
2016-01-24 21:11:41 __init__ time to implement sound notifications and profile im/ex and after release of groupchats utox will be almost ready
2016-01-24 21:12:08 LearnC grayhatter, Intsead you're saying "if we don't force libsodium, and break NaCL I'm not going to add any code" | How are you going to explain users that their were deanonimized due to linkage of toxcore+nacl instead of using safe toxcore+sodium?))
2016-01-24 21:14:54 stal what's likely going to happen is we'll include the sodium functions in the repo
2016-01-24 21:15:48 @grayhatter LearnC: Right, I don't disagree that your way is objectivly better
2016-01-24 21:16:41 @grayhatter I'm asking, why would you say "too bad" to everyone who uses libsodium. Rather than improving libsodium users, and leaving NaCL users at the status quo?
2016-01-24 21:18:25 LearnC grayhatter, well, because the safity would be based on the opinion of package maintainer?
2016-01-24 21:19:36 LearnC the user may even don't care about NaCl vs Sodium. They want to be safe
2016-01-24 21:20:17 LearnC stal, maybe, maybe. But you have to be sure that no one is going to touch that function. And no one should "optimize" it
2016-01-24 21:20:21 Impyy I bet very few compile with nacl instead of libsodium
2016-01-24 21:20:45 Impyy very few people*
2016-01-24 21:21:18 LearnC Impyy, if there are few people, why should you care?
2016-01-24 21:22:00 Impyy I don't
2016-01-24 21:22:20 Impyy if dropping nacl is what it takes to make toxcore more secure, I'm all for it
2016-01-24 21:23:25 LearnC Right now it sounds like that. NaCl will not be dropped if we are going to ^C+^V code from sodium for functions like sodium_memzero
2016-01-24 21:23:34 Impyy not for me to decide, though
2016-01-24 21:24:06 @grayhatter LearnC: unfortunally none of us can really say
2016-01-24 21:24:12 @grayhatter irungentoo has to make that call
2016-01-24 21:24:25 @grayhatter and we're only guessing from what we've heard him say in the past
2016-01-24 21:25:06 @grayhatter zero-one: when are you going to push the new site?
2016-01-24 21:25:12 @grayhatter it's better than what we have now
2016-01-24 21:25:33 @grayhatter if you're waiting for everything to be perfect, you should get out of FOSS
2016-01-24 21:25:35 LearnC grayhatter, I understand. I will be waiting for comments here or on github tomorrow
2016-01-24 21:25:56 Impyy besides the trash can icon for the clients, the new site looks good to me
2016-01-24 21:25:56 @grayhatter LearnC: please don't take anything I've said to disuade you
2016-01-24 21:26:11 @grayhatter I think it's a good idea, and given the two options, I'd rather use yours
2016-01-24 21:26:30 @grayhatter I'm only suggesting the wrapper so we can maintain NaCL if we need to
2016-01-24 21:27:52 LearnC grayhatter, relax, I asked you to find such function because it could be my fault I had not found it. I would have written a wrapper if there were similar functions both in NaCl and Sodium
2016-01-24 21:28:58 LearnC I am not going to be disuaded with some subjective cases.
2016-01-24 21:34:00 LearnC Does someone wants to discuss why I have reimplemented increment_nonce like that?
2016-01-24 21:54:13 -- Mode #tox [+o SylvieLorxu] by ChanServ
--
2016-01-25 01:26:26 mrflibble ah, for some reason it's "-T" on ubuntu "don't trim"
2016-01-25 01:30:03 mrflibble wierd, with "don't trim", on hosts that don't resolve, I get a % and then a 9-char number afterwards
2016-01-25 01:30:43 stal lel
2016-01-25 01:30:44 mrflibble i wonder what that's all about, it changes every time i run netstat
2016-01-25 01:32:13 mrflibble i've got some .de, .ru and .ua s in my list
2016-01-25 01:34:25 * mrflibble is happy now he's being useful on the network
2016-01-25 01:35:29 mrflibble time to go, gnite all!
--
2016-01-25 10:45:24 -- Mode #tox [+o SylvieLorxu] by ChanServ
2016-01-25 11:02:47 nikitasius helloworld
2016-01-25 11:30:12 LearnC hai
--
2016-01-25 18:35:30 -- Mode #tox [+o SylvieLorxu] by ChanServ
2016-01-25 18:39:59 LearnC irungentoo is hiding
2016-01-25 19:02:04 stal he does that
--
2016-01-25 23:04:28 onla it might have been here in #tox where someone suggested something else instead of putty, for connecting to a remote shell from windows. I managed to forget it before testing, but would probably be interested to test
2016-01-25 23:06:30 mrflibble evenin all

--
2016-01-26 09:05:39 mrflibble grayhatter: i have 2 - a medium-sized one made by LG - PG60G that's 400 lumens, and is mains or battery powered
2016-01-26 09:07:18 mrflibble it's pretty good and will play some content from USB directly
2016-01-26 09:07:40 mrflibble the other one is an optoma pico, which it really small, but is only 10 lumens
2016-01-26 09:07:55 mrflibble u can only really use it at night or with all the curtains shut
2016-01-26 09:08:23 mrflibble it's pretty cool for the size though - it's about a big as a thick smartphone
2016-01-26 09:08:47 mrflibble that's battery and USB-powered
2016-01-26 09:09:34 mrflibble neither will do zoom tho, which is a bit restricting. to resize the image u just have to move them towards or away from the screen
--
2016-01-26 10:46:38 Rowen_Stipe So who here doesn;t subscribe to Tom Scott on Youtube?
2016-01-26 10:48:29 @zero-one who's that?
2016-01-26 10:48:40 @submarinegreen Tom Scott
2016-01-26 10:48:46 @submarinegreen the man the myth the legend
2016-01-26 10:49:14 Rowen_Stipe Wears a red shirt a lot.
2016-01-26 10:49:28 Rowen_Stipe www.youtube.com/watch?v=d10k3iiZ_xk
--
2016-01-26 14:35:19 benwaffle grayhatter: nope never did wayland
2016-01-26 14:36:24 benwaffle and there's no point since we have xwayland
2016-01-26 14:36:32 benwaffle you should work on UX
2016-01-26 14:53:28 -- Mode #tox [+o SylvieLorxu] by ChanServ
--
2016-01-26 23:15:17 @nurupo grayhatter: are you ready to travel from country to country in order to develop utox? :P
2016-01-26 23:15:28 @grayhatter that's stupid, they're not going to serve a subpoena to the coders, they going to go after the host.
2016-01-26 23:15:37 @grayhatter they don't give a shit, and will turn over everything
2016-01-26 23:15:53 @grayhatter nurupo: µTox is dead
2016-01-26 23:16:18 @grayhatter but if tox want's to pay for my living and travel expences... maybe I could do taht
2016-01-26 23:20:17 wedgie lol, i must have missed something. utox having legal trouble?
2016-01-26 23:21:03 @grayhatter wedgie: no, I'm just done sinking time into µTox if toxcore is dead
2016-01-26 23:21:36 @grayhatter I'm sitting on 2.5 half done refactors that would make µTox as easy to develop for as qTox if not way easier.
2016-01-26 23:21:53 @grayhatter But toxcore hasn't seen a good commit it weeks
2016-01-26 23:22:06 @grayhatter there's been some minor fixes and patches but that's about it
2016-01-26 23:23:26 @grayhatter groupchats have been idle for months, it was a bitch and a half to get ToxAV merged, and it needs a bit of fixing and mannol has disapeared to be a functioning member of society
2016-01-26 23:24:20 @grayhatter and the last time I tried to suggest something, I got so much flack from nearly everyone that it turned me off developing for Tox at all
2016-01-26 23:25:00 @grayhatter s/suggest something/suggest a new api or feature for toxcore/
2016-01-26 23:51:39 Guest19338 grayhatter: did u see my comments about projectors this morning?
2016-01-26 23:55:59 @grayhatter mrflibble: no, i'll read the back log
2016-01-26 23:56:10 @grayhatter thanks for lettnig me know!
2016-01-26 23:56:56 alec-b anyone with experience with hetzner dedicated servers (auction)? Would you recomend them / or advise to stay away? seems quite cheap... maybe too cheap.
2016-01-27 00:06:08 LearnC Hello. I am waiting any actions on my PR
2016-01-27 00:06:29 @grayhatter LearnC: on toxcore?
2016-01-27 00:06:35 fgro hi. running qtox on gentoo. is there a way I can test the audio testings (like an echo call on skype)?
2016-01-27 00:06:37 @grayhatter you're going to need to talk to irungentoo
2016-01-27 00:07:01 LearnC I am here almost everyday
2016-01-27 00:07:10 LearnC This PR contains security fixes
2016-01-27 00:07:34 @grayhatter LearnC: okay?
2016-01-27 00:07:35 LearnC I can't believe it longs so much time to be accepted or even discussed =(
2016-01-27 00:07:42 @grayhatter you still need to talk to irungentoo
2016-01-27 00:07:58 @grayhatter LearnC: dose it need a discussion?
2016-01-27 00:08:09 LearnC well, why not?
2016-01-27 00:08:15 @grayhatter everyone agrees with you?
2016-01-27 00:08:39 LearnC everyone must agree with me @_@
2016-01-27 00:08:40 @grayhatter no one thinks it's a bad idea
2016-01-27 00:08:53 @grayhatter we still need to wait for irungentoo
2016-01-27 00:08:54 LearnC grayhatter, if you meet him, shall you you give him my email in case I am offline?
2016-01-27 00:09:14 @grayhatter LearnC: I'm likely to forget
2016-01-27 00:09:27 LearnC anyone?)
2016-01-27 00:09:32 @grayhatter tag @irungentoo on github in your PR, ask his directly?
2016-01-27 00:09:39 LearnC I did
2016-01-27 00:10:24 @grayhatter LearnC: your PR is out of date
2016-01-27 00:10:41 @grayhatter can't be merged unless you merge master, or rebase
2016-01-27 00:11:32 LearnC Nice, did you fix tests in CI?
2016-01-27 00:11:42 @grayhatter nope
2016-01-27 00:11:53 @grayhatter nurupo: did a little maintance
2016-01-27 00:12:22 mrflibble np ;)
2016-01-27 00:12:31 Impyy -MemoServ- The memo has been successfully sent to irungentoo.
2016-01-27 00:12:37 Impyy maybe he reads those :p
2016-01-27 00:12:59 @submarinegreen hahahahaha
2016-01-27 00:13:00 @submarinegreen good one
2016-01-27 00:13:09 @nurupo LearnC: you can just email him
2016-01-27 00:13:19 LearnC Thank you all
2016-01-27 00:13:38 LearnC I feel like home
2016-01-27 00:13:54 @nurupo Impyy: yeah, he does, but his email is in every single commit
2016-01-27 00:15:03 Impyy we need a bot that tells him to 'get cracking' as soon as he gets on irc every day
2016-01-27 00:19:06 LearnC grayhatter, I rebased my PR
2016-01-27 00:20:12 LearnC You may run Travis even faster. addons: apt + local make install + ./configure --prefix=local_dir
2016-01-27 00:20:34 LearnC as soon as you don't need sudo at all
2016-01-27 00:20:57 LearnC + sudo switches off IPv6 if I am not mistaken
2016-01-27 00:24:39 LearnC Soooorry, I forgot about trusty+sudo required. Shame on me
2016-01-27 00:24:51 @submarinegreen BRING THE BELL OF SHAME
2016-01-27 00:24:56 * submarinegreen rings the shame bell
2016-01-27 00:24:57 @submarinegreen SHAME
2016-01-27 00:34:40 Chiitoo fgro: I do believe there is an echo-bot somewhere in the ether.
2016-01-27 00:37:28 Chiitoo fgro: echobot@toxme.io I've seen mentioned a few times. Never tried it myself though!
2016-01-27 00:39:09 fgro Chiitoo: ok. I'll have a look.
2016-01-27 00:39:29 Chiitoo Simply add that as a friend, they say. :]
2016-01-27 00:42:37 Chocolate_Chip installgen2, what's your tox address
2016-01-27 00:44:57 fgro Chiitoo: worked! awesome! thank you!
2016-01-27 00:45:44 Chiitoo fgro: Yay. ^^
2016-01-27 00:46:00 * fgro is impressed with tox and it's progress
2016-01-27 00:46:32 @submarinegreen feed me the flesh of intelligence agents
2016-01-27 00:46:35 fgro the days of proprietory skype are hopefully counted.
2016-01-27 00:49:29 installgen2 Chocolate_Chip: tox is terrible I don't use tox
2016-01-27 00:49:50 <-- submarinegreen has kicked installgen2 (then get out)
2016-01-27 01:02:04 LearnC submarinegreen, why did you kick him? frankly speaking I don't use tox either))
2016-01-27 01:02:32 @submarinegreen gen2 is our web site dev
2016-01-27 01:02:37 @submarinegreen we have a friendly relationship
2016-01-27 01:02:49 LearnC <3
2016-01-27 01:05:35 installgen2 dude
2016-01-27 01:05:42 installgen2 who here actually uses tox unironically
2016-01-27 01:06:28 alec-b I use qtox, serious hampered at the moment by the lack of a good solution for the mobile space
2016-01-27 01:07:04 @submarinegreen I use tox
2016-01-27 01:07:41 fo0 o/
2016-01-27 01:08:15 fo0 and include qtox in training for journalists
2016-01-27 01:10:14 installgen2 I bet you losers use linux OS too lmao
2016-01-27 01:11:30 fo0 how much ?
--

2016-01-27 02:13:39 @grayhatter submarinegreen: keep thinking
2016-01-27 02:13:43 @grayhatter you'll work that one out
2016-01-27 02:16:45 stal failure is problematic
2016-01-27 02:17:13 stal in order to keep things fair for everyone, there will no longer be pass or fail
2016-01-27 02:17:26 stal everyone will pass, you just need a certain percent to move on
2016-01-27 02:18:40 @grayhatter honestly, that's what education should be
2016-01-27 02:18:47 -- Mode #tox [+o irungentoo] by ChanServ
2016-01-27 02:32:36 @submarinegreen answer my question
2016-01-27 02:33:07 @grayhatter submarinegreen: how do computers work?
2016-01-27 02:33:36 @grayhatter how would you evaulate pass/fail in c code?
2016-01-27 02:36:13 @submarinegreen this is dumb
2016-01-27 02:36:18 @submarinegreen a proper cs course evaluates not only if your code works
2016-01-27 02:36:25 @submarinegreen but if is clean and extendable
2016-01-27 02:36:35 @submarinegreen there's no such thing as a black and white fail pass
2016-01-27 02:36:44 @submarinegreen you can have degrees of talent in everything
2016-01-27 02:36:50 @grayhatter joke killer
2016-01-27 02:36:51 @grayhatter also
2016-01-27 02:36:54 @grayhatter I dissagree
2016-01-27 02:37:00 @grayhatter in a proper CS course yes
2016-01-27 02:37:04 @grayhatter but not cs 101
2016-01-27 02:37:25 @grayhatter cs 101 is about starting to think about and interact with computers they way a computer scientist would
2016-01-27 02:37:39 @grayhatter that's binary, either you can make a computer do what you want, or you cant
2016-01-27 02:37:50 @grayhatter if you can, next level, do it better
--
--
2016-01-27 10:26:51 @zero-one wiiaam: there is a $10 node listing fee
2016-01-27 10:27:01 @zero-one i can't add your node to the list until you pay the fee, or file a fee waiver
2016-01-27 10:31:22 @zero-one wiiaam: your mail server is broken
2016-01-27 10:32:48 wiiaam yep
2016-01-27 10:32:53 wiiaam i just restarted it lol
2016-01-27 10:33:03 wiiaam dont tell me you got in on the 10 second downtime
2016-01-27 10:33:12 @zero-one no idea
--
2016-01-28 14:50:47 installgen2 shilling tox hard irl rn
2016-01-28 14:50:58 installgen2 I am trying my hardest to surpess my autism
2016-01-28 14:51:06 installgen2 but the guy I must shill to uses a tiling wm so I should be ok
2016-01-28 14:51:20 installgen2 then he will shill to the thousands of people which are asking him about a privacy respecting messaging application
2016-01-28 14:51:37 installgen2 waiting to talk to him right now, wish me luck
2016-01-28 14:54:02 installgen2 will need friends tho, pls add EC996816F74AE707CDA62E6B2648FD9FDB20CFCCE90B0A732E9F403B3BD2E3682ABD3ECCF923
--
2016-01-28 19:57:27 danieli get libtool firegurafiku
2016-01-28 19:58:42 firegurafiku danieli, simply installing libtool made it working O_O
2016-01-28 20:00:00 firegurafiku Thank you!
2016-01-28 20:09:48 danieli firegurafiku: no problem :)
--
2016-01-29 14:28:09 LearnC Hi
2016-01-29 14:28:51 LearnC I did tell you but in my PR I found a strange bug. After I replaced memset to sodium_memzero some tests started to fail
2016-01-29 14:29:03 LearnC ooops)
--
2016-01-29 18:39:38 @grayhatter LearnC: which tests?
2016-01-29 18:40:12 LearnC w8...
2016-01-29 18:45:35 LearnC grayhatter, tox_test
2016-01-29 18:45:57 LearnC grayhatter, use git bisect
2016-01-29 19:11:58 @grayhatter wow zetok is thick isn't he...
2016-01-29 20:32:02 -- Mode #tox [+o irungentoo] by ChanServ
--

Можно понять разработчиков — появился х*р с горы и начал критиковать их код. Не имея особого авторитета у разработчиков, на что можно рассчитывать? Что они сразу кинутся мержить ваши PR? Очень врядле. Вместо того чтобы разобраться в ситуации почему так сложилось и какие есть пути выхода из нее — вы просто решили «взять и переписать». Зачастую (если не всегда) судьба opensource продуктов зависит не от умения писать код, а от умения налаживать взаимодействие команды.
НЛО прилетело и опубликовало эту надпись здесь
Никто не предлагает нарушать совместимость реализаций. toxcore предоставляет сишный интерфейс. Если выставлять наружу его же, то любая совместимая реализация может быть прозрачно использована. Речь только о качестве кода внутри.

Если уж тут говорят о Rust, то надо не забывать, что он совершенно прозрачно интегрируется с C. На странице документации по сырым указателям можно посмотреть пример вызова оригинального malloc.
Неплохо, не плохо, можт можно и поучаствовать.

Главное введите возможность подключение центрального сервера для синхронизации и запоминания истории.
Вообщем то в этой ветке вся основная мысля — https://habrahabr.ru/post/272937/#comment_8734719
> kpp/2tox
> Latest commit 8e55d7a on 9 Feb 2016

А как с безопасностью в токсе сейчас?
О, живой кто-то, круто! А вы не могли бы немножко просветить меня по поводу общего статуса экосистемы здесь, если не сложно? Спасибо!
Прошло почти пять лет после написания статьи и чуть больше двух — после предыдущего комментария. Какие новости?

Про безопасность не знаю, что же касается стабильности, у меня (Debian 10) μTox постоянно падал, но qTox работает без проблем. В Android'е же оба клиента (Antox и второй, лень вспоминать название) постоянно падали, пользоваться невозможно.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.