Привет.
Я создаю социальную сеть для параноиков.

Помогать с кодом мне не нужно, а почитать и покритиковать концепцию очень даже нужно. Хотелось бы найти неочевидные для меня грабли, пока спецификация не отлита в граните.

Также можно: сказать, что я идиот, предложить название и логотип системы. Всё внутри.

Tagged with →  

30 Responses to создаю социальную сеть для параноиков

  1. Ycihlam:

    пусть название будет такое «твои одноклассники следят за тобой в контакте».
    И домен такой длинный

  2. Tfomo:

    1. Почему не Diaspora? Вы пробовали поставить диаспору? Смотрели системные требования? Мне проще написать свой велосипед, чем разбираться с чужим. К тому же, к системе предоставляются более жестокие требования в плане живучести.

  3. Tfomo:

    То есть я хочу, чтобы система работала на дешёвом shared-хостинге, легко ставилась дома на XAMPP, и чтоб работала вообще без интернета как такового.

  4. Tfomo:

    2. Основной принцип архитектуры — данные первичны. Код — вторичен. То есть сейчас нет ни строчки кода — пока что я работаю над закреплением структур данных и протоколов обмена данными. В рамках концепции KISS (keep it simple, stupid) кода будет отсилы строк 10-20.

    Социальная сеть будет распределённой. Основа ячейки сети — одна таблица в базе данных. Таблица работает только на дополнение — записанные данные не модифицируются и не удаляются. Это поможет избежать роста энтропии.

    Таблица имеет такие поля: время, тип, аргумент1, аргумент2. Аргументы строкового типа. Записи имеют вид:
    — тогда-то установил имя в такое-то (при извлечении имени берётся последнее),
    — тогда-то подписался на новости такого-то,
    — тогда-то аннулировал подписку на новости такого-то,
    — тогда-то разместил фотографию,
    — тогда-то прокомментировал такую-то записть такого-то,
    — тогда-то написал, что съел на завтрак вкусный роллтон…

    Я утверждаю, что именно в таком виде система будет максимально простой. На оптимизации я не настаиваю, да и цель такая не стоит: нагрузка не особо большая и напрямую зависит от числа друзей/подписчиков. Президент или крупное СМИ могут позволить себе что-то посерьёзнее shared-хостинга…

  5. REter:

    т.е., тот, кто захочет записаться в такую социалочку, долже будет поставить и содержать свою ноду?

  6. Tfomo:

    гипертекстовый векторный фидонет [x]

  7. Tfomo:

    3. Теперь самое интересное — обмен данными между ячейками. Обычно считается, что данные традиционно должна запрашивать заинтересованная сторона, но этот вариант имеет следующие недостатки:
    — придётся периодически запрашивать обновления у всех друзей в синхронном режиме. Либо будет большой временной лаг (из-за редких запросов), либо будет высокая бессмысленная нагрузка (из-за частых запросов);
    — схема «запрос-ответ» требует двунаправленного канала связи, что возможно не всегда.

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

    Затем эта информация (в формате json, к примеру) подписывается ключом автора, упаковывается в архив и укладывается в файл /news.gz
    Размер этого файла жёстко ограничен правилами. Пока я остановился на 10 килобайтах.

    Дальше возможны варианты:

    1. узел-отправитель посылает «пинг» всем узлам, которые, как он считает, заинтересованы в получении обновления. узлы ставят скачивание обновления в очередь задач (то есть не скачивают сразу);

    2. файл отправляется нужным узлам посредством модемной связи (напрямую, без установки tcp/ip соединения, как в гипертерминале и фидонете);

    3. к файлу добавляются коды Рида-Соломона (избыточность), затем данные переводятся в кодировку base32 и отправляются посредством проводного телеграфа или коротковолновой любительсткой радиосвязи;

    4. файл распечатывается и отправляется с гонцом…

    Это не полный список методов обмена. Наиболее разумными я считаю методы 1 и 3. С методом 1, думаю, всё понятно, а про метод 3 я поясню. Понятно, что он нужен на случай «выключения» интернета и телефонной связи. При реализации этого метода узлы всё время работают на приём, лишь изредка включая передачу.

    Аппаратура для приёма нужна довольно простая (начиная от детекторного приёмника, подключенного к COM-порту). Для передачи достаточно схемы на 1-2 лампах/транзисторах (авторенератор и модулятор). Отправка азбукой морзе реализуется программно. Реальная скорость около 100 бод, что объясняет ограничения на размер отправляемого архива (такой радиотвиттер получается). Это я ко тому, что не надо пугаться третьего пункта.

    Предвижу возражение, что при выключении интернета любительское радио будет объявлено вне закона. Но для поиска изредка работающих передатчиков нужно несоизмеримо больше ресурсов, чем для звонка семи провайдерам. К тому же, запеленговать даже постоянно включенный коротковолновый передатчик не так просто.

  8. Tfomo:

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

    Именно к этой таблице делается запрос, когда хозяин ячейки нажимает на кнопку «что нового у друзей». Если какую-то информацию он считает важной и полезной для распространения, он делает «ретвит»: запись целиком копируется в первую таблицу. При этом максимально наиболее информация будет дублироваться большее число раз, что не позволит её «замолчать» или ещё каким-нибудь образом цензурировать.

    Вы спросите: а что насчёт групп, встреч?.. Это будут такие же узлы, как и люди, со своими подписчиками.

    Что насчёт фото, видео, музыки? Исходя из ограничений на размер обновлений, они передаются по ссылкам. Впрочем, небольшие картинки могут быть заданы ссылкой вида [data:image/jpeg;base64,…] или переданы через ЮЮК, что позволит токже получать их по радио.

  9. Tfomo:

    5. Личные сообщения реализуются так же, как и обновления статуса, то есть они публичны. Они лишь шифруются открытым ключом получателя. Если я не смог расшифровать запись — значит, она предназначена не мне. То есть в одном архиву могут быть как записи для всех (типа «как я смачно покакал»), так и зашифрованные приватные сообщения (типа «алекс юстасу немцы под москвой тчк»).

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

    Стойкости в 64 бита на первое время, думаю, хватит. Для обычной переписки этого достаточно, а шпиёны могут использовать систему поверх более стойкого алгоритма.

    Кстати, посоветуййте библиотеку для несимметричного шифрования на php.
    Про какие аспекты проекта я ещё забыл написать?

  10. Tfomo:

    нет, домена не будет. У каждого участника сети свой адрес. Полная децентрализация.

  11. Tfomo:

    да, можно назвать это и нодами. Можно взять выделеный сервак, давать всем желающим хомякам ноды бесплатно (с доменом третьего уровня, например), и показывать им рекламу. Таких сервисов может быть хоть мильон (для города, для университета, как жаббер-серверы). Но настоящие параноики всегда будут держать свои ноды.

  12. Tfomo:

    Основной профит такой сети (помимо полной децентрализации) в том, что она хоть сколько-нибудь устойчива к полному отключению интернета, которое весьма вероятно в условиях экономического/энергетического/политичес кого кризиса.

    Стоимость простого приёмника/передатчика составит от 100 рублей (вместе с контроллером rs232-usb получится 200 рублей). К этому докупается 5 метров провода для антенны и урановый лом для заземления.

    В условиях кризиса передатчик может быть собран на коленке из деталей, найденных на свалке. Для запитки нетбука и небольшого передатчика хватит метровой солнечной батареи.

    Также радио в системе может применяться и без всяких кризисов для связи с небольшими посёлками, куда провести интернет проблематично.

  13. Tfomo:

    Закрытые группы могут реализоваться путём отправки закрытого ключа группы по приватной почте.

  14. Tfomo:

    6. Поиск. Тут всё просто. Если узлу нужен поиск — то он реализует его самостоятельно. Можно ограничиться как только поиском по записям друзей, так и скачивать/принимать все обновления подряд. Это добавит модель к системе и ещё одну табличку для индекса.

  15. Tfomo:

    да, забыл, ещё почтовыми голубями можно…

  16. Tfomo:

    В рамках концепции возможна опция «я больше не хочу читать новости от этого пользователя, но хочу продолжить их накопление в своём локальном кэше для возможности поиска по ним».

  17. Tfomo:

    7. Проблемы. Тупой спам в такой системе невозможен, так как нельзя отослать письмо одновременно нескольким адресатам: для каждого адресата письмо нужно отдельно шифровать. Также из-за ограничения размера архива нельзя за раз передать больше 10-20 писем, что сводит экономическую эффективность спама на нет. Увеличение удельной стоимости отправки информации лишь увеличит качество передаваемой информации.

    Вспомните также, что спама нет в жаббере не только за счёт децентрализации, но и из-за фактора неуловимого Джо.

    Ддос-атака распределённой системы невозможна. При атаке отдельного узла или изъятии днс-адреса узел начинает работать по новому адресу со старым ключом.

    Проблемой может быть глушение радиоэфира, но любая глушилка обладает таким же недостатком, как и любой передатчик — ограниченным радиусом действия. К тому же при необходимости нетрудно сменить частоту.

  18. Ahvoff:

    keep it simple, говоришь?
    ага. пользователь сам завёл ноду, сам организовал себе поиск… проще некуда.
    по-моему, не взлетит. потому что общая тенденция технологий успешно идёт как раз в направлении полного отказа от пользовательского софта. также, учитывая растущую ширину канала в интернет всякие ограничения по траффику кажутся смешными. тогда как ты пытаешься идти в обратном направлении.
    вообще, твоя модель выглядит развлечением для узкой группы гиков, не более. ни о какой социальности речи не может быть.
    это моё мнение.

  19. Tfomo:

    спасибо за замечания.

    > пользователь сам
    Кто может поставить вордпресс — поставит и «ноду». Ничего более сложного там не будет.
    Кто не может поставить вордпресс — может использовать готовые сервисы, внешне неотличимые по сложности от вконтактика.
    При этом будет возможность миграции между сервисами (смены адреса) с сохранением ключа.

    > ограничения по траффику кажутся смешными
    Скажи это основателям твиттера )

    > модель выглядит развлечением для узкой группы гиков
    Не просто для гигов, а для гигов-параноиков. Пока нефть не кончится.

    > ни о какой социальности речи не может быть
    друзья и лента есть — значит есть и социальность

  20. AmtEkb:

    Когда бывшие сантехники, начитавшись Кастанеды, начинают рассуждать о торсионных полях… эх.

  21. Cap_yeKyna:

    Да, в условиях кризиса, все конечно побегут смотреть фотки и писать статусы в твоей соц-сети…
    Скажи, а как через неё можно будет скачать себе немного еды и теплых вещей?

  22. REter:

    легко. Вступай в группу «мародёры с Матвеевки».

  23. HneZZ:

    Отличная идея зпт готовлю место под ноду тчк Ждем развития тчк

  24. XbiNo:

    Каой нахуй пхп? Давай каламбур — пусть ноды будут на ноде.

  25. Tfomo:

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

  26. XbiNo:

    есть, конечно.

  27. Hccon:

    Меня запишите.
    Логотипом предлагаю рыцарскую каску (типа чувака в рыцарской каске), а вокруг — смотрящие на нее грозные и хитрые глаза (можно из темноты). Рисовать не умею. Спасибо.

  28. AklNo:

    Меня запишите, пожалуйста. Я — целевая аудитория.

  29. Yksko:

    твои одноклассники следят за тобой в контакте [x]

  30. SbVelo:

    Для начала стоит вспомнить лихие 90-е и фидонет. Помните, сколько нужно было ждать, чтобы загрузить обычные текстовые сообщения?
    А как сейчас обстоят дела в сфере радиомодемов (не gprs, а обычные)? Рискну предположить, что высоскоростные могут быть доступны единицам, остальные же недалеко ушли с тех времен.
    Если отталкиваться от этого, то стоит ориентироваться на текстовую соц. сеть. Т.е. тот же fido, только с лайками и друзьями.

Добавить комментарий