domenica 7 febbraio 2016

OSIRIS alcuni principi di funzionamento

fonte http://anon-news.blogspot.it/2012/06/perche-osiris.html

Principi di funzionamento


Il sistema di reputazioni

Immagina di porre una domanda a una platea di 100 persone; di queste, 50 rispondono alla vostra domanda. In un sistema non moderato, dovresti visionare tutte e 50 le risposte, comprese quelle che nulla c'entrano con la domanda posta o con l'argomento in discussione (OT), quelle di pubblicità (Spam, comunque probabilmente OT), quelle scurrili come linguaggio, o quelle semplicemente inutili (Troll). 

In un sistema moderato/amministrato, il moderatore si occupa di analizzare le risposte per te, eliminando generalmente quelle OT e quelle di Spam. Il problema di un sistema moderato è che c'è qualcun'altro che decide per te come 'filtrare' le risposte, e potrebbe non filtrarle come vorresti, oppure filtrare risposte che invece per te erano accettabili. Inoltre, spesso i moderatori sono scelti da chi gestisce il sito web, e gli utenti che frequentano il sito sono tassativamente obbligati ad accettare le regole imposte dai moderatori, accettare cosa i moderatori ritengono fuori o dentro le regole che impongono, e non hanno voce riguardo all'elezione di un utente come moderatore. 

In un sistema distribuito come Osiris, l'approccio è radicalmente diverso, in quanto nessuno è il vero proprietario di un portale, ma semplicemente "esprime" il suo punto di vista, all'interno della comunità del portale, di come quel portale dovrebbe essere gestito. 

In Osiris, non esistono amministratori o moderatori nel portale, dato che tutti gli utenti hanno gli stessi "diritti" e gli stessi poteri. Ognuno è libero contribuire al portale e esprimere il proprio pensiero, e persino di modificare il contributo al portale. 



Ogni utente è libero di aggiungere topic, post, forum o sottoforum, o qualsiasi altra tipologia di contributi, e ogni utente è libero di modificare ciò che è stato scritto da altri utenti, senza alcuna limitazione. 

Questa architettura è fondamentale poichè i portali in Osiris devono essere indistruttibili, per cui sarebbe concettualmente sbagliato che esistano alcuni utenti (amministratori o moderatori) in grado di limitarne altri, perchè se questi utenti smettessero di utilizzare il portale, i restanti utenti non avrebbero più modo di gestire il portale. 

In Osiris ogni utente è libero di esprimere una fiducia, che può essere positiva (nel caso di un amico), negativa (nel caso di un nemico), neutro o una via di mezzo. 

In base ai valori di fiducia impostati tra gli utenti, il sistema Osiris è in grado di calcolare la reputazione di un utente verso un altro utente. 

Un utente "A" vedrà alta la reputazione di un altro utente "B" se l'utente "A" ha una fiducia positiva verso "B", o ad esempio se la fiducia è neutra o non specificata, ma esistono altri utenti, verso cui "A" ha fiducia, che hanno a loro volta espresso fiducia positiva verso "B". 

Osiris può mostrarti le risposte provenienti da utenti che godono di una buona reputazione, diretta (nel caso di una fiducia tra te e l'utente) o indiretta (nel caso non conosciate l'utente che ha scritto la risposta, ma avete espresso fiducia verso un'altro utente, che a sua volta ha espresso fiducia verso l'utente che ha scritto la risposta). 

Osiris filtra i contributi in base alle reputazioni degli utenti che li hanno scritti, di fatto nascondendo i contributi realizzati da utenti la cui reputazione sia compatibile una determinata soglia, chiamata 'soglia di reputazione'. 

Supponiamo che tra le 50 persone che hanno risposto alla tua domanda ci siano:

  • 3 persone verso cui avete fiducia (amici)
  • 10 persone che non conoscete ma di cui si fidano altre persone di cui voi vi fidate
  • 4 persone che non conoscete e di cui non si fidano altre persone di cui voi vi fidate
  • 5 persone di cui non vi fidate (nemici)
  • 38 persone verso cui nè voi nè i vostri amici conoscete

