Το **Croquet** είναι ένας συνδυασμός open-source λογισμικού και δικτυακής αρχιτεκτονικής peer to peer που παρέχει την υποδομή για την σύγχρονη επίλυση προβλημάτων σε πραγματικό χρόνο μέσα σε διαμοιραζόμενες προσομοιώσεις. Ο εικονικός χώρος που δημιουργείται βασιζόμενος στην αρχιτεκτονική peer to peer αναπαράγει τους υπολογισμούς και με αυτό τον τρόπο διαδίδει τις οποιεσδήποτε αλλαγές. Επομένως, δεν υπάρχει ανάγκη για servers ή server overhead. Είναι γραμμένο στη γλώσσα Squeak.

Κάτι το οποίο αποτελεί και ένα από τα βασικότερα προβλήματα του ίντερνετ. Το ότι δηλαδή, γίνεται χρήση servers οι οποίοι ουσιαστικά δεν συνεργάζονται μεταξύ τους. Επιπλέον, η πλοήγηση στο ίντερνετ είναι κυρίως μια αρχιτεκτονική χωρίς καταστάσεις (stateless), στο ότι ο server ξεχνάει τον χρήστη και την διάδραση μαζί του. Μερικά άλλα χαρακτηριστικά προβλήματα του ίντερνετ είναι ότι είναι εγγραφοστραφής (document oriented), ότι χρησιμοποιείται ένας γενικός πλοηγητής για κάθε είδους διάδραση και πως η διάδοση της πληροφορίας έχει κυρίως την φορά «άνθρωποι προς πληροφορίες» και όχι «πληροφορίες προς ανθρώπους» ή «άνθρωποι προς ανθρώπους».

Η πλατφόρμα Croquet παρουσιάζει μερικές βασικές ομοιότητες και διαφορές με την τεχνολογία και τις υπηρεσίες του ίντερνετ. Μερικές ομοιότητες είναι πως οι χρήστες έχουν την δυνατότητα να δημιουργήσουν και να μορφοποιήσουν μια δική τους σελίδα (ή δικό τους κόσμο στα πλαίσια του Croquet) και να συνδέσουν σελίδες (ή κόσμους) μεταξύ τους μέσω υπερσυνδέσεων (ή πυλών, portals). Οι κυριότερες διαφορές των δύο τεχνολογιών είναι πως το Croquet είναι ένα πλήρως δυναμικό περιβάλλον, όπου κάθε στοιχείο είναι ένα συνεργατικό αντικείμενο και πως οι χρήστες μπορούν να τροποποιήσουν τον κώδικά του καθώς αυτός εκτελείται.

Η αρχιτεκτονική TeaTime
-----------------------

Η πλατφόρμα Croquet εκτελείται πάνω από υπάρχοντα λειτουργικά συστήματα όπως Windows, Mac OS και Linux. Αυτό επιτυγχάνεται μέσα από την δημιουργία μιας Croquet virtual machine η οποία εμφανίζει υψηλή μεταφερσιμότητα και εκτελείται πανομοιότυπα σε οποιοδήποτε σύστημα διαθέτει κάποιας μορφής επεξεργαστή και κάρτα γραφικών. Το θεμελιώδες στοιχείο της αρχιτεκτονικής είναι ένα σύστημα το οποίο καθιστά κάθε αντικείμενο μέσα στον τρισδιάστατο κόσμο ικανό να χρησιμοποιηθεί συνεργατικά. Η αρχιτεκτονική TeaTime έχει αναπτυχθεί με τέτοιο τρόπο ώστε να υποστηρίζει την προαναφερόμενη λειτουργικότητα και για να μην υφίσταται διάκριση μεταξύ του περιβάλλοντος των χρηστών και του περιβάλλοντος ανάπτυξης. 

Η TeaTime είναι μια peer to peer αρχιτεκτονική η οποία χρησιμοποιεί αντιγραμμένες εκδόσεις αντικειμένων, τα οποία συντονίζονται από μια ενιαία χρονική βάση (universal timebase), η οποία βρίσκεται ενσωματωμένη στο πρωτόκολλο επικοινωνίας. Το πιο εμφανές στοιχείο της αρχιτεκτονικής είναι η τάξη TObject, η οποία χρησιμοποιείται για τον ορισμό και την δόμηση αντικειμένων. Κάθε αντικείμενο, αναπαράγει και ανακατευθύνει τα μηνύματα τα οποία αποστέλλονται προς αυτό, προς τα αντίγραφά του στους υπολογιστές των υπόλοιπων χρηστών. Τα αντικείμενα εκφράζουν συμπεριφορές στο χρόνο, μέσα από αυτή την μετάδοση ροής μηνυμάτων. Με άλλα λόγια, τα αντικείμενα μπορούν να θεωρηθούν ως μια εξελισσόμενη ιστορία αποσταλμένων μηνυμάτων.

