Radicle, una plataforma P2P, ha lanzado la versión 1.5. Su objetivo es crear un servicio descentralizado para el desarrollo y almacenamiento colaborativo de código, similar a GitHub y GitLab, pero sin estar vinculado a servidores específicos, sin censura y alimentado por recursos peer-to-peer. La plataforma admite elementos típicos de interacción social entre desarrolladores, como incidencias, parches y revisiones de código. El trabajo del proyecto está escrito en Rust y se distribuye bajo las licencias Apache 2.0 y MIT. Las compilaciones están disponibles para Linux y macOS. También se están desarrollando el cliente de escritorio, la interfaz web y la interfaz de consola.
Radicle le permite no depender al desarrollar y distribuir código en plataformas y corporaciones centralizadas, cuya vinculación presenta riesgos adicionales (un punto único de falla, la empresa puede cerrar o cambiar las condiciones de trabajo). Para gestionar el código, Radicle utiliza el familiar Git, ampliado con herramientas para definir repositorios en una red P2P. Todos los datos se guardan primero localmente (concepto de primero local) y siempre están disponibles en la computadora del desarrollador, independientemente del estado de la conexión de red.
Los participantes brindan acceso a su código y a artefactos relacionados con el código, como parches y problemas, que se almacenan localmente y se replican en nodos de otros desarrolladores interesados conectados a una red P2P descentralizada común. Como resultado, se forma un repositorio Git global descentralizado, cuyos datos se replican y duplican en diferentes sistemas participantes.
El protocolo Gossip se utiliza para identificar nodos vecinos en la red P2P, y el protocolo Heartwood, basado en Git, se utiliza para replicar datos entre nodos. Al estar basado en Git, la plataforma se integra fácilmente con las herramientas de desarrollo de Git existentes. La criptografía de clave pública, sin usar credenciales, se utiliza para identificar nodos y verificar repositorios. La autenticación y la autorización se realizan mediante claves públicas, sin necesidad de servidores de autorización centralizados.
Cada repositorio de la red P2P tiene su propio identificador único y se autocertifica, es decir. Todas las acciones en el repositorio, como agregar confirmaciones y dejar comentarios para emitir, están certificadas por el propietario con una firma digital, lo que le permite verificar la exactitud de los datos en otros nodos sin el uso de autoridades de certificación centralizadas. Para acceder al repositorio basta con que al menos un nodo esté en línea y tenga una copia replicada del mismo.
Los nodos de una red P2P pueden suscribirse a repositorios específicos y recibir actualizaciones. Es posible crear repositorios privados accesibles sólo para ciertos nodos. El concepto de "delegados" se utiliza para gestionar y poseer un repositorio. Un delegado puede ser un usuario individual, un bot o un grupo vinculado a un identificador especial. Los delegados pueden aceptar parches para el repositorio, cerrar problemas y establecer derechos de acceso al repositorio. Cada repositorio puede tener varios delegados asociados.
Los repositorios de Radicle se almacenan en los sistemas de los usuarios como repositorios Git normales, con espacios de nombres adicionales para almacenar datos de los pares y las bifurcaciones en las que se trabaja. Las discusiones, los parches propuestos y los componentes de revisión también se almacenan en el repositorio Git como Objetos Colaborativos (COB) y se replican entre los pares.
En el nuevo lanzamiento:
- Se mejoró la compatibilidad con repositorios vacíos, que no contienen un directorio de trabajo con una copia de los archivos del proyecto, sino que almacenan únicamente el historial de revisiones y metadatos, como ramas y etiquetas. El comando "rad clone" ahora incluye la opción "--bare", que permite clonar un repositorio en una vista sin árbol de trabajo. La utilidad "git-remote-rad" ha mejorado la gestión de repositorios vacíos al usar los comandos "git push" y "git fetch" al acceder a un servidor rad externo.
- Se agregó una configuración "patch.branch" que se puede usar en la utilidad git-remote-rad ("git-remote-rad -o patch.branch[= ]") al agregar un parche para crear automáticamente una rama en el repositorio ascendente, sin la necesidad de utilizar el comando "rad patch checkout".
- Se ha mejorado la salida del comando "rad patch show". Ahora muestra la versión original del parche, que antes solo se mostraba al especificar el indicador "--verbose". Todas las revisiones se muestran ahora en una sola línea de tiempo, sin separar los cambios del autor original ni de otros colaboradores.
- Se agregó la capacidad de generar registros en un formato estructurado, habilitada a través de las opciones "--log-logger structured" y "--log-format json".
Fuente: opennet.ru
