Привет, олл!
Наверняка, многие из вас заметили, что в последнее время попытки контроля интернета все усиливаются и усиливаются, тому есть множество примеров — начиная от закрытия torrents.ru без суда и следствия(а ведь они сотрудничают с правообладателями!!) до демонстрационных отловов разных хакеров, что б другие сидели тише. Ага. Хрен вам.
Я предлагаю организоваться и начать разрабатывать нашу новую (национальную, хехе) систему обмена данными, которая будет развитием существующих торрентов, емулей и прочего.
Сразу говорю, вероятно, все это так или иначе реализовано в различных инструментах обмена информацией — цель сделать это все более доступным, более удобным и более живым.
Осторожно — много текста без картинок.
Я просто попробую предложить что-то свое, но буду рад и любым дополнениям к моим мыслям. Ведь я могу и в корне не быть правым, верно?)
В данный момент (это пока лишь идея и может все круто поменяться) есть мнение, что протокол XMPP очень хорош и использовать именно его для взаимодействия клиентов и серверов + использовать некоторую (ну скорее всего BitTorrent) технологию для обмена данными непосредственно.
Соответственно что у нас есть в основе:
Для основы нам этого хватит за глаза и за уши — можно реализовать почти все, что душе угодно, а потому давайте пытаться решать проблемы с помощью этого инструментария.
Здесь я предлагаю просто посидеть и подумать над структуризацией раздач и тпх. В данный момент все на рутрекере и много где еще хранится, к примеру, в BB-кодах и тпх и это часто не очень удобно для машин) При этом все все равно требуют при создании раздачи на рутрекере заполнить форму. Так почему бы не сделать все это более совершенным и не хранить структуру вместо простого текста?
Для этого я вижу достаточность введения цифровых подписей под различным контентом (в основном — .torrent файлы и т.д.). По этой подписи можно понять какой человек в сети проверил его и по сути если что — вопросы к нему. Возможно, есть вариант организовать многоуровневую подпись — скажем, сначала мелкий модератор подписывает, а потом его должен подписать кто-то более ответственный и т.д. или можно организовать таким образом уровни доверия к контенту.
Для защиты от вирусов есть следующая идея — сделать просто ботов, которым будешь отправлять контент на проверку на вирусы и они будут подписывать этот контент, если все прошло проверку.
Когда вводишь в строку поиска на рутрекере «House M.D.» ты получаешь просто сотню разных раздач… это печалит и нужно сидеть и выбирать то, что тебе было бы удобно и еще смотришь на заголовок, вроде качество то, но потом оказывается, что это не тот сезон, но не всегда хорошая идея ввести в строку поиска еще и «Season 3» — можно опять же что-то пропустить.
Нужно просто создавать одну раздачу на все и иметь возможность выбрать нужный тебе .torrent файл в одном месте и не рыться во всем этом. Можно много всяких инструментов наложить рядом — какие субтитры нужны, какой перевод, какой сезон, какое качество картинки и т.д.
Для того, что бы можно было объединять раздачи нужно просто отдельно все их подписывать — когда есть какая-то раздача, а потом появляется еще контент, то потом он добавляет к уже существующему свой файл и он встает в очередь на модерацию и этот новый контент(не вся раздача) будет иметь пометку «не проверено» (ну или как будет лучше) пока его не подпишет модератор и так же все, что и в п.2. нужно просто все это подписывать по-отдельности и по-отдельности реализовывать функционал из п.2. Выглядит хорошо.
Тут все сложнее. Нужно повысить жизнеспособность сети — для этого нужно реализовать следующий алгоритм поиска нового трекера.
Для этого нам нужна следующая функциональность:
Первый механизм нужен для того, что б понять через что соединяться когда трекер ляжет, а второй если текущий трекер работает, но не хочет обрабатывать этого клиента.
Со вторым все просто и понятно — просто при announce вернуть ему что-то вроде «redirect to ****» и все.
А вот для первого необходима специальная настройка сервера — нужно создавать некоторую сеть из серверов (пусть будет нексус), желательно, что бы они были географически далекими. У каждого сервера из этого нексуса будет приоритезированный список всей этой маленькой сети, который он будет рассылать всем своим клиентам. Если вдруг трекер перестанет отвечать, то клиенты будут идти в низ по списку этих серверов и подключаться куда-нибудь. В это время внутри сети происходит обмен данными и определение того, кто реально будет раздавать контент теперь (это произойдет очень быстро — сеть маленькая и просто «договориться», а для реализации можно прикинуть какую-нибудь эвристику и придумать какие-нибудь простые и однозначные правила для определения преемника умершего трекера), а потом после того как решили, то всех редиректят на этот новый трекер.
Это не должно вызывать никаких проблем с настройкой — люди и так настраивают бекапы своих торрентов, а тут нужно лишь поговорить с людьми и сервера почти не нужно настраивать — они все сделают сами.
Здесь еще важно остаться анонимным и сделать эту сеть более распределенной. Здесь предлагается сделать через усложнение иерархии, но усложнение должно быть таким, что оно только укрепляет сеть, а не ослабляет ее.
Наши трекеры уже объединены в нексусы и могут составлять с друг другом некоторую зону, которая может функционировать до тех пор пока хотя бы один член нексуса будет жив и на нем соответственно будет хранится весь контент с мертвых членов нексуса. Да, появляется проблема с нагрузкой, но если будет 20 серверов в нексусе, то такой проблемы, пожалуй, никогда не будет.
Если уж окажется, что нагрузка будет слишком большой, то можно всегда поднять сервера поддержки и на него редиректить часть клиентов и т.д.
Для того, что бы идентифицировать сервера для участия его в нексусе будут использоваться цифровые подписи и т.д. Это позволит защитить сеть от внешних воздействий. А дочерние вспомогательные сервера могут иметь другой ключ и, соответственно, при создании нексуса все обмениваются парой ключей — от основного сервера и от вспомогательных. Вспомогательных может быть сколько угодно, а основной только один. Этот механизм создан для упрощения подключения и расширения сети со стороны одного участника сети — что бы не нужно было со всеми связываться и обмениваться ключами. По сути вспомогательные сервера являются лишь кеширующими проксями. Но вообще их потребность довольно иллюзорна.
Это реализовать очень просто через ответ на announce, так что не будем на это отвлекаться.
Для этого можно просто реализовать для каждого пользователя свой раздел, на раздачи которого он может давать ссылки, которые не открыть без, к примеру, сгенерированного пароля. В принципе, тут тоже нет ничего особенно сложного — трекеры всегда есть и будут работать. В принципе, можно даже не хранить все на серверах, а сделать трекер прямо в клиенте — что бы юзера по этим приватным раздачам делали запросы к этому клиенту через XMPP сервер.
Нет не все, их просто масса и сверх цель (или сверх желание — кому как) — это создать совершенный инструмент обмена информацией. В дополнение ко всему вышенаписанному есть масса введений во все это. Например, создать анонимный полу-автоматический способ сливания информации в сеть (для а-ля викиликс), создать возможности для закрытых трекеров (что б только некоторые участники этой сверх-сети могли участвовать в файлообмене).
Насчет интерфейса — хочется сделать единый базовый интерфейс и не хочется, что бы это был прямо таки браузер. В браузере слишком мало возможностей для реального файлообмена.
И в следстивии этого — иметь некоторую иерархию нексусов, что бы было видно как на ладони «весь интернет». К примеру, разбиение по территориальному признаку, по направлению (IT, музыка и тпх) и т.д. А в самих нексусах тоже создать свою некоторую иерархию и т.д. Даже думаю, что с этого было бы интересно начать. А м.б. что бы не нексусы участвовали в иерархии, а сами трекеры. Вероятно, что придется делать что-то вроде DNS с выдачей имен в этой иерархии. Но вообще тут уже надо много думать над этим как что организовать, что бы не было киберсквоттерства никакого и т.д. Создать возможность создавать без собственного трекера закрытые сообщества. Но тут уже вопрос с безопасностью становится — у сервера же вся информация есть и в принципе он может все разослать другим участникам сети… тут можно использовать механизм — «трекер в клиенте» с синхронизацией участников сети по шифрованному каналу. В общем, много-много всего хорошего.
В общем, я предлагаю собрать небольшую команду и начать это все создавать. Если не мы, то другие. Люди уже суетятся на счет распределенных разных вещей (например, диаспора). Пригодятся все.
Жду всех в комментариях.
Наверняка, многие из вас заметили, что в последнее время попытки контроля интернета все усиливаются и усиливаются, тому есть множество примеров — начиная от закрытия torrents.ru без суда и следствия(а ведь они сотрудничают с правообладателями!!) до демонстрационных отловов разных хакеров, что б другие сидели тише. Ага. Хрен вам.
Я предлагаю организоваться и начать разрабатывать нашу новую (национальную, хехе) систему обмена данными, которая будет развитием существующих торрентов, емулей и прочего.
Сразу говорю, вероятно, все это так или иначе реализовано в различных инструментах обмена информацией — цель сделать это все более доступным, более удобным и более живым.
Осторожно — много текста без картинок.
Основные текущие проблемы сети
- Много дублирующегося контента
- Контент не всегда является проверенным и часто бывает завирусованным
- Несколько разных форматов контента разбросаны по сети (зачастую мы находим то, что нужно, но не в том формате, в котором хотелось бы)
- Для более-менее быстрой скачки по прежнему требуется трекер и если он перестает работать, то скорость начинает падать. (Лично у меня DHT вообще кладет роутер довольно быстро и потому на всех домашних машинах он отключен)
- В данный момент не так просто становится раздавать на торрентах левый контент. А часто его так и вовсе закрывают
- Нет возможности автоматического обновления торрентов (к примеру, для сериалов это очень актуально)
- Сложность инициации раздачи контента без использования трекера (если я хочу просто передать другу файлик по п2п, то это у меня просто не получится)
Что же мы можем сделать с этим?
Я просто попробую предложить что-то свое, но буду рад и любым дополнениям к моим мыслям. Ведь я могу и в корне не быть правым, верно?)
Общая идеология
В данный момент (это пока лишь идея и может все круто поменяться) есть мнение, что протокол XMPP очень хорош и использовать именно его для взаимодействия клиентов и серверов + использовать некоторую (ну скорее всего BitTorrent) технологию для обмена данными непосредственно.
Соответственно что у нас есть в основе:
- набор серверов, которые могут между собой обмениваться информацией
- набор клиентов, которые могут обмениваться информацией с любым из серверов и с любым из клиентов(но уже через сервер)
- сама информация может быть абсолютно любой
Для основы нам этого хватит за глаза и за уши — можно реализовать почти все, что душе угодно, а потому давайте пытаться решать проблемы с помощью этого инструментария.
Проблема 1 — Дубликация контента
Здесь я предлагаю просто посидеть и подумать над структуризацией раздач и тпх. В данный момент все на рутрекере и много где еще хранится, к примеру, в BB-кодах и тпх и это часто не очень удобно для машин) При этом все все равно требуют при создании раздачи на рутрекере заполнить форму. Так почему бы не сделать все это более совершенным и не хранить структуру вместо простого текста?
Проблема 2 — Контент не всегда является проверенным и часто бывает завирусованным
Для этого я вижу достаточность введения цифровых подписей под различным контентом (в основном — .torrent файлы и т.д.). По этой подписи можно понять какой человек в сети проверил его и по сути если что — вопросы к нему. Возможно, есть вариант организовать многоуровневую подпись — скажем, сначала мелкий модератор подписывает, а потом его должен подписать кто-то более ответственный и т.д. или можно организовать таким образом уровни доверия к контенту.
Для защиты от вирусов есть следующая идея — сделать просто ботов, которым будешь отправлять контент на проверку на вирусы и они будут подписывать этот контент, если все прошло проверку.
Проблема 3 — Несколько разных форматов контента разбросаны по сети
Когда вводишь в строку поиска на рутрекере «House M.D.» ты получаешь просто сотню разных раздач… это печалит и нужно сидеть и выбирать то, что тебе было бы удобно и еще смотришь на заголовок, вроде качество то, но потом оказывается, что это не тот сезон, но не всегда хорошая идея ввести в строку поиска еще и «Season 3» — можно опять же что-то пропустить.
Нужно просто создавать одну раздачу на все и иметь возможность выбрать нужный тебе .torrent файл в одном месте и не рыться во всем этом. Можно много всяких инструментов наложить рядом — какие субтитры нужны, какой перевод, какой сезон, какое качество картинки и т.д.
Для того, что бы можно было объединять раздачи нужно просто отдельно все их подписывать — когда есть какая-то раздача, а потом появляется еще контент, то потом он добавляет к уже существующему свой файл и он встает в очередь на модерацию и этот новый контент(не вся раздача) будет иметь пометку «не проверено» (ну или как будет лучше) пока его не подпишет модератор и так же все, что и в п.2. нужно просто все это подписывать по-отдельности и по-отдельности реализовывать функционал из п.2. Выглядит хорошо.
Проблема 4 — Для более-менее быстрой скачки по прежнему требуется трекер
Тут все сложнее. Нужно повысить жизнеспособность сети — для этого нужно реализовать следующий алгоритм поиска нового трекера.
Для этого нам нужна следующая функциональность:
- Получение подходящего трекера для раздачи у почти произвольного другого трекера
- Редирект с одного трекера на другой
Первый механизм нужен для того, что б понять через что соединяться когда трекер ляжет, а второй если текущий трекер работает, но не хочет обрабатывать этого клиента.
Со вторым все просто и понятно — просто при announce вернуть ему что-то вроде «redirect to ****» и все.
А вот для первого необходима специальная настройка сервера — нужно создавать некоторую сеть из серверов (пусть будет нексус), желательно, что бы они были географически далекими. У каждого сервера из этого нексуса будет приоритезированный список всей этой маленькой сети, который он будет рассылать всем своим клиентам. Если вдруг трекер перестанет отвечать, то клиенты будут идти в низ по списку этих серверов и подключаться куда-нибудь. В это время внутри сети происходит обмен данными и определение того, кто реально будет раздавать контент теперь (это произойдет очень быстро — сеть маленькая и просто «договориться», а для реализации можно прикинуть какую-нибудь эвристику и придумать какие-нибудь простые и однозначные правила для определения преемника умершего трекера), а потом после того как решили, то всех редиректят на этот новый трекер.
Это не должно вызывать никаких проблем с настройкой — люди и так настраивают бекапы своих торрентов, а тут нужно лишь поговорить с людьми и сервера почти не нужно настраивать — они все сделают сами.
Проблема 5 — Не так просто становится раздавать на торрентах
Здесь еще важно остаться анонимным и сделать эту сеть более распределенной. Здесь предлагается сделать через усложнение иерархии, но усложнение должно быть таким, что оно только укрепляет сеть, а не ослабляет ее.
Наши трекеры уже объединены в нексусы и могут составлять с друг другом некоторую зону, которая может функционировать до тех пор пока хотя бы один член нексуса будет жив и на нем соответственно будет хранится весь контент с мертвых членов нексуса. Да, появляется проблема с нагрузкой, но если будет 20 серверов в нексусе, то такой проблемы, пожалуй, никогда не будет.
Если уж окажется, что нагрузка будет слишком большой, то можно всегда поднять сервера поддержки и на него редиректить часть клиентов и т.д.
Для того, что бы идентифицировать сервера для участия его в нексусе будут использоваться цифровые подписи и т.д. Это позволит защитить сеть от внешних воздействий. А дочерние вспомогательные сервера могут иметь другой ключ и, соответственно, при создании нексуса все обмениваются парой ключей — от основного сервера и от вспомогательных. Вспомогательных может быть сколько угодно, а основной только один. Этот механизм создан для упрощения подключения и расширения сети со стороны одного участника сети — что бы не нужно было со всеми связываться и обмениваться ключами. По сути вспомогательные сервера являются лишь кеширующими проксями. Но вообще их потребность довольно иллюзорна.
Проблема 6 — Нет возможности автоматического обновления торрентов
Это реализовать очень просто через ответ на announce, так что не будем на это отвлекаться.
Проблема 7 — Сложность инициации раздачи контента без использования раздачи на трекере
Для этого можно просто реализовать для каждого пользователя свой раздел, на раздачи которого он может давать ссылки, которые не открыть без, к примеру, сгенерированного пароля. В принципе, тут тоже нет ничего особенно сложного — трекеры всегда есть и будут работать. В принципе, можно даже не хранить все на серверах, а сделать трекер прямо в клиенте — что бы юзера по этим приватным раздачам делали запросы к этому клиенту через XMPP сервер.
И это все идеи?
Нет не все, их просто масса и сверх цель (или сверх желание — кому как) — это создать совершенный инструмент обмена информацией. В дополнение ко всему вышенаписанному есть масса введений во все это. Например, создать анонимный полу-автоматический способ сливания информации в сеть (для а-ля викиликс), создать возможности для закрытых трекеров (что б только некоторые участники этой сверх-сети могли участвовать в файлообмене).
Насчет интерфейса — хочется сделать единый базовый интерфейс и не хочется, что бы это был прямо таки браузер. В браузере слишком мало возможностей для реального файлообмена.
И в следстивии этого — иметь некоторую иерархию нексусов, что бы было видно как на ладони «весь интернет». К примеру, разбиение по территориальному признаку, по направлению (IT, музыка и тпх) и т.д. А в самих нексусах тоже создать свою некоторую иерархию и т.д. Даже думаю, что с этого было бы интересно начать. А м.б. что бы не нексусы участвовали в иерархии, а сами трекеры. Вероятно, что придется делать что-то вроде DNS с выдачей имен в этой иерархии. Но вообще тут уже надо много думать над этим как что организовать, что бы не было киберсквоттерства никакого и т.д. Создать возможность создавать без собственного трекера закрытые сообщества. Но тут уже вопрос с безопасностью становится — у сервера же вся информация есть и в принципе он может все разослать другим участникам сети… тут можно использовать механизм — «трекер в клиенте» с синхронизацией участников сети по шифрованному каналу. В общем, много-много всего хорошего.
Ok. А дальше что?
В общем, я предлагаю собрать небольшую команду и начать это все создавать. Если не мы, то другие. Люди уже суетятся на счет распределенных разных вещей (например, диаспора). Пригодятся все.
- Программисты UI/Верстальщики — без вас мы не сделаем хорошего UI, каким его видят юзабилисты и дизайнеры!
- Программисты серверов — без вас нам не создать ничего надежного!
- Дизайнеры — без вас нам не создать никогда красивой системы, которая была бы всем приятна для использования!
- Юзабилисты/UI-дизайн — без вас мы не сделаем удобного и грамотного приложения!
Жду всех в комментариях.