L'idea di una rete sociale decentralizzata di nuova generazione

L'idea di una rete sociale decentralizzata di nuova generazione
In questo articolo vi presento le mie riflessioni sulla storia e sulle prospettive dello sviluppo di Internet, delle reti centralizzate e decentralizzate e, come risultato, dell'architettura possibile di una rete decentralizzata di nuova generazione.

C'è qualcosa che non va con Internet

Ho incontrato Internet per la prima volta nel 2000. Certo, non è l'inizio assoluto — la rete esisteva già prima, ma quel periodo può essere definito come il primo fiorire di Internet. Il World Wide Web — un'invenzione geniale di Tim Berners-Lee, web1.0 nella sua forma classica e canonica. Molti siti e pagine, collegate tra loro da ipertesti. A prima vista — un'architettura semplice, come tutte le cose geniali: decentrata e libera. Posso viaggiare tra i siti di altre persone, seguendo i collegamenti ipertestuali; posso creare il mio sito, dove pubblico ciò che mi interessa — ad esempio i miei articoli, fotografie, programmi, collegamenti a siti che trovo interessanti. E altri mettono link a me.

Sembrerebbe — un quadro idilliaco? Ma sapete già come è finita.

Ci sono diventate troppe pagine e trovare informazioni è diventato un compito piuttosto non triviale. I collegamenti ipertestuali scritti dagli autori non riuscivano a strutturare questo enorme volume di informazioni. Prima sono apparsi cataloghi compilati manualmente, e poi enormi motori di ricerca che hanno cominciato a utilizzare ingegnosi algoritmi euristici di ranking. I siti venivano creati e abbandonati, le informazioni venivano duplicate e distorte. Internet si commercializzava rapidamente e si allontanava sempre di più dalla rete accademica ideale. Il linguaggio di marcatura si trasformava rapidamente in un linguaggio di formattazione. È comparsa la pubblicità, orribili banner fastidiosi e la tecnologia di promozione e inganno dei motori di ricerca — SEO. La rete si riempiva rapidamente di spazzatura informativa. I collegamenti ipertestuali hanno smesso di essere uno strumento di collegamento logico e si sono trasformati in uno strumento di promozione. I siti si chiudevano, si chiudevano su se stessi, si trasformavano da "pagine" aperte in "applicazioni" ermetiche, diventando solo mezzi di guadagno.

Già allora mi venne in mente un certo pensiero, che «qualcosa qui non va». Una miriade di siti diversi, che vanno da semplici pagine personali con un aspetto stridente, fino a «megaportali» sovraccarichi di banner lampeggianti. Anche se i siti trattano lo stesso argomento — non hanno alcun legame, ognuno ha il proprio design, la propria struttura, banner fastidiosi, ricerca poco funzionale, problemi con il download (sì, volevo avere informazioni offline). Già allora, Internet iniziava a somigliare a una sorta di televisione, dove a contenuti utili erano inchiodati muniti di chincaglieria.
La decentralizzazione si è trasformata in un incubo.

Cosa si desidera?

Paradossalmente, già allora, senza sapere nulla di web 2.0, né di p2p, come utente non avevo bisogno di decentralizzazione! Ricordando i miei pensieri non contaminati di quei tempi, giungo alla conclusione che avevo bisogno di... un’unica base di dati! Una tal che una richiesta restituisse tutti i risultati, non solo quelli più adatti per l’algoritmo di indicizzazione. Una base dove tutti questi risultati fossero presentati in modo uniforme e stilizzati secondo il mio personale design, non con i fastidiosi design improvvisati di innumerevoli Vasya Pupkin. Una tal che potesse essere salvata offline e senza temere che domani il sito scomparisse e le informazioni si perdessero per sempre. Una base in cui potessi inserire le mie informazioni — ad esempio commenti e tag. Una base in cui potessi effettuare ricerche, ordinamenti e filtri con i miei algoritmi personali.

Web 2.0 e social network

