idec.talks Home
Так, ладно, раз уж диалог завязался (и спасибо за такой тёплый, хоть и, хм, своеобразный приём), выскажу наконец свои основные мысли по поводу этого всего.

1. Да, я — любитель спутниковых каналов связи, тора, анонимности, анархии и всего того, что у вас здесь, видимо, принято относить ко списку смертных грехов, а по факту чуть ли не единственного залога комфортного существования в онлайне. Сеть ii меня заинтересовала как раз своим потенциалом превращения в антифидо: меньшая гэбнявость при тех же (или даже больших) распределённости и легковесности протокола. Добавить бы сюда только приватность на транспортном уровне (например, Gopher-узлы в .onion имеются, вполне можно сделать там же ii-станции) и будет вообще хорошо. А то, например, Tox и SimpleX тоже распределены, но легковесностью там и не пахнет из-за количества задействованной криптографии. Ну и они на реалтайм больше рассчитаны, а здесь наоборот.

2. Официальная документация ii/IDEC вроде и подробна, но написана так, что некоторые вещи либо неочевидны, либо их надо додумывать самостоятельно. Например, касательно разделителя строк. На момент написания мной этого поста в доках НИГДЕ не указано, что разделитель строк в теле сообщения — строго \n. Это явно указано только для формата бандла:

> Разделитель для бандла - новая линия (LF, код 10).

Естественно, по аналогии с остальными легковесными протоколами я запостил тестовое сообщение с \r\n на концах строк. И естественно, получил отлуп и понял, что там только \n должно было быть. Но то, что у кого-то при этом что-то отвалилось на серверной части... Ребят, валидация входящих данных — это БАЗОВЫЙ принцип безопасности. Если у вас от непреднамеренной бинарщины валится сервер, это не проблемы отправителя этой бинарщины, а сугубо ваши, поскольку к преднамеренной такой сервер окажется совсем не готовым.

3. Надо бы как-то придумать, как оптимизировать фетчинг. С этими GET-запросами на /u/m я вот столкнулся с ограничением, что у каких-то нод и их долбаного нжинкса тело GET-строки не может превышать 256 символов. Соответственно, за один запрос можно выкачать бандл максимум из 12 сообщений. Крайне неэффективно выходит. Ну или я что-то не так понял в доках и всё-таки имеются способы пооптимальнее. Не говоря уж о том, что такой же фетчинг было бы неплохо организовать по тому же Gemini или Gopher/Finger/Nex, например. HTTP для данных целей — вообще оверхед. Достаточно одной строки запроса и погнал ответ. Тем более, что спецификация прямо говорит, что HTTP — лишь один из вариантов.

4. Веб-зеркалам, как по мне, не нужно придавать особого значения. Может, это здесь обсуждалось, но вроде бы фишка именно в распределённости: каждый выкачивает максимум контента. Если все начнут пассивно читать веб-зеркала, что от сети в итоге останется, если основные ноды выйдут покурить? Не знаю, может, в будущем размер станет иметь значение, но вот на данный момент у меня sqlite3-база с содержимым (публичных) эх из пяти станций занимает 104 мега. Это меньше любого из современных браузерных движков в распакованном виде. Не думаю, что единоразовое выкачивание данных такого объёма вызовет у кого-то проблему, особенно если решить вопрос пункта 3.

5. Shaos нашёл исходники моего ii-клиента tii/tiix, но это всё ещё в процессе допила. Как посчитаю действительно готовым, сделаю анонс со ссылками. Тогда и о новой станции можно будет поговорить.

Спасибо за внимание.