Radicle Jetbrains IDE Plugin - Iteration 2

Radicle Jetbrains IDE Plugin - Iteration 2

Overview :telescope:

This proposal is for the second implementation phase of the Radicle Jetbrains plugin, for which we have already published the first alpha version.

Now that our small team has come together and we have laid all the groundwork, we are ready to begin adding more functionality to the plugin, so that developers can consume the main Radicle functionality directly from their IDE!

Description - Iteration #2 :page_facing_up:

As part of our iterative development process, we plan on following on from the first iteration that focused on functionality around synchronisation with seed nodes, to now support cloning Radicle projects from seed nodes through the IDE.

Scope / Roadmap

The overall scope (i.e. not the scope of this grant application alone) includes the following UX journeys in the IDE plugin, classified based on expected frequency of use:

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

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

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

This Radicle Grants application aims to fund the implementation of all the functionality around cloning projects from (and publishing to) Radicle, with the goal of offering a more immersive experience: the developer will not necessarily have to switch between web UI, Command Line Interface (CLI) and IDE in order to accomplish these tasks.

Approach

Our general approach is to build an IDE-specific User Interface on top of the rad CLI tool. (Essentially, we are mapping UI functionality to (parameterized) calls to rad).

Deliverables :nut_and_bolt:

With this iteration, we will be able to complete a big part of the necessary UI for the Radicle IDE plugin to be fully functional, covering a large part of the roadmap Developer eXperience (DX) journeys.

This will give time to the alt-clients team to complete work on the Issues and Patches workflows across the radicle-cli and the Web UI, so we can build on top of those in a future iteration - avoiding duplication and rework in the meantime.

Milestone 1: Pushing and Synchronising changes through the IDE

  • Total Estimated Duration: 6 calendar weeks
  • Full-time equivalent (FTE): 39 FTE days
  • Total Costs: 28 080 EUR (28 753 USDC)
Number Work Item Specification
1. Settings - Identies Listing Settings - Identities Listing · Issue #41 · cytechmobile/radicle-jetbrains-plugin · GitHub
2. Settings - Seed Nodes Listing Settings - Seed Nodes Listing · Issue #40 · cytechmobile/radicle-jetbrains-plugin · GitHub
3. Settings - Seed Nodes - Add / Remove Settings - Seed Nodes: Add / Remove · Issue #42 · cytechmobile/radicle-jetbrains-plugin · GitHub
4. Settings - Identities - Add / Remove Settings - Identities: Add / Remove · Issue #43 · cytechmobile/radicle-jetbrains-plugin · GitHub
5. Git → Radicle → Clone Git -> Radicle -> Clone menu item + action · Issue #44 · cytechmobile/radicle-jetbrains-plugin · GitHub
6. Git → Clone - Radicle section Git -> Clone: Radicle section · Issue #45 · cytechmobile/radicle-jetbrains-plugin · GitHub
7. Radicle Clone screen - Search Radicle Clone screen: Search for Project · Issue #47 · cytechmobile/radicle-jetbrains-plugin · GitHub
8. Radicle Clone Screen - Seed Nodes Listing Radicle Clone screen: Seed Nodes List · Issue #49 · cytechmobile/radicle-jetbrains-plugin · GitHub
9. Radicle Clone Screen - Project Listing Radicle Clone screen: Project Listing (per seed) · Issue #48 · cytechmobile/radicle-jetbrains-plugin · GitHub
10. Radicle Clone Screen - Add / Remove Seed Nodes Radicle Clone screen: Add/remove Seed nodes · Issue #46 · cytechmobile/radicle-jetbrains-plugin · GitHub
11. Clone by URL support for rad:git Clone by URL with rad:git:... · Issue #60 · cytechmobile/radicle-jetbrains-plugin · GitHub
12. Git → Radicle → Init Git -> Radicle -> Init · Issue #56 · cytechmobile/radicle-jetbrains-plugin · GitHub
13. Git → Radicle → Publish Git -> Radicle -> Publish · Issue #61 · cytechmobile/radicle-jetbrains-plugin · GitHub

Future Plans

We are excited to work on Issues and Patches in the following iteration, as they are not yet fully ready at the time of writing, as we believe this is an area where the IDE will really shine, in terms of offering an immersive experience for Radicle!

Rather than a big “monolithic” Radicle Grant application, we instead 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 how we think iterative software development practices can be combined with Grants programmes.

Team :busts_in_silhouette:

Team members

  • Yorgos Saslis
  • Ioannis Christodoulou
  • Stelios Mavrommatakis

Contact

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!
  • [Ioannis Christodoulou] is a Software Architect with 10 years of professional experience in Web and Mobile applications, such as Greek Passenger Locator Form (a web application that all travelers coming to Greece were required to fill-in) and Covid Free GR (the mobile application used throughout Greece to verify COVID-19 vaccination, recovery and test certificates). He is also the creator and maintainer of an IntelliJ plugin (GitExtender - github, marketplace ) for managing and updating multiple git repositories in the same IntelliJ project.
  • [Stelios Mavrommatakis] is a young Full Stack Software Engineer focused on web applications development. He had participated in large software projects like the EU-DPLF (https://euplf.eu/) a paneuropean application for covid19 contact tracing for tavelers to the EU. He is a passionate software engineer and is currently working on a web3 project expanding his knowledge and experience in new and challenging sectors.

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

Seems like the logical next step following the first iteration.

Maybe you mentioned it already and I missed it, but is there any accounting for the maintenance of the alpha in this iteration? If I know Software :tm:, then one or more of those 13 items might fall by the waist side to fix some issues in the existing code :slight_smile:

That’s an excellent point @fintohaps !

The lack of explicitly planned capacity for maintenance work is only because of the very early development phase and the (relatively) small codebase / feature set to date. It would absolutely not be the case for future iterations.

We expect very little maintenance at this point and we thought we’d be able to cover for those as part of the estimations for the new features. We could well be proven wrong if thousands of users start using the plugin and we discover new configurations for which it doesn’t work or things break wonderfully, but we don’t expect so many users at this point (especially because of alpha release channel).

In any case, thanks for highlighting this !! :ok_hand:

1 Like

This looks like a great list of next steps.

In speaking with @dabit3 , it sounds like getting the init function will be especially useful since it’ll let people start from scratch from within the IDE; really helps people move fully onto the plug-in :slight_smile:

I’m in support of this proposal.

FYI: there is an in-progress PR for rad-rm command for removing identities. This might be important for item 4 in your list above.

Please keep in mind we are in the middle of setting up the 2nd wave of Grants, so we cannot vote on new proposal just yet. I will update here once we do start the vote.

In speaking with @abbey we’ve come to the conclusion that it makes sense to fund this grant as soon as possible.

We are in the middle of Wave 1 and Wave 2. We had been putting new grants on hold until things are finalized. Ironically, this pause would not have been necessary if the Grants Program was optimistically funded (i.e. continuous, uninterrupted funding). As noted in the proposal for Wave 2, we will be moving to optimistic funding. Just want to note this as an exceptional case with this grant: your team has already been approved for 2 previous grants, you’ve completed an entire grant previously, so it makes sense to continue funding without pause in order to keep the team engaged with its awesome work.

I’ve started the vote for the initial 20% of 28,753 USDC, which is 5,750.6 USDC. This is on Nonce 36.