Un protocollo social più decentralizzato di ActivityPub
ActivityPub è un buon protocollo, ma secondo me non perfetto. Resta troppo incentrato sull'avere un server dedicato principale grosso. Ciò si vede nelle sue implementazioni server, con software come Mastodon, Pleroma, e chi più ne ha più ne metta: software relativamente pesanti e difficili da ospitare, cosa che va a peggiorare l'accentramento perché meno gente avrà possibilità di ospitarli e quindi andrà su istanze già presenti.
Non so se esiste già, nel caso fatemelo conoscere, altrimenti probabilmente potrei idearlo io, un protocollo più semplice e molto più decentralizzato, basato su server più stupidi e client più intelligenti.
Rimuovere completamente i server causerebbe una peggiore esperienza utente: ogni client dovrebbe rimanere acceso nel momento in cui gli amici si collegano per scaricare nuovi messaggi, inoltre alcuni provider bloccano le connessioni in entrata. Sarebbe ideale, ma è irrealistico.
Per questo, si sceglie di tenere il minimo indispensabile come server: uno HTTP che serve file statici. Un tale server può essere ospitato ovunque, persino sul router di casa, ma in ogni caso i provider che ne danno di gratuiti online sono tantissimi.
Qui viene il bello: ogni utente ha un server e un dominio o indirizzo IP statico, si identifica con un URL (che può essere la root, oppure una cartella, nel caso si voglia avere altra roba Web sullo stesso dominio).
Il client del social (la app) chiede come login i dati di accesso FTP, SSH, Git, o chissà quali altri sistemi di caricamento di file via Internet, e tutti i contenuti di ogni utente (i messaggi, i file, i like messi, ...) vengono caricati sul server HTTP.
Quando un client vuole aggiornare il feed degli utenti seguiti, scarica un file d'indice (come un feed RSS) da ciascun server, e scarica eventuali nuovi elementi lì segnati.
L'unico potenziale problema qui può sorgere in caso si seguano centinaia e centinaia di utenti, perché la app dovrà scaricare ciascun file ad ogni aggiornamento. Ovviamente, usando un formato di dati efficiente e compresso il problema si riduce, così come si riduce spezzettando l'indice in segmenti, oppure si potrebbero integrare nel protocollo delle liste di aggregazione opzionali (che richiederebbero un server fatto apposta), a cui ciascun utente può passare il proprio elenco di utenti seguiti, e la sua app chiederà le differenze di tutti al server di aggregazione anziché alle centinaia di serve degli utenti.
Per i messaggi privati, si può semplicemente implementare un sistema di cifratura, così che le app possano semplicemente caricare i contenuti privati assieme a quelli pubblici sul server HTTP, e anche se terzi potrebbero scaricarli andando a frugare tra i file dei server altrui, non potranno leggerli.
Che ne pensate?
Non so se esiste già, nel caso fatemelo conoscere, altrimenti probabilmente potrei idearlo io, un protocollo più semplice e molto più decentralizzato, basato su server più stupidi e client più intelligenti.
Rimuovere completamente i server causerebbe una peggiore esperienza utente: ogni client dovrebbe rimanere acceso nel momento in cui gli amici si collegano per scaricare nuovi messaggi, inoltre alcuni provider bloccano le connessioni in entrata. Sarebbe ideale, ma è irrealistico.
Per questo, si sceglie di tenere il minimo indispensabile come server: uno HTTP che serve file statici. Un tale server può essere ospitato ovunque, persino sul router di casa, ma in ogni caso i provider che ne danno di gratuiti online sono tantissimi.
Qui viene il bello: ogni utente ha un server e un dominio o indirizzo IP statico, si identifica con un URL (che può essere la root, oppure una cartella, nel caso si voglia avere altra roba Web sullo stesso dominio).
Il client del social (la app) chiede come login i dati di accesso FTP, SSH, Git, o chissà quali altri sistemi di caricamento di file via Internet, e tutti i contenuti di ogni utente (i messaggi, i file, i like messi, ...) vengono caricati sul server HTTP.
Quando un client vuole aggiornare il feed degli utenti seguiti, scarica un file d'indice (come un feed RSS) da ciascun server, e scarica eventuali nuovi elementi lì segnati.
L'unico potenziale problema qui può sorgere in caso si seguano centinaia e centinaia di utenti, perché la app dovrà scaricare ciascun file ad ogni aggiornamento. Ovviamente, usando un formato di dati efficiente e compresso il problema si riduce, così come si riduce spezzettando l'indice in segmenti, oppure si potrebbero integrare nel protocollo delle liste di aggregazione opzionali (che richiederebbero un server fatto apposta), a cui ciascun utente può passare il proprio elenco di utenti seguiti, e la sua app chiederà le differenze di tutti al server di aggregazione anziché alle centinaia di serve degli utenti.
Per i messaggi privati, si può semplicemente implementare un sistema di cifratura, così che le app possano semplicemente caricare i contenuti privati assieme a quelli pubblici sul server HTTP, e anche se terzi potrebbero scaricarli andando a frugare tra i file dei server altrui, non potranno leggerli.
Che ne pensate?
Poliverso - notizie dal Fediverso ⁂ likes this.
reshared this
Poliverso - notizie dal Fediverso ⁂
in reply to Andrea • • •Il ché, alla fine, non mi sembra neanche una cattiva idea e, comunque, è sempre meglio di hubzilla 😁
Andrea
in reply to Poliverso - notizie dal Fediverso ⁂ • • •Andrea
Unknown parent • • •Andrea
Unknown parent • • •Luca Nucifora
in reply to Andrea • •Andrea
in reply to Luca Nucifora • • •Comunque, ho anche continuato a cercare, ma nessun protocollo già esistente funziona in modo abbastanza vicino a cosa vorrei io.
Io magari inizio a scrivere qualcosa (documenti, non codice) a riguardo, almeno per descrivere l'idea a linee meno grosse di cosa il mio post di Friendica dice. Magari trovo gente a cui l'idea interessa particolarmente..