In definitiva, Osiris vi permette di scegliere: 

  • Se leggere tutte e 50 le risposte, impostando una soglia di reputazione a "Mostra tutti" (utenti con qualsiasi punteggio di reputazione)
  • Se leggere solo le risposte di persone di cui vi fidate (direttamente o indirettamente), impostando una soglia di reputazione a "Mostra solo i positivi" (utenti con un punteggio positivo)
  • Se leggere tutte le risposte escluse quelle provenienti da utenti di cui voi o vostri amici non vi fidate (50-5-4=41), impostando una soglia di reputazione a "Non mostrare i negativi" (utenti con un punteggio positivo o neutro)
  • Se leggere tutte le risposte escluse quelle provenienti da utenti solo voi non vi fidate (50-5), impostando una soglia di reputazione a "Non mostrare i pienamente negativi" (utenti con un punteggio maggiore di -1)

E' da notare che la scelta di quale metodo utilizzare per filtrare le risposte è liberamente impostabile da ogni utente, e non influisce sulla scelta degli altri utenti. 
Questo perchè ogni utente nel portale ha la propria "soglia di reputazione", che può impostare nel proprio pannello di preferenze.

L'ingresso in un portale

Quando un utente si registra ad un portale, potenzialmente non ha alcuna reputazione assegnata, per cui la prima operazione che dovrebbe fare è dare una reputazione positiva con il "segui" a qualcuno che si occupa a sua volta
di moderare il portale, principalmente per non vedere lo spam.
Dato che localizzare questo moderatore potrebbe essere scomodo (nel frattempo sarebbero visibili indistintamente tutti i contributi), e dato che questa prima operazione richiede la conoscenza di come il sistema di reputazioni funziona,
per semplificare l'ingresso di nuovi utenti esistono i link di invito.
Se frequenti un portale e vuoi invitare altri tuoi amici a frequentarlo, poi andare nella pagina di dettaglio del tuo utente, generare un link di invito, e inviare ai tuoi amici tale link; quando i tuoi amici cliccheranno quel link, verranno iscritti al portale, e avranno una reputazione positiva con il "segui" in automatico verso di voi, in modo che la loro vista del portale sia delegata a voi. Chiaramente potranno sempre variare questa reputazione in qualsiasi momento. 

N.B. Chiunque può generare un link di invito da qualsiasi utente. 
Questo perchè un utente potrebbe voler invitare degli amici ma vuole che la prima reputazione non sia verso di lui, ma bensì verso un'altro utente che considera come moderatore.
Inoltre, se un utente potesse generare solo lui un link di invito da lui, e pubblicasse il link di invito ad esempio in un forum tradizionale, sarebbe possibile (analizzando il traffico sul forum tradizionale) associare un indirizzo IP con un'utente Osiris.
Essendo invece generabili da chiunque per conto di chiunque, un'associazione di questo tipo sarebbe solamente presunta.

Un esempio di scenario con più punti di vista

Supponiamo che venga creato un portale dedicato allo scambio di informazioni relative ai migliori ristoranti.

Un primo utente, Andrea, crea il portale, ne definisce la struttura, e pubblica un link di invito per permettere ad altri utenti di registrarsi. A questo punto, tutti gli utenti che si registrano (in questo caso Luca e Simona) hanno una reputazione positiva verso Andrea, che a sua volta modera il portale cercando di non visualizzare contenuti fuori contesto, di spam e testi scurrili.

Arrivano altri tre utenti,
  • Giovanni (invitato da Luca)
  • Paolo (invitato da Simona)
  • Claudia (invitata da Paolo).


Paolo scrive un messaggio scurrile. Andrea è contrario a tale comportamento, per cui vota negativamente Paolo.

A questo punto, tutti vedono il portale nella versione voluta da Andrea, ma i testi scurrili di Paolo li vedono solo Paolo e Claudia.

Luca scrive un messaggio, e Paolo lo modifica. Anche qui, Andrea, Luca, Giovanni e Simona vedono il messaggio come Luca l’ha scritto, Paolo e Claudia vedono il messaggio come Paolo l’ha modificato.

Se all'interno della comunità un gruppo di utenti (anche se invitati da Andrea) non è d'accordo con l'impostazione di Andrea perchè ritengono accettabili dei testi scurrili in questo contesto, basterà che tolgano la reputazione positiva verso Andrea e la diano a Paolo. 

A questo punto, gli utenti con reputazione positiva verso Andrea vedranno l'impostazione del portale voluta da Andrea, quelli con reputazione positiva verso Paolo vedranno l'impostazione del portale voluta da Paolo, e dove Paolo non ha espresso particolari preferenze, l'impostazione voluta da Andrea. 

Se ci sono reputazioni o revisioni in conflitto tra le impostazioni di Andrea e Paolo, verranno automaticamente risolte in quanto in gruppo che 'segue' Paolo reputa il suo contributo ad un valore di reputazione più alto di quello di Andrea (comunque positivo, ma indiretto attraverso Paolo e Simona), per cui nei conflitti prevarrà il contributo di Paolo, viceversa il gruppo che 'segue' Andrea reputa il suo contributo ad un valore di reputazione più alto di quello di Paolo. 

Rispetto ad un portale/forum tradizionali, significa che chiunque può realizzare la propria versione di moderazione del portale, e che quindi si possono formare diversi gruppi che moderano il portale in maniera diversa, e gli utenti possono scegliere i gruppi che preferiscono.

Un esempio di scenario con punti di vista misti, radicalmente opposti

Un utente Marco potrebbe creare un portale dedicato alla cucina, poi si iscrive l'utente Luca che però decide che il portale sia dedicato all'alpinismo. 

Questo è un caso estremo e particolare, perchè sarebbe stato meglio e più logico se Luca avesse creato un portale nuovo (soprattutto per delle motivazioni descritte nel capitolo 'Sopravvivenza'), ma vediamo in ogni caso cosa può succedere. 

Luca definisce i nuovi contenuti (forum, sottoforum etc.), e vota con una reputazione negativa Marco (a differenza del caso sopra-citato, in cui invece Paolo manteneva una reputazione positiva verso Andrea, anche se indiretta attraverso Simona). 

A questo punto nel portale possono esistere: 

  • Utenti che hanno una reputazione positiva verso Marco (e di conseguenza negativa (indiretta) verso Luca, in quanto Marco ha una reputazione negativa verso Luca). Questi utenti vedranno un portale dedicato alla cucina.
  • Utenti che hanno una reputazione positiva verso Luca (e di conseguenza negativa verso Marco). Questi utenti vedranno un portale dedicato all'alpinismo.
  • Utenti che hanno una reputazione positiva sia verso Marco che verso Luca. Questi utenti vedranno un portale tendenzialmente 'misto'.


In realtà, una situazione come questa può provocare confusione comunque, nel caso un utente Gianni voglia contribuire sia in merito alla cucina, sia in merito all'alpinismo. Un utente di questo tipo genererebbe punti di vista misti se sia Luca che Marco lo reputano positivo, e comunque punti di vista misti per tutti gli utenti che verranno invitati da Gianni o che comunque avranno una reputazione positiva verso Gianni. 

In ogni caso, tenete presente che Marco sicuramente lo voterebbe negativamente al primo contributo sull'alpinismo, in quanto Marco potrebbe potenzialmente non accorgersi neanche che il portale viene utilizzato anche per discussioni sull'alpinismo. Marco ha una reputazione negativa verso Luca, ma probabilmente l'ha assegnata nel momento in cui Luca ha scritto i primi contributi, fuori contesto per Marco. 

Per evitare situazioni di questo tipo, è sufficiente che Gianni (identità reale) generi, all'interno del portale, due diverse identità (identità logiche). 

N.B. Le due diverse identità possono in ogni caso chiamarsi "Gianni" come nick, in quanto un utente viene identificato da un codice interno denominato 'hash', non dal suo nome. 

Una identità avrà una reputazione positiva verso Marco, e verrà utilizzata per creare contenuti sulla cucina; L'altra avrà una reputazione positiva verso Luca, e verrà utilizzata per creare contenuti sull'alpinismo.

La reputazione


Una reputazione verso un utente è assegnabile dalla pagina di dettagli dell'utente verso cui volete esprimere una reputazione.
E' possibile il valore scegliere tra

  • Piena fiducia (+1)
  • Positiva (0.5)
  • Indifferente (0)
  • Negativa (-0.5)
  • Piena sfiducia (-1)


