Ідея децентралізованої соціальної мережі наступного покоління

Ідея децентралізованої соціальної мережі наступного покоління
У цій статті я представляю вам свої роздуми на тему історії та перспектив розвитку інтернету, централізованих та децентралізованих мереж і як результат можливої ​​архітектури децентралізованої мережі наступного покоління.

З інтернетом щось не так

Вперше я познайомився з Інтернетом у 2000 році. Звичайно, це далеко не самий початок — Мережа вже існувала до цього, але цей час можна назвати як перший розквіт Інтернету. Всесвітня павутина - геніальний винахід Тіма Бернерса-Лі, web1.0 у його класичній канонічній формі. Безліч сайтів та сторінок, що посилаються один на одного гіперпосиланнями. На перший погляд проста, як все геніальне, архітектура: децентралізована та вільна. Хочу — подорожую сайтами інших людей, переходячи гіперпосиланнями; хочу - створюю свій сайт, на якому публікую те, що мені цікаво - наприклад свої статті, фотографії, програми, гіперпосилання на цікаві для мене сайти. А інші розміщують посилання на мене.

Здавалося б, ідилічна картина? Але ви вже знаєте, чим усе це закінчилося.

Сторінок стало дуже багато, і пошук інформації став дуже нетривіальною справою. Прописані авторами гіперпосилання просто не могли структурувати цей величезний обсяг інформації. Спочатку з'явилися каталоги, що наповнюються вручну, а потім і гігантські пошукові системи, які почали використовувати хитромудрі евристичні алгоритми ранжирування. Сайти створювалися та закидалися, інформація дублювалася та спотворювалася. Інтернет стрімко комерціалізувався і йшов далі від ідеальної академічної мережі. Мова розмітки швидко перетворилася на мову форматування. З'явилася реклама, мерзенні набридливі банери та технологія розкручування та обману пошукових систем – SEO. Мережа швидко засмічувалась інформаційним сміттям. Гіперпосилання перестали бути інструментом логічного зв'язку і перетворилися на інструмент розкручування. Сайти закуклівались, замикалися на собі, перетворювалися з відкритих «сторінок» на герметичні «додатки», ставали лише засобами отримання доходу.

Ще тоді в мене виникла думка, що «щось тут не так». Купа різних сайтів, починаючи від примітивних домашніх сторінок з вирвиглазним зовнішнім виглядом, і закінчуючи «мегапорталами», перевантаженими банерами. Навіть якщо сайти по одній темі — вони зовсім не пов'язані, у кожного свій дизайн, своя структура, набридливі банери, пошук, проблеми зі скачуванням (так, мені хотілося мати інформацію оффлайн). Вже тоді інтернет починав перетворюватися на якусь подобу телебачення, де до корисного контенту цвяхами прибито всіляку мішуру.
Децентралізація перетворилася на жах.

Чого ж хочеться?

Парадоксально, але вже тоді, не знаючи ні про web 2.0, ні про p2p, мені як користувачу не потрібна була децентралізація! Згадуючи свої незамутнені роздуми тих часів, я приходжу до висновку, що мені була потрібна… єдина база даних! Така, запит до якої видавав би всі результати, а чи не найбільш вдало підійшов для алгоритму ранжування. Така, в якій усі ці результати були б оформлені одноманітно і стилізовані моїм власним єдиним оформленням, а не вирвиокими самопальними дизайнами численних Васей Пупкіних. Така, яку можна було б зберігати офлайн і не боятися, що завтра сайт зникне і інформація пропаде назавжди. Така, до якої я міг би заносити свою інформацію — наприклад, коментарі та теги. Така, в якій я міг би здійснювати пошук, сортування та фільтрацію своїми особистими алгоритмами.

Web 2.0 та соціальні мережі

Тим часом, на арену вийшла концепція Web 2.0. Сформульована в 2005 році Тімом О'Рейлі, як «методика проектування систем, які шляхом обліку мережевих взаємодій стають тим кращими, чим більше людей ними користуються» — і що передбачає активне залучення користувачів до колективного створення та редагування контенту Мережі. Без перебільшення, вершиною та тріумфом цієї концепції стали Соціальні Мережі. Гігантські платформи, що об'єднують мільярди користувачів та зберігають сотні петабайт даних.

Що ж ми отримали у соцмережах?

  • уніфікація інтерфейсу; виявилося, що всі можливості по створенню різноманітного дизайну вирвиглазного користувачам не потрібні; всі сторінки всіх користувачів мають однаковий дизайн і це всіх влаштовує та навіть зручно; відрізняється лише контент.
  • уніфікація функціоналу; все різноманіття скриптів виявилося також непотрібним. «Лента», друзі, альбоми… за час існування соцмереж їх функціонал більш-менш стабілізувався і навряд чи зміниться: адже функціонал визначається видами активності людей, а люди практично не змінюються.
  • єдина БД; працювати з такою БД виявилося набагато зручніше, ніж із безліччю розрізнених сайтів; пошук став набагато простіше. Замість безперервного сканування різноманітних слабко пов'язаних сторінок, кешування всього цього, ранжирування за найскладнішими евристичними алгоритмами – відносно простий уніфікований запит до єдиної бази із відомою структурою.
  • інтерфейс зворотного зв'язку - лайки та репости; у звичайному Інтернеті той же Google ніяк не міг отримати зворотний зв'язок від користувачів після переходу за посиланням у пошуковій видачі. У соцмережах цей зв'язок виявився простим і природним.

Що ми втратили? Ми втратили децентралізацію, а отже, свободу. Вважається, що тепер наші дані нам не належать. Якщо раніше ми могли розмістити домашню сторінку хоч на власному комп'ютері, то тепер ми віддаємо всі наші дані інтернет-гігантам.

Крім того, у міру розвитку Інтернету їм зацікавилися уряди та корпорації, у зв'язку з чим виникли проблеми політичної цензури та копірайтних обмежень. Наші сторінки в соцмережах можуть забанити та видалити, якщо контент не відповідає якимось правилам соцмережі; за необережну посаду — притягнути до адміністративної та навіть кримінальної відповідальності.

І ось ми знову замислюємося: чи не повернути нам децентралізацію? Але чи в іншій формі, позбавленій недоліків першої спроби?

Пірингові мережі

Перші p2p мережі з'явилися ще задовго до web 2.0 і розвивалися паралельно з розвитком Інтернету. Основне класичне застосування p2p - файлообмін; перші мережі розроблялися обмінюватись музикою. Перші мережі (такі як Napster) були централізованими, і тому їх досить швидко прикрили правовласники. Послідовники пішли шляхом децентралізації. У 2000 році з'являються протоколи ED2K (перший клієнт eDokney) та Gnutella, у 2001 - протокол FastTrack (клієнт KaZaA). Поступово ступінь децентралізації збільшувався, технології вдосконалювалися. На зміну системам із «чергою закачування» прийшли торренти, з'явилася концепція розподілених хеш-таблиць DHT. У міру закручування гайок з боку держав стала більш затребуваною анонімність учасників. З 2000 ведеться розробка мережі Freenet, з 2003 - I2P, в 2006 стартував проект RetroShare. Можна згадати численні p2p мережі, які існували раніше і вже зникли — так і зараз: WASTE, MUTE, TurtleF2F, RShare, PerfectDark, ARES, Gnutella2, GNUNet, IPFS, ZeroNet, Tribbler та багато інших. Їх багато. Вони різні. Дуже різні — і за призначенням, і за влаштуванням... Напевно, багатьом з вас навіть не всі ці назви знайомі. І це далеко не все.

