RSS
[>] Описание
naste.ne
ahamai(blackcat, 2) — All
2024-11-20 02:58:20


Nastene 0.7 - простая распределённая система сообщений

nastene (она же ii) - это распределённая система сообщений, максимально упрощённоё фидо. Операция идёт с двумя объёктами. Объект сообщение это сообщение. Объект эха это именнованный список сообщений. Станции по заданому заранее рутингу* скачивают с других станций списки, потом забирают те сообщения, которых у них нет. Пойнты пишут сообщения на станции (в веб-интерфейсе или клиентом). Всё, это весь обмен и вся структура сети.

Nastene 0.7 и есть станция. Написана на python3 и работает на текстовых файлах.

* Легко с помощью list.txt и питоньей матери обеспечить "все обмениваются всем со всеми", но как показывает практика, у разных станций разные списки эх. Так и было задумано. Обычно в сети есть какая-нибудь станция-архив, которая скачивает все сообщения со всех станций.

Есть lite-интерфейс (поддерживает, например win95/ie4+), создана эха retro.talks: http://ii.blcat.ru/lite/retro.talks

Изначальная цель проекта - ведение маленьких, но дружных сообществ (когда трафика мало, формат эх позволяет больше вовлекаться в обсуждения). Или распределённый минитвитер. Проекту более 10 лет, но до сих пор сохранилось много сообщений многолетней давности с сайтов, которых уже давным давно нет. Что написано в ii, не вырубишь топором. Благодаря этому из двух уже давно умерших сайтов и эх воссоздана эха retro.talks.

Изменения (фактически, это изменения с версией 2014 года)

* Вместо Foundation (где куча css и js файлов) используется chota css (один css-файлик). Светлая и тёмная темы. Иконочный шрифт удалён. Для тех, кому и это слишком тяжело, есть lite-интерфейс
* Введение тэга topicid для отслеживания цепочек (даже если какая-то часть сообщений потерялась).

Это всё так же базовая реализация протокола, следующую версию можно выпустить ещё лет через 10.

ps. Korovan-free product

Подробности http://ii.blcat.ru/nasteG

+++ memo:nasteD

[>] Цели
naste.ne
ahamai(blackcat, 2) — All
2024-11-20 02:59:11


Скачать http://ii.blcat.ru/s/nastene-0.7.tar.gz

Цели проекта:

1. Создание малых сообществ. Это лучше форума. Во-первых, можно уже сразу иметь контент и присоединяться к каким-то обсуждениям, а не сидеть с пустым форумом. Во-вторых, на некоторых станциях были отображения в виде форума - на маленьком трафике это неудобно, всплывают по несколько тем с одним новым сообщением. (кстати, на том же лоре 95% сообщений я не вижу, хотя в каком-то топике может идти интересная мне дискуссия, но я об этом могу узнать только абсолютно случайно, обычно по чьей-то ссылке на какой-то комментарий, и я такой "ох, нифига себе тут народ общается, а я и не видел, ибо название топика мне неинтересно", возможно я когда-нибудь и сделаю гейт лора в эху). В формате эхи вовлечённость в разговоры выше, контента становится больше. Плюс, любой пойнт может создать любую эху, поэтому это ещё и твиттер. :) Вообще, если завести блог на этой платформе, то другие станции захотят его подцепить, и у проекта сразу же будет аудитория.

2. Любительское программирование. Писать собственные станции и клиенты - это довольно просто. Например, в gemini, сам протокол простой, нужно реализовывать рендеринг, переход по ссылкам и прочий интерактив. Тут простые и протокол и реализация, поэтому все пишут своих клиентов и свои ноды ;), были написаны ноды на python, php, go, tcl и на чём-то ещё. Для клиентов можно использовать уже готовые просмотрщики (хоть less) и готовые текстовые редакторы для написания сообщений. (клиенты писались и на dialog, и на tk, и на qt5, и на curses). Наверное, половина серверо и клиентописателей не были программистами. И вообще, в духе BBS, каждый сисоп собирает свою станцию, прикручивает туда какие-то свои фишки.

http://ii.blcat.ru/rpzzk4jE8lZsJ0WRdzrM - простейшая читалка на 4 строчки на shell