La reputazione specificata sarà visibile da tutti, per cui è possibile specificare un commento per giustificare tale reputazione.
E' inoltre possibile attivare l'opzione "Segui per reputazioni indirette": Se specificato, e se la reputazione è positiva, allora le reputazioni espresse da questo utente saranno considerate anche per voi.
Ad esempio, se l'utente Marco si fida dell'utente Luca, e l'utente Luca si fida dell'utente Gianni, ma Marco non ha espresso nessuna reputazione diretta verso Gianni, allora Marco vedrà una reputazione positiva indiretta se ha
specificato il "Segui" verso Luca, altrimenti le reputazioni date da Luca non verranno considerate e Gianni risulterà con un punteggio neutro.

Revisioni

Un portale Osiris è simile ad un Wiki, dato che non solo gli utenti sono liberi di aggiungere contributi, ma sono anche liberi di modificare i contributi altrui. Tale modifica è detta 'revisione'.
Uno stesso contributo, ad esempio un commento, potrebbe essere presente in una versione originale, e potrebbe esserci una revisione effettuata da un'altro utente (ad esempio effettuata per togliere una parte di spam).
La scelta se mostrare una revisione di un'altro utente o la versione originale di un contributo è effettuata dal sistema di reputazioni.

Ogni contributo nel portale ha quindi un autore (chi ha creato la prima versione del contributo) e può avere un editore (chi ha creato la revisione visualizzata).

Anche se un utente cancella il contributo di un'altro utente, in pratica il contributo non viene cancellato, bensì viene creata una revisione (detta 'revisione di cancellazione').
Per ulteriori informazioni sulle revisioni, consultare il capitolo dedicato.

Soglie nel sistema di reputazione



La soglia di reputazione rappresenta come il sistema determina, in base alle reputazioni degli utenti, cosa deve essere visualizzato o meno.

Possibili valori