Однак у p2p мереж є безліч недоліків. Крім технічних недоліків, властивих кожній конкретній реалізації протоколу і клієнта, можна наприклад відзначити досить загальний недолік - складність пошуку (тобто все те, з чим стикався Web 1.0, але ще складнішому варіанті). Тут немає Гугла з його всюдисущим та миттєвим пошуком. І якщо для файлоолбменних мереж ще можна скористатися пошуком на ім'я файлу або метаінформацією, то знайти щось, припустимо, в оверлейних мережах onion або i2p, дуже непросто, якщо взагалі можливо.

Загалом, якщо проводити аналогії з класичним інтернетом, то більшість децентралізованих мереж застрягли десь на рівні FTP. Уявіть собі інтернет, в якому немає нічого, окрім FTP: ні сучасних сайтів, ні web2.0, ні Youtube… Ось приблизно в такому стані знаходяться децентралізовані мережі. І незважаючи на окремі спроби щось змінити, поки що змін небагато.

Контент

Звернемося ще до одного важливого шматочка цього пазла - контенту. Контент - головна проблема будь-якого інтернет-ресурсу, і особливо децентралізованого. Звідки його брати? Звичайно, можна покластися на купку ентузіастів (як це і відбувається з існуючими мережами p2p), але тоді розвиток мережі буде досить довгим, а контенту там буде мало.

Робота зі звичайним інтернетом – це пошук та вивчення контенту. Іноді — збереження (якщо контент цікавий і корисний, то багато людей, які особливо прийшли до мережі в часи dial-up — у тому числі і я — розсудливо зберігають його офлайн, щоб не загубився; бо інтернет — річ нам непідконтрольна, сьогодні сайт є завтра ні. , сьогодні є відеоролик на ютубі - завтра його видалили, і т.д.

А для торентів (які ми сприймаємо швидше як просто засіб доставки, ніж як p2p мережу) збереження взагалі мається на увазі. І це, до речі, одна з проблем торентів: завантажений один раз файл складно перемістити туди, де їм зручніше користуватися (як правило, потрібно вручну регенерувати роздачу) і зовсім не можна перейменувати (можна зробити хардлінк, але про це зовсім мало хто знає).

Загалом, багато хто тим чи іншим способом зберігає контент. Яка його подальша доля? Зазвичай збережені файли опиняються десь на диску, у папці типу Downloads, у спільній купі, і лежать там разом із багатьма тисячами інших файлів. Це погано – причому погано для самого користувача. Якщо інтернет має пошукові машини, локальний комп'ютер користувача не має нічого подібного. Добре, якщо користувач акуратний і звик сортувати «вхідні» завантажені файли. Але далеко не всі такі...

Насправді зараз чимало і таких, хто нічого не зберігає, а цілком покладається на онлайн. Але в p2p мережах передбачається, що контент зберігається локально на пристрої користувача і лунає іншим учасникам. Чи можна знайти таке рішення, яке дозволить залучити обидві категорії користувачів до децентралізованої мережі, не змінюючи їх звичок, і навіть полегшивши їм життя?

Ідея досить проста: що, якщо зробити засіб зручного та прозорого для користувача збереження контенту зі звичайного інтернету, причому розумного збереження — з семантичною метаінформацією, і не в загальну купу, а в певну структуру з можливістю подальшого структурування, і одночасно роздавати збережений контент у децентралізовану мережа?

Почнемо зі збереження

Ми не розглядатимемо утилітарне використання інтернету для перегляду прогнозів погоди або розкладу літаків. Нас більше цікавлять самодостатні та більш-менш незмінні об'єкти — статті (починаючи від твітів/постів із соцмереж та закінчуючи великими статтями, ось як тут на Хабрі), книги, зображення, програми, аудіо та відео записи. Звідки переважно береться інформація? Зазвичай це

  • соціальні мережі (різні новини, невеликі нотатки — «твіти», картинки, аудіо та відео)
  • статті на тематичних ресурсах (типу Хабра); хороших ресурсів не так багато, зазвичай ці ресурси також побудовані за принципом соціальних мереж
  • новинні сайти

Як правило, там є стандартні функції: лайк, репост, поділитися в соціальних мережах і т.п.

Уявімо собі якийсь плагін до браузера, який спеціальним чином зберігатиме все те, під чим ми поставили лайк, зробили репост, зберегли в «обраному» (або натиснули спеціальну кнопку плагіна, виведену в меню браузера — на випадок, якщо сайт не має функції лайка/репоста/додавання в закладки ). Головна ідея в тому, що ви просто ставите лайк — як ви мільйон разів робили до цього, а система зберігає статтю, картинку або відеоролик у спеціальне офлайн-сховище і ця стаття чи картинка стає доступною — і вам для офлайн-простора через інтерфейс децентралізованого клієнта , Так і в самій децентралізованій мережі! Як на мене, дуже зручно. Жодних зайвих дій, і ми вирішуємо відразу безліч завдань:

  • збереження цінного контенту, який може загубитися або видалити
  • швидке наповнення децентралізованої мережі
  • агрегація контенту з різних джерел (ви можете бути зареєстровані в десятках інтернет-ресурсів, і всі лайки/репости стікатимуться в єдину локальну базу)
  • структурування цікавого вам контенту з вашим правилами

Очевидно, що плагін до браузера має бути налаштований на структуру кожного сайту (це цілком реально – вже зараз існують плагіни для збереження контенту з Youtube, Twitter, VK тощо). Сайтів, заради яких має сенс робити персональні плагіни, не так уже й багато. Як правило, це поширені соцмережі (їх чи більше десятка) і ще кілька високоякісних тематичних сайтів типу Хабра (таких теж небагато). При відкритому коді та специфікації розробка нового плагіна на основі шаблонної заготовки не повинна займати багато часу. Для інших сайтів можна задіяти універсальну кнопку збереження, яка б зберігала всю сторінку повністю в mhtml — можливо, попередньо очистивши сторінку від реклами.

Тепер про структурування

Під розумним збереженням я розумію як мінімум збереження з метаінформацією: джерело контенту (URL), набір раніше виставлених лайків, тегів, коментарів, їх ідентифікатори і т.д. Адже при звичайному збереженні ця інформація губиться ... Під джерелом може розумітися не тільки прямий URL, але і семантична складова: наприклад, група в соцмережі або користувач, який зробив репост. Плагін може бути досить розумним, щоб використовувати цю інформацію для автоматичного структурування та тегування. Також, слід розуміти, що і сам користувач завжди може додати до контенту, що зберігається, якусь метаінформацію, для чого слід передбачити маскимально зручні засоби інтерфейсу (ідей як це зробити у мене досить багато).

Таким чином, вирішується питання структурування та організації локальних файлів користувача. Це вже готова користь, якою можна скористатися навіть без усякого p2p. Просто якась офлайнова база, яка знає, що, звідки і в якому контексті ми зберегли, і дозволяє проводити маленькі дослідження. Наприклад, знайти користувачів зовнішньої соцмережі, які найбільше ставили лайки під тими самими постами що ви. Чи багато соцмереж це дозволяють у явному вигляді?

Тут слід згадати у тому, що одного плагіна до браузеру очевидно недостатньо. Другий найважливіший компонент системи - сервіс децентралізованої мережі, що працює у фоновому режимі та обслуговує як саму p2p мережу (запити з мережі та запити з боку клієнта), так і збереження нового контенту засобами плагіна. Сервіс, працюючи разом з плагіном, розмістить контент у потрібному місці, обчислить хеші (і визначить, що такий контент вже збережено раніше), додасть у локальну базу даних необхідну метаінформацію.

Що цікаво — система була б корисною вже в такому вигляді, без жодних p2p. Багато хто користується веб-кліперами, які додають цікавий контент з веб-наприклад в Evernote. Пропонована архітектура є розширеним варіантом такого кліппера.

І нарешті, p2p обмін

Найприємніше — те, що інформацією та метаінформацією (як захопленою з Інтернету, так і своєю власною) можна обмінюватися. Концепція соціальної мережі чудово переноситься на p2p архітектуру. Можна сказати, що соціальна мережа та p2p немов створені одна для одної. Будь-яка децентралізована мережа в ідеалі має бути побудована як соціальна, тільки тоді це працюватиме ефективно. «Друзі», «Групи» — це ті самі бенкети, з якими мають бути стійкі зв'язки, а такі беруться з природного джерела — спільних інтересів користувачів.

Принципи збереження та роздачі контенту в децентралізованій мережі повністю ідентичні принципам збереження (захоплення) контенту зі звичайного Інтернету. Якщо ви користуєтесь якимось контентом з мережі (а отже зберегли його), то будь-хто може користуватися вашими ресурсами (диском і каналом), необхідними для отримання конкретно цього контенту.

лайки - Найпростіший інструмент збереження та розшарування. Якщо я поставив лайк — неважливо, у зовнішньому інтернеті чи всередині децентралізованої мережі — значить контент мені подобається, а якщо так — то я готовий тримати його у себе локально і роздавати іншим учасникам децентралізованої мережі.

  • Контент не «загубиться»; він тепер збережений у мене локально, я зможу повернутися до нього пізніше, будь-коли, не турбуючись про те, що його хтось видалить або заблокує
  • Я можу (відразу чи пізніше) категоризувати його, тегувати, коментувати, асоціювати з іншим контентом, загалом зробити з ним щось осмислене – назвемо це «формування метаінформації»
  • Я можу поділитись цією метаінформацією з іншими учасниками мережі
  • Я можу синхронізувати свою метаінформацію із метаінформацією інших учасників

Напевно, відмова від дизлайків теж виглядає логічно: якщо контент мені не подобається, то цілком логічно, що я не хочу витрачати своє місце на диску для зберігання і свій інтернет канал для роздачі цього контенту. Тому дизлайки дуже органічно не вписуються в децентралізацію (хоча іноді це таки буває корисно).

Іноді треба зберегти і те, що «не подобається». Є таке слово «треба»:)
«Закладки»(або «Вибране») — я не висловлюю ставлення до контенту, але зберігаю його у своїй локальній базі закладок. Слово "обране" (favorites) не цілком підходить за змістом (для цього є лайки і подальша їх категоризація), а "закладки" (bookmarks) - цілком. Контент у «закладках» також лунає — якщо він вам «потрібний» (тобто ви так чи інакше «користуєтесь» ним), то логічно, що він може виявитися «потрібним» і ще комусь. Чому б не скористатися вашими ресурсами для цього?

