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 https://github.com/cytechmobile/radicle-jetbrains-plugin/issues/56
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.

Hello again everyone!

Happy to :loudspeaker: announce :loudspeaker: that version 0.2.x of the Radicle Jetbrains Plugin is already up on the Jetbrains Marketplace! :rocket:

Features

v0.2.x comes with the following features:

  • It’s now possible to publish Git repos to Radicle, directly from your IDE !!
  • You can now view/manage Radicle Identities in the plugin settings and choose your active Identity
  • Chances are you will have some frequently-used seed nodes… You can now configure these in the plugin settings
  • Browse through Radicle projects and clone them:
    • from the new “Radicle” section in the existing Git clone dialog
    • Copy the rad:// URL from the Radicle Web Client and paste it in the IDE

Video

We’ve also put together a quick video recording, highlighting the new v0.2.x features: Radicle Jetbrains IDE Plugin

Installation Instructions

We have dropped the alpha release channel, so it is now possible to install the Radicle plugin directly from the Jetbrains marketplace, in your IDE:

  • Settings/Preferences > Plugins > Marketplace > Search for “Radicle” > Install Plugin

Feedback

If you use one of the Jetbrains IDEs, we’d really appreciate your feedback after trying out this version! Please feel free to create an issue for any problems you find!

Conclusion & Next Steps

Now that the plugin makes it possible for new users to explore Radicle and clone repos, while also publishing existing repos to Radicle and pushing and pulling commits, it is time to start focusing on the decentralized collaboration aspects, shifting our focus for 0.3.x to Radicle Patches. We have began planning for this and will be submitting a new grant proposal shortly.

Hi @yorgos

Thanks a bunch for sending this over!

I love how easy it was to upgrade (JetBrains does a nice job picking up the newest version!).

Thanks a bunch for this video as well…love the extra effort you put into showing people all the features! It’s really awesome to see a GUI for the CLI being built right before our eyes :smiley:

In terms of delivery: this looks good to me!

I’ll DM you some logistics on payment here.