Foi lançado o Radicle 1.6, uma plataforma P2P focada na criação de um serviço descentralizado de desenvolvimento e armazenamento de código, semelhante ao GitHub e GitLab, mas desvinculado de servidores específicos, sem censura e operando com os recursos dos participantes da rede P2P. A plataforma suporta elementos típicos de interação social entre desenvolvedores, como issues, patches e revisões de código. O projeto é desenvolvido em Rust e distribuído sob as licenças Apache 2.0 e MIT. Compilações estão disponíveis para Linux e macOS. Além disso, um cliente desktop, uma interface web e uma interface de console estão em desenvolvimento.
O Radicle permite que o desenvolvimento e a distribuição de código fiquem independentes de plataformas e corporações centralizadas, cuja vinculação traz riscos adicionais (ponto único de falha, a empresa pode fechar ou mudar as condições de operação). Para gerenciar o código no Radicle, é utilizado o Git tradicional, ampliado com ferramentas de definição de repositórios na rede P2P. Todos os dados são, em primeiro lugar, salvos localmente (conceito local-first) e sempre acessíveis no computador do desenvolvedor, independentemente do estado da conexão de rede.
Os participantes fornecem acesso ao seu código e a artefatos associados, como patches e discussões sobre correções de bugs (issues), que são salvos localmente e replicados em nós de outros desenvolvedores interessados conectados à rede P2P descentralizada compartilhada. Como resultado, forma-se um repositório Git global descentralizado, cujos dados são replicados e duplicados em diferentes sistemas dos participantes.
Para identificar nós adjacentes na rede P2P, é aplicado o protocolo Gossip, e para replicação de dados entre nós, utiliza-se o protocolo Heartwood, baseado no Git. Como o protocolo é baseado no Git, a plataforma é facilmente integrada com as ferramentas existentes para desenvolvimento no Git. Para identificação de nós e verificação de repositórios, é usada criptografia baseada em chaves públicas, sem a utilização de contas. A autenticação e a autorização são realizadas com base em chaves públicas, sem entidades de certificação centralizadas. servidores.
Cada repositório em uma rede P2P possui um identificador único e é auto-certificado, ou seja, todas as ações no repositório, como adição de commits e comentários em issues, são assinadas pelo proprietário com uma assinatura digital, permitindo verificar a precisão dos dados em outros nós sem a utilização de autoridades certificadoras centralizadas. Para acessar o repositório, basta que haja pelo menos um nó online que tenha sua cópia replicada.
Os nós na rede P2P podem se inscrever em repositórios específicos e receber atualizações. É possível criar repositórios privados, acessíveis apenas a nós determinados. A gestão e propriedade do repositório utilizam o conceito de 'delegados'. Um delegado pode ser um usuário individual, um bot ou um grupo, associado a um identificador especial. Delegados podem aceitar patches no repositório, fechar issues e definir permissões de acesso ao repositório. Vários delegados podem ser vinculados a cada repositório.
Os repositórios Radicle são armazenados nos sistemas dos usuários como repositórios git comuns, nos quais existem espaços de nomes adicionais para o armazenamento de dados de pares e forks com os quais se está trabalhando no momento. Discussões, patches propostos e componentes para organização de revisão também são armazenados no repositório git na forma de objetos colaborativos (COB — Collaborative Objects) e replicados entre os pares.
No novo lançamento:
- As implementações do nó Radicle (radicle-node) foram migradas para o uso da biblioteca de entrada/saída Mio. Pacotes como netservices, io-reactor e popol foram removidos, pois interferiam na obtenção do nível desejado de multiplataforma. Um novo módulo reactor foi adicionado, dentro do qual o io-reactor foi reescrito com base no Mio.
- A transição para o Mio permitiu implementar suporte para a plataforma Windows, que ainda tem status experimental.
- O código para análise de argumentos da linha de comando foi migrado para a biblioteca clap, o que unificou o comportamento na interpretação dos argumentos e trouxe para a utilidade rad funções como geração automática de sugestões de comando, exibição de recomendações para correção de erros, destaque na saída e autocompletar comandos.
- O radicle-node agora suporta o mecanismo systemd Credentials para a transmissão segura de chaves de acesso (xyz.radicle.node.secret) e senhas para sua descriptografia (xyz.radicle.node.passphrase), além do uso da variável de ambiente RAD_PASSPHRASE, da opção de linha de comando "—secret" e de parâmetros no arquivo de configuração.
- Os requisitos para a versão mínima suportada do compilador Rust foram elevados para 1.85.
Fonte: opennet.ru
