Se ha publicado la versión 1.6 de la plataforma P2P Radicle, dirigida a crear un servicio descentralizado para el desarrollo y almacenamiento colaborativo de código, similar a GitHub y GitLab, pero no vinculado a servidores específicos, sin censura y funcionando con los recursos de los participantes de la red P2P. La plataforma soporta elementos estándar de interacción social entre desarrolladores, como issues, parches y revisiones de código. Los avances del proyecto están escritos en Rust y se distribuyen bajo las licencias Apache 2.0 y MIT. Las compilaciones están preparadas para Linux y macOS. Además, se están desarrollando un cliente de escritorio, una interfaz web y una interfaz de línea de comandos.
Radicle permite liberar el desarrollo y la distribución de código de plataformas y corporaciones centralizadas, cuya dependencia introduce riesgos adicionales (un único punto de falla, la empresa puede cerrar o cambiar las condiciones de operación). Para gestionar el código en Radicle se utiliza Git, ampliado con medios para la identificación de repositorios en la red P2P. Todos los datos se guardan principalmente de manera local (concepto local-first) y siempre están disponibles en la computadora del desarrollador, independientemente del estado de la conexión de red.
Los participantes proporcionan acceso a su código y artefactos relacionados, como parches y discusiones sobre corrección de errores (issues), que se guardan localmente y se replican en los nodos de otros desarrolladores interesados, conectados a la red P2P descentralizada compartida. Como resultado, se forma un repositorio Git descentralizado global, cuyos datos están replicados y duplicados en diferentes sistemas de los participantes.
Para identificar nodos vecinos en la red P2P se utiliza el protocolo Gossip, y para replicar datos entre nodos se emplea el protocolo Heartwood, basado en Git. Dado que el protocolo se basa en Git, la plataforma se integra fácilmente con las herramientas existentes para desarrollo en Git. La identificación de nodos y la verificación de repositorios utilizan criptografía de claves públicas, sin necesidad de cuentas. La autenticación y autorización se realizan sobre la base de claves públicas sin entidades certificadoras centralizadas. servidores.
Cada repositorio en la red P2P tiene un identificador único y es autodeclarado, es decir, todas las acciones en el repositorio, como agregar commits y dejar comentarios en issues, son firmadas por el propietario con una firma digital, que permite verificar la integridad de los datos en otros nodos sin la necesidad de centros de certificación centralizados. Para acceder al repositorio, basta con que al menos un nodo esté en línea y tenga una copia replicada de él.
Los nodos en la red P2P pueden suscribirse a ciertos repositorios y recibir actualizaciones. Es posible crear repositorios privados, accesibles solo para nodos específicos. Para gestionar y poseer un repositorio se usa el concepto de 'delegados'. Un delegado puede ser un usuario individual, un bot o un grupo, ligados a un identificador especial. Los delegados pueden aceptar parches en el repositorio, cerrar issues y establecer permisos de acceso al repositorio. Se pueden asociar varios delegados a cada repositorio.
Los repositorios Radicle se almacenan en los sistemas de los usuarios como repositorios git normales, en los que hay espacios de nombres adicionales para almacenar datos de pares y bifurcaciones con los que se está trabajando actualmente. Las discusiones, los parches propuestos y los componentes para la organización de revisiones también se guardan en el repositorio git como objetos colaborativos (COB — Collaborative Objects) y se replican entre pares.
En esta nueva versión:
- La implementación del nodo Radicle (radicle-node) se ha traducido para utilizar la biblioteca de entrada/salida Mio. Se han eliminado las dependencias de los paquetes netservices, io-reactor y popol, que dificultaban alcanzar un nivel adecuado de multiplataforma. Se ha añadido un nuevo módulo reactor, en el cual io-reactor se ha reescrito sobre la base de Mio.
- La transición a Mio ha permitido implementar el soporte para la plataforma Windows, que actualmente tiene un estatus experimental.
- El código para analizar los argumentos de la línea de comandos se ha transferido a la biblioteca clap, lo que ha unificado el comportamiento en el análisis de argumentos y ha añadido al utilitario rad capacidades como la generación automática de sugerencias de comandos, la salida de recomendaciones para la solución de errores, el resaltado de la salida y la autocompletar comandos.
- Se ha añadido soporte en radicle-node para el mecanismo Credentials de systemd para la transmisión segura de claves de acceso (xyz.radicle.node.secret) y contraseñas para su descifrado (xyz.radicle.node.passphrase), además del uso de la variable de entorno RAD_PASSPHRASE, la opción de línea de comandos «—secret» y parámetros en el archivo de configuración.
- Los requisitos para la versión mínima soportada del compilador Rust se han incrementado a 1.85.
Fuente: opennet.ru