3. Когда все вокруг друг друга перебанят и у всех будет свой интернет, можно гонять трафик через транзитные узлы. :) Можно хоть раскидать десять простых php нод по 10 бесплатным хостингам и обмениваться через них (простая реализация php-ноды, которая есть в комплекте, занимает 27 строчек кода и совместима с любой версией php, начиная с 4й).

Вообще, подобную систему, в отличие от мессенджеров и даже обычных сайтов сложнее закрыть на чтение. Это как зеркала репозиториев, только зеркала сообщений.

Прочее:

Отображение эх в gemini: gemini://gem.blcat.ru

nastene retro 99 - только lite интерфейс, python 2.5-2.7
написанная в лучших традициях html 4.01 или даже 3.2
http://ii.blcat.ru/s/nastene-retro-99.tar.gz


+++ memo:nasteG

[>] Формат
naste.ne
ahamai(blackcat, 2) — All
2024-11-20 02:59:42


> Формат запросов

/e/имя.эхи
Запрашивает все msgid из данной эхи. msgid это просто строка из 20 символов, задача которой быть уникальной (используется хэш).

/m/msgid
Запрашивает конкретное сообщение по его msgid (20-символьный уникальный идентификатор, содержащий A-Za-z0-9)

/u/e/имя.эхи/имя.эхи/имя.эхи
Запрашивает msgid сразу у нескольких эх (у эхи в имени есть точка). Формат выдачи
это.эха1
ABCDEABCDEABCDEABCDE
BCDAEBCDAEBCDAEBCDAE
это.эха2
A1B2C3D4E5EBGGSDFDSF
SDFSDFSDFDSFSDFWWWWQ
...

/u/m/msgid/msgid/msgid
Запрашивает пакет сообщений. Формат выдачи
msgid:сообщение-закодированное-base64
msgid:сообщение-закодированное-base64
...

Все сообщения в сети создают только пойнты и отправляют их через веб интерфейс или клиента. Точка входа для пойнта

/u/point/pauth/tmsg/

где pauth - это строка авторизации
tmsg - сообщение, закодированное base64

обычно используется в виде post-запроса вида /u/point с полями pauth и tmsg

> Сообщения на станции хранятся в своём формате:

1. тэги (выглядит например, так: ii/ok/repto/ABCDEABCDEABCDEABCDE где repto показывает, что это ответ на сообщение, а ii/ok это стандартный заголовок)
2. эха, куда помещено сообщение
3. стандартный unix timestamp, типа 1728457880
4. Имя отправителя
5. адрес, например адрес вида lenina,22 говорит, что это пойнт с улицы, то есть со станции Ленина и он там 22й такой
6. Кому сообщение. Если это новое сообщение, то используется All
7. Тема сообщения
8. [пустая строка]
9 и далее - текст сообщения

> формат tmsg, отправлямого пойнтом

1. эха
2. кому (или All)
3. тема
4. [пустая строка]
5. текст сообщения*

* если это ответ на конкретное сообщение, то первой строкой текста сообщения идёт @repto:MSGIDтогосообщения


+++ memo:nasteF

[>] Re: написал новость на лоре
naste.ne
ahamai(blackcat, 2) — ahamai
2024-11-20 21:53:07


Я про то, что единичный сайт можно просто взять и закрыть, это единая точка входа. Я бы потерял кучу контента, когда мои сайты дохли :), а так они до сих пор есть, и даже какой-никакой архив сохранился (жаль, ни у кого нет полного).

А если макском закрыл бы сайт в 2000м? А так, может кто создаст протоЛОР, потом ему надоест, закроется, а кто-то другой продолжит или даже форкнет контент. :) Всяких lor-ng было куча, они все были изолированные, не менялись контентом, и со своим контентом и сдохли. А использовали бы Nastene, мож до сих пор какая движуха и была бы :)

Ещё квотесы сдохли: и всё (хотя кто-то файл фортунок, наверное, успел сохранить, но это похожий с моим формат, простой текстовый файл для распространения). Я их сейчас переизобретаю эхой lor.gold.

[>] Re: написал новость на лоре
naste.ne
ahamai(blackcat, 2) — ahamai
2024-11-20 21:56:18