Nel frattempo, è emersa la concezione del Web 2.0. Formulata nel 2005 da Tim O'Reilly, come «una metodologia di progettazione di sistemi che diventano migliori con il crescere delle interazioni in rete» — intesa a coinvolgere attivamente gli utenti nella creazione e modifica collettiva dei contenuti della Rete. Senza esagerare, il culmine e il trionfo di questa concezione sono stati i Social Network. Gigantesche piattaforme che riuniscono miliardi di utenti e conservano centinaia di petabyte di dati.

Cosa abbiamo ottenuto nei social network?

  • unificazione dell'interfaccia; si è scoperto che tutte le possibilità di creare design appariscenti non interessano agli utenti; tutte le pagine degli utenti hanno lo stesso design e questo va bene a tutti ed è anche comodo; l'unica differenza è il contenuto.
  • unificazione delle funzionalità; la varietà degli script si è rivelata altrettanto superflua. «Feed», amici, album… nel corso della vita dei social network, le loro funzionalità si sono stabilizzate più o meno e difficilmente cambieranno: infatti, le funzionalità sono determinate dai tipi di attività delle persone, e le persone cambiano praticamente poco.
  • unico DB; lavorare con un tale DB si è rivelato molto più comodo rispetto a molti siti disaggregati; la ricerca è diventata molto più semplice. Invece di una scansione continua di varie pagine debolmente collegate, caching di tutto questo, ranking secondo algoritmi euristici complessi — una richiesta unificata relativamente semplice a un'unica base con una struttura nota.
  • interfaccia di feedback — mi piace e repost; nel web tradizionale, Google non riusciva a ottenere feedback dagli utenti dopo che cliccavano su un link nei risultati di ricerca. Nei social network, questa connessione si è rivelata semplice e naturale.

Cosa abbiamo perso? Abbiamo perso la decentralizzazione e quindi — la libertà. Si ritiene che ora i nostri dati non ci appartengano. Prima potevamo ospitare una pagina personale anche sul nostro computer, ora diamo tutti i nostri dati ai giganti di internet.

Inoltre, con lo sviluppo di Internet, è cresciuto l'interesse da parte dei governi e delle corporazioni, il che ha portato a problemi di censura politica e restrizioni sul copyright. Le nostre pagine sui social possono essere bloccate e rimosse se il contenuto non rispetta alcune regole dei social network; un post avventato può portare a responsabilità amministrativa e anche penale.

E adesso ci chiediamo di nuovo: non sarebbe meglio riportare la decentralizzazione? Ma in una forma diversa, priva dei difetti del primo tentativo?

Reti peer-to-peer

Le prime reti p2p sono apparse molto prima del web 2.0 e si sono sviluppate parallelamente all'evoluzione del web. L'uso classico principale del p2p è il file sharing; le prime reti sono state progettate per lo scambio di musica. Le prime reti (come Napster) erano sostanzialmente centralizzate e per questo motivo sono state rapidamente chiuse dai detentori dei diritti. I successori hanno intrapreso la strada della decentralizzazione. Nel 2000 sono comparsi i protocolli ED2K (il primo client eDokney) e Gnutella, nel 2001 il protocollo FastTrack (client KaZaA). Gradualmente il grado di decentralizzazione è aumentato e le tecnologie sono migliorate. I sistemi con

Tuttavia, le reti p2p presentano numerosi svantaggi. Oltre ai difetti tecnici comunicabili a ogni singola implementazione del protocollo e del client, si può ad esempio notare un difetto abbastanza comune: la difficoltà di ricerca (cioè tutto ciò con cui ci si scontrava nel Web 1.0, ma in una variante ancora più complessa). Qui non c'è Google con la sua ricerca onnipresente e istantanea. E se per le reti di file sharing si può ancora utilizzare la ricerca per nome file o per metainformazioni, trovare qualcosa, ad esempio, nelle reti in overlay come onion o i2p, è piuttosto complicato, se non impossibile.

In generale, se si traggono analogie con l'internet classico, la maggior parte delle reti decentralizzate è bloccata a un livello simile a FTP. Immaginate un internet, dove non c'è nulla oltre FTP: né siti moderni, né web 2.0, né Youtube… Ecco in che stato si trovano le reti decentralizzate. E nonostante alcune tentativi di apportare modifiche, finora i cambiamenti sono pochi.

Contenuto

Rivolgiamoci a un altro importante pezzo di questo puzzle: il contenuto. Il contenuto è il problema principale di qualsiasi risorsa internet, e in particolare di quelle decentralizzate. Da dove ottenerlo? Certo, si può contare su un gruppo di appassionati (come accade con le reti p2p esistenti), ma così lo sviluppo della rete sarà piuttosto lungo e il contenuto sarà scarso.

Lavorare con internet normale significa cercare e studiare contenuti. A volte significa anche salvare (se il contenuto è interessante e utile, molte persone, soprattutto quelle arrivate in Rete durante l'era del dial-up - me compreso - saggiamente lo salvano offline, per non perderlo; perché internet è una cosa fuori dal nostro controllo, oggi un sito c'è, domani non c'è, oggi c'è un video su YouTube - domani lo hanno rimosso, e così via.

E per i torrent (che percepiamo più come semplici strumenti di consegna che come reti p2p) il salvataggio è praticamente previsto. E questo, a proposito, è uno dei problemi dei torrent: un file scaricato una volta è difficile da spostare dove può essere utilizzato più comodamente (di solito, è necessario rigenerare la condivisione manualmente) e non si può assolutamente rinominare (si può fare un hardlink, ma pochissimi lo sanno).

In generale, molte persone in un modo o nell'altro salvano contenuti. Qual è il loro destino successivo? Di solito, i file salvati si trovano da qualche parte su un disco, in una cartella tipo Downloads, in un grande accumulo, e rimangono lì insieme a molte migliaia di altri file. Questo è problematico - e lo è soprattutto per l'utente stesso. Se internet ha motori di ricerca, il computer locale dell'utente non ne ha nulla di simile. È bene se l'utente è ordinato e abituato a ordinare i file scaricati

In realtà, al giorno d'oggi ci sono anche molti che non salvano nulla, ma si affidano completamente all'online. Ma nelle reti p2p si presume che il contenuto sia archiviato localmente sul dispositivo dell'utente e condiviso con altri partecipanti. È possibile trovare una soluzione che coinvolga entrambe le categorie di utenti in una rete decentralizzata, senza cambiare le loro abitudini, e anzi, facilitando la loro vita?

L'idea è piuttosto semplice: e se realizzassimo uno strumento per il salvataggio di contenuti dal web che sia comodo e trasparente per l'utente, e nel contempo intelligente — con metainformazione semantica, non in un'unica massa, ma in una struttura definita con la possibilità di ulteriori strutturazioni, e allo stesso tempo distribuendo i contenuti salvati in una rete decentralizzata?

Iniziamo con il salvataggio

Non considereremo l'uso utilitario di Internet per consultare le previsioni del tempo o gli orari dei voli. Siamo più interessati a oggetti autosufficienti e relativamente immutabili — articoli (dai tweet/post sui social media fino a grandi articoli, come quelli qui su Habr), libri, immagini, programmi, audio e video. Da dove proviene principalmente l'informazione? Di solito è

  • i social network (varie notizie, brevi note — "tweet", immagini, audio e video)
  • articoli su risorse tematiche (tipo Habr); ci sono poche buone risorse, di solito queste risorse sono anche costruite secondo il principio dei social network
  • siti di notizie

Di norma, ci sono funzionalità standard: "mi piace", "condividi", "condividi sui social" e così via.

Immaginiamo un plugin per il browser, che salverà in modo speciale tutto ciò su cui abbiamo messo "mi piace", fatto un "condividi", salvato nei "preferiti" (o premuto il pulsante speciale del plugin, visualizzato nel menu del browser — nel caso in cui il sito non abbia la funzione di "mi piace"/"condividi"/"aggiungi ai segnalibri"). L'idea principale è che tu metti semplicemente un "mi piace" — come hai fatto milioni di volte prima, e il sistema salva l'articolo, l'immagine o il video in un archivio offline speciale e questo articolo o immagine diventa accessibile — sia per la visualizzazione offline tramite l'interfaccia di un client decentralizzato, sia nella rete decentralizzata stessa! A mio avviso, è molto comodo. Nessuna azione superflua e risolviamo immediatamente molte problematiche:

  • salvaguardare contenuti preziosi che potrebbero essere persi o rimossi
  • un rapido riempimento della rete decentralizzata
  • aggregazione di contenuti da diverse fonti (puoi essere registrato in decine di risorse online e tutti i tuoi "mi piace"/"condivisioni" confluiranno in un'unica base locale)
  • strutturazione dei contenuti di tuo interesse secondo le tue regole

È evidente che il plugin per il browser deve essere configurato in base alla struttura di ciascun sito (è del tutto fattibile: già esistono plugin per salvare contenuti da Youtube, Twitter, VK, ecc.). I siti per i quali ha senso creare plugin personalizzati non sono così tanti. Di norma, si tratta di social network ampiamente utilizzati (non più di una dozzina) e di un numero limitato di siti tematici di alta qualità come Habr (anch'essi non molti). Con codice aperto e una specifica, lo sviluppo di un nuovo plugin basato su un modello non dovrebbe richiedere molto tempo. Per gli altri siti si potrebbe utilizzare un pulsante universale di salvataggio, che salverebbe l'intera pagina in mhtml — eventualmente pulendo preliminarmente la pagina dalla pubblicità.

Ora sullo strutturare

Con 'salvataggio intelligente' intendo almeno il salvataggio con metainformazioni: la fonte del contenuto (URL), il set di mi piace, tag, commenti precedentemente postati, i loro identificatori, ecc. Infatti, con un salvataggio normale, queste informazioni si perdono... Per fonte si intende non solo l'URL diretto, ma anche il suo significato semantico: per esempio, un gruppo sui social network o un utente che ha fatto un repost. Il plugin potrebbe essere abbastanza intelligente da utilizzare queste informazioni per la strutturazione e il tagging automatici. Inoltre, è importante capire che l'utente stesso potrebbe sempre aggiungere a contenuti salvati delle metainformazioni, ragione per cui è necessario prevedere strumenti di interfaccia estremamente comodi (ho molte idee su come farlo).

In questo modo, si risolve la questione della strutturazione e organizzazione dei file locali dell'utente. Questa è già un'utilità pronta per essere utilizzata anche senza alcun p2p. Si tratta semplicemente di una base offline che sa cosa, da dove e in quale contesto abbiamo salvato e consente di condurre piccole ricerche. Ad esempio, trovare utenti di un social network esterno che hanno messo più mi piace agli stessi post che hai messo tu. Molti social network consentono questo in modo esplicito?

Qui è importante menzionare che un solo plugin per il browser non è ovviamente sufficiente. Il secondo componente fondamentale del sistema è un servizio di rete decentralizzata che lavora in background, gestendo sia la rete p2p (richieste dalla rete e richieste da parte del client), sia il salvataggio di nuovi contenuti tramite il plugin. Il servizio, collaborando con il plugin, posizionerà il contenuto nel posto giusto, calcolerà gli hash (e potrebbe anche determinare se quel contenuto è già stato salvato in precedenza) e aggiungerà le informazioni meta necessarie al database locale.

È interessante notare che il sistema sarebbe già utile in questa forma, senza alcun p2p. Molti utilizzano web clipper che aggiungono contenuti interessanti dal web, ad esempio in Evernote. L'architettura proposta è una versione avanzata di tale clipper.

E infine, lo scambio p2p

La cosa più piacevole è che le informazioni e le meta-informazioni (sia catturate dal web che proprie) possono essere scambiate. Il concetto di social network si adatta perfettamente all'architettura p2p. Si può dire che il social network e il p2p siano stati creati l'uno per l'altro. Qualsiasi rete decentralizzata dovrebbe idealmente essere costruita come una rete sociale; solo allora funzionerà in modo efficace. "Amici", "Gruppi" — sono quei nodi in cui devono esistere legami stabili, e tali legami derivano da una fonte naturale: gli interessi comuni degli utenti.

I principi di conservazione e distribuzione dei contenuti in una rete decentralizzata sono completamente identici ai principi di salvataggio (cattura) dei contenuti dal normale internet. Se si utilizza un certo contenuto dalla rete (significa che è stato salvato), chiunque può utilizzare le proprie risorse (disco e banda) necessarie per ottenere specificamente quel contenuto.

Mi piace è lo strumento più semplice per salvare e condividere. Se metto un mi piace — non importa se nel web esterno o all'interno della rete decentralizzata — significa che mi piace il contenuto, e dato che è così — sono pronto a tenerlo localmente e condividerlo con altri membri della rete decentralizzata.

  • Il contenuto non "perderà"; ora è salvato localmente, potrò tornarci in un secondo momento, in qualsiasi momento, senza preoccuparmi che qualcuno lo elimini o lo blocchi.
  • Posso (subito o dopo) categorizzarlo, etichettarlo, commentarlo, associarlo ad altri contenuti, insomma fare qualcosa di significativo con esso — chiamiamolo "formazione di metainformazioni"
  • Posso condividere queste metainformazioni con altri membri della rete
  • Posso sincronizzare le mie metainformazioni con le metainformazioni di altri partecipanti

Probabilmente, rinunciare ai dislike appare logico: se un contenuto non mi piace, è del tutto ragionevole che non voglia occupare spazio sul mio disco per conservarlo e usare la mia connessione internet per condividerlo. Pertanto, i dislike non si inseriscono molto bene nella decentralizzazione (anche se a volte lo sono) può essere utile).

A volte è necessario conservare anche ciò che "non piace". Esiste una parola "bisogna":)
«Segnalibri" (o "Preferiti") — non esprimo un giudizio sul contenuto, ma lo conservo nella mia base locale di segnalibri. La parola "preferiti" (favorites) non si adatta perfettamente per significato (per questo ci sono i like e la loro successiva categorizzazione), mentre "segnalibri" (bookmarks) va bene. I contenuti nei "segnalibri" vengono anche condivisi — se ti serve (cioè lo "utilizzi" in un modo o nell'altro), è logico che possa essere "utile" anche a qualcun altro. Perché non sfruttare le tue risorse per questo?

È abbastanza ovvio il ruolo di "amici". Queste sono feste, persone con interessi simili, e quindi è probabile che abbiano contenuti interessanti. In una rete decentralizzata questo significa principalmente iscriversi al feed di notizie degli amici e accedere ai loro cataloghi (album) con i contenuti che hanno salvato.

Analogamente, la funzione "gruppi" — alcune flotte collettive, o forum, o qualcosa del genere, a cui ci si può iscrivere — e quindi ricevere tutto il materiale del gruppo e condividerlo. Forse, i "gruppi", come i grandi forum, dovrebbero essere gerarchici — ciò consentirebbe di strutturare meglio i contenuti dei gruppi e limitare il flusso di informazioni, evitando di ricevere/non condividere ciò che non ti interessa molto.

Tutto il resto

È importante notare che un'architettura decentralizzata è sempre più complessa rispetto a una centralizzata. Nei sistemi centralizzati, c'è una rigida imposizione del codice del server. In quelli decentralizzati, c'è la necessità di negoziare tra numerosi partecipanti uguali. Ovviamente, non si può fare a meno della crittografia, delle blockchain e di altri risultati, sviluppati principalmente per le criptovalute.

Suppongo che potrebbero essere necessari alcuni rating criptografici reciproci di fiducia, creati dai partecipanti della rete l'uno per l'altro. L'architettura dovrebbe consentire di combattere efficacemente i botnet, che, esistendo in una sorta di cloud, possono ad esempio gonfiare reciprocamente i propri rating. È fondamentale che le corporation e le fattorie di botnet, nonostante il loro predominio tecnologico, non prendano il controllo di una rete decentralizzata; che la principale risorsa siano persone vive, capaci di produrre e strutturare contenuti interessanti e utili per altre persone vive.

Inoltre, mi piacerebbe che una rete del genere indirizzasse la civiltà verso il progresso. A questo proposito ho un’intera serie di idee, che però non si adattano ai confini di questo articolo. Dirò solo che, in un certo senso, i contenuti scientifici, tecnici, medici, ecc. dovrebbero avere un vantaggio rispetto a quelli di intrattenimento, e questo richiederà una certa moderazione. La moderazione stessa di una rete decentralizzata è un compito non triviale, ma fattibile (anche se la parola «moderazione» qui è del tutto inappropriata e non riflette affatto la sostanza del processo, né esternamente né internamente... e non ho nemmeno trovato un modo per chiamare questo processo).

Probabilmente, sarebbe superfluo menzionare la necessità di garantire l'anonimato — sia attraverso mezzi integrati (come in i2p o Retroshare), sia instradando tutto il traffico attraverso TOR o VPN.

E infine l'architettura software (schematicamente disegnata nell'immagine dell'articolo). Come già detto, il primo componente del sistema è un plugin per il browser che cattura contenuti con metainformazioni. Il secondo componente fondamentale è un servizio p2p che opera in background («backend»). È evidente che il funzionamento della rete non dovrebbe dipendere dal fatto che il browser sia attivo. Il terzo componente è il software client — frontend. Questo può essere un servizio web locale (in questo caso l'utente sarà in grado di utilizzare la rete decentralizzata senza uscire dal proprio browser preferito) o una specifica applicazione GUI per un sistema operativo (Windows, Linux, MacOS, Android, iOS, ecc.). Mi piace l'idea di una contemporanea esistenza di tutte le varianti del frontend. Inoltre, ciò richiederà un'architettura più rigorosa del backend.

Ci sono ancora molti aspetti che non sono stati inclusi in questo articolo. La connessione a repository di file esistenti (cioè quando hai già un paio di terabyte scaricati, e dai la possibilità al client di scansionarli, ottenere hash, confrontarli con ciò che esiste nella rete e unirsi alla condivisione, e allo stesso tempo ricevere dalla rete metainformazioni sui propri file — nomi, descrizioni, valutazioni, recensioni, ecc.), la connessione a fonti esterne di metainformazione (come ad esempio le banche dati di Libgen), l'uso opzionale di spazio di archiviazione per contenuti crittografati di terzi (come in Freenet), l'architettura di integrazione con reti decentralizzate esistenti (qui siamo davvero in un campo oscuro), l'idea del media hashing (utilizzo di hash percettivi speciali per contenuti multimediali — immagini, audio e video, che permetterà di confrontare file multimediali simili per significato, ma differenti per dimensioni, risoluzione, ecc.) e molto altro.

Riepilogo dell'articolo

1. Nelle reti decentralizzate non c'è Google con la sua ricerca e il ranking — ma c'è una comunità di persone reali. Un social network con i suoi meccanismi di feedback (mi piace, condivisioni…) e il grafo sociale (amici, comunità…) rappresenta un modello ideale di livello applicativo per una rete decentralizzata.
2. L'idea principale che introduco con questo articolo è il salvataggio automatico di contenuti interessanti da internet comune quando si fa clic su mi piace/riporto; questo può essere utile anche senza p2p, semplicemente per gestire un archivio personale di informazioni interessanti.
3. Questo contenuto può anche riempire automaticamente una rete decentralizzata.
4. Il principio di salvataggio automatico dei contenuti interessanti funziona anche con i mi piace/riporti nella rete decentralizzata stessa.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster