# Osiris (Serverless Portal System)

Osiris Serverless Portal System (solitamente abbreviato in Osiris sps o Osiris) è un programma gratuito (inizialmente freeware, open source rilasciato in licenza GPL dalla versione 1.0) per la creazione di portali web completamente distribuiti tramite p2p e autonomi dai comuni server per i sistemi operativi Microsoft Windows, GNU/Linux e macOS.
A differenza dei comuni strumenti utilizzati per "pubblicare informazioni" su Internet quali ad esempio CMS, Forums o Blogs che si basano su un sistema centralizzato, i dati di un portale creato con Osiris vengono condivisi via P2P tra tutti i suoi partecipanti. Grazie a questa architettura, in cui tutti i contenuti necessari alla navigazione (sia grafici che testuali) vengono replicati su ogni macchina, è possibile utilizzare il portale senza un server centrale ("serverless" significa appunto "senza server"). Si prevengono così le possibilità che il portale non sia raggiungibile a causa di attacchi DDoS, di limitazioni imposte dagli Internet Service Provider (policy, traffico, censura, ecc.) o di guasti. In quest'ottica si può realmente parlare di un portale "free" secondo le due accezioni della lingua inglese: free nel senso di "gratuito", ma anche "libero" da controlli esterni.

## Storia

Il progetto è nato in seguito ad un'iniziativa simile, KeyForum. A quei tempi, Berserker contribuiva a quel progetto, ma decise di ripartire da zero (scrivendolo interamente in C++) secondo un'analisi di fondo radicalmente diversa, al fine di sviluppare qualcosa di realmente indistruttibile (non solo come distribuzione dei contenuti, ma anche come amministrazione) e soprattutto che non fosse limitato alla sola componente di forum. Clodo si unì al progetto alcuni mesi dopo. Il 2 ottobre 2006, dopo circa 2 anni di sviluppo, è stato annunciato ufficialmente Osiris: ad oggi il team è composto da 2 sviluppatori (Berserker & Clodo), due collaboratori (DanielZ e Rei.Andrea) ed un gruppo di supporters/beta-testers (molti dei quali erano già presenti nel team di KeyForum). A partire dalla versione 0.12 Osiris è diventato multi-piattaforma supportando anche Linux, questo è stato possibile migrando dalle librerie dell'ambiente Visual Studio alle librerie WxWidgets.

## Caratteristiche principali

Osiris ha molte caratteristiche peculiari che lo rendono attualmente un prodotto unico, frutto di una fusione tra il peer-to-peer e i portali web.
* Permette a chiunque di creare un portale gratuitamente, senza dipendere da nessuno e senza dover avere particolari conoscenze tecniche.
* Permette di creare contenuti in modo anonimo, consentendo di contribuire alla libertà di espressione e di parola.
* Osiris offre un motore di ricerca full-text per i portali che consente una ricerca tra tutti i contenuti.
* Basso utilizzo di risorse, con l'aumento degli utenti in un portale si ha una diminuzione del carico di lavoro sul singolo nodo, in quanto questo viene distribuito tra tutti i partecipanti.
* Sfrutta un'infrastruttura p2p (basata su Kademlia) per la distribuzione di contenuti strutturati in portali, campo d'applicazione in cui le alternative sono poche e di difficile utilizzo.
* Utilizza una tipologia di amministrazione e di gestione dei contenuti basato su reputazioni e applicabile unicamente attraverso un sistema distribuito, dato che solo grazie a questo tipo di architettura non è possibile imporre restrizioni derivanti dal possesso di server centrali.

## Concetti base

Osiris differisce dalla maggioranza delle applicazioni p2p tradizionali in quanto è sviluppato con l'obiettivo di massimizzare la sicurezza e la decentralizzazione del sistema.

### Sicurezza

