Radicle, una plataforma de desarrollo colaborativo descentralizado
Recientemente se dio a conocer la liberación de la primera versión beta de la plataforma Radicle P2P y su cliente de escritorio Radicle Upstream.
El proyecto tiene como objetivo crear un servicio descentralizado para el desarrollo colaborativo y el almacenamiento de código, similar a GitHub y GitLab, pero no vinculado a servidores específicos, así como también tampoco estar sujeto a censura y trabajando con los recursos de los participantes de la red P2P.
Sobre Radicle
Radicle permite no depender de plataformas y corporaciones centralizadas para el desarrollo y distribución de código abierto, al que la vinculación introduce riesgos adicionales (punto único de falla, una empresa puede cerrar o cambiar las condiciones de trabajo).
Para gestionar código en Radicle se utiliza el conocido Git, ampliado mediante la definición de repositorios en una red P2P. Todos los datos se almacenan principalmente a nivel local y siempre están disponibles en la computadora del desarrollador, independientemente del estado de la conexión de red. Para proteger la información se utiliza criptografía basada en claves públicas, sin el uso de cuentas. La lista de repositorios de participantes de la red P2P se puede ver en el nodo semilla del proyecto.
En el corazón de la red P2P se encuentra el protocolo Radicle Link basado en Git que replica datos entre los participantes. Los participantes proporcionan acceso a su código y al código de los proyectos que les interesan, cuyas copias redundantes se almacenan localmente y se replican en los sistemas de otros desarrolladores interesados. Como resultado, se forma un repositorio Git descentralizado global, cuyos datos se replican y duplican en diferentes sistemas de los participantes.
El protocolo admite dos tipos de objetos de identificación: participante y proyecto. El participante contacta con la persona que lanzó el nodo en la red P2P (par) y el proyecto describe un repositorio en el que pueden trabajar varios participantes.
La red crea un gráfico social de comunicación entre los participantes y los proyectos: los participantes realizan un seguimiento de los proyectos que les interesan a ellos y a otros participantes. Los elementos de los participantes seguidos se ponen a disposición de otros participantes que están siguiendo al participante actual.
El desarrollo se lleva a cabo al estilo «bazar» en lugar de mantener la vista maestra canónica en Radicle, hay varias ramas paralelas con sus mantenedores y contribuyentes que intercambian parches entre ellos.
En lugar de vincularse a un repositorio de referencia externo, Radicle se basa en un repositorio único en la máquina local de cada desarrollador, donde puede extraer cambios de los repositorios de los contribuyentes rastreados y enviar sus cambios a los repositorios de los contribuyentes de seguimiento.
Conceptualmente, un proyecto se convierte en una colección de vistas de código en los sistemas de todos los participantes en el desarrollo. En la práctica, se organiza una jerarquía de entrega de cambios basada en una cadena de confianza: para recibir cambios en su copia local del repositorio, el desarrollador agrega otros desarrolladores como fuentes (remotos), lo que automáticamente forma una suscripción a las nuevas confirmaciones que aparecen en sus repositorios. Todos los cambios en la red P2P están firmados digitalmente y pueden ser verificados por otros participantes.
La forma más sencilla de conectarse a la red es instalar la aplicación de escritorio Radicle Upstream, que le permite crear claves para identificar un nuevo miembro, alojar su código y comunicarse con otros desarrolladores.
Actualmente, la implementación se limita al trabajo conjunto sobre el código y el sistema de seguimiento de errores, pero en el futuro planean ampliar las herramientas para organizar discusiones y revisar cambios, así como implementar soporte para repositorios privados con acceso basado en cifrado de extremo a extremo.
Finalmente, si estás interesado en conocer más al respecto, puedes consultar el siguiente enlace.
El código proxy para la operación del nodo está escrito en Rust, en el cliente gráfico en TypeScript, Svelte y Electron. Los desarrollos del proyecto se distribuyen bajo la licencia GPLv3.
Los paquetes están preparados para Linux (AppImage) y macOS.