[Application] Radicle VS Code Extension - Implementation Phase 1

  • Status: Open
  • Proposer: @gsaslis
  • Your Project(s): [optional]: N/A
  • Projects you think this work could be useful for [optional]: Developers who rely on Visual Studio Code for productivity.
  • Teams/People that could deliver the RFP [optional]: @gsaslis

Overview :telescope:

This proposal is for the first phase of implementation of the Visual Studio Code extension for which we have created the UX prototypes through the second Milestone of the Radicle Grant about IDE Plugins.

With the rough prototypes in place to inform development of the extension, we are now ready to proceed with a first version of the VS Code extension that will allow developers to start using Radicle from their favorite IDE. This is yet another step in making Radicle easier to onboard to, by incorporating it to developers’ existing workflows, so that they will not feel as if they are sacrificing productivity to onboard to Radicle.

In the next paragraphs we describe how we will begin working on this project.

Project Description :page_facing_up:

Following on from Milestone 2 of the Radicle Grant for UX research on Radicle IDE Plugins, which included User eXperience (UX) research into the functionality of the Radicle IDE plugin for VS Code, we are hereby proposing a Radicle Grant to fund the implementation of the extension.

The overall development will be split into multiple phases, to allow for frequent deliverables, and iterative development.

This grant application will cover the very first implementation phase.

Scope

The overall scope (i.e. not the scope of this grant application alone) will include the following UX journeys in the IDE plugin:

  • Create new radicle identity and manage key pairs
  • Initialise and publish a git project on radicle
  • Configuring seed nodes
  • List projects available on the seed node
  • Track and checkout projects
  • Pushing and synchronising changes with Radicle seed nodes and other peers
  • Working on Collaborative Objects through the IDE (i.e. tasks, issues, patches, releases, etc. )

Just like the Jetbrains IDE plugin, we are choosing to start with the features that we believe would bring the most value to the Radicle users, based on the simplified heuristic of what features we expect will get used the most.

UX journeys, based on expected frequency of use:

  • One-time or rare (less than once per week) use:

    • Create new radicle identity and manage key pairs
    • Initialise and publish a git project on radicle
    • Configuring seed nodes
    • List projects available on the seed node
    • Track and checkout projects
  • Daily use:

    • Pushing changes to other Radicle seed nodes and peers
    • Synchronising changes from other Radicle seed nodes and peers
    • Collaboration on Patches, Issues, Releases and other types of Collaborative Objects (cobs)

This application aims to fund the first two bullets of the “Daily Use” category, as described above, and as shown on the interactive prototypes, under the “Contribute” task.

Approach

Our approach to the implementation of the Radicle-related functionality in VS Code will rely on functionality exposed by radicle-cli (rad).

Rather than implementing core-radicle functionality within our own extension, we will rely on rad and will build all functionality on top of rad command-line tool.

Essentially, we will only build the User Interface (UI) in the plugin that will, on the one hand, handle the interaction of this UI with the rest of the IDE, while, on the other hand, mapping all UI functionality to (parameterized) calls to rad.

This approach helps avoid code duplication and will save us a lot of time from reimplementing functionality already available in rad and is the very same approach that we are using in the Radicle Jetbrains plugin, extending the same hard dependency we have on the clients team.

Deliverables :nut_and_bolt:

Being our very first Milestone, a large part of this work will involve setup tasks.

Other than that, we are focusing on a kind of “Minimum Viable Deliverable” such that the plugin would still do something useful at the end of this first chunk of work, even if that useful functionality is very minimal.

Milestone 1: Pushing and Synchronising changes through the IDE

  • Total Estimated Duration: 12 calendar weeks
  • Full-time equivalent (FTE): 38 FTE days
  • Total Costs: 28 640 USDC
Number Work Item Specification
1. Team setup + Onboarding A new team is coming together to work on this IDE plugin.
2. Settings → Radicle As part of this iteration, it only allows for the path to rad to be defined.
3. Source Control Panel → Radicle Push menu item Introduces the first Radicle functionality in the existing VS Code source control panel. This essentially invokes the CLI rad push.
4. Source Control Panel → Radicle Pull menu item Introduces Radicle Pull functionality in the existing VS Code source control panel. This essentially invokes the CLI rad pull.
5. Source Control Panel → Radicle Sync menu item Introduces Radicle Synce in the existing VS Code source control panel. This essentially invokes the CLI rad sync.
6. New Radicle Panel with Push, Pull, Sync actions Introduces a new panel with Radicle icon in the Primary Sidebar. For now it just has 3 buttons: Push, Pull and Sync.
7. Command Palette Actions Includes the addition of Radicle actions Push / Pull / Sync in the Command Palette (cmd + shift + p)
8. Output → Radicle section Introduces a new “Radicle” category in the standard VS Code Output section (cmd+shift+U) that prints all invoked CLI commands and their output, for easier debugging / understanding by the (advanced) user
9. Publish extension Once this alpha version of the extension has been completed, we will publish it together with installation instructions and a video walkthrough.

Future Plans

This Radicle Grant application is conceived as the first of several applications that will fund the implentation of the Radicle extension for VS Code.

Rather than a big “monolithic” Radicle Grant application, we instead plan to submit each development phase as a separate application, so that:

  • the deliverables are clearer
  • we are not forced to guesstimate how long large pieces of development work will take
  • the risk for Radicle is limited: the Radicle Grants team can choose to fund only the functionality to the plugins that they find valuable - rather than being faced with an “all or nothing” dilemma. i.e. funding one application bears no commitment to fund future ones.

This approach, of micro-grant applications, is the same that we are following for the Radicle Jetbrains plugin.

Team :busts_in_silhouette:

Team members

  • Yorgos Saslis
  • Kostis Maninakis
  • Michael Meimaroglou

Contact

  • Contact Name: Yorgos Saslis
  • Contact Email: I can share this privately on discord.
  • Website:

Legal Structure

  • Registered Legal Entity: Cytech Ltd.
  • Registered Address: Science & Technology Park of Crete, Heraklion, Greece

Team’s experience

  • [Yorgos] 15+ years of experience in various roles of the full Software Development Lifecycle: writing code, agreeing on specs with clients, architecting systems, establishing product priorities, designing testing and CI strategies, and co-creating department-wide processes - with an itch for driving “waste” out the door. Co-founder of developer communities (DevStaff, Heraklion Software Crafters, Web3 Greece) and co-organizer of open space unconferences (AgileCrete, JCrete) on the (paradise!:desert_island:) island of Crete!

  • [Kostis] After many years of international professional experience, Kostis has grown into a frontend-oriented software crafter with a passion for web technologies, developer tools, and refined user experiences. With occasional contributions to local dev communities and open-source software, including publishing the popular TypeScript library ts-xor, Kostis has always been looking for opportunities to become increasingly active in open-source software development. Moreover, he was there during Bitcoin’s early rise in 2011, actively partaking in the cipher-punk community’s radical discussions while mining his first Bitcoin with his desktop CPU, which he subsequently day-traded for many sleepless months. :slight_smile:

  • [Michael] 15+ years of experience in various roles as front-end developer, graphic designer (print and digital applications), creative director and the last 8 years focused as a UX/UI designer of SaaS apps in Greece and abroad. Member of the GGDA (national association for professional graphic designers in Greece).

Team Code Repos

Team LinkedIn Profiles (if available)

Additional Information :heavy_plus_sign:

How did you hear about the Grants Program? Radicle Discord

2 Likes