-
-
Notifications
You must be signed in to change notification settings - Fork 367
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
Managing multiple Jupyter servers #48
Comments
I think most users of this app will not be interested in getting to work straight away, something that can be accomplished with anaconda itself, but to access remote environments (cloud VMs, remote servers, computing clusters, linux from windows etc etc). In fact i would not expect the user of this app to have a working jupyter enviroment at all, especially on windows. I don't know if jupyterlab can handle a no-connection state (it does not get initialized? i dunno). but it handles well a disconnection. The most elegant option could be manage this from jupyterlab itself, with a nice UI similar to the new UI to select the kernel/console/editor. But we would either:
I think we can narrow down the cons of option 1, for example:
We could simply use different html pages, one for jupyterlab and one for the notebook selection UI.
The UI would probably end up the classic add/move/edit/delete/select a list of items, each with it's own options. in that case we could find some open source UI with a compatible license to work from. Also check #15 out. |
@blink1073 do you think it would be possible (and reasonable) to start jupyterlab without a jupyter server for the sole purpose of displaying a UI (similar to the select kernel/editor/terminal/console) for selecting the server to the user, and then either re-initialize it or refresh the page? |
You could also start a separate app that is the server picker, and then launch the main jlab app. I think picking a server is a good enough reason to refresh the page either way. |
That's a great idea. Spawning jupyterlab apps from the main process (used to select the server) would also allow the user to connect to different servers at the same time with no added complexity. |
I'm starting to think that the best solution is a hybrid of the two that works as follows:
This design covers the use cases mentioned in this thread, which I think boil down to this:
For 1 and 2, we would be preserving an uninterrupted startup that will improve workflow. For 3, we are allowing quickly connecting to any number of remote connections. For 1, we are making it easier to get JupyterLab working. JupyterLab will always be launched with a server connection, and switching between servers will trigger a page refresh. @ellisonbg @cameronoelsen thoughts on this? |
Here is the design we've decided on:
The server management UI is going to be written using React. |
It looks like a simple server management system was implemented by PR #71, but in v3.3.2-1 I don't see the "Servers" menu option mentioned in the #71 thread? Was this once a feature that has been lost, or was it never completed? There are a couple other open threads requesting this feature (#15 and #394). |
Would this be an appropriate place to raise integration with mamba_gator? I think that's a separate issue; but instantiating multiple conda environments and running JupyterLab within them would create multiple servers the application then would need to deal with somehow. Maybe I should raise this as a separate issue and reference this issue as related? |
this is already implemented |
I'm starting this issue to talk about how the electron app will manage multiple Jupyter server connections. This includes both remote connections and servers that are already running locally when the application starts. I think there are two primary ways to approach this: either we provide a UI that appears before the JupyterLab frontend and allows selecting/adding a connection, or we create an extension for JupyterLab that manages connections after the app has started.
1) Independent Server Management UI
This UI would appear before the splash screen and would allow the user to choose between spawning a new local server, connecting to a local server that's already running, or connecting to a remote server. If the user selects to create a new local server, the splash screen is displayed until the server starts.
Pros
Cons
2) JupyterLab Server Management Extension
This option requires that we spawn a Jupyter server when the electron app starts, because, as far as I know, the JupyterLab frontend needs a server connection to start properly. The UI would provide a list of currently running local servers and a list of previously used remote connections.
Pros
Cons
Analysis
There are, of course, slight deviations from these two options. For example, we could do a hybrid of the two where the user can manage connections after choosing an initial connection to start on. However, I think these are a good starting place.
I think option 2 makes the most sense, as it makes the startup process really smooth and allows the user to start working immediately.
The text was updated successfully, but these errors were encountered: