-
-
Notifications
You must be signed in to change notification settings - Fork 31
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
Separate out the frontend and the backend #269
Comments
Just to understand the issue correctly. Is the issue that the current If so, another way would be to have a Python package for the backend logic, and another Python package to include both the backend and the JupyterLab extension? That way we can avoid splitting the repos again, and reduce maintenance overhead by keeping the packages in the same repo. |
Yes, but also the other way around: if I just want the frontend, I get the backend too. This is how jupyverse depends on the whole jupyter-server ecosystem in general, while it should just replace it.
To me it's still weird to have something JupyterLab-independent and something JupyterLab-specific in the same repo. |
Are we able to find the issue / PR that initiated the move to a single |
I can't find an issue or a PR, but I guess it was for ease of releasing and synchronization between the frontend and the backend. |
Thanks for digging into the history. Unfortunately, they don't say much about the motivations, or am I missing something? |
Some more context in jupyterlab/jupyterlab#13527. Maybe one motivation was to make it easier for users to enable RTC, by just installing the |
Probably, but this is also an issue today. We would like to install |
So what is the ideal package structure then?
Then jupyverse can depend on only Or should we use a different name than
Also, if #237 which adds the chat function, it will make depending on Or maybe:
Thoughts? |
It would also be worth thinking where suggestions (#239) come in. Naturally, it would be another package like |
Suggestions are deeply tied to I know it's annoying to rename things, but I would like to have things more explicit, like:
|
Including @fcollonval in the conversation, since he was involved in the original development of |
Though |
Also CC @Zsailer. |
To clarify this point, the jupyter-chat project is currently split in 2 packages:
We should probably split the current jupyter-chat in 2 projects for clarification, but currently #237 does not require python dependency. |
Maybe it's also time to consider making RTC the default behavior in JupyterLab? There starts to be a number of features we want to implement that rely on RTC, and supporting both non-RTC and RTC scenarios makes the code base increasingly complicated. |
Could you elaborate on what is needed in core JupyterLab that is not possible to do in an extension? For reference this was also discussed in jupyterlab/frontends-team-compass#177 before. So we should probably have this discussion in the team compass if that's something people want to consider. |
Quick take: we are only starting to bake the non-RTC features. Once these are implemented and tested, I would consider moving them to JupyterLab/server proper. For time being I think we should continue with a small reorganization in extensions. |
I'm not sure to understand, did you mean "the RTC features"?
I'm not saying it's not possible in extensions, just that having a bigger and bigger RTC/non-RTC split is becoming problematic. |
It would be useful to know what exactly is problematic? For example there is the issue with drives which should indeed be addressed in JupyterLab. But is there anything else? |
For instance, new features like server-side execution only work in RTC. It's just one example, but I feel that RTC opens new possibilities and that supporting non-RTC holds us back from going all the way. For instance, having server-side execution means we can get rid of the frontend talking the kernel protocol. That would solve issues regarding the kernel busy indicator. |
Sure but this can be implemented in an extension, now that jupyterlab/jupyterlab#15830 is merged and available in a release. Or is there something else that really needs to go in core JupyterLab? |
As I said, it's also about what RTC can unlock (like getting rid of the kernel protocol) that will affect JupyterLab core. |
ok I guess this is now going out of scope of the original purpose of the issue. Feel free to open a JEP or an issue in https://github.com/jupyter/enhancement-proposals to discuss this more. It seems like jupyterlab/jupyterlab#15830 (and / or other extension points) should be enough to continue working on RTC in a separate extension. Back to the original question of where the code should live: could a first step be to try splitting |
I mean getting rid of forwarding the kernel protocol to the frontend over WebSocket, I don't think it deserves a JEP. |
I will start working on this. I think I will need to separate out some plugins out of previously discussed |
Since the underlying code is in
Edit: but then the server-side execution plugin may need a new home. |
Problem
jupyter-collaboration is currently under the jupyterlab organization. It includes the JupyterLab frontend and the jupyter_server backend. The backend part used to be jupyter_server_ydoc, under the jupyter-server organization. I think it was a good choice to separate out the frontend and the backend, since some extensions may want to have access to the shared models without bringing the frontend stuff. Also it would allow jupyverse to not depend (or depend less) on
jupyter-server
.Proposed Solution
We could split this repository in two, and have only the JupyterLab frontend stuff in a new repository
jupyterlab/jupyterlab-collaboration
, which would have the backend as a dependency.The backend part would be in
jupyter-server/jupyter-collaboration
.What do you think?
cc @krassowski
The text was updated successfully, but these errors were encountered: