[Application] Radicle IDE Plugins - UX Design

Radicle IDE Plugins - UX Design

  • Status: Open
  • Proposer: @gsaslis
  • Your Project(s): [optional]: N/A
  • Projects you think this work could be useful for [optional]: smoother onboarding onto radicle
  • Teams/People that could deliver the RFP [optional]: @gsaslis

Overview :page_facing_up:

ā€œWalkā€ into any online forum / chat room / mailing list and you are absolutely certain to find a healthy number of debates over developer tools. These debates come up time and time again. People are invested in their particular tools of choice. Once they are, they feel compelled to share that knowledge with others in the community (ā€œit makes life so much simplerā€, ā€œit helps me reduce mistakesā€, ā€œit helps me stay in ā€˜the zoneā€™ ā€œ, and so onā€¦)

One common topic for debate is the choice of Integrated Development Environment (IDE). Rather than a single tool, IDEs are really an opinionated collection of tools and it is common for developers to settle on a particular IDE they will subsequently use for years to come (and resist to change).

Ecosystem Fit

In this context, it is important for Radicle to adapt itself to the existing tooling ecosystem, rather than introduce an entirely new set of tools that developers will have to learn how to use.

Rather than forcing developers to drop their existing toolset, in order to use Radicle, we can take a complementary approach: What if developers could continue using their existing toolset and gradually start using Radicle ?

This can become possible by introducing Radicle in their IDEs of choice, as an IDE plugin.

Project Description :page_facing_up:

This application for a grant will cover the UX design for an early alpha version of IDE plugins for Radicle. We will focus solely on establishing the UX for how developers can collaborate over radicle using their IDE.

The resulting UX design from this project will then be used to inform the implementation of the IDE plugins, in subsequent grant applications, and can also be used as feedback to the interface design of other existing client interfaces (CLI, Upstream, etc).

Methodology

Below, we describe the UX process we intend to follow:

Cycle Methods
1. DISCOVER Field Studies/User Interviews
Requirements & constraints
Competitive testing
2. EXPLORE Design review
Task analysis
Journey mapping
Prototype feedback & testing
Write user stories
3. TEST Qualitative usability testing
Accessibility evaluation
4. LISTEN Surveys
Feedback review
Community

Rapid Prototyping

Before we beging working on the code itself, it is important to know what we are going to build. Especially because we will be working on creating a Graphical User Interface (GUI), it is important to be able to iterate quickly, using low-fidelity prototypes (commonly also called paper prototypes ).

We consider such ā€œpaper prototypesā€ to be necessary components of our Definition of Ready, so we can later begin working on the first alpha versions of the IDE plugins.

Field Studies/User Interviews

As part of this work, we will be tasked with gathering existing users from each IDE and creating distinct user groups that can inform our UX design and validate our early designs.

As part of each milestone, for the respective IDE, we will also need to find community users who are interested in participating in the user research for the IDE plugins. Users will be incentivized to participate (by means of a digital gift card).

Developer Journeys in Scope

The envisioned functionality to be included in the first version of the IDE plugins will include the following UX journeys:

  • 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

Deliverables :nut_and_bolt:

  • Total Estimated Duration: 6 calendar weeks
  • Full-time equivalent (FTE): 39 FTE days
  • Total Costs: 22 640 EUR

Milestone 1: IntelliJ IDEA Plugin - User Research & Paper Prototypes

In this milestone, we will focus on establishing the User Experience (UX) of the IntelliJ IDEA plugin and producing paper prototypes showcasing how the plugin works.

We will evaluate the existing plugin for GitHub in the Jetbrains marketplace and use that to inform our own designs. It is important to note that this DOES NOT mean that we will blindly replicate the existing UI/UX, only useful key elements that will be taken into account as they form the basis of the current developer experience.

  • Estimated Duration: 4 calendar weeks
  • Full-Time Equivalent (FTE): 22 days
  • Costs: 12 720 EUR (including 20 EUR participation incentives for 20 Field Study participants)
Number Deliverable Specification
1. Paper prototypes - 1st Iteration Paper prototypes will be created that showcase each UX journey described in the Project Description section.
2. Field Studies/User Interviews research results After the paper prototypes are conceived, two (2) group studies will be run, aiming at a minimum of 10 participants each (IntelliJ Users), to help us validate the functionality of the conceived prototypes.
3. Paper prototypes - 2nd Iteration This deliverable will include the version of the prototypes that will be used in the subsequent milestone where the PoC version of the plugin will be created.

Milestone 2: VSCode Extension - User Research & Paper Prototypes

