Tue, 02 Jun 2009

Una primera aproximació tècnica sobre Google Wave

Ahir a la nit vaig tenir l'oportunitat de veure el vídeo de la presentació de Google Wave. Una hora i vint minuts llargs per presentar el que els germans Ransmussen diuen que seria el email si s'inventés a dia d'avui. A la xarxa ja hi ha alguns posts que fan un resum força interessant sobre el producte basats en la descripció funcional d'aquest i quines son les seves característiques més importants.

Després d'acabar de visualitzar la presentació vaig quedar-me intranquil, una multitud de preguntes van començar a inquietar-me, entre elles dues de força interessants : quina era l'arquitectura de Google Wave ? i que significava posar a disposició del públic aquesta nova eina mitjançant alguna llicencia lliure ?

Abans però de poder intentar respondre aquestes dues preguntes deixeu-me presentar el producte amb un paràgraf.

Google wave intenta portar les actuals relacions humanes a la xarxa - email, blogs, microblogs, fotografies, wikis, etc - fins ara asíncrones - no simultànies - al món síncrona - que esdevé al mateix temps. Integrant al mateix temps totes elles en un mateix canal i format. Basant-se en l'actual protocol de missatgeria instantània però afegint a aquest tot un nou conjunt d'objectes que representen aquestes noves formes de relacions humanes a Internet.

Quina és l'arquitectura de Google Wave?

Google Wave té dues entitats diferenciades, una primera la forma el propi protocol de dades i un segon els actors que interactuen per a manejar aquest protocol.

El protocol de Google Wave està discretament explicat a la pàgina oficial. Aquest està basat en l'actual implementació de XMPP i tal com comenten n'és una extensió per a poder donar suport a la comunicació en temps real entre wave servers per a intercanviar informació corresponent a la interacció en temps real de diferents persones.

El format d'aquest protocol està composat basicament de dues tipologies de dades : les waves i les wavelets que anàlogament podríem descriure com la onada i la cresta de l'onada en un moment determinat del temps. Una wave és la unitat màxima d'informació i es iniciada per a algun servidor wave en un moment del temps, cada comunicació que es produeix en un moment del temps determinat relacionada amb un conjunt d'usuaris i un conjunt d'objectes se l'anomenat wavelet. Una wave pot tenir un número indeterminat de wavelets.

L'actual especificació del protocol i implementació determina que qualsevol usuari que forma part d'una wavelet té permisos de lectura i escriptura de només aquella wavelet. Això implica que en un conjunt ampli de comunicacions - wavelets - que pertanyen a una mateix unitat - wave - certs usuaris tenen permisos diferents depenent exclusivament de si formen part o no de cada una de les wavelets.

Al mateix moment una wavelet com a unitat mínima de relació d'informació entre persones i objectes està formada per un conjunt no determinat d'objectes que representen les diferents tipologies d'informacions que aquests s'intercanvien - missatges, fotografies, etc.

Aquí és on arribem a un dels punts més importants del protocol, el sistema de transacció d'operacions. Al tractar-se d'un protocol en temps real i distribuït - multitud de persones prenen part en la comunicació - podem patir problemes d'inconsistència de dades. Semblant als problemes de transaccionalitat de bases de dades o bé de sistemes de versió distribuïts - git - el protocol de google wave també defineix la praxis que cal dur a terme en el seu model d'operacions

El protocol descrit aquí necessita d'un conjunt d'actors per poder-lo dur a terme. L'arquitectura de google wave està basada primerament en l'anomenat wave server i el wave client. La federació de diferents wave servers ens permet la interacció de diferents grups d'usuaris que formen part d'una onada però que estan adscrits a diferents servidors. Cada wave server és propietari de les onades iniciades pels usuaris que formen part d'un servidor i s'intercanvien la informació de les diferents wavelets mitjançant el protocol i les operacions de transformació explicades anteriorment.

Google Wave preveu ja de forma inicial dues formes d'ampliar de forma fàcil l'ús d'aquesta tecnologia. Les extensions i la incrustació - embed.

Mitjançant les extensions - programes en python o java de moment - podem incorporar nous pluguins al wave server. Justament l'actual implementació interna de Google ja ens permet - mitjançant un compte d'usuari per desenvolupament - pujar les nostres pròpies extensions al seu servidor perquè aquestes puguin interactuar en les diferents comunicacions. L'exemple del traductor Roxy que es pot veure a la presentació n'és una prova empírica de la seva utilitat.

Però si volem estendre o mes aviat obrir el ventall de possibilitats de l'usuari final disposem de la incrustació. A la presentació podem veure com el sistema de blogs de google - blogspot - esdevé un usuari més en les diferents comunicacions.

Què i com serà lliure ?

Aquesta pregunta vaig estar repetint-la dins meus fins a altes hores de la matinada. Que significava aquella frase que havia llegit en molts posts que aquesta infraestructura seria lliure. Alliberarien el servidor ? només el protocol ? I el client ? quina llicencia utilitzarien ? etc

Finalment i després de passajar-me per el grup de discussió del protocol vaig poder llegir per part d'un desenvolupador de google la informació necessària per a poder començar a extreure conclusions : l'actual implementació té fortes dependències sobre L'arquitectura de google - bigtable, gfs ..- però esperem que a finals d'anys poguem alliberar una implementació del servidor que serveixi com a referència

D'aquesta frase se'n extreu que si, que la comunitat disposarà d'una implementació lliure que podrà modificar, copiar o fer-ne el que vulgui. A Google li interessa que la comunitat pugui des d'un bon principi tenir un producte més o menys estable - el temps dirar - per a poder federar el màxim conjunt d'usuaris - empreses ? - a la seva xarxa mitjançant el nou protocol. Però, i les extensions del servidor ? Podrem disposar per exemple del traductor Roxy ? Crec i sóc de l'opinió que hi haurà tot un conjunt de eines que no seran alliberades per part de Google, aquestes seran en un futur les que definiran la qualitat d'un o altre producte.

També caldrà saber que passa amb el client, si l'actual implementació - totalment depenent de html5 - serà alliberada o bé s'esperarà a que la comunitat tingui la capacitat de treure a la xarxa clients que suportin aquest nou paradigma. Crec sincerament que aquest no serà un element crític i no tardarem a veure els primers clients en format consola - ncurses - que donguin suport a la connexió de servidors wave.

Pel que respectes a la llicència, haurem de veure si al final es decantant per GPL o bé quelcom més flexible - que no vol dir millor :) - com ara Apache Liscence.

Posted at: 17:46 | category: /misc | Comments (0)


Name:


E-mail:


URL:


Comment: