Clients Community Update - November 2022

Overview

On-track for an internal Heartwood release in January.

  • 50 PRs merged in heartwood and radicle-git.
  • 30 PRs merged on radicle-interface.

Contributors

Web: @sebastinez, @rudolfs
Heartwood: @slackcoder, @dave, @fintohaps, @keepsimple,
@adaszko, @cloudhead, @jorge, @erikli, @dr_orlovsky, @sophia


Products

Web

  • New custom router implementation
    • Allows IPFS deployments using hash routing
  • Markdown files can be switched between rendered and raw markdown
  • Twemojis everywhere
  • Code font switching
  • Load time improvements via chunked loading
  • More elaborate end-to-end testing with Playwright

CLI

  • Most of radicle-cli ported to Heartwood
    • patch, issue, init, auth, push, edit, ls, etc.
  • Work rad delegate for managing project delegates

Technology

Collaborative Objects

  • Port of collaborative objects backend to Heartwood (heartwood/radicle-cob)
  • New Radicle CRDTs crate to replace Automerge (heartwood/radicle-crdt)
    • Last-Write-Wins Set/Map
    • Last-Write-Wins Register
    • Redactable
    • Min/Max
    • Lamport clock
  • Port of Patch and Issue to Radicle CRDTs

Git

  • Redesign of radicle-surf partly done
    • API and performance improvements

Research

  • RIP 2: Storage Layout
    • Currently in draft, being reviewed
  • DID Keri
    • Prototype of a potential identity system for Radicle

Seed Infrastructure

Node

  • Noise XK handshake protocol implementation (integration in-progress)
  • Basic sybil resistance via proof-of-work on node announcements
  • Routing table pruning
  • Reconnection logic

HTTP API

  • Git & API merged into single HTTP daemon (heartwood/radicle-httpd)
  • Git & API can both run on same port now
    • Greatly simplifies deployment

Changes in our codebase

Before

  • radicle-link (deprecated)
  • radicle-cli (deprecated)
  • radicle-client-services (deprecated)
  • radicle-keystore (deprecated)

After

  • heartwood
    • radicle-cli/ (command-line interface)
    • radicle-node/ (peer-to-peer node)
    • radicle-httpd/ (git bridge & http api)
    • radicle-ssh/ (SSH-agent support)
    • radicle-cob/ (Collaborative objects backend)
    • radicle-crdt/ (Radicle CRDTs)
    • radicle-crypto/ (Crypto primitives)
  • radicle-git (generic git libraries)

Next

  • Finalize node integration with Noise XK
  • Finalize node integration with Tor, via SOCKS5
  • Finalize surf redesign
  • Port Dockerfiles to heartwood, prepare for deployment
2 Likes