In this milestone, we will focus on establishing the User Experience (UX) of the VSCode Extension and producing paper prototypes showcasing how the plugin works.

We will evaluate the existing plugin for GitHub Repositories and use that to inform our own designs. It is important to note that this DOES NOT mean that we will blindly replicate the existing UI/UX, only useful key elements that will be taken into account as they form the basis of the current developer experience.

  • Estimated Duration: 3 calendar weeks
  • FTE: 17 days
  • Costs: 9 920 EUR (including 20 EUR participation incentives for 20 Field Study participants)
Number Deliverable Specification
1. Paper prototypes - 1st Iteration Paper prototypes will be created that showcase each UX journey described in the Project Description section.
2. Field Studies/User Interviews research results After the paper prototypes are conceived, two (2) group studies will be run, aiming at a minimum of 10 participants each (VSCode users), to help us validate the functionality of the conceived prototypes.
3. Paper prototypes - 2nd Iteration This deliverable will include the version of the prototypes that will be used in the subsequent milestone where the PoC version of the plugin will be created.

Future Plans

This application marks only the start of a long journey working on IDE plugins as clients to the Radicle network.

This particular application to the Radicle Grants program is kept limited in scope and does not include a working version of the plugin on purpose.

This is so that work on the plugins/extensions themselves can be decoupled from the UX work that needs to happen before implementation can begin.

In addition, future work will also cover additional UX journeys that will be added to the plugins, depending on usage / demand from the pluginsā€™ early users.

This is because we strongly believe in iterative approaches and we want early iterations to inform future ones. As such, this application is the first in what will likely be a series of applications, each of which will address a different part of the whole problem area. In this way, through these micro-grant applications, we believe we can make a Grants program compatible with the iterative software development practices that have become standard in the industry today.

Team :busts_in_silhouette:

Team members

  • Yorgos Saslis
  • Nikos Kampitakis
  • Michael Meimaroglou

Contact

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

