Pieza independiente
Kademlia, 2002 · Git, abril de 2005
Lo que sí se repartió
I
Conviene terminar esta serie reconociendo que el panel de la derecha se puede construir, porque se ha construido dos veces y las dos siguen funcionando.
El primer caso empezó como un apaño. BitTorrent, publicado por Bram Cohen en 2001, repartía el archivo entre quienes lo descargaban — cada uno servía a los demás los trozos que ya tenía, pero necesitaba un servidor que dijera quién tenía qué. Ese servidor era el rastreador, y era el punto por el que todo se podía apagar. Se apagó muchas veces.
En 2005 se le quitó. En su lugar se puso una tabla de dispersión distribuida, basada en un trabajo que Petar Maymounkov y David Mazières habían publicado en 2002 y al que llamaron Kademlia.
La idea es de una elegancia que cuesta exagerar. A cada nodo y a cada archivo se le asigna un identificador de ciento sesenta bits, y la distancia entre dos identificadores se define como la disyunción exclusiva entre ellos [la operación booleana, bit a bit]. No es una distancia geográfica ni tiene nada que ver con la red física; es aritmética sobre los nombres.
Con esa definición, cada nodo necesita conocer bien a sus vecinos cercanos y cada vez peor a los lejanos, y le basta con guardar del orden del logaritmo del total. Para encontrar algo, pregunta al que tenga más cerca y éste le devuelve a quien conozca aún más cerca. Cada salto reduce la distancia a la mitad.
II
Lo que eso produce en la práctica es un sistema sin ningún registro central donde cualquiera encuentra cualquier cosa en una docena de preguntas.
No hay servidor que apagar porque no hay servidor; no hay lista de miembros porque cada nodo conoce a unos cientos y ninguno conoce el conjunto. Un nodo que entra sólo necesita saber la dirección de cualquier otro para empezar a situarse, y a partir de ahí se coloca solo.
Lleva encendido desde 2005 sin interrupción conocida. En un momento dado hay del orden de varios millones de nodos simultáneos, que entran y salen sin avisar, con conexiones domésticas de calidad variable y sin ninguna coordinación.
Es, con bastante probabilidad, el sistema genuinamente distribuido más grande que ha funcionado nunca de forma continuada. No lo mantiene ninguna organización. No tiene presupuesto ni tiene sede, y la razón por la que se diseñó así no fue ideológica sino defensiva — lo que no tiene centro no se puede denunciar ni embargar.
III
El segundo caso es el que nos afecta a diario, y nació de una pelea por una licencia.
El núcleo de Linux se desarrollaba desde 2002 con una herramienta comercial llamada BitKeeper, que su autor cedía gratis a los proyectos libres. En abril de 2005 esa cesión se retiró, por un desacuerdo sobre la ingeniería inversa que alguien había hecho del protocolo.
Linus Torvalds escribió el sustituto en unos días. El criterio de diseño que declaró era que la herramienta no debía tener servidor; cada copia del repositorio tenía que contener la historia entera, firmada y verificable, y dos copias cualesquiera tenían que poder sincronizarse entre sí sin pasar por ninguna tercera.
Eso es exactamente el panel de la derecha. Cada clon es un nodo completo, cualquier par de nodos puede intercambiar, no hay jerarquía en el protocolo y no hay nada que un nodo tenga y otro no pueda obtener.
Y funciona. El núcleo de Linux se desarrolla así desde 2005, con miles de personas, por correo electrónico y con árboles que se fusionan unos en otros sin que ninguno sea técnicamente el principal.
IV
Y aun así, todo el mundo empuja al mismo sitio.
La herramienta más deliberadamente descentralizada que se usa a diario opera, en la práctica, contra un servidor que una empresa compró en 2018 por siete mil quinientos millones de dólares. Cuando ese servidor se cae, se detienen las cadenas de integración de medio mundo — y se detienen aunque el código esté íntegro, completo y firmado en el disco de cada desarrollador. La propiedad que Torvalds consideraba irrenunciable sigue ahí, intacta, y no sirve de nada ese día.
Vale la pena preguntarse por qué, porque no fue por ignorancia ni por pereza. Quienes usan Git saben perfectamente que no lo necesita.
Lo que pasa es que Git reparte los datos y no reparte nada más. No tiene incidencias, ni revisiones, ni discusión, ni permisos, ni identidad, ni manera de que un desconocido te encuentre. Todo eso —que es el trabajo, y no el almacenamiento— se quedó fuera del protocolo, y alguien lo construyó encima y lo ofreció gratis.
Ahí está la lección de la serie entera, y no tiene nada de irónica. La parte difícil nunca fue distribuir el archivo: eso lo resolvieron Kademlia en 2002 y Git en 2005, y lo resolvieron bien. La parte difícil es encontrarse, acordar y confiar, y para eso un sitio donde estén todos es imbatiblemente cómodo.
Conviene además no idealizar el caso que sí funciona. La tabla distribuida tiene sus propios problemas y son conocidos: un nodo malicioso puede fabricarse identificadores a medida para colocarse cerca de una clave concreta y responder mentiras; la red es observable, de modo que cualquiera puede listar quién está pidiendo qué; y el arranque en frío necesita conocer a alguien de antemano, lo que en la práctica significa una lista de nodos semilla que alguien mantiene.
Ninguno de esos defectos la ha tumbado desde entonces. Pero la frase honesta no es que no tenga centro: es que tiene varios puntos blandos, repartidos, y que ninguno de ellos ha resultado ser suficiente para apagarla.
V
Sesenta años después del informe de Baran, el balance se puede escribir en dos líneas.
El panel de la derecha es construible, se construyó y sigue funcionando: hay varios millones de nodos moviéndose en una tabla sin dueño mientras se lee esto. Y el panel del medio es el que usamos, no porque la técnica fallara, sino porque concentrar sigue siendo más barato y más cómodo en cada paso, uno por uno, para cada quien que lo decide.
No hay en ninguno de estos ocho textos un villano. Hay un operador que cumplió una orden, una empresa de teléfonos que defendió su negocio, un condado de Virginia que ofreció suelo barato, un edificio de 1930 con buenos conductos y una organización sin ánimo de lucro que regaló certificados.
Cada una de esas decisiones fue razonable por separado, y varias de ellas fueron además buenas. El dibujo que forman todas juntas no se lo propuso nadie, y no hay ninguna reunión en la que se aprobara.
Eso es lo que hay que mirar en la figura de 1964. No es que alguien nos quitara el panel de la derecha. Es que nadie lo eligió nunca, porque nunca hubo un sitio donde se eligiera.
Baran, que dedicó dos años a calcular cuántos enlaces hacen falta para sobrevivir a una guerra, no llegó a plantearse esa pregunta. No era la suya.