Εκτενής αναφορά στην αρχιτεκτονική TeaTime γίνεται στο. Στη συνέχεια θα παρουσιαστούν τα βασικά της στοιχεία. Η κυριότερη μονάδα αναπαραγωγής και συνεργασίας στο Croquet αποκαλείται island. Το island αποτελεί κατά κύριο λόγο ένα ασφαλές δοχείο διαφόρων αντικειμένων. Αν και είναι απαραίτητο να συγχρονιστεί η κατάσταση του κόσμου ενός νέου χρήστη μέσα από την μετάδοση των τρεχόντων περιεχομένων του, μετά από αυτό οι κόσμοι παραμένουν συγχρονισμένοι μονάχα μέσα από την δημιουργία και επεξεργασία μηνυμάτων χρονισμού (time based messages).

Οι βασικοί μηχανισμοί της αρχιτεκτονικής είναι τρεις. Είναι τα μηνύματα, οι δρομολογητές (routers) και οι ελεγκτές (controllers). Ένα μήνυμα περιλαμβάνει το αναγνωριστικό του, τον παραλήπτη, τα ορίσματα (arguments) και τον χρόνο στον οποίο θα εκτελεστεί. 

Ο Croquet router είναι το αντικείμενο το οποίο διαχειρίζεται τα μηνύματα τα οποία παράγονται εξωτερικά του island, αλλά που αποστέλλονται προς αυτό. Καθορίζει πότε θα εκτελεστεί το μήνυμα αυτό και το αναπαράγει αποστέλλοντας το στα αντίγραφα του island. Ο τρόπος λειτουργίας του μπορεί να συνοψιστεί ως εξής: 

1. Αρχικά, δρα ως προσδιοριστής του χρόνου για τα αντίγραφα islands, στο ότι καθορίζει την στιγμή στην οποία θα πραγματοποιηθεί ένα εξωτερικό συμβάν. Αυτά τα εξωτερικά συμβάν είναι η μοναδική πηγή πληροφορίας που έχει το island για το πέρασμα του χρόνου. Οπότε, το island δεν μπορεί να προχωρήσει στην εκτέλεση των μηνυμάτων που βρίσκονται σε αναμονή στην δομή ουράς που διαθέτει, ωσότου λάβει ένα από αυτά τα εξωτερικά μηνύματα τα οποία είναι χρονικά σφραγισμένα (time-stamped).
2. Ο δεύτερος βασικός ρόλος του router είναι η προώθηση των μηνυμάτων που λαμβάνει από ένα συγκεκριμένο controller (του οποίου η λειτουργία αναφέρεται στη συνέχεια), σε όλα τα τρέχοντα καταχωρημένα islands.
3. Συνήθως, η παραγωγή καινούργιων μηνυμάτων είναι απαραίτητη απλώς και μόνο για την μετακίνηση του χρόνου μπροστά. Αυτά τα μηνύματα παράγονται από τον router και αποκαλούνται καρδιοχτύπια (heartbeat messages).

Ο Croquet controller παρέχει την διεπαφή μεταξύ του island και του router και του χρήστη και του island. Ο controller χειρίζεται εξωτερικά γεγονότα στο ότι τα προωθεί στο router και διαχειρίζεται τα μηνύματα στην δομή ουράς του island, καθορίζοντας την στιγμή που θα εκτελεστούν. Κάθε island διαθέτει τον δικό του μοναδικό controller, ενώ μια ομάδα αντιγράφων ενός island την διαχειρίζεται ένας και μόνο router.

Μόλις ο router λάβει ένα μήνυμα από κάποιο controller, το σφραγίζει χρονικά και το προωθεί σε όλους του controllers που είναι συνδεδεμένοι μαζί του, συμπεριλαμβανομένου και του αρχικού. Στην συνέχεια, οι controllers προσθέτουν το νέο μήνυμα στη δομή ουράς που διαθέτει το κάθε island και εκτελούν όλα τα μηνύματα της ουράς μέχρι και το καινούργιο. Με αυτό τον τρόπο κάθε island είναι πλέον συγχρονισμένο με τα υπόλοιπα. Στην συνέχεια θα περιγραφεί η διαδικασία δημιουργίας μιας καινούργιας συνεδρίας Croquet και ο τρόπος εισαγωγής νέων χρηστών στο περιβάλλον. 

