Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Show meaningful information on the session page while starting #1879

Closed
2 tasks
lorenzo-cavazzi opened this issue Jun 2, 2022 · 16 comments · Fixed by #2054
Closed
2 tasks

Show meaningful information on the session page while starting #1879

lorenzo-cavazzi opened this issue Jun 2, 2022 · 16 comments · Fixed by #2054
Assignees
Milestone

Comments

@lorenzo-cavazzi
Copy link
Member

Motivation

Sessions take time to start, 1 minute (or more) is not uncommon.
Especially when clicking on the quickstart button, users may be confused since they need to wait for such a long time with no feedback apart from the bouncing dots. The status line on top saying Started x seconds ago adds to the confusion.

Mock-ups / Design

We could improve the feedback by:

  • Changing the status line to Starting.
  • Adding better feedback in the main window.
    • A short message saying the sessions are starting and it may take a minute or two
    • A progress bar instead of the bounding dots
    • Some feedback from the status.message content. It currently mentions the pods with a non-ready state, maybe that should be changed a bit. The idea is to give the user the perception that something is going on in the background. E.G. showing starting x of 5 components, or come up with a short descriptive sentence based on what still needs to start.

Progress

  • API Design (sprint-??)
  • UI Implementation
@rokroskar
Copy link
Member

This is how jupyterhub implements it: https://github.com/jupyterhub/jupyterhub/blob/6be3160d7487bb362df7095f24454ef2814951fc/share/jupyterhub/templates/spawn_pending.html

@ciyer ciyer added this to the 2.3.1-next-next milestone Jun 2, 2022
@ciyer ciyer moved this to Todo in UI Sprints - DEPRECATED Jun 2, 2022
@ciyer ciyer removed the needs design label Jun 9, 2022
@andre-code andre-code moved this from Todo to In Progress in UI Sprints - DEPRECATED Jun 24, 2022
@andre-code
Copy link
Contributor

andre-code commented Jun 27, 2022

@rokroskar It is possible to include the list of pending containers to start, do you think that information is useful for the user or the message 1 of n containers are ready. is enough. ?

Screenshot 2022-06-27 at 11 40 03

@rokroskar
Copy link
Member

I'm not sure having the names displayed is necessarily useful. Do we have information about what is happening with the individual containers, e.g. image being pulled?

@andre-code
Copy link
Contributor

The message comes directly from notebook-service. So @olevski probably has more information about it.

@olevski
Copy link
Member

olevski commented Jun 27, 2022

Do we have information about what is happening with the individual containers, e.g. image being pulled?

The notebook service can get that information from k8s if you want to display it. It is a bit more complicated to implement than just saying 1 out of n containers are ready but definitely doable.

What would the message look like if we should what each individual container is doing? Is that too much information?

I guess it will be a dictionary with container names as keys and statuses/additional info as values. Currently we simply send a status (one of Running, Starting, Stopping, Failed) and a message (i.e. containers with unready status: a, b, c). These are directly then used by the ui.

@rokroskar
Copy link
Member

I was just thinking it might be useful to show the information about the (main) image being pulled because that's typically what causes the longest delay. For the other containers it probably doesn't really matter, other than cloning the repo which I would call something like "setting up the repository".

If we had a checklist I guess it would be something like:

  • setting up support containers
  • cloning and configuring the repository
  • pulling main image
  • starting server

Would that make sense?

@andre-code
Copy link
Contributor

If it is possible to know the steps in advance, it would be great to receive the status like this:

const status =
{
  state: "starting",
  details:
    [
      {
        step: "Setting up support containers",
        status: "done", // pending, error, done
      },
      {
        step: "Cloning and configuring the repository",
        status: "pending", // pending, error, done
      },
      {
        step: "Pulling main image",
        status: "pending", // pending, error, done
      },
      {
        step: "Starting server",
        status: "pending", // pending, error, done
      },
    ],
};

That way it would change the way of presenting the progress of start a session in to something like:

Screenshot 2022-06-27 at 14 04 18

@gavin-k-lee
Copy link

My hypothesis is that a user does not care about all the intermediate steps, e.g. git proxy, oauth, sidecar - I think those elements could be hidden and they see a progress bar, with the option of expanding the steps.

@rokroskar
Copy link
Member

@gavin-k-lee I agree - but the expansion should show what @andre-code has in the example above, not the container names, imho

@olevski
Copy link
Member

olevski commented Jun 27, 2022

I think that what you propose is doable. And as @andre-code suggests having the possible steps pre-defined and fixed makes my life easier too. And this will definitely improve things.

@olevski
Copy link
Member

olevski commented Jun 27, 2022

Ok since we want to have both the number of containers ready out of the total and the more detailed breakdown then I propose the following format:

const status =
{
  state: "starting",
  totalNumContainers: 7,  // NEW
  readyNumContainers: 3, // NEW
  details:
    [
      {
        step: "Setting up support containers",
        status: "done", // pending, error, done
      },
      {
        step: "Cloning and configuring the repository",
        status: "pending", // pending, error, done
      },
      {
        step: "Pulling main image",
        status: "pending", // pending, error, done
      },
      {
        step: "Starting server",
        status: "pending", // pending, error, done
      },
    ],
};

@olevski
Copy link
Member

olevski commented Jun 27, 2022

@andre-code do you want to have a /status endpoint to get the detailed status or you would prefer to have everything in one place?

@olevski
Copy link
Member

olevski commented Jun 27, 2022

Because if we have a separate endpoint for the status then I can simply not send the detailed status breakdown in the regular response. And if you need the detailed status you can go to a different endpoint and get that session's status.

@andre-code
Copy link
Contributor

thanks @olevski. All at the same end point as you proposed.

@ksanao
Copy link

ksanao commented Jun 27, 2022

I recommend showing a progress bar (with the information on the completed steps that you suggest) and removing the timer (it looks that you already removed it in your designs :) )

@ciyer ciyer modified the milestones: 2.8.0, 2.8.0-next Aug 31, 2022
@lokijuhy lokijuhy moved this to Todo in MIX Feature Team Sep 9, 2022
@lokijuhy lokijuhy moved this from Todo to Groomed in MIX Feature Team Sep 15, 2022
@ciyer ciyer modified the milestones: 2.8.0-next, 2.8.0-next-next Sep 22, 2022
@ciyer
Copy link
Contributor

ciyer commented Sep 22, 2022

Also, in the session starting display, we should show a message indicating that the user will be brought into an autosave branch if that is the case.

Image

@andre-code andre-code moved this from Todo to In Progress in UI Sprints - DEPRECATED Sep 28, 2022
@andre-code andre-code moved this from In Progress to Ready to Review in UI Sprints - DEPRECATED Oct 3, 2022
andre-code added a commit that referenced this issue Oct 12, 2022
Fix #1879 

BREAKING CHANGE: Requires renku-notebook v1.12.0 or greater
Repository owner moved this from Groomed to Done in MIX Feature Team Oct 12, 2022
Repository owner moved this from Ready to Review to Done in UI Sprints - DEPRECATED Oct 12, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
No open projects
Status: Done
Status: Done
7 participants