Досить очевидна функція «друзі“. Це бенкети, люди зі схожими інтересами, а значить ті, у яких швидше за все з'явиться цікавий контент. У децентралізованій мережі це насамперед означає підписку на стрічку новин від друзів та доступ до їх каталогів (альбомів) із збереженим ними контентом.

Аналогічно функція «групи» — деякі колективні стрічки, або форуми, або щось таке, на що також можна оформити передплату — і, отже, приймати всі матеріали групи та роздавати їх. Можливо, «групи», подібно до великих форумів, мають бути ієрархічними — це дозволить краще структурувати контент груп, а також обмежити потік інформації і не приймати/не роздавати те, що вам не дуже цікаво.

Все інше

Слід зазначити, що децентралізована архітектура завжди складніша за централізовану. У централізованих ресурсах – жорсткий диктат серверного коду. У децентралізованих - необхідність домовлятися між безліччю рівних учасників. Зрозуміло, тут не обійтися без криптографії, блокчейнів та інших досягнень, відпрацьованих головним чином криптовалютах.

Я припускаю, що можуть знадобитися певні криптографічні взаємні рейтинги довіри, які формуються учасниками мережі один для одного. Архітектура повинна дозволяти ефективно боротися з ботнетами, які, існуючи в якійсь хмарі, можуть, наприклад, взаємонакручувати рейтинги самі собі. Дуже хочеться, щоб корпорації та ботнет-ферми, при всій їхній технологічній перевагі, не перехопили управління такою децентралізованою мережею; щоб головним її ресурсом були живі люди, здатні виробляти та структурувати контент, цікавий та корисний для інших живих людей.

Ще хочеться, щоб така мережа рухала цивілізацію до прогресу. Із цього приводу я маю цілу масу ідей, яка втім не вписується в рамки цієї статті. Скажу лише, що належним чином науковий, технічний, медичний тощо. контент повинен мати перевагу перед розважальним, а це вимагатиме певної модерації. Сама по собі модерація децентралізованої мережі — завдання нетривіальне, але вирішуване (щоправда, слово «модерація» тут зовсім некоректне і не відображає суті процесу — ні зовні, ні внутрішньо… і я навіть не придумав, як можна було б назвати цей процес).

Напевно, зайвим буде згадувати необхідність забезпечення анонімності — як вбудованими засобами (як у i2p або Retroshare), так і пропусканням всього трафіку через TOR або VPN.

Ну і нарешті програмна архітектура (схематично намальована на зображенні до статті). Як було зазначено, перший компонент системи — плагін для браузера, захоплюючий контент з метаинформацией. Другий найважливіший компонент - p2p сервіс, що працює у фоновому режимі (backend). Робота мережі очевидно не повинна залежати від того, чи запущено браузер. Третім компонентом є клієнтське програмне забезпечення — frontend. Це може бути локальний веб-сервіс (у цьому випадку користувач зможе працювати з децентралізованою мережею не виходячи з улюбленого браузера), і окремий GUI-додаток під конкретну ОС (Windows, Linux, MacOS, Andriod, iOS і т.д.). Мені подобається ідея одночасного існування всіх варіантів frontend'у. Заодно це зобов'яже до суворішої архітектури backend'а.

Є ще безліч аспектів, які до цієї статті не увійшли. Підключення до роздачі існуючих файлосховищ (тобто коли у вас вже є пара терабайт накачаного, і ви даєте клієнту просканувати це, отримати хеші, зіставити їх з тим, що є всередині Мережі і приєднатися до роздачі, а заразом отримати з Мережі метаінформацію про своїх власних файлах — нормальні назви, описи, рейтинги, відгуки тощо), підключення зовнішніх джерел метаінформації (наприклад, бази Libgen), опціональне використання дискового простору для зберігання чужого зашифрованого контенту (як у Freenet), архітектура інтеграції з існуючими децентралізованими мережами (тут взагалі темний ліс), ідея медіахешування (використання спеціальних перцептивних хешей для медіаконтенту — картинок, аудіо та відео, що дозволить зіставляти однакові за змістом медіафайли, що відрізняються розмірами, роздільною здатністю тощо) та багато іншого.

Коротке резюме статті

1. У децентралізованих мережах немає Гугла з його пошуком і ранжуванням, але є Спільнота реальних людей. Соціальна мережа з її механізмами зворотного зв'язку (лайками, репостами…) та соціальним графом (друзями, спільнотами…) — ідеальна модель прикладного рівня для децентралізованої мережі
2. Основна ідея, яку я привношу цією статтею – автоматичне збереження цікавого контенту зі звичайного інтернету при встановленні лайка/репоста; це може бути корисним і без p2p, просто ведення особистого архіву цікавої інформації
3. Цей контент заразом може автоматично наповнювати децентралізовану мережу
4. Принцип автоматичного збереження цікавого контенту працює і при лайках/репостах у децентралізованій мережі

Джерело: habr.com

Додати коментар або відгук