Αρχικά δημιουργείται ο router, ο οποίος μπορεί να είναι σε οποιοδήποτε μηχάνημα του δικτύου έχουμε πρόσβαση. Μετά από αυτό, δημιουργείται ο controller, ο οποίος πρέπει να εντοπίζεται στο ίδιο μηχάνημα στο οποίο θα βρίσκεται και το island. Ο controller αποστέλλει ένα μήνυμα στο router, ζητώντας συνδρομή στην ροή μηνυμάτων. Τα μοναδικά μηνύματα που προέρχονται αυτήν την στιγμή από το router είναι τα καρδιοχτύπια. Ο controller έχει σχεδιαστεί έτσι ώστε να προσθέτει αυτά τα μηνύματα στην δομή ουράς. Στην συνέχεια, αποστέλλεται αίτηση συμμετοχής στο island. Αφού η αίτηση γίνει δεκτή, ο controller λαμβάνει από το island κάποια επιμέρους στοιχεία. Τα στοιχεία αυτά αποτελούν ένα είδος κρυπτογραφημένου λεξικού μηνυμάτων, τα οποία επιτρέπεται να αποσταλούν από τον χρήστη μέσω του controller στο island. 

Η διαδικασία προσθήκης νέων χρηστών περιλαμβάνει την δημιουργία ενός controller στον τοπικό υπολογιστή. Στην συνέχεια, ο controller ζητάει άδεια συμμετοχής στην συνεδρία Croquet. Η άδεια χορηγείται από τον router ο οποίος στην συνέχεια ξεκινά την αποστολή μηνυμάτων στον καινούργιο controller. Ο controller, αντί να δημιουργήσει ένα καινούργιο τοπικό island, ζητά ένα αντίγραφο από κάποιον άλλο χρήστη. Ο router προωθεί το αίτημα στον αρχικό controller και το island φωτογραφίζεται (checkpointed). Δηλαδή, δημιουργείται ένα αντίγραφο σε συγκεκριμένη χρονική στιγμή και μεταδίδεται στον νέο χρήστη μέσω του router. 

Επειδή δεν χάνονται ποτέ μηνύματα και επειδή οι αρχικοί αποστολείς του μηνύματος δεν μπορούν να καθορίσουν την στιγμή εκτέλεσης, η καθυστέρηση (latency) δεν προκαλεί προβλήματα συγχρονισμού, αλλά προβλήματα ανάδρασης. Με άλλα λόγια, τα περιεχόμενα του island θα παραμείνουν πανομοιότυπα μεταξύ των χρηστών, ανεξαρτήτως καθυστέρησης.

Δικτυακές πηγές
---------------

* The Croquet Consortium -
* The Croquet Project – Official website -

Αναφορές
--------

1. 1 2  Rieko Kadobayashi et al. (2005), Annotation authoring in collaborative 3d virtual environments, National institute of information and communications technology, Kyoto, Japan
2. ↑  Julian Lombardi and Preston Austin, (2005), Croquet Project Speech at Accelerate Madison
3. ↑  Marilyn Lombardi, (2005), Standing on the plateau looking forward, the croquet project
4. ↑  David Reed et al. (2005), TeaTime: Designing the architectural framework for croquet
5. ↑  Andreas Raab et al. (2005), Hedgehog framework in croquet

Βιβλιογραφία
------------

* Alan Kay et al. (2003), Croquet collaboration system architecture
* Alan Kay et al. (2005), Filters and tasks in croquet
* Andreas Raab et al. (2005), Hedgehog framework in croquet
* David A. Smith et al. (2004), Croquet: A menagerie of new user interfaces
* David Reed et al. (2005), TeaTime: Designing the architectural framework for croquet
* Howard Stearns et al. (2006), A language supporting direct manipulation of component-based object construction and deconstruction in collaborative croquet spaces
* Howard Stearns et al. (2006), Simplified distributed authoring via component-based object construction and deconstruction in collaborative croquet spaces
* Julian and Marilyn Lombardi, (2005), Croquet learning environments: extending the value of campus life into the online experience, Division of information technology, University of Wisconsin Madison, USA
* Julian Lombardi and Preston Austin, (2005), Croquet Project Speech at Accelerate Madison
* Marilyn Lombardi, (2005), Standing on the plateau looking forward, the croquet project
* Marilyn M. Lombardi, (2004), Croquet anyone? Designing a more responsive online learning environment , Division of information technology, University of Wisconsin Madison, USA
* Mark McCahill, (2004), Design for an extensible croquet-based framework to deliver a persistent, unified, massively multi-user and self-organizing virtual environment, Office of information technology, UM Twin Cities,USA
* Mark McCahill, (2006), Extending croquet spaces with virtual presence, vehicles and vector fields
* Max Borders, (2004), In all possible worlds
* Rieko Kadobayashi et al. (2005), Annotation authoring in collaborative 3d virtual environments, National institute of information and communications technology, Kyoto, Japan
* Rieko Kadobayashi et al. (2006), 3d model annotations from multiple viewpoints for croquet