-
Notifications
You must be signed in to change notification settings - Fork 129
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
Proof point: See if notebook-http mode can be made a "plugin" #103
Comments
👍 thanks, @parente! |
+1, great writeup, thanks! |
@nitind and I spoke about this face-to-face. I think it's worth taking a crack at this now since "all's quiet on the western front" at the moment. Basics we discussed:
We can discuss design here as we go. Hopefully this can be done as a series of PRs instead of one massive fork merge. IMHO, if we can come up with a well-defined API, we should call that release 1.0. |
The bulk of the branching is done in gatewayapp.py itself, one for choosing the kernel pool implementation, the other for populating the list of request handlers. Breaking them out into different modules to understand how much of the main app they need would be a start. |
Clarifying the changes being implemented:
|
@nitind, I think you've got a clear path toward making "personalities" as you call them pluggable. I'd like to make a release of KG 0.6.0 now with the other fixes that have gone in, and start merging the PRs you stated in the prior comment into 1.0.0.dev in master, leading up to a 1.0 release where we declare the API stable and start semantic versioning. |
@nitind, I added the list from your previous comment to the description and turned it into one of those checkbox todo lists so we don't lose track across the handful of PRs this is going to take to close. |
Closing. |
Right now, the code for the Jupyter Notebook APIs (
jupyter-websocket
mode) is mixed in with the code for the notebook-defined REST API (notebook-http
mode). This was done for convenience during incubation to prove that KG could support other means (transports, APIs, and protocols) for working with kernels. Interestingly enough, I had a conversation the other day that resulted in my thinking about how kernels might operate if hooked to a message queue (e.g., Rabbit MQ). Immediately, I wondered if such a setup could be made possible via the kernel gateway.I certainly don't want to keep hacking support for additional kernel comm mechanisms into the KG code base. I wonder instead of an API could be defined to allow such things to be plugged-in easily. My hesitation is that not everything will so easily reuse the APIs and classes from the notebook server like the microservice approach did.
I'd like to take a pass at turning the notebook-http mode, the jupyter-websocket mode, and maybe even the message-queue idea into "plugins" (for lack of a better word) to the kernel gateway. If there's common ground, it'll improve the extensibility and maintainability of the project. If there's very little commonality beyond the boilerplate CLI, it may suggest each of these deserves to be in its own project.
Just writing this down. Not planning to jump on it right away.
From discussion with @nitind:
Clarifying the changes being implemented:
/cc @fperez @minrk
The text was updated successfully, but these errors were encountered: