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?
like 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 likes this.
Andrea
in reply to Poliverso - notizie dal fediverso • •Poliverso :friendica: likes this.
Poliverso :friendica: reshared this.
Max
in reply to Andrea • •Poliverso :friendica: likes this.
Poliverso :friendica: reshared this.
Andrea
in reply to Max • •Poliverso :friendica: likes this.
Poliverso :friendica: reshared this.
Thushi
in reply to Andrea • •Activitypub anche a me non piace granché, sto provando a dargli una chance da qualche anno ma ancora non mi convince (perlomeno per quanto riguarda il suo utilizzo come base di un social network).
Secondo me se si vuole andare oltre si dovrebbe puntare al p2p.
Io penso che ormai al giorno d'oggi la "scusante" del "eh ma devi essere sempre online per ricevere" non regge più come una volta, dato che ormai Fdroid ci ha abituato da anni a tenere sempre le app attive in background per ricevere le notifiche in autonomia. Lo facciamo già pure con app di messaggistica centralizzate, non capisco perché tutti sono così restii nel farlo con app decentralizzate o addirittura distruibuite come quelle p2p.
Per quanto riguarda il consumo della batteria io non so se sono fortunato o cosa, ma a me non tirano giù granché le app in background onestamente, ci faccio due giorni con una carica (anche quando provai Briar per qualche settimana, non notai chissà quale calo in tutta onestà).
Probabilmente questo dipende anche dal tipo di utilizzo che se ne fa del proprio dispositivo: io il telefono lo uso praticamente quasi solo per scrivere messaggi a conoscenti AFK, e fare telefonate audio/video agli stessi, ma temo di essere un caso particolare, chi ne fa un uso "normale" (più che normale a me viene da dire compulsivo, sinceramente) è molto più incline a vivere col powerbank in tasca, a prescindere dalle app in background o meno.
Btw, c'è da dire però che un social p2p sfavorirebbe gli utenti desktop, ma tanto ormai sono tutti attaccati al telefono, quindi non credo che sarebbe poi così grave la faccenda (lo dico pure contro il mio interesse). In caso magari puoi pensare di integrare una sincronizzazione dell'account su più dispositivi, potrebbe essere un buon trade-off, forse.
Detto ciò, comunque, questa è solo la mia opinione su cosa piacerebbe virare a me, da semplice utente fruitore. E di social o cose simili ne esistono già, per quel che so, anche se non li ho approfonditi granché ancora.
In ogni caso prima di pensare a qualcosa di nuovo, fossi in te proverei a cercare se esiste già un protocollo idoneo sul quale poter costruire il tuo social, (non mi riferisco esclusivamente a un protocollo distribuito, anche uno decentralizzato se è questo che vuoi), onde evitare situazioni alla xkcd 927. Che poi comunque se ne adotti uno già pluritestato e funzionale, è meglio IMO, (se ti consente di implementarci sopra quello che devi, ovviamente).
Poliverso :friendica: likes this.
Poliverso :friendica: reshared this.
Andrea
in reply to Thushi • •Poliverso :friendica: likes this.
Poliverso :friendica: reshared this.
Andrea
Unknown parent • •Innanzitutto, io sto differenziando app e protocollo.
Il protocollo si basa su un sistema di server distribuiti, statici, appartenenti a ciascun singolo utente, e su client che comunicano direttamente con questi server (senza un intermediario in mezzo come un server mail).
Ma qui, alla fine, son tecnicismi..
La "app ufficiale", ossia l'implementazione client di riferimento, io la immagino fatta un po' più come Mastodon. Rapida, dinamica, non necessariamente fatta a forum.. purtroppo ad oggi roba come Google Gruppi la maggior parte della gente non vuole manco capire come si usi xD
Dummy-X 🇮🇹 likes this.
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..