martes, 4 de enero de 2011

Notas 1

En esta publicación cubro:

  • Generalidades de GW
  • GW API design principles
  • Robots
  • Waves a través de la web
  • GW a través de XMPP
  • Transformaciones operacionales
Ahí perdón por faltas de ortografía o comentarios random.

Notas de Google Wave

  • Tres vertientes principales

    • Producto GW -> orientado a end users

    • GW platform -> orientado a desarrolladores por medio de API's

    • GW Protocol -> orientado a proveedores de wave

  • Términos importantes:

    • Waves

    • Wavelets

    • Blips

    • Robots

    • Gadgets

  • Ejemplo de BPMT

    • Herramienta muy similar a la que está haciendo Everardo.

    • Herramienta colaborativa en donde se puede contribuir a elaborar un diagrama de flujo.

    • No entendi de donde vino la aplicación del final, ¿es algo que ya existía? ¿Acaso en Google Wave se hizo un archivo del mismo formato que el de ellos?

  • Fireside chat google wave team

    • Robots pueden vivir en donde sea en la web.

    • Nuevo API, Wave data API

  • Google wave APÍ design principles.

    • Habla de tasky, un robot que sirve como google wave extension. Ayuda a identificar y registrar tasks.

    • La extension en este caso es un robot (no sé si siempre sea así)

    • Una de las cosas que se pueden hacer con wave es integrarlas con otro sitio de internet. Se recomienda que si lo haces eso, el "look and feel" del sitio se debe reflejar en la wave extension.

    • En el caso contrario, es decir, cuando el wave no tiene que ver con un sitio. Es probablemente mejor usar el UI típico del wave interface.

    • Hay un wave UI API. Para hacer frames, botones, dialogos, etc.

    • SUPER IMPORANTE NOTAR que un gadget DEBE ser fácil de usar. Si el usuario no puede hacerlo funcionar los priemros dos minutos, se hartará y lo dejará.

    • Qué es un gadget y por qué lo usan las personas, aquí se hablan de API's de diseño y API's de edición.

      • El punto de los gadgets es representar información textual a visual.

      • Múltiples usuarios editando texto al mismo tiempo, se debe paralelizar como en la historia del incidente del t-rex.

      • El gadget debe representar el paralelismo dando retroalimentación a todos que lo estén usando. Por ejemplo, en un juego de sudoku deberíamos saber dónde se encuentran cada personaje.

    • El api (claramente en javascript, jquery) puede distinguir entre view y edit.

    • Al rededor del minuto 25 viene un demo de un programa de diagramación parecido al que está haciendo ever.

    • processwave.org

    • Robots

      • Participantes automatizados en los waves.

      • Los bots identifican comportamientos y patrones de los usuarios humanos y pueden actuar en base a eso. Ejemplo: preguntar algo y que bot responda con definiciones de wikipedia.

      • El robot actua en base a estímulos o detectando comportamiento (esto es parte de API), event oriented programming. El DocChangeEvent es el más disparado de todos los eventos, cada 4 caracteres se lanza.

      • Deberían de poder reconocer lenguaje natural, entre menos syntax se use para los robots, mejor.

      • Que no sea destructivo, que no quite nada de lo que el usuario escribió. Puede agregar cosas, pero no quitarlo.

  • Waving across the web

    • Un wave embebido es un wave independiente. Éstos se encuentran dentro del mismo google wave o fuera de él.

    • Puedes mandarlos a llamar con un código de javascript muy sencillo. El wave que se carga puede ser modificado con CSS fácilmente.

    • Los waves que se cargan están ligado a otros en específico. Otros usuarios pueden venir a editarlo y eso se refleja en tu "account" de google wave. Todos los waves tienen un wave ID que vale la pena identificar. Son waves que tienen totalmente todas las funcionales que tienen dentro del sitio GoogleWave

    • Se permiten también los embebidos anóminos.

    • MyEmbed permite crear waves desde cada sitio poniendo a un propietario del wave en lugar de un wave ID. Esto lo que hace es automatizar la creación de los waves.

    • Existen elementos "Wave this" que se me hicieron muy parecidos a los de facebook this o tweet this.

    • Nota: hay un gadget que te permite ver previews de lo que puedes desarrollar

    • Google accross the wave no solo se refiere a los waves que se pueden ver dentro de todos lados. POr ejemplo, el robot que hace demos de los gadgets, al momento que escribes el código lo manda a appspot y lo carga instantáneamente. También está el ejemplo del wiki que crea un wiki a desde los waves.

    • OAuth es un sistema de autentificación medio complicado. Se usa cuando un robot te busca a ti en lugar de tu incluirlo en tu wave. Es decir, cuando el robot se quiere agregar a tu wave. La autentificación es para evitar que sean robots los que estén spameando.

  • Google wave protocol over xmpp

    • Wave users access all waves through their wave provider. If a wave has participants from different wave providers, their wave providers all maintain a copy of the wave and serve it to their users on the wave. The wave providers share updates to the wave with each other using the wave federation protocol which we describe below. For any given wave user, it is the responsibility of the wave provider for the user's domain to authenticate the user (using cookies and passwords, etc) and perform local access control.

    • El federation host es el que se encarga de que se cumplan todas las funcinoes de un wave a nivel local, y tambien se encarga de enviar la informacion a otros wave providers en caso de existirlos.

    • El federation remote se encarga de recibir toda la informacion de waves remotos, es decir, que se encuentran en otro wave provider. Tambien cualquier cosa que se agregue al wavelet desde su servidor, se encarga de mandarlo al provider que tiene la wave.

    • Los mensajes usan el protocolo de XMPP, los updates son por medio stanzas.

    • Los update stanzas los maneja el host, los service stanzas los maneja el remote.

  • Trasnformaciones operacionales

    • Las transformaciones operacionales fueron originalmente desarrolladas para soportar un amplio rango de funcionaldiades de colaboracion.

    • Principalmente se centro en el mantenimiento y control de concurrencia en la edición colaborativa de "plain documents".

    • Esta es la tecnología detrás de los proyectos Google Wave y Google Docs.

    • Las transformaciones operacionales se basan mucho en las mismas normas de concurrencia que vimos en Sistemas Operativos. Cada vez que se haga una operación se debe de hacer sobre la versión que se empezó y no sobre la actual (a menos que la versión no haya cambiado en el transcurso). Después de eso se debe realizar un proceso de resolución de conflictos y unirlo con el documento actual.

    • Hay cuatro modelos de consistencia:

      • Modelo CC (Causalidad y Convergencia)

        • Asegura que las operaciones transformacionales se van a realizar en el mismo orden que se fueron haciendo las ediciones. Cuando dos operaciones no son causalmente dependientes las operaciones se están haciendo de manera concurrente. Al final, la convergencia se debe de dar y ésta debe ser reflejada en todas las instancias del documento (en todos los sitios que están observando). Usa el algoritmo de Vector Clock.

      • Modelo CCI (Causalidad Convergencia Intencion)

        • Se parece mucho al anterior, sin embargo se le agrega la intencion. Se dice que la conservacion de la intención es mantener la misma intención que se estaba tomando en cuenta al momento de realizar una operación O, manteniendo el mismo efecto de dicha operación tras converger los documentos.

      • Modelo CSM (Causalidad, Efectos de una única operación (Single-operation effects), Efectos de las operaciones múltiples (Multi-operation effects)

        • Causalidad: Misma definición de las anteriores.

        • Single-operation effects: El efecto causado al ejecutar cualquier operación en cualquier estado se mantiene al momento del estado de generación.

        • Multioperation-effects: El effecto de operaciones individuales (pero separadas) se mantiene al realizar convergencia.

      • Modelo CA

        • El modelo anterior (CSM) y según yo todos los modelos, implican que se mantenga un registro del orden absoluto de todas las operaciones. Esto implicaba que por cada operación que se realizara se tenía que crear un objeto, agregando complejidad de espacio. Adicionalmente, la unión de los objetos (por que esatban en orden absolutos) creaba complejidades de tiempo. Por este motivo se creó el modelo CA, de Causalidad y Admisibilidad.

        • Causalidad: misma definida en las anteriores

        • Admisibilidad: Las operaciones no deben violar las operaciones de un orden previamente establecido.

        • Una nota importante es que las condiciones impuestas por los criterios de admisibilidad tienen más prioridad que el orden en sí. Esto elimina la necesidad de tener un índice del orden de las operaciones.

    • Estructura del sistema OT

      • La estructura de un sistema OT es uno de muchos componentes. Parte de las estrategias que conllevan la construcción de un sistema OT están orientadas a separar los algoritmos de alto nivel (de control de transformaciones) de los de bajo nivel (funciones de las transformaciones).

      • Los algoritmos de control de transformaciones se encargan de determinar:

        • Cuales son las operaciones que deberían de ser trasnformadas cuando llegan nuevas operaciones.

        • El orden de las transformaciones.

      • Estos dos criterios se cumplen usando un set de funciones de transformaciones de bajo nivel.

      • Existe una propuest alterna para acercarse a la estructura de los sistemas OT, la estructura es la siguiente:

        • Preservación de la causalidad

        • Preservación de la admisibilidad

      • Conservar estos dos criterios asegura que se cumpla la unión de los datos concurrentes. Como hay un control de trasnformaciones, se usan las funcinoes de trasnformación para asegurar la correctez de los datos.

    • En cada sistema OT, existen dos modelos tras bambalinas. El modelo de datos, que define como está organizada la información y como está indexada para las operaciones. Y el modelo operacinoal, que define las operaciones que se pueden hacer. (Ver ejemplo de wikipedia)

    • Existen dos enfoques princopales para los modelos de operación en un sistema OT:

      • Genérico: Tres funciones primitivas: insertar, borrar actualizar. Se puede usar para muchas aplicaciones, ya que son funciones genéricas.

      • Específicas de aplicación: Específicas para cada aplciación, no pueden ser reusadas. Para m operaciones, se necesitan mxm operaciones.

    • Existen dos funciones específicas de las Operaciones Transformacionales (ver detalle en wikipedia)

      • Trasnformación de inclusión o transformación hacia adelante.

      • Transformación de exclusión o trasnformación hacia atrás

    • Lo de las propiedadesde convergencia no lo voy a apuntar, eso está en el artículo de wikipedia.

    • wosu que difícil está lo último, no entendo casi nada, ocupo explicación