Все совпадения с реальными ситуациями и названиями проектов случайны.
На правах фанфика. Сказка — ложь, да в ней намёк — добрым молодцам урок! Жил да был Чебурашка, как водится, в телефонной будке. Жил — не тужил, и был у него диалап — ни в сказке сказать, ни пером описать. Не 4G, конечно, но книжки с рецептами мороженого и чертежи вертолётов с трекера volshebnik.su он регулярно скачивал. И картинки с апельсинами. И жил бы он себе припеваючи, но злобная Шапокляк послала к его провайдеру крыску Лариску со спецзаданием: заблокировать Чебурашке доступ к volshebnik.su!
Скоро сказка сказывается, да не скоро дело делается. Тридцать дней крыска Лариска грызла провода, куда-то что-то закорачивала да хвостом по клавиатуре ночами лупила. А на тридцать первый день набрал Чебурашка адрес любимого сайта — а ему заглушка: так мол и так, сайт заблокирован. Пригорюнился Чебурашка, опустил свои большие уши, поскрёб лапками затылок и подумал: "А что мне эта блокировка? У меня TOR Browser есть. Зайду да торрент-файл скачаю". Сказано — сделано. Скачан файл, запущен клиент… Да вот беда: не может чебурашкин transmission у сервера список участников запросить! И KTorrent не может. Надумал Чебурашка прокси в настройках указать — а тогда весь трафик через прокси идёт. И не только к volshebnik.su, но и к nagarmoshke.info. И не только запрос пиров, но и содержимое торрента. Закручинился Чебурашка и пошёл к товарищу своему, крокодилу Гене, и молвил Чебурашка: "Помоги мне настроить торрент, ты ж крокодил". Гена сразу догадался: торрент-качалки Чебурашки просто не понимают, что отдельные сайты могут быть заблокированы.
Крокодил Гена, как и все крокодилы-программисты, использовал OpenSUSE. Перечитав исходники transmission с утреца, Гена пошёл на работу в зоопарк, где работал на полставки ведущим аллигатором первой категории (в основном, конечно, за выслугу лет). Оставшиеся полставки времени Гена тратил на фриланс — вместе с пенсией на жизнь хватало, да ещё сердобольные посетители зоопарка нет-нет да и подкормят. Хорошенько всё обдумав (благо основная работа интеллектуальных усилий не требовала), вечером наш крокодил начал писать код, и к утру у Чебурашки на почтовом ящике лежал свежесобранный торрент-клиент, который имел специальный список прокси. Если какой-то запрос к сайту оканчивался неудачей — программа последовательно пробовала отправить запрос через прокси из списка. Чебурашка повеселел, купил клей, ножницы, склеил по свежескачанным чертежам голубой вертолёт и подарил его Гене. Гена расчувствовался.
"А что, — подумал он, — если бедный Чебурашка не сумеет найти новые списки прокси, или сайт с их каталогом тоже подвергнется нападению Шапокляк?".
Три дня и три ночи Гена думал, три железных воблы изгрыз, три железных мышки истёр — да три фичи закоммитил.
Первая фича позволяла клиентам новой версии обмениваться списками прокси. Вторая фича позволяла тому клиенту, у которого сайт недоступен, попросить любого другого клиента с новой версией самостоятельно сделать запрос участников к трекеру, по сути, побыть прокси-сервером. А третья фича позволяла в один клик установить и запустить TOR/I2P/Freenet и совершать запросы через них, если до какого-то сайта не получается достучаться через прокси (классические или "товарищеские" — всё-таки не все ещё успели поставить новую версию программы). Отправил Гена пуллреквест на гитхабе и пошёл на работу — отсыпаться. Шапокляк негодовала. "Проклятое зелёное бревно! — написала она Гене по e-mail — Я тебе покажу! Я сервера сайта volshebnik.su так изгажу, что вовек не восстановите!". Гена незнакомый адрес в гугль вбил, в яндекс вбил, не нашёл ничего и понял, что злобная старушка зарегистрировала одноразовый ящик на почте "Мыло — чистое, как небо", где телефон не требуют.
И снова три дня и три ночи думал Гена. И не придумал ничего лучше, чем добавить в torrent-протокол новый вид сообщения — "поделиться торрент-файлом". "Торрент-файлы небольшие, — решил он, — а винчестеры нынче вместительные. От пары десятков мегабайт не убудет, не обязательно же всю базу центрального трекера хранить. Пусть теперь каждый клиент сохраняет так много торрент-файлов, как разрешит ему пользователь, и периодически обменивается ими со всеми пирами, которых видит". Написал Гена код, запушился, отправил пулл-реквест и пошёл на работу. Приходит Гена с работы вечером — а лев Чандр ему ревью пишет: "Плохо ты, Гена, сделал. Спамерам раздолье будет. Закидает нашего Чебурашку Шапокляк поддельными торрент-файлами с вирусами и страшилками, что тогда?".
И снова три дня и три ночи думал Гена, три железных трубки изгрыз, три железных кепки истёр. И решил Гена применить старый добрый proof-of-work: чтобы сгенерировать контейнер с торрент-файлом и описанием, надо число подобрать, чтобы хэш контейнера, состоящего из классического торрент-файла, описания к нему и этого самого числа "nonce", был меньше определённого значения. Всё как в биткоине, только без блокчейна.
"Вот только кто же будет тратить часы вычислительной мощности своих ЭВМ, чтобы смайнить торрент-контейнер?" — задумался Гена. "А пусть те, кто майнит, в описание добавляют объявление о поиске друзей, если они одиноки!" — пришёл ему на помощь Тобик.
Гена обрадовался, переделал пуллреквест... Многие снова обновились на новую версию торрент-клиента, в которой появился новый пункт меню — "Каталог известных торрентов". Вот только царил в нём беспорядок — ни оценок, ни комментариев. Да и ценные торренты, например, авторские бардовские альбомы для nagarmoshke.info, зачастую пропадали из виду, как только выложивший выходил в оффлайн. "Какие же у меня замечательные друзья! — подумал Гена, — как мы хорошо проучили Шапокляк! А заодно и укрепили позиции опенсорса на этом фронте — пользователи предпочитают те клиенты, которые лучше качают в обход блокировок! И самое главное: ведь пользователям не пришлось ставить и настраивать дополнительные программы, все обошлось обновлением уже привычного клиента, и обратная совместимость сохранена!" P. S. Хабр всезнающий, а не начали ли где-нибудь (в каком-нибудь торрент-клиенте) уже эту сказку реализовывать? Вероятно, в похожем направлении движется qBitTorrent (написан на C++/Boost/Qt, активно развивается).