lunes, 16 de marzo de 2009

Test of Independent Invention (traducido)

Hola holita procrastinadorcitos. A ver si leemos menos y trabajamos más!

En http://www.w3.org/DesignIssues/Evolution.html#ToII he encontrado una explicación que Tim Berners-Lee hizo en 1998 de un principio de diseño llamado "Test of Independent Invention", para la que se utiliza un suculento ejercicio de analogías históricas. Dicho principio de diseño puede aplicarse favorablemente en unos cuantos ámbitos, y creo que también en el del software libre.

(spoiler)
En resumen, explica que los sistemas deberían diseñarse para que pudieran integrarse sin problemas con otros sistemas conceptualmente iguales, mediante tan sólo un esfuerzo incremental. (aunque no lo logremos al 100,00%; pero esa debería ser la dirección de nuestros esfuerzos)

(opinión personal)
Por si no es evidente, esto me recuerda a las N categorías en las que actualmente M(i) proyectos de software libre incompatibles entre ellos, compiten por el 0.001% del mercado, con dos efectos reales:
1º) Que empresas que intentan hacerte pagar por respirar secuestren a los usuarios (y el dinero de quien les paga las licencias, que en el caso de la administración pública, eres tú o tus padres).
2º) Retrasando en unos casos, e impidiendo en otros, que la innovación llegue realmente a los usuarios.

Y ahora, sin más preámbulos, (mi intento de traducción de) Test of Independent Invention, de Tim Berners-Lee. (aplausos)

nota: en adelante mis paréntesis van en cursiva

El test de invención independiente es un experimento mental que prueba un aspecto de la calidad de un diseño. Cuando diseñas algo, haces un número de decisiones de arquitectura, como cuántas ruedas tiene un coche, y que se utilizará un arco entre los pilares de la bóveda. Haces otras decisiones arbitrarias como el color del coche, el lado de la carretera por el que irá todo el mundo, abrir el huevo por la parte ancha o estrecha.

Supón que otro grupo está diseñando algo del mismo tipo, abordando el mismo problema, en algún otro sitio. Ni tú les conoces ni ellos te conocen, pero suponiendo que son tan listos como tú, harán las mismas decisiones importantes de arquitectura. Es lo que puedes esperar si crees que esas decisiones son lógicas. Imagina que tienen la misma filosofía: es en gran parte la filosofía que estamos probando. Sin embargo, imagina que hacen todas las decisiones arbitrarias de forma diferente. Usan complemento a 7 [el de siempre es el "complemento a 2"]. Conducen por el otro lado de la carretera. Usan boyas rojas en el lado de estribor, y usan 575 lineas en las pantallas de sus televisores.

Ahora imagina que los dos sistemas funcionan (cada uno por su lado; localmente), y teniendo éxito, crecen y crecen. Después de un tiempo, se encuentran. De repente os encontráis. De repente, la gente quiere trabajar a través de los dos sistemas. Quieren conectar dos sistemas de caminos, dos sistemas de telefonía, dos redes informáticas, dos webs [en el sentido de World Wide Web, eso que agrupa todos los "sitios web"]. ¿Qué ocurre?

Al principio intenté hacer que la WWW pasase el test. Supón que alguien había (y fue bastante así) inventado un sistema World Wide Web en algún otro lugar con los mismos principios. Supón que le habían llamado Multi Media Mesh y que la basaraon en Media Resource Identifiers, el MultiMedia Transport Protocol, y un Multi Media Markup. Después de unos años, la Web y la Mesh se encuentran. ¿Qué ocurre?

* Una batalla gigante, que lleva al abandono de proyectos, conversión o pérdida de datos?
* División del mundo por una comisión fronteriza en dos comunidades diferentes?
* Integración sin problemas con sólo esfuerzo incremental?

(ver también WWW y Universalismo Unitario)

Obviamente estamos buscando la última opción. Por suerte, podríamos extender inmediatamente las URIs para incluir "mmtp://" y extender las MRIs para incluir "http:\\". Podríamos hacer puertas de enlace, y configurar los mejores navegadores inmediatamente para usar una puerta de enlace cuando encontrasen una URI del primer tipo. El espacio URI es universal: cubre todas las direcciones de todos los objetos accesibles. Pero no tiene que ser el único espacio universal. Universal, pero no único. Podríamos añadir MMML como un nuevo tipo MIME. Y así sucesivamente. Sin embargo, si hubiéramos pedido que todos los servidores de la Web se sincronizasen con un único servidor maestro [el original es "master lock server", pero no sé traducirlo] en Waltdorf, la Mesh hubiera pedido sincronización a través de un servidor maestro en Melbourne. Hubiera fracasado.

Ningún sistema pasa completamente el ToII - siempre hay algún problema en la conversión.

No sólo un ejercicio mental

A medida que la Web se convierte en la base para construir tantas y tantas aplicaciones, el fenómeno de la invención independiente ocurrirá una y otra vez [El artículo es de 1998, el año en que nació Google. Desde entonces no han dejado de sucederse los ejemplos. flickr vs picasa, facebook vs tropecientasmil, todas las empresas que han acabado absorbiendo google, yahoo!, microsoft, ..., y un montón de ejemplos tanto o más relevantes que os vendrán a la cabeza]. Tenemos que construir tecnología que haga que los sistemas pasen el test fácilmente, y así sobrevivir en la vida real en un mundo en constante evolución [esto de la "constante evolución" suena a mentira porque se usa en marketing, pero aún así es cierto].

Si los sistemas no pueden pasar el TOII, sólo podemos conseguir interoperabilidad mundial cuando uno de los diseños originales ha ganado originalmente [no entiendo qué quiere decir con "ganar originalmente"] a los demás. Esto puede pasar si nos sentamos todos juntos como un comité mundial y hacemos un diseño "top down" de todo antes de empezar. Esto funciona para una idea nueva pero no para la automatización de algo que, como la farmacia o el comercio, existe desde hace siglos y se está simplemente representado en la Web Semántica. Por ejemplo, la comunidad de bibliotecas ha tenido problemas sin fin en el intento de acordar un solo formato de tarjeta de biblioteca (MARC record) en todo el mundo.

Otra forma en que puede ocurrir es si un sistema es abandonado completamente, llevando a la pérdida completa del esfuerzo puesto en él. Cuando al final de los años 80 Europa abandonó finalmente su juego de protocolos ISO para redes informáticas porque simplemente no podían interoperar con Internet, se perdió un montón de trabajo. Muchos problemas, resueltos en Europa pero no en USA, (incluyendo las direcciones de red de más de 32 bits) tuvieron que ser resueltos otra vez en Internet con un gran coste. En todo el mundo, la gente ha cambiado de formato de procesador de texto una y otra vez pero sólo a cambio de perder acceso a enormes cantidades de información anterior. El test de invención independiente no es sólo un experimento mental, está ocurriendo continuamente.

1 comentario: