17 julio 2009

Entrevista a Mateo Matachana (OpenRipple)

Hace un tiempo hablábamos de OpenRipple y su concurso a los Sourceforge Community Choice, pues bien, OpenRipple ha sido designado finalista ! Como pequeño homenaje al proyecto y para apoyar la candidatura, Mateo Matachana nos ha concedido una entrevista donde habla de OpenRipple 'in deep'

Podéis votar el proyecto aquí

Hola Mateo, primero de todo preséntate con tus propias palabras, quien eres, a que te dedicas y en que proyectos has colaborado además de OpenRipple

Soy Mateo Matachana López y me dedico a estudiar Ingeniería Técnica de Telecomunicaciones, especialidad Telemática. Llevo bastantes años dentro del mundo del software libre, de hecho, a este mundo le debo el haber aprendido a programar hace ya unos cuantos años. Gracias a él pude tener un ordenador con un conjunto de herramientas decentes (Hace unos 6 años que fue cuando empecé, las únicas herramientas que podía obtener, conocer y jugar con ellas eran software libre). En esa época leí mucho código disponible libremente en la red tanto de programas completos que eran software libre como de ejemplos de código disponibles en páginas personales, concepto tan web 1.0, alojadas en geocities o en La Web del Programador .com.

Gracias a ese proceso de aprendizaje autodidacta me empapé de los valores del software libre y al poco empecé a usar GNU/Linux. Descubrir GNU/Linux fue una de las mejores experiencias que he tenido. A partir de ahí se abrieron ante mi un mundo de PHP's, GCC's, Apaches y demás indios que hicieron que cambiase mi forma de ver esas tecnologías a pesar de venir usańdolas en Windows. Y es que de trabajar con gcc y vim directamente a trabajar con Dev-Cpp, por ejemplo, hay un mundo. No cambiaria el vim ahora mismo por nada del mundo.

OpenRipple es el primer proyecto en el que libero código de forma seria.
Antes de OpenRipple he diseñado páginas web y empecé un pequeño proyecto hace 3 años para tratar de crear un instalador universal, que te permitiese llevar paquetes y sus dependencias en un CD o que te permitiese generar solo un paquete y poder instarlo en cualquier sistema operativo. En aquellos días usaba OpenSuSE pero cuando probé Debian (Mi gran amor digital) vi que mi proyecto era innecesario existiendo apt y proyectos como Autopackage (Software libre) o BtiRock (Privativo). A pesar de que llegué a liberar en Sourceforge algo de código, no recuerdo muy bien que fue de ese proyecto. En la actualidad estoy escribiendo un sistema de P2P anónimo llamado G3C y del que estoy liberando código en github, aunque no le presto mucha atención. Por otra parte, estoy escribiendo también un CMS en PHP y un cliente de correo electrónico en C/GTK+. De estos dos no he liberado nada de código todavía. Mi proyecto prioritario y al que le dedico más horas es OpenRipple.

Podrías explicarnos de una forma mas concisa que es OpenRipple y como va a cambiar el mundo

OpenRipple va a ser un amigo. En la vida real, cada uno es especialista en un área determinada. Yo mismamente, se más de Asturias que es donde vivo que el resto de los lectores de SecurityByDefault (Salvo posiblemente los lectores asturianos o que hayan estudiado algo de Asturias, pero bueno ese es otro tema...). Los lectores extremeños son expertos en Extremadura, mientras que yo no se mucho más que un poco de Cáceres y Mérida. En la vida real, si yo quisiese ir a Extremadura le preguntaría a un amigo mío (experto por el simple hecho de conocer más que yo de un tema) todas mis dudas acerca de esa región y si ese ficticio amigo desease venir a Asturias me preguntaría a mi (experto por
la misma razón) todas las dudas acerca de esta región donde vivo.

Este es el fundamento de un buscador distribuido (y de muchas otras redes distribuidas), el hecho de haber varios nodos en la red especializados en algo en concreto que son interrogados por el resto de nodos. Un nodo se dice experto no porque sepa todo acerca de un mismo tema sino porque sabe más que la media. Los nodos pueden ser expertos en
una forma no relacionada con materias de conocimiento, por ejemplo puede ser experto en hashes, como sería el caso de determinados sistemas DHT o la red FreeNet. En una red como FreeNet, para facilitar el enrutamiento de las peticiones, los nodos son expertos en hashes criptográficos. Poco a poco se van especializando en un alojar ficheros que corresponden a un determinado rango de hashes, por ejemplo desde 0xAABBCCDDEEFF hasta 0xAABBDDDDDD. Evidentemente dentro de ese rango puede caber una sencillita página web para mostrar las fotos de las vacaciones y un tomo de la enciclopedia británica, por tanto, en FreeNet, especialización en un hash no significa especialización en un tema.

En OpenRipple todavía no hemos empezado a implementar la parte distribuida: cómo determinar las especializaciones, cómo poner en contacto a los nodos, cómo comunicar a esos nodos, etc. así que no puedo decir que va a significar especialización en nuestro caso, pero como en todo sistema distribuido la va a haber.

El hecho de ser abierto y de que nos centremos en una política de APIs va a permitir a OpenRipple que las fuentes generadoras de conocimiento estén lo más cerca posible de los nodos que conforman la red. Así, en un futuro va a ser trivial especializar de manera casi automática un nodo, ya que todo el contenido generado estará especializado en ese tema. Por ejemplo, si somos editores de un periódico e integramos la tecnología Ripple con nuestra web según vamos modificando su contenido, estamos especializando rápidamente nuestro nodo en noticias generalistas.
Además, estamos ahorrando ancho de banda de nuestro servidor al evitar que sea continuamente indexado: somos nosotros los que realizamos ese trabajo, podemos prohibir en robots.txt a todas las arañas y aún así no desaparecer del buscador, ya que estaríamos ofertando un índice dispuesto a ser buscado a través de nuestro nodo Ripple. El desarrollo
actual de Ripple no permite hacer eso, pero poco a poco llegará a permitirlo.

Gracias a esta tecnología podremos crear de manera muy sencilla complejas redes de conocimiento, permitiéndonos compartir de una forma abierta, interoperable y neutral toda la información que estemos dispuestos a compartir: tomas de datos de instrumentos, pdfs, documentos web, documentos odt, etc. sin necesidad siquiera de que estos se hayan
subido a la web. Además, no importa el formato en el que esté la información, gracias a la potente arquitectura de plugins de Ripple se puede hacer que procese cualquier formato, bien usando determinados plugins ya desarrollados combinados con nuevos desarrollos, bien desarrollando desde 0 una nueva cadena de plugins para un determinado formato.


Últimamente se ha puesto de moda el 'Bad SEO' o dicho de otra forma, posicionar enlaces maliciosos en buscadores como Google, uno busca por 'Britney Spears' y entre los primeros enlaces resulta que han colado un link a una web con código malicioso. ¿Habéis pensado que, cuando se popularice OpenRipple, será target de este tipo de ataques?

Malos amigos, siguiendo con el ejemplo de antes, siempre ha habido. Una de las motivaciones para crear OpenRipple fue precisamente esa, no propiamente el Bad SEO sino el Money SEO, ahora mismo los resultados de los buscadores principales actuales quedan subordinados a intereses económicos y los primeros resultados se los llevan quienes más pagan.
Antes mencionaba que OpenRipple era como un amigo, en un futuro se van a poder establecer redes de conocimiento a las cuales pertenecerá un nodo. Será su administrador el que añada o no determinados nodos. Creo que ya esta simple técnica va a evitar en gran medida fenómenos como el Bad SEO.

Por otra parte, OpenRipple es una tecnología muy innovadora. A día de hoy, los buscadores principales intentan indexar un todo, mientras que Ripple busca una suma de partes. Google solo hay uno y Google para ofrecer resultados precisos debe conocer toda la web, si no siempre va a existir determinado conocimiento que pase por alto. Un nodo OpenRipple
no quiere conocer toda la web, tan solo quiere conocer cosas de su especialidad. A través de la suma de especialidades, llegamos a la totalidad de la web. Pero, y aquí viene lo diferenciador, para que un ataque de Bad SEO tuviese incidencia debería de entrar en un nodo en el que tu confíes. Y eso más difícil que un buscador tradicional, ya no basta con crear una página ad-hoc y usar determinadas técnicas (Pagar siempre es la más efectiva) para posicionarla, ahora tienes que aparecer dentro de un nodo especializado. Y se abren dos posibilidades:
1.- Que la web este especializada en un determinado tema, entonces no habría diferencia entre un ataque a una web normal especializada en ese tema para hacer que esta aloje código malicioso (Por ejemplo, un ataque por XSS que incluya Javascript que te instale un troyano a través de una vulnerabilidad en tu navegador) o crear una para lanzar un ataque de este tipo.
2.- Que el nodo en el que entre la web esté especializado en Bad SEO. ¿Quién va a confiar en un nodo especializado en Bad SEO?

Creemos, tanto Oriol como yo que debido a las características de Ripple este efecto va a tener menor incidencia que en los buscadores tradicionales.