Skip to content

Should we have two IDE options: client-only and remote-enabled?

Problem to solve

Many people are already overwhelmed by the number of choices in the GitLab UI. When it comes to contributing to a project, we have options for:

  1. Editing in the Web Editor (single file editor)
  2. Editing in the Web IDE
  3. Opening in Gitpod
  4. Cloning the project locally
  5. Opening directly in VS Code Desktop
  6. Edit in the Pipeline Editor
  7. [TBD, there may be more]

As we introduce the ability to provision workspaces that contain full remote development environments - including an editor - we have to decide whether we want to introduce yet another option: Open in a Workspace. This would mean that before editing, someone would have to first know the difference between our Standalone Web IDE and a Workspace/Remote-enabled IDE. It also assumes that they want to stick with this decision for the entirety of their work session.

Goal

We need to compare two user flows and determine which one offers the superior user experience when it comes to clarity, discoverability, feature accessibility, and scalability.

Flow One

I'm a developer and I open a project in the GitLab UI. I want to start editing a file, or a number of files. I click the Open in Web IDE button and start working. After some edits are made, I realize I need to build my project. I open the Terminal panel and connect to a pre-configured Workspace. I resume my editing session and commit my changes.

Flow Two

I'm a developer and I open a project in the GitLab UI. I want to start editing a file and I know that I'm going to need to be able to compile code to perform more advanced tasks than are available in the standalone Web IDE. I click Open Workspace and choose my favorite IDE (VS Code). After it's ready, I get my work done and commit my changes.

Assumptions

I purposely added some statements in there that might guide our implementation of the study:

I know that I'm going to need to be able to compile code to perform more advanced tasks than are available in the standalone Web IDE

How would someone know this? How do we display this in the UI? Is there a way to switch back to the alternate solution if I chose one incorrectly? Since running a workspace costs me money, how can I be sure it's being used efficiently?

After some edits are made, I realize I need to build my project.

Again, how do I come to that realization? Is there an easier way to guide someone to the Terminal panel? Should we indicate somewhere that the Web IDE is "disconnected" by default?

I resume my editing session

Technically speaking, what does this look like? Can we apply a patch to the "connected" Web IDE state and resume right where we left off? Is there any scenario where data will be lost? What about disconnecting or recovering from a failed connection?

Edited by Eric Schurter