в любом случае рано или поздно приходит момент, когда надо править сообщения, ссылку там поправить или ещё что. хэш никогда ничего не гарантировал, а коллизии там были by design, сеть вообще ни разу про безопасность. сеть просто не решает проблемы роста там, где никакого роста, скорее всего, не будет, поэтому она такая простая и работает в своей нише эффективна. Безопасность она ЗаСтеной, а не НаСтене :)

[>] Re: написал новость на лоре
naste.ne
ahamai(blackcat, 2) — ahamai
2024-11-21 03:26:30


Всё это можно решить внешними средствами, когда в них появится необходимость, самодельными или готовыми.

В фидо было гораздо больше людей и гораздо большие проблемы с безопасностью. Но всё работало. Поэтому фидо и была сетью друзей. И я хочу сделать именно как в фидо, и изначально вообще свободной регистрации пользователей, пойнт ищет себе нода и просит, чтобы тот его прописал. Нод примерно понимает, что у него за пойнты. В общем, я хочу ту же иерархию как в FIDO, где всё держится на доверии. Тем более, по масштабам сеть явно размера FIDO не достигнет, поэтому контроль проще.

[>] Re: написал новость на лоре
naste.ne
ahamai(blackcat, 2) — ahamai
2024-11-24 05:33:21


название НаСтене взято из анонса 2014 года, где говорилось, что протоколом может быть что угодно, хоть один на стене рисует qr коды с бандлами, а второй ходит и их считывает, получая сообщения. но в реале http это самое простое, что поддерживает хоть любой язык программирования, хоть busybox

https://www.linux.org.ru/news/internet/17797879?cid=17801408

[>] Улучшение интерфейса
naste.ne
Nelf(blackcat, 13) — All
2024-12-08 19:36:01


Может быть сделать интерфейс чуть более узким, т.к. например, на мониторе в 27" совершенно неудобно читать.
Так же, вынести список к тем, сделать главной страницей.

[>] road to 0.8
naste.ne
uzzer(netsco, 4) — All
2025-11-23 15:42:57


пинг гейтования. ответы то я найду, главное чтобы мои сообщения отсюда уходили

[>] Re: road to 0.8
naste.ne
uzzer(netsco, 4) — uzzer
2025-11-23 16:51:19


в общем, пока сервера у меня не предвидится, но nn 0.8 должна быть где-то наготове

попутно с php нодой буду делать и её. в общем, путь пока такой:

- вырезать вообще lite-интерфейс, есть nn retro
- добавить то, что было добавлено в nn retro 2000

посмотреть, что получится, и дальше добавлять пока именно в nn 0.8, retro 2000 уже достаточно хорош. возможно, за базу интерфейса php-ноды возьму именно этот интерфейс, как более современный (но проверю, как оно смотрится в разных sarge-ах)

[>] Re: road to 0.8
naste.ne
shaos(spnet, 2) — uzzer
2025-11-24 10:36:04


исправил у себя - теперь забирается с netsco как надо

[>] Re: road to 0.8
naste.ne
uzzer(netsco, 4) — uzzer
2025-11-25 01:58:57


Сделать http клиент NasteNa, по типу классического клиента ii client

Интересно, а ii-client 0.3 где-нибудь сохранился?

[>] Описание
naste.ne
nnii(naste, 2) — All
2025-12-01 10:45:53


NasteNe 0.8 - простая распределённая система сообщений

nastene/ii (nn/ii) - это распределённая система сообщений, максимально упрощённоё фидо.

Станции по заданому заранее рутингу скачивают с других станций списки, потом забирают те сообщения, которых у них нет. Пойнты пишут сообщения на станции (в веб-интерфейсе или клиентом). Всё, это весь обмен и вся структура сети.

Nastene и есть такая станция, обеспечивающая веб-интерфейс и поддержку клиентов. Написана на python3 и работает на текстовых файлах.

Изначальная цель проекта - ведение маленьких, но дружных сообществ (когда трафика мало, формат эх позволяет больше вовлекаться в обсуждения).
Проекту более 10 лет, но до сих пор сохранилось много сообщений многолетней давности с сайтов, которых уже давным давно нет. В отличие от форумов мелких проектов, которые умирают с концами. Что написано в ii, не вырубишь топором.

