P2PDocs: Un Editor Collaborativo Decentralizzato

Progetto per il corso di Sistemi Distribuiti all’Università di Udine

Corso: Sistemi Distribuiti
Team: Alessandro De Biasi, Alessandro Minisini, Nazareno Piccin
GitHub: Repository | Stack: Elixir, Node.js, Docker


📚 Panoramica del Progetto

Progettato per il corso di Sistemi Distribuiti, P2PDocs è un editor di testo collaborativo peer-to-peer che implementa:

  • CRDT (Conflict-Free Replicated Data Types) per risolvere conflitti
  • Broadcast Causale per l’ordinamento dei messaggi

🔍 Contributi Tecnici

1. Implementazione CRDT LSEQ

Per preservare l’intenzione degli utenti (intention preservation):

  • Vettori di posizione come numeri razionali
  • Tagging con ID peer per gestire modifiche concorrenti
  • Albero statistico AVL per inserimenti/cancellazioni in O(log n)

2. Livello di Rete

  • Protocollo Echo-Wave: Propagazione affidabile delle operazioni
  • Neighbor Handshake: Sincronizzazione dello stato per nuovi peer
  • Crash Recovery: Persistenza con ETS (Erlang Term Storage)

3. Validazione

  • Unit Test: ExUnit per verificare i moduli
  • Test Multi-Nodo: Simulazioni con Docker:
    ./start_n_instances_for_tests.sh 5  # Avvia 5 peer
    ./disconnect.sh 2                   # Simula un guasto
    

🔮 Sviluppi Futuri

Dal nostro rapporto finale:

  1. Supporto per Markdown
  2. Tracciamento cursori in tempo reale
  3. Ottimizzazione del vector clock

📚 Approfondimenti

Per dettagli tecnici completi su:

  • Implementazione CRDT
  • Scelte progettuali dei protocolli di rete
  • Metodologia di validazione

Leggi il Rapporto Tecnico nel repository.


Codice: GitHub | Collegati: LinkedIn