martes, 14 de agosto de 2012

¿Podrá Ward hacerlo de nuevo? Conozcan el Smallest Federated Wiki (+videos)

Ward Cunningham

Ward Cunningham es una especie de leyenda viviente. Es uno de los pioneros de los patrones de diseño, miembro prominente de la comunidad Smalltalk, colaborador de Kent Beck en la definición de Extreme Programming (XP), firmante del Manifiesto Ágil, co-inventor de las tarjetas CRC (clase-responsabilidad-colaboración) e inventor de FIT y fundamentalmente, la wiki.

Así es, Ward inventó muchas cosas que están dentro del ámbito de nuestra profesión, el desarrollo de software, pero la wiki, que fue pensada inicialmente para construir documentación de manera colaborativa entre desarrolladores, llegó mucho más allá, y es uno de los hitos que ha transformado nuestra cultura, a partir del impacto de Wikipedia, siendo en gran parte responsable de todo el movimiento crowdsourcing.

Pero Ward no se queda quieto y sigue permanentemente experimentando y buscando formas mejores de hacer las cosas. Su último proyecto vuelve sobre los pasos de la wiki, causalmente, y se llama Smallest Federated Wiki (la más pequeña wiki federada).

Como verán, en su página personal de GitHub hay una larga serie de videos explicando el concepto, que pone foco en hacer que la wiki sea aún más sencilla de editar, aprovechando capacidades de los navegadores modernos y HTML5 como drag & drop, uso de JSON como soporte, etc, para permitir una edición más fluida, pero también la "federación" de contenido. Esto significa que se puede tomar contenido de una wiki y ponerlo en otra, pero no es solamente una forma de réplica, sino más bien algo similar a los "forks" de GitHub, donde cada copia es libre de crecer de manera independiente, sin afectar a su fuente original, pero pudiendo contribuir cambios seleccionados, si la fuente los acepta.

La mejora manera de entender el modelo, que tiene un lado servidor que se encarga del almacenamiento de las páginas y la colaboración entre servidores similares, y un lado cliente, que permite editar y modificar el estado, y federar el contenido de manera visual.

La documentación para usuarios finales de cómo utilizar el lado cliente está disponible -por supuesto- como un wiki federado.

Por supuesto todo el código es abierto y está en GitHub. La implementación de referencia del servidor (hay algunas otras en marcha) está escrita en Ruby utilizando Sinatra, mientras que la parte cliente está escrita en CoffeeScript.

A continuación, el primero de los vídeos para despertar su curiosidad (en inglés; ~2 minutos). Recomiendo ver el resto de la serie, que sigue aumentando con el tiempo.