Può essere impostata come:

  • Non specificato (nessuna impostazione particolare, quale soglia utilizzare è demandata agli utenti di cui ci si fida)
  • Mostra tutti (vengono visualizzati i contributi di tutti gli utenti)
  • Non mostrare i pienamente negativi (vengono visualizzati tutti i contributi tranne quelli di utenti verso cui è specificata una reputazione negativa diretta)
  • Non mostrare i negativi (vengono visualizzati tutti i contributi tranne quelli di utenti verso cui c'è una reputazione negativa, diretta o indiretta)
  • Mostra solo i positivi (vengono mostrati solo i contributi verso cuo c'è una reputazione positiva, diretta o indiretta).

I nuovi iscritti al portale

Quando arriva un nuovo iscritto, entra nel portale con una reputazione (quella dell'invito), ma non esiste nessuna reputazione verso di lui, quindi per tutti il suo punteggio è neutro, almeno finchè qualcuno non esprime una reputazione.

Concettualmente, il sistema non è in grado di determinare se l'utente appena arrivato sia un utente corretto, uno spammer, o peggio un bot che genera automaticamente spam. Tale classificazione deve essere necessariamente effettuata da un essere umano, assegnandogli una reputazione.

I contributi di un utente con punteggio neutro non sono visibili con la soglia "Mostra solo i positivi".
Questo significa che se un utente utilizza la soglia "Mostra solo i positivi", non vedrà i nuovi iscritti finchè qualcuno di cui si fida li reputerà positivamente; questo qualcuno dovrà però avere la soglia almeno su "Non mostrare i negativi" per notare il nuovo iscritto.
D'altro canto, se un utente ha la soglia come "Non mostrare i negativi", vedrà immediatamente i nuovi iscritti, sia che siano utenti corretti, sia che non lo siano.

Quale sia la soglia migliore da utilizzare dipende da portale a portale, e da fattori quali:

  • La presenza o meno in un portale di qualcuno che si occupa di reputare positivamente (e tempestivamente) i nuovi iscritti corretti; se ci sono, la soglia "Mostra solo i positivi" potrebbe essere comoda per permettere al sistema di filtrare automaticamente lo spam.
  • La presenza o meno di numerosi utenti non corretti; se un portale non è attaccato spesso da spammer, la soglia "Non mostrare i negativi" potrebbe essere la più adeguata.


La soglia 'autore' e la soglia 'editore'

Esistono due soglie distinte di reputazione distinte: quelle degli autori e quelle degli editori.

La soglia degli autori determina quali utenti devono essere visualizzati, e di conseguenza se i loro contributi devono essere visualizzati.
La soglia degli editori determina quali utenti possono modificare i contributi non creati da loro, e la creazione di alcuni oggetti particolari.

Un esempio tipico potrebbe essere impostare come soglia di autori la "Non mostrare i positivi", e come soglia di editori la "Mostra solo i positivi": vedrei tutti i nuovi contributi anche dei nuovi iscritti, ma solo gli utenti che reputo positivamente possono modificare i contributi altrui.

N.B. Alcune tipologie di contributi (categorie e istanze) sono visibili solamente se l'autore è compatibile con la soglia degli editori.


Sopravvivenza

I dati di ogni portale vengono archiviati su un database, per cui esiste un database per ogni portale. Attualmente Osiris supporta il database SqLite attraverso un database plugin. Da notare che non è richiesto che il database sia già installato, in quanto Osiris contiene direttamente il motore del database.

Al momento della registrazione di un portale, nella scheda "Avanzate", è possibile scegliere su quale database creare il portale.

Osiris in automatico applica diverse regole per determinare quali dati del database possono essere cancellati per far spazio ai nuovi dati. Tali regole sono impostabili nel pannello di configurazione del portale.

In linea di massima, le regole tendono a rimuovere dal database i messaggi provenienti da fonti con reputazione molto bassa e/o i messaggi vecchi.

N.B. In un portale Osiris è possibile creare più identità (account). E' da notare che la cancellazione dei messaggi dal database è comune a tutti le identità, mentre ogni identità può definire reputazioni diverse e potenzialmente contrastanti rispetto alle reputazioni delle altre identità. Pertanto a livello di sistema, se sono presenti più di un'identità, deve essere specificata l'identità di riferimento su cui il sistema di pulizia & allineamento si deve basare per calcolare la fonte e quindi l'importanza dei contributi.
In un portale monarchico, questo non è necessario, in quanto è considerato l'amministratore l'indentità di riferimento.

A livello pratico, il sistema tende quindi a far sopravvivere più a lungo i contributi creati da utenti generalmente graditi alla comunità, e ad estinguere i contributi creati da utenti generalmente non graditi.

Se uno spammer crea diversi post di spam, essi verranno distribuiti dallo spammer ai nodi che contatterà. Ma questi nodi, se tali contributi sono reputati negativamente, non li distribuiranno a loro volta, e verranno cancellati.
Quindi i contributi di un utente, se la maggior parte degli utenti non li vuole (ha quindi una reputazione bassa verso lo spammatore) si distribuiranno molto meno velocemente di altri, e potrebbero essere maggiormente soggetti ad estinzione.

Nel capitolo sul sistema di reputazioni, è presente un esempio di portale misto (dedicato contemporaneamente alla cucina per alcuni utenti, all'alpinismo per altri).
Anche se il sistema di reputazioni è in grado di gestire casi come questo, un contributo sull'alpinismo non verrebbe distribuito dai nodi che lo reputano negativamente, e quindi la sua distribuzione sarebbe limitata.
Sarebbe quindi stato più funzionale creare due portali distinti.

N.B. In teoria sarebbe possibile determinare, in base ai contributi distribuiti da un nodo, le reputazioni utilizzate dall'utente residente in quel nodo, per poter stimare un'associazione IP <> utente. Ma sarebbe comunque una supposizione, non ci sono elementi
per determinarlo con certezza.

N.B. Il fatto che i contributi reputati negativamente non vengano distribuiti è necessario per impedire che contribuiti di spam generati automaticamente continuino a girare collassando la rete e/o occupando inutilmente banda e risorse dei nodi che la compongono, dato che in questo sistema i dati via P2P non vengono cercati, ma solamente scambiati.

Tutti i contributi creati dalle identità presenti sulla macchina non vengono mai cancellati, garantendo all'autore di quegli oggetti che almeno una copia del suo contributo persisterà nel portale. Se Osiris viene disinstallato e re-installato, o se semplicemente viene cancellata un'identità, gli oggetti generati da tale identità diventano 'volatili', cioè sono ancora presenti nel portale, ma potrebbero venir cancellati definitivamente, in quanto non esiste più la certezza che ci sia almeno un nodo nella rete in cui tali messaggi non verranno mai cancellati.

Nel pannello di gestione delle identità è possibile esportare la propria identità in un file ".oidentity", in modo da poterla re-importare su un'altro pc. Questa esportazione permette di trasferire anche tutti gli oggetti creati da quell'identità, permettendo quindi di trasferire i propri dati fondamentali da un pc ad un altro. E' consigliato esportare periodicamente le proprie identità come backup.

N.B. I file ".oidentity" sono strettamente personali come una password, e chiunque riesce ad ottenere il vostro file di identità, può inserire oggetti in un portale spacciandosi per voi.

In termini tecnici, ogni identità è identificata da un hash, e ogni identità firma i propri contributi al portale utilizzando una chiave privata. Il file ".oidentity" contiene sia l'hash che la chiave privata dell'identità.

La chiave privata non è salvata nel database, per cui non basta salvare una copia del database per ottenere un backup valido.

Distribuzione via P2P 

Ogni portale creato con Osiris viene distribuito via P2P tra i pc su cui è registrato lo stesso portale. Quindi il vostro pc veicolerà solamente i portali a cui vi siete registrati.

La navigazione e la ricerca nel portale è riferita solamente alla copia in locale del portale stesso; il protocollo P2P implementato è concepito solamente per distribuire i portali, e non ad esempio per inoltrare ricerche come avviene in altri sistemi P2P similari.

Pertanto, l'obiettivo è che gli utenti abbiano in locale un'intera copia dei portali, e non solamente porzioni di esso.

Un'ulteriore fondamentale differenza rispetto ad altri sistemi similari, è che in Osiris qualsiasi utente può vedere in chiaro i dati presenti in locale (a parte i messaggi privati), e se reputa tali contributi negativamente, non contribuirà alla diffusione di tali dati.
In pratica, è come se la censura esistesse in Osiris, ma sono gli utenti che la determinano.

N.B. E' comunque possibile distribuire indiscriminatamente tutti i contributi, ma si sconsiglia di farlo in quanto rallenterebbe solamente il funzionamento del sistema. Potrebbe avere senso in un portale privato (in cui spammer non potrebbero entrare non conoscendone la password), o in un portale di uso interno nella propria Lan, etc.

Si consiglia di consultare anche il capitolo 'Sopravvivenza', in quanto i contributi distribuiti dai nodi via allineamento P2P è strettamente legato al funzionamento della sopravvivenza.

I messaggi privati sono l'unica tipologia di dati che non sono leggibili da chiunque, ma solamente dal mittente e dal destinatario, in quanto anche i messaggi privati vengono distribuiti via P2P. Qualsiasi utente ha comunque la facoltà di disattivare il supporto ai messaggi privati: questo permette di non distribuire dati che non è possibile leggere, ma non vi permetterà nè di inviare, nè di ricevere messaggi privati.

Osiris, in maniera totalmente automatica, cerca continuamente di contattare altri pc per poter scambiare e/o allineare i contenuti del portale. Tiene traccia dei pc con i quali ha potuto comunicare al meglio, generando una specie di classifica per stabilire i migliori "contatti".

In termini tecnici, i nodi con IP statico saranno più contattati dei nodi con IP dinamici, i nodi con un Ping basso saranno più contattati dei nodi con un Ping alto, e così via, in base a numerose regole.

I contenuti del portale scambiati durante un allineamento tra due nodi dipendono da una serie di regole complesse.

Osiris archivia nel database gli indirizzi IP dei nodi che contatta (quindi macchine collegate alla rete che hanno Osiris installato, e sono registrati allo stesso portale). Non è in ogni caso possibile determinare quali identità sono contenute in una macchina remota.

Durante il colloquio tra nodi, oltre ai dati, vengono scambiate anche le liste degli indirizzi IP.

Se tra tutti gli indirizzi IP conosciuti, nessuno è raggiungibile, Osiris contatta automaticamente il server centrale per ottenere una lista aggiornata degli IP, oppure è possibile specificare un indirizzo IP manualmente (denominato IP di bootstrap). In teoria, ne basta uno solo valido, in quanto la prima comunicazione con questo provocherà anche il download degli IP conosciuti del nodo remoto.

N.B. Per garantire l'indistruttibilità del sistema, il server che gestisce gli indirizzi di bootstrap è regolabile dall'opzione di sistema "p2p.bootstrap.url"

fonte http://anon-news.blogspot.it/2012/06/perche-osiris.html

Nessun commento:

Posta un commento