* Il sistema è anonimo: non essendo possibile effettuare un'associazione tra un utente registrato e il suo indirizzo IP, non è possibile risalire alla persona fisica che ha creato un contenuto.
* Anche accedendo fisicamente ad un'installazione Osiris è impossibile risalire all'effettivo utente utilizzato senza conoscerne la password.
* Chiavi digitali a 2048 bit garantiscono l'autenticità dei contenuti (firmati digitalmente per evitare contraffazioni) e la riservatezza dei messaggi privati (criptati tra mittente e destinatario).
* Per impedire che gli ISP possano intercettare il traffico del sistema, le connessioni per il trasferimento dei dati di un portale (chiamato allineamento) utilizzano porte casuali, vengono offuscate in fase di handshake e sono criptate punto-punto tramite AES a 256 bit.
* La distribuzione via P2P permette ai contenuti di essere presenti in più copie a garanzia della sopravvivenza anche nel caso di guasti hardware o di nodi off-line.
* Essendo i portali salvati in locale è possibile leggerne i contenuti anche in assenza di una connessione attiva ad internet.

### Sistema di gestione delle reputazioni

Il sistema di gestione delle reputazioni e la conseguente generazione di più punti di vista di un portale è probabilmente uno degli aspetti più innovativi del programma. A differenza dei sistemi "tradizionali" in cui il lavoro computazionale (calcolo delle statistiche, indicizzazione dei contenuti, ecc.) viene sempre eseguito da un server centrale, in Osiris viene usato un approccio distribuito, dove possono esistere più punti di vista distinti in base all'account utilizzato. Ogni utente è libero di dare una reputazione (positiva o negativa) ad un altro utente in base al suo contributo nel portale, basandosi su queste reputazioni il sistema elabora le pagine eliminando i contenuti degli utenti valutati negativamente (come spammer) e importando le reputazioni degli utenti reputati positivamente creando una rete di valutazioni che consente la gestione di un portale. Ogni client elabora i dati in modo autonomo sulla propria macchina in un processo che viene chiamato stabilizzazione del portale.

### Portali anarchici e monarchici

Durante la creazione di un portale, Osiris consente di scegliere tra due sistemi di moderazione "anarchico" e "monarchico", la scelta deve essere fatta in sede di creazione del portale e non è modificabile a posteriori.
* In un portale anarchico ogni utente può esprimere una reputazione (positiva o negativa) su un altro utente e condividere il suo voto con gli altri iscritti al portale, generando così una rete di reputazioni che consentono la moderazione di un portale. La prima reputazione positiva è sempre verso l'amministratore, che è colui che pubblica il link d'invito al portale.
* In un portale monarchico gli unici utenti che possono generare reputazioni sono l'amministratore del portale e i moderatori da lui reputati positivamente, mentre per gli altri utenti questa opzione è disabilitata. In questo modo solo a loro è concesso di poter cancellare o promuovere i contenuti di un portale.

### Il Gateway Isis

Isis è un gateway web ad un portale Osiris, scritto in PHP 5, grazie al quale è possibile navigare nei portali senza installare Osiris sul proprio pc. L'aspetto innovativo in Isis è dato dalla gestione del carico di lavoro e dei dati del portale, che non grava sul server pubblico su cui viene eseguito, ma viene gestita dai vari nodi Osiris. Isis si limita ad inoltrare le richieste dai visitatori web ai nodi che si sono resi disponibili a quest'ultimo, minimizzando così l'utilizzo di risorse dal lato server attraverso il load-balancing delle richieste.
Dato che in questo tipo di architettura non è tecnicamente possibile garantire l'anonimato, tutti gli accessi via Isis sono in sola lettura. Questo ha il duplice obiettivo di garantire la privacy dell'utente e di incentivare l'utilizzo di Osiris per partecipare attivamente al portale.

## Sviluppi Futuri

Il progetto è diventato open source (rilasciato nei termini della licenza GPL) il 25 Ottobre 2013. Tale versione ancora in fase alpha (1.0) implementa un sistema denominato "motore di sopravvivenza" che consente di eliminare dai portale contenuti obsoleti o di spam. In questa versione del software, incompatibile con la precedente, si è persa anche la distinzione fra portali monarchici ed anarchici. Ora infatti ogni utente può sceglierne un altro (POV Point Of View) che farà da moderatore per la sua "versione" del portale. Ogni utente può eleggere anche se stesso come POV e "rimoderare" altri POV. Altra caratteristica di questa versione ancora in sviluppo è la possibilità di personalizzare l'aspetto estetico dei portali tramite un apposito skin editor.