Radicle Developer Tooling // Jan-Mar 2024

Hello everyone!

A little bit of a late update here, but there sure is a lot to report on! :sweat_smile:

First and foremost, our team has finally graduated from the Radworks Grants
program into a new Radworks-funded Org: the Radicle Integrations & Tooling
Org
! :tada:

A lot of work has gone into the creation of this new Org, these past couple of months that involved exploring the most suitable legal entity setup, understanding all the requirements for new Radworks Orgs and, of course, finding the right positioning for our Org alongside the other Orgs in the ecosystem.

But here is what else we’ve been working on, while our new baby Org was incubating!

1. Integrations with Continuous Integration / Continuous Delivery (CI/CD) Tools

GitHub Actions Integration

  • Working examples: We have this working successfully on several repositories:
    • the Radicle Jetbrains IDE plugin repository,
    • the GitHub Actions Adapter itself and
    • the Radicle Core team’s radicle-interface repository (i.e. the Radicle Web UI) - coming soon.
  • Better reporting:
    • each message now reports more details for each workflow, in the comment reported back to the patch, allowing developers to know which specific workflow failed (as opposed to an overall “success / failure”
      comment).
    • we received feedback that the patch comment could also contain links to the artifacts produced by the GitHub Actions workflow. This feature is implemented and will be released soon - watch this space! :wink:
    • we have started working on a better UX for this, where, instead of multiple comments being sent to each Patch, a single comment will be updated as the GitHub Actions workflows progress.
  • Documentation & How-to Guides:
    • We have put together some new guides for Project Maintainers and Seed Node Operators, with more details on how they can set up CI Integrations with Radicle.

Jenkins Integration

We have put together a quick guide about how a Jenkins pipeline can be
triggered by HTTP webhook events (when the Radicle Webhooks Integration is
enabled):

We are planning to tidy this all up in a Jenkins shared library, in the weeks
ahead.

Outgoing Webhooks Integration

The latest version (v0.5.0) of the radicle-webhooks-adapter
comes with important improvements:

  • webhook invocations and results are now persisted in a local database (sqlite), so there is a detailed record of which webhooks have been successfully sent to the 3rd party system we are integrating with.

  • Much better docs!!! We have :new: CI Integration guides:

  • A CLI (Command Line Interface) tool that makes it easier for project maintainers to manage Radicle Webhooks in their repos!

    • To add some webhooks, run radicle-webhooks add --help.

The work to extend the adapter to emit more webhook events (such as “comment” or “review”) is left as future work, as it also requires changes on the Radicle CI Broker that we need to coordinate with the Radicle Core team.

Woodpecker CI Integration

Not much of an update on the Woodpecker front, as we have been waiting for a rework on their addons architecture (coming up in their 2.5.0 release), so we can port our implementation of the Radicle Forge integration to that new architecture.

Concourse CI Integration

The Concourse CI integration is fully functional (from v0.5.0 onwards) and is what our own team uses to self-host our own CI/CD workflows for our own projects, using a self-hosted Concourse CI Instance, as we are dogfooding the integration itself working towards bringing it to a more stable place:

Zulip Integration

No time left to explore that during the last couple of months.

Kraken CI

In collaboration with the Kraken CI maintainer, we have built support for Radicle in Kraken and we now have a detailed guide on how a self-hosted Kraken CI instance can run jobs from your Radicle repositories, powered by the Radicle CI Broker.

2. Radicle in Integrated Development Environment (IDE) Tools

Jetbrains IDE Plugin

For Jetbrains IDE we have focused primarily on keeping the plugin stable and compatible
with both the latest Radicle and Jetbrains IDE releases, focusing on just one new feature: Revision Reviews.

  • Patch versions 0.8.1, 0.8.2, 0.8.3 and 0.8.4 mainly included bugfixes, but also the ability to open the browser on a specific line from your IDE, as can be seen on the short video in the release announcement on Zulip.
  • v0.9.0 allows adding a review along with comments and also adds the reviews in the timeline view, alongside other fixes.

VS Code Extension

In VS Code, the v0.4.0 release was a feature-packed released with a huge amount of work in it, focused primarily around the overall Patch Detail view. The changelog provides a detailed list of all the important changes and features introduced with this release.

If you’re a VS Code user, grab your favourite beverage and take some time to review - there’s a lot to unpack there!!

3. Migration Tooling

As Radicle is getting closer and closer to its “1.0” stable release, we have been putting more work towards making migration of projects from other open source forges less of a problem for potential users.

The v0.5.0 and v0.6.0 releases of the Radicle
Migration Tool now make it possible to:

  • :white_check_mark: migrate GitHub Wikis → Radicle
  • :white_check_mark: migrate GitLab Issues → Radicle
  • :infinity: use this tool as an always-on mirroring tool for GitHub and GitLab Issues → Radicle. The tool picks up new changes on GitHub/GitLab issues and updates the already created, corresponding Radicle issues, rather than creating new issues on every run.

If you would like to try migrating your project from GitHub or GitLab to Radicle, please feel free to create a new topic and ask us about that on #integrations on zulip! :wink:

4. Planning Boards Tool

Plan… your Patches! (a.k.a. “who needs issues anyway?”)

Apart from issues, the board can now also display patches. This unlocks workflows where you don’t need to create an issue AND a patch for every single little task, but can instead keep the information in the patch itself and organize it alongside your issues.

There is a toggle on the board to switch between displaying issues, patches, or both.

Persistent card order

Card order within columns is now persisted in the issue/patch labels. This means that if you move a card to a new position in a column, it will stay there even after you refresh the page. This should make it easier to keep track of your tasks and priorities.

Column re-ordering

You can now re-order columns on the board as you see fit. This should make it easier to organize
your workflows and keep things tidy.

As of now, column order is persisted locally within the browser. Other users will not see the
changes you make to the column order.

Optimistic updates

When we added support for patches, as the information we needed to fetch increased, we started to see some performance issues when quickly moving cards around the board. To address that, we’ve introduced optimistic updates when moving cards around the board. This makes the experience seamless.

Miscellaneous

  • The labels of an issue/patch labels are now displayed on its card
  • Added the ability to filter out “done” tasks older than 2 weeks from the board
  • Tweaked the design of the board to bring it more inline with radicle-interface
  • Added an about link pointing to the radicle repo
  • Added a loading spinner to the board while it’s initially loading data

You can view some short videos of all these new features on the zulip announcement.

The latest version of the planning boards is also available on app.radicle.at, where you can see all these changes in action!

Conclusion

With this being the final grant from the Radworks Grants Org, and our team moving to a separate Radworks Org, I want to officially thank @bordumb , @abbey and all the other Radworks Grants Org team members who have helped and supported our team along the way. It is no exaggeration to say that, without them, we really wouldn’t be here today. Thank you!! :pray: