Обсуждение Nastene


\/ . ahamai to All @ Описание 19/11/24 22:58

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

nasteD... . цепочка . ОТВЕТИТЬ



\/ . ahamai to All @ Цели 19/11/24 22:59

Скачать 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

nasteG... . цепочка . ОТВЕТИТЬ



\/ . ahamai to All @ Формат 19/11/24 22:59

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

/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

nasteF... . цепочка . ОТВЕТИТЬ





\/ . ahamai to ahamai @ Re: написал новость на лоре 20/11/24 17:53

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

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

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

24T1kx... . цепочка . ОТВЕТИТЬ



\/ . ahamai to ahamai @ Re: написал новость на лоре 20/11/24 17:56

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

24t58u... . цепочка . ОТВЕТИТЬ



\/ . ahamai to ahamai @ Re: написал новость на лоре 20/11/24 23:26

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

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

24A4gd... . цепочка . ОТВЕТИТЬ



\/ . ahamai to ahamai @ Re: написал новость на лоре 24/11/24 01:33

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

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

24jyjx... . цепочка . ОТВЕТИТЬ



Nelf to All @ Улучшение интерфейса 08/12/24 15:36

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

24oo4Y... . цепочка . ОТВЕТИТЬ