Urbit: la privacidad digital según Curtis Yarvin
¿Qué pasaría si fueramos dueños de toda nuestra vida digital sin tener que hacer esfuerzos extra para lograrlo? Esa es la promesa de Urbit, un proyecto creado por Curtis Yarvin en 2002, que desde entonces se viene cocinando lentamente en las sombras. Así como crypto es el "parche" de internet que viene a corregir el problema de la centralización y falta de privacidad en las transacciones de información, Urbit apunta a corregir el stack entero.
Urbit
Urbit es el proyecto principal de la Tlon Corporation, que lleva su nombre en honor al cuento Tlon, Uqbar, Orbis Tertius, de Jorge Luis Borges. Es un Sistema Operativo Virtual –necesita de un SO subyacente para existir, como Windows, Linux o MacOS– hecho de cero, completamente descentralizado y privado. Cada computadora recibe el nombre de "nave" y funciona como servidor propio, todas las naves se conectan entre sí a través de una red peer-to-peer (P2P) llamada Ames. Para identificarse dentro del sistema, cada nave tiene un ID propio que es un NFT dentro de la red Ethereum; y este modelo de identidad –diseñado también por y para Urbit– se llama Azimuth.
La filosofía y razón de ser de Urbit se basa en que toda nuestra vida digital está construida sobre cimientos que apuntan a que el usuario no tenga control total sobre sus datos. Todos usamos sistemas operativos que tienden a la centralización o dependen de conocimientos técnicos muy altos y el uso de herramientas externas complejas para llegar a tener privacidad real (como Tails, Qubes OS o algunas distribuciones de Linux). Para cumplir ese objetivo, Curtis Yarvin decidió reinventar la rueda y, en 2002, comenzó creando Nock.
Nock
Nock, según cuenta la leyenda, fue programado enteramente por un joven Yarvin, y es la base de todo el sistema. Es un lenguaje de programación de bajo nivel, completamente nuevo, definido en una especificación de ~33 líneas de código que describe operaciones funcionales. Estas operaciones son interpretadas por Vere, el entorno de ejecución (o runtime) de Urbit escrito en lenguaje C.
Vere
Vere ejecuta el código, implementando las operaciones de Nock en el sistema operativo subyacente (Windows, Linux, MacOS). Todo lenguaje de bajo nivel como Nock se complementa con un lenguaje de alto nivel más simple, para que los seres humanos normales como nosotros podamos contribuir al sistema y codear nuestras aplicaciones. El lenguaje de alto nivel de Urbit se llama Hoon. En resumen: el lenguaje de alto nivel (Hoon) se compila a lenguaje de bajo nivel (Nock) y el entorno de ejecución (Vere) lo ejecuta.
Hoon
Hoon es, entonces, el lenguaje de alto nivel en el que está construído el mayor porcentaje de Urbit. Es un lenguaje funcional también creado de cero, bastante complejo (pero menos que Nock) y en el que se realiza el 99% de contribuciones de la comunidad. Hay contribuciones a Nock pero son las menos: de hecho, la última fue en 2016.
Arvo / Urbit OS
En Hoon están escritas todas las aplicaciones, así como también la red Ames y el sistema operativo propiamente dicho, que se llama Arvo (o Urbit OS), encargado de gestionar eventos, ejecutar aplicaciones, administrar el estado de la "nave", manejar la interfaz y coordinar los módulos que se encargan de funcionalidades específicas e importantes del sistema (así como Ames es la red P2P, existen otros como Clay, por ejemplo, que se encarga del sistema de archivos -filesystem).
Naves
Cada nave ejecuta su propia copia de Arvo y almacena sus datos (mensajes, archivos, aplicaciones) localmente, sin depender de un servidor centralizado como en aplicaciones tradicionales (WhatsApp, Gmail). Vos sos el dueño de tu nave, tus datos y tu identidad. Tu nave puede servir contenido (como publicar posts, alojar aplicaciones o compartir archivos) directamente a otras a través de la red Ames.
Cómo correr Urbit localmente
Ejemplo práctico de lo que podés hacer con esto: instalás Urbit en tu computadora y creás una nave llamada ~sampel-palnet (los IDs de Azimuth tienen estos nombres). Tu computadora corre Vere, que ejecuta Arvo en tu nave. Usás una aplicación de chat y le enviás un mensaje a otra persona (por ejemplo, ~dolpan-lacfel), tu nave lo cifra y lo envía directamente a esa otra vía Ames, sin pasar por un servidor central.
De hecho, yo hice exactamente esto. La comunidad de Urbit no es tan grande como la de Remilia aún, pero son amigables y no es difícil encontrarlos en X si sabés buscar. Así fue como contacté a без телеологии (@sitful_hatred) y le comenté que tenía ganas de escribir esta nota. Su respuesta inmediata fue la de regalarme un ID para que pueda ingresar a la versión oficial de Urbit (los ID, al ser de Ethereum, cuestan plata). Me lo envió por mail y procedí a correr Urbit localmente.
Correr el sistema localmente todavía no es fácil para gente que nunca usó la terminal, pero acá tienen el tutorial oficial por si lo quieren intentar. Tlon Messenger viene por defecto y es la aplicación de chat oficial de Urbit, es una especie de Telegram pero más raro y, como todo en este universo, 100% privado y descentralizado. Además de chats 1-1, hay bastantes grupos clasificados por temas para poder interactuar con la comunidad.
Conclusión
Mi experiencia general usando Urbit fue la de estar probando algo que está en una etapa bastante inicial de su desarrollo. Hay una infinidad de trabajo por delante, pero el progreso se está haciendo y la comunidad es fuerte. Sin dudas un proyecto al que vale la pena mirar de reojo cada tanto a ver en qué anda. Y, por qué no, contribuir si te interesa.