Новое в 0.8:
+ лучшая поддержка memo (создание 6-символьных линков)
+ убран lite интерфейс (есть nastene retro, см. анонсы в эхе naste.ne)
+ поддержка скачивания сообщений с тэгом @base64, как файлов (удобно кидать маленькие файлики прямо в эху: так распространяются nn retro clean и ii-txt)

Скачать версию 0.8: https://foxears.su/nastene/nastene-0.8.tar.bz2

+++ memo:nn08de

[>] Цели
naste.ne
nnii(naste, 2) — All
2025-12-01 10:50:35


Скачать https://foxears.su/nastene/nastene-0.8.tar.bz2

Цели проекта:

1. Создание малых сообществ.
Можно сразу получать где-то контент и присоединяться к каким-то обсуждениям, а не сидеть с пустым форумом в надежде на трафик.
В формате эхи вовлечённость в разговоры выше, контента становится больше.

Плюс, любой пойнт может создать любую эху, поэтому это ещё и твиттер. :)
Вообще, если завести блог на этой платформе, то другие станции, возможно, захотят его подцепить, и у проекта сразу же будет аудитория.

2. Любительское программирование. Писать собственные станции и клиенты - это довольно просто.
Тут простые и протокол и возможная реализация, поэтому все пишут своих клиентов и свои ноды ;) Вот клиент на 2 строчки :)

for n in `wget -q -O - https://sprinternet.io/iii/e/naste.ne | tac`; do
wget -q -O - https://sprinternet.io/iii/m/$n | less; done

переключаться клавишей q :)

3. Когда все вокруг друг друга перебанят и у всех будет свой интернет, можно гонять трафик через транзитные узлы.
Можно хоть раскидать десять простых php нод по бесплатным хостингам и обмениваться через них.

Вообще, подобную систему, в отличие от мессенджеров и обычных сайтов сложнее закрыть на чтение. Это как зеркала репозиториев, только зеркала сообщений.

+++ memo:nn08go

[>] ii, nn/ii, idec
naste.ne
nnii(naste, 2) — All
2025-12-01 10:53:08


ii - базовый протокол. Читается как 2, потому что второй эксперимент, но что имелось ввиду под первым, я вообще не помню. Поддерживает способы забора сообщений /e /m /u/e /u/m, пойнтовый /u/point и запрос списка эх /list.txt

Реализации, в том числе базовая, имели и другие фичи, но это всё на усмотрение сисопа.

idec - это расширения для ii, прочесть про это, можно, напрмер, здесь: https://idec.foxears.su/forum/SbMjAUG17eUKbTd7mAfh/1

NasteNe (он же, для важности, можно называть nn/ii) - это просто такой ребрендинг протокола (и, соответственно, одноимённый сервер). Изменения незначительные:

- первые два символа msgid это последние две цифры года (кроме случаев с memo)
- в сообщения проставляется тэг topicid, это msgid первого сообщения в "цепочке", для ответа на это первое сообщение он равен repto, далее просто наследуется

Текущая реализация сервера NasteNe (точно, я буду протокол называть nn/ii, а сервер - полным названием NasteNe, чтобы их различать) в версии 0.8 содержит следующие фишки, являющиеся именно особенностями реализации данной станции:

- memo: 6-значный таглайн, проставляющий свои первые 6 символов msgid. Возможность посмотреть сообщение по короткому линку (первые 6 символов хэша) была ещё в первых версиях ii, теперь появилась возможность этот линк задавать самому

- blacklist.txt - в стандарте его не было, но он поддерживается практически всеми станциями ii/idec. Список некорректных сообщений (на удаление).

- /lim/XXX - лимит запроса сообщений в эхе. Прозрачная замена для клиентов, не поддерживающих никакого лимитирования, просто конечный адрес в пойнтовом софте меняется с Сервер/u/ на Сервер/lim/100/u/. И после этого эхи виртуально урезается, /u/list.txt покажет, что в эхе 100 сообщений, хотя физически их может быть намного больше

- /u/push. Если есть файл node.key, содержащий пароль (без \n), то на станцию можно пушить сообщения (что это такое, это отдельная тема)