Legal Structure

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

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!
  • [Nikos] 20 years of experience in coding and 12 years running my web agency - Webtrails.io - working mostly as a product manager for various software projects.
  • [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

5 Likes

I think the goal of Radicle IDE Plugins is an interesting proposal, and definitely agree that it will help people onboard onto using Radicle based projects. However, Iā€™m a little bit sceptical of the plan so Iā€™ll drop my 2c here and see what you think :slight_smile:

When I think IDE experience, I think about how am I interacting with a particular project.

This scope suggests to me that youā€™re building another #upstream or another #alt-clients, but in the IDE. Iā€™d be interested in seeing something :new: :grinning_face_with_smiling_eyes:

So with that said, if I load my project into VSCode it will be the working copy ā€“ because thatā€™s where I will be editing code for the project. This is already not Radicle-centric. I imagine what will be leveraged here will be existing git tools in IDEs for, perhaps, diffā€™ing, seeing what files are deleted/added/modified, etc. On top of this, the aim of the Link team at the moment is to be able to just use git commands for interacting with the storage (and network) via a local git daemon. So again, if youā€™re publishing changes, it should still be git push, and have nothing to do with Radicle.

I think where your proposal could get interesting is the part where you look to the GitHub plug-in for inspiration. From the link provided:

create and review pull requests, create gists, and much more.

So, the plug-in allows you to do the social collaboration from your IDE as opposed to going to github.com and conducting your dev business there. This naturally leads us to ā€œcollaborative objectsā€ and how they might be leveraged in an IDE experience. I would very much love to see exploration into collaborative objects, how they can be used to build these collaborative experiences, and how they can be rendered in oneā€™s IDE.

Iā€™ll cc @alexgood here as well to see if he thinks Iā€™m off the mark on any of the above since weā€™re collaborating on the git-server components and heā€™s the author of the collaborative object code.

Maybe Iā€™m just plain wrong and feel free to tell me so, but I hope this helps generate some sparks to build some cool shit :seedling:

Points of agreement

  • I also strongly agree with all of the points around how important IDEs are
  • Definitely true that getting developers to switch their IDE setup is close to impossible

Both of these make a strong case that addressing tooling for IDEs + Radicle is likely very high on the list of things to do.

Points of disagreement

@fintohaps has a really good point that the current scope sounds almost identical to the CLI that the #alt-clients team is launching in the coming weeks.

Letā€™s take a look at what current workflows look like in some common IDEs like those from IntelliJ, JetBrains, etc.:

  • You have Git client installed
  • You can run terminal commands directly from the IDE (screenshot below from PyCharmā€™s Terminal)
  • In the example below, Iā€™m able to do many of the things mentioned right in my IDE because of the CLI (on Mac usually you have this from the XCode command line tools installation, which includes Git installation)

Given this, if I imagine the #alt-clients CLI launching, I will have many of the features mentioned in the scope of this application, including:

  • 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

Proposal/Suggestion

I would recommend the following:

  • Take a stab at some of @fintohaps ideas
  • Ask #alt-clients to see what their roadmap is like (I know of this document here) + how IDE tools could improve upon that, while addressing something that IDEs are specifically suited for (i.e. features that would go beyond what the CLI can provide)

I think if we made a list of developer tools that need a Radicle integration, IDE would be near the top. So Iā€™d love to see some Grant applications around this. I just think this current write-up maybe has too much overlap/redundancy with CLI from #alt-clients at the moment.

1 Like

Thank you @bordumb and @fintohaps for the feedback!! :pray:

It looks like a couple of points from the thinking behind this application havenā€™t come across, so let me try to address that:

First of all, you are both 100% correct that there is overlap with what the CLI will be offering. It will certainly be possible to continue using the CLI - we are not planning to replace it, much in the same way that the CLI - I presume - is not planning to replace Upstream (the Desktop client).

However, Iā€™m afraid I donā€™t see why the scope overlap is a problem for this application. The IDE plugins are meant to offer another alternative which (we assume) some users will prefer. This is perfectly in line with the GitHub landscape. There is a CLI (gh) I can use to get stuff done, a web interface, and there are also IDE plugins and different users will take their pick, depending on their preferences.

Because of this, I believe the IDE plugins will help lower the entry barrier for new users to onboard to Radicle, and it seems to me that this is directly supporting the growth of the Radicle product, and the Radicle community - which I understood to be the goals of the Grants program.

Second, this application is about UX research. We want to take the time and ask users how they would expect to use radicle (in their IDE). This means that, even if we may end up creating a GUI that wraps the CLI and that is similar to Upstream, we might also learn something new! :teacher:

For example, we might learn that users prefer to do things in a different way than what is currently offered as part of the other clients. That is why we mention that this feedback could be useful for some other teams as well (in the case that such user-centred design studies have not already taken place, of course).

Even in the (extreme) case that our results show that the IDE experience ā€œshould be an 100% wrapping of the CLIā€, we will:
a. have some validation that the CLI UX resonates with the users
b. still have the option to decide whether or not to proceed with building the IDE plugin(s) themselves. This application is just about the UX research. :test_tube:

As a final point, regarding the ā€œcollaborative objectsā€, I am personally 100% aligned with the vision that Radicle is for more than just code sharing. I have already been exploring on my own ways that collaboration on issues could be possible with radicle, and I have also been asking about these on the Radicle discord, exactly because I see that as an important feature missing in Radicle today, towards unlocking decentralised collaboration. I am still exploring this space.

Perhaps ā€œcollaborative objectsā€ are in the not-so-distant future, but there is still a path to be followed in getting there. :loop:

Could an IDE plugin only provide functionality around issues, if it doesnā€™t cover the - even more basic - functionality laid out above? For example, would users be expected to use the CLI to publish their repo to radicle and then switch to the IDE to collaborate on issues? :thinking:

In the GitHub landscape, today, I can create Pull Requests (PRs) and Issues with the CLI and the IDE plugins, and the Desktop client and the Web interface. Itā€™s not an ā€œeither/orā€ situation. Different users use different tools and I donā€™t somehow see that the Radicle community will not reach this same conclusionā€¦

In any case, I also see the ā€œcollaborative objectsā€ on the roadmap for the Radicle IDE plugins, but we are now just starting out and that would probably come in the futureā€¦

4 Likes

Hi @bordumb,

Are there expected any further actions by @yorgos and our team in order to proceed with this application? I mean what is necessary to do to move forward and reach a definite result (approved or rejected)?

A clear and quick process will determine the engagement of the community to this goal of development, and will set the ground for future efforts.

Thanks!

2 Likes

@yorgos thanks for explaining that a bit more. I think the main concern was that the initial write-up sounded like it may be jumping the gun on designing products too soon with too much overlap.

Given the focus is around UI/UX research, I definitely think that is needed here. Iā€™m fine with this write-up as is, so no more clarification need there.

I will start the vote for Milestone 1 ASAP. Keep in mind that the scheduling will be as follows:

  • Milestone 1: if passed, 20% of funds will be dispersed immediately (2,544 USDC). One completed/approved, the remaining 80% will be dispersed upon approval (10,176 USDC)
  • Milestone 2: will only start once Milestone 1 is fully completed. The voting funding process will follow a similar schedule as Milestone 1.

Please respond

@yorgos @kabitakis
We need an ERC20 address that we can send USDC to.
We will use this as the ā€œtoā€ address when voting via multi-sig

3 Likes

@bordumb thanks so much for this! We are all delighted with the news here and really looking forward to kicking things off (assuming everything goes well with the vote).

Here is the address: 0xA3399D1edf56dc498d1E43931A046c20e8486460

2 Likes

Hey! Thanks a bunch for this.

Iā€™ve started the initial transaction below:

Iā€™ll work to rally votes from other multi-sig members
You can check the status live there and once we have the votes, Iā€™ll DM you

3 Likes

thanks @yorgos @kabitakis @micmeistudio

Keen to see IDE plugins happen. I would like to see input from @alexgood @rudolfs @geigerzaehler @Kaidao on this proposal and perhaps work closely with your team in exploring this, having spoken to each independently about ideas that overlap. Perhaps a call between all interested parties is worthwhile at kick-off?

I agree with @bordumb. Given that this proposal is about research and Iā€™m keen to see experienced people push things forward with a bias for speed over efficiency, Iā€™ve voted in favour of this application.

:v:t4:

3 Likes

Excited to see this write-up @yorgos and thanks to @fintohaps and @bordumb for the detailed review. There is a lot of potential in exploring Radicle IDE experiences and I think itā€™s worth it to have an experienced team start diving in and understanding the opportunity space.

I echo the point @nas made regarding looping in relevant Radicle Core Team members to the conversation to make sure thereā€™s alignment moving forward. Since this is a deeper product exploration, it might also be good to provide updates in the Community Call as well? I think the research youā€™ll be conducting will benefit link #alt-clients and #upstream, so Iā€™d like us to keep the communication flowing!

Beyond those suggestions, Iā€™m in full support and have voted yes to funding this grant :seedling:

2 Likes

@bordumb As it has come to my attention, Radicle Grants applications need to be in USDC. This application was in EUR, so please allow me to amend the situation:

Milestone 1: 13934,8 USDC
Milestone 2: 10865,7 USDC

As a brief update, on behalf of the team, weā€™d like to first thank everyone for their support and for the constructive feedback! Everyone is really excited about this!

The team had its first kick-off meetings this week and has started analyzing/documenting the existing behaviour of the GitHub plugin in IntelliJ. There is also a (trello?) board being put together that will offer transparency into the progress being made (or lack thereof :wink: ). Still settling on tools though - more (exciting) updates soon!

2 Likes

Update:

Our first real week of progress is almost behind us (Greek National holiday tomorrow, Friday), and I wanted to share a couple of highlights!

  • We now have a Trello board and weā€™re using that to track progress: Trello
  • We have a figma board as our workspace: https://www.figma.com/file/P5dUZ9RNmgxfFOahkOeiJ3/Radicle-IDE-Plugins
  • Weā€™ve documented the existing, in-scope, functionality of the GitHub plugin in IntelliJ.
  • Weā€™ve started drafting the Personas that we will map participants to, in our usability studies.
  • Weā€™re now working on an early version of the low fidelity wireframes and preparing the setup of the moderated usability studies (questionnaires, scenarios, logistics around moderated sessions, etc.)

We will soon start looking for participants for our usability studies. If you are using IntelliJ IDEA as your IDE of choice and feel like taking part, please do reach out to me on Discord and Iā€™ll try to get you early access :wink:

1 Like

Hi Yorgos

Thanks a bunch for the update.
For others: do you mind dropping your full Discord user name so that they can find you easily?

Iā€™ll reach out on Discord to try testing.

1 Like

Hi @bordumb , my Discord user name is micmei#3599.
Sorry for being quite, iā€™m on the way to get familiar with the new tools and Radicle community ways of communication and collaboration :slight_smile:

Hey @bordumb! My username is kabitakis.

UPDATE:

I canā€™t believe itā€™s taken me over a month to post an update here, but itā€™s been a really busy time (both on and off work) and so weā€™ve struggled to move as fast as weā€™d liked (more on that below).

During this time, a lot has happened however:

  • Prototype: The low-fidelity designs that would inform the development of the Jetbrains IDE plugin for Radicle have been created and are being evaluated with users. (figma)
  • Workshop signup process: We finalized the call-to-action, questionnaire, calendly, etc. to allow interested folks to sign up to a usability workshop.
  • Workshop setup: The setup of the moderated study was finalized (user tasks/scenarios, interactive prototype). A big difference with the original proposal was that we decided to try out an interactive prototype, as opposed to the paper prototypes we were originally planning for (we would scan these and the moderator would manually change the screens for users, as would happen in a non-virtual workshop). The interactive prototype has required more hours of work, but we still think it has been a valuable addition: we can maintain more of an observer role and the interaction feels more ā€œnaturalā€ for users.
  • Prototype complexity: A lot of work here has gone into making the interactive prototype more open for exploration by the users, and not just covering the ā€œhappy pathsā€. This has made the setup on figma MUCH MUCH harder, but has also resulted in learnings already when we found users exploring actions we didnā€™t expect they would take.
  • Iterative improvements: Rather than just 2 (larger) iterations of improvements, we have instead been making smaller, continuous, improvements to the designs, after every couple of workshops. (It helped that we didnā€™t have all the users at onceā€¦ )
  • Participants so far: We have now gone through more than half of our target usability studies: we have ran moderated usability workshops with 13 users, out of a target of 20). Finding participants has certainly been a big challenge as well. We are focusing on Jetbrains IDE users (not just any developer), and, it seems, asking for 30ā€™ of time is a big ask these days, especially for seasoned developers. This has been the main reason why this is taking so much longer (in terms of calendar time) than originally estimated. We might have to reconsider the incentives for finding future users.
  • Remaining sessions: Another 4 studies are currently booked till next week, which is when we are planning to complete the first round of workshops.

Once the workshops are done, we will round up the findings and prepare the final deliverables:

  • interactive prototypes in figma (rather than the paper prototypes we originally proposed). We think this will dramatically speed up the actual implementation of the IDE plugin (which we plan to propose in a future grant proposal, as it will give the developers a much clearer spec of the required functionality. The paper prototypes do leave room for doubt (a person is still required to answer the ā€œwhat screen does the user go to when they click this buttonā€ kind of questions).
  • usability workshop findings: we will present a report with the summary of our notes from the meetings, an overview of participant profiles and the results from the tasks they were asked to complete.

If anyone has some questions, please feel free to let us know !

2 Likes

@yorgos

Thanks a bunch for sharing this awesomely detailed Figma.
Weā€™ll be taking a closer look at this.

I really appreciate all the detailed notes on things that worked well (e.g. using interactive prototypes) and the things that didnā€™t work well (e.g. finding time with participants). These kind of notes are great for the future.

Some questions/comments:

1. Does this mean your first Milestone is ready for evaluation?

The Figma you shared just above seems to cover the Milestone 1: IntelliJ IDEA Plugin

We have this Milestone Delivery Template here.

Note: Itā€™s NOT a hard requirements, but it might help organize your notes + is a very clear indicator to us that the milestone is ā€œcompleteā€ and ready for review.

Itā€™s largely based on the original Application Template here, so youā€™re welcome to copy most details.

2. Any general thoughts on how this work might play out over time (e.g. adding new features)?

For example, there may be extensions to parts of the CLI (commit, push, pull, etc.) that would be useful to also add to your IDE plugins.

As an example, there is already this Grant Application here for extending the CLI to create Drips.

If/when you create another grant to full develop the ideas in your user studies/wireframes, I think adding some thoughts around making this all extensible + integrated with other ecosystem developments would be super awesome. I bet you guys will have some really valuable ideas around making things easily extendible so that future product features can be easily added over time :slight_smile:

1 Like

Hi @bordumb ,

I will share more details in the coming days, but to quickly answer your points:

  1. Correct. We have only been working on Milestone 1. As previously agreed herein, work on Milestone 2 will only begin once Milestone 1 is fully complete. It just took us much longer (in terms of calendar time) due to non-radicle-grant-related factors that affected how much time we could put into this project.

  2. Iā€™ve been thinking about this a little and Iā€™ll share more on this on a followup reply.

Thanks for the info & pointers! :ok_hand:
Expect an update here in the coming days with details about the Milestone 1 delivery. :wink:

Hello again @bordumb - and everyone else!

I wanted to confirm we have now concluded Milestone 1.
The deliverable is available here. :heavy_check_mark:

We look forward to your feedback, comments and questions. :pray:

As per my previous reply, we have now started looking at the implementation phase for the Jetbrains IDE plugin for Radicle, with another team that already has some experience in Jetbrains IDE plugins. We are planning to submit another Radicle Grants proposal soon about that. :memo:

In the meantime, we look forward to concluding milestone 1 and moving forward with the UX of the VS Code plugin ! :rocket:

Thanks in advance for your time reviewing this work!

2 Likes