- /list.txt?h=1 - добавляет 4й параметр, хэш эхи, чтобы узнать, изменилось ли содержимое эхи, не просматривая его. Такие нестандартные фичи поддерживаются обычно самописным софтом для работы под конкретную станцию, частью какого-то стандарта это не является, но может служить для межнодового обмена (ноды всё равно о чём-то договариваются между собой)

- /u/e/эхи?sf=хэш1/хэш2/хэш3 - список эх забирается, начиная с конкретного хэша. Если в эхе есть msgid из списка sf, то список показывается не с начала эхи, а с этого msgid.

Два предыдущих расширения служат для максимальной экономии трафика (и для линий с медленным соединением). Когда-то была (или нет?) версия ii-txt с поддержкой этих урлов, может для версии 2026 я тоже сделаю такой порт.

- url /h/f служит для скачивания файлов, закодированных в base64 (ссылка в веб-интерфейсе проставляется автоматически)

+++ memo:iinnid

[>] ii-txt 2026
naste.ne
nnii(naste, 2) — All
2025-12-01 11:04:03


Клиент на текстовых файлах, для python 2.4-2.7

Новое после версии 0.9:

+ NODES.2025 с описанием живых нод и скрипт list.py для обзора эх из этого списка (и создания конфигов)[br]
+ поддержка нескольких конфиг-файлов[br]
+ msg.sh - простой интерфейс для создания сообщения/ответа[br]
+ исправлена работа с python 2.4, проверено на Debian Sarge, Etch, Lenny[br]
+ строки конфига, начинающиеся с #, игнорируются[br]
+ другое

ii-txt-2026.tar.bz2

[>] Nastene Retro 2000 Clean
naste.ne
nnii(naste, 2) — All
2025-12-01 11:12:48


Веб-станция, адаптированная под старые компьютеры. Работает на python 2.5-2.7, проверено в Debian Etch, Lenny

* Clean-версия не содержит стартовой базы сообщений retro.talks, файла bottle.py (см. README) и фетчера

Новое:

* Большее соответствие NasteNe 0.8, в том числе:
- первые 2 знака msgid это год
- поддержка memo

* Подстветка таглайна memo в виде ссылки

* /h/f/msgid для получения файлов в сообщениях с тэгом @base64: (a la ii-go), подсветка таких ссылок

nastene-retro-2000-clean.tar.bz2

[>] Программы проекта NasteNe
naste.ne
nnii(naste, 2) — All
2025-12-01 11:15:34


NasteNe (текущая версия 0.8)
Сервер, пойнты могут читать и писать через веб-интерфейс или через пойнтовый софт. Написан на python 3.
Скачать: https://foxears.su/nastene/nastene-0.8.tar.bz2

nastene retro (текущая версия 2000)
Сервер с веб-интерфейсом, выполенным в лучших традициях html 3.2. Совместим с ie4+ и многими другими браузерами. Написан на python 2, поддерживаются версии python 2.5-2.7 (работа проверена в Debian 4.0 Etch на python 2.5). Полная (не clean) версия содержит и архив эхи retro.talks, можно сразу погружаться.
Скачать: https://foxears.su/nastene/nastene-retro-2000.tar.bz2

ii-txt (текущая версия 2026).
Простой клиент на текстовых файлах, скачивает сообщения в файлы, и файлы же можно создавать для их отправки. В версии 2026 появился простенький менеджер сообщений, позволяющий создавать сообщения и отвечать. Самый первый клиент ii, он же самый живучий. Написан на python 2, поддерживаются 2.4-2.7, проверен в Debian 3.1 Sarge.
Скачать: https://foxears.su/nastene/ii-txt-2026.tar.bz2

NasteNa (nna) (текущая версия не написана)
http-клиент, использующий для отображения веб-браузер. Как классичский ii-client. Python 3.
Скачать: негде

+++ memo:nnsoft

[>] Re: ii-txt 2026
naste.ne
nnii(naste, 2) — nnii
2025-12-01 15:52:54


Сразу же бага: в NODES.2025 станции nnii.my.to и ring2.my.to без завершающего слеша, поэтому list.py на них работать не будет. Исправляется добавлением завершающего слеша.

[>] Re: road to 0.8
naste.ne
nnii(spnet, 9) — shaos
2025-12-07 15:50:34


> исправил у себя - теперь забирается с netsco как надо



+++ написано в ii.txt