-
-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Allow customizing the ServiceManager
with plugins
#16794
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
Conversation
Thanks for making a pull request to jupyterlab! |
The office hours exist for members of the community to come ask questions from members of the EC. If the question requires following up or further decisions to be made, then normal procedure will follow. From my point of view, this is a case of a decision that should be made within the Jupyter Frontends Council by the members of this subproject. I imagine if you come to office hours, you might make the case that this particular technical decision on whether to merge a specific feature-related PR in the JupyterLab code base should be made by the EC. I don't agree with this interpretation, but you're obviously free to make that case tomorrow. Nonetheless, I again strongly encourage you to come today to the appropriate meeting to discuss this and to make one final case after all this discussion. I don't believe EC office hours is the correct venue to talk about a JupyterLab PR. |
@echarles, you stated:
After months of discussion:
You wish to appeal to a body (the Jupyter Executive Council) that does not adjudicate technical decisions made by subprojects. That is absolutely your right, but I don't think included in that right is the ability to yet again stall motion on a feature simply because you alone object to it. |
The discussion has moved from technical to governance, the governance aspect is the topic I am willing to share with the executive council. I hope enough people will be there tomorrow, and in all case, I will request a follow-up so the case is shared with all the members of the executive council. |
If you have governance-related questions, as you indicate, please feel free to raise them at the Executive Council's office hours tomorrow. If you have any further conversation you'd like to have about this PR, please feel free to join today's call where this PR and its resolution will be a topic of discussion. |
I can not join today call, and also diccussed 2 days ago during a call with @jtpio. I would like to say again tomorrow topic will be the invalidity of the vote, so I expect the JupyterLab council @jupyterlab/jupyterlab-council to continue discussing but not merge this PR until the governance point is treated by the Jupyter Executive council. |
I don't think this is a fair expectation at this point. |
@echarles stated:
There was no vote. I mistakenly asked people to vote in discussion thread. Four people did. Then Eric questioned whether voting with a secret ballot was even allowed (NB: it is). So I re-read the decision-making guide myself to see if there's anything against a secret ballot. There isn't. But there is a requirement that someone else seconds your motion to call a vote. No one has. No one else has objected to merging this PR. No one else in the Frontends Council has recommended calling a vote. All the other indications (the votes that came in before I asked if anyone even supports holding such a vote and also the approvals on this PR) are positive. (NB: David Q and Rick W did say that as members of the Security subproject, they think a vote on this would be okay. But they weren't saying that as voters in this body.) So strictly speaking, you're right. That discussion vote was invalid. It was invalid because no one but Eric wanted to vote on it. And given the support it got in that poll and in this PR, I imagine that even if someone on the council did second the motion to hold a vote, the PR would still be accepted. |
Hey all, I will second @echarles to go for a public vote. I think it is important for heated subject that the decision should be clear and public to reflect the open-minded and transparent decision process of this community. |
Thank you @fcollonval @afshin I have opened a vote jupyterlab/frontends-team-compass#273
@afshin to me there is. Let's discuss about that tomorrow. @jupyterlab/jupyterlab-council Please vote on jupyterlab/frontends-team-compass#273 - you should have been tagged in the vote itself. Please also consider https://github.com/jupyterlab/council/discussions/28 as closed (if you don't know about that discussion, that is also fine and logical, as you have not been tagged on it, so quite hard to vote without even being invited) cc/ Executive Council @afshin @Ruv7 @ellisonbg @fperez @jasongrout @Zsailer (as discussed, I will join tomorrow 06 Feb call). |
Cross referencing a reply I made on the other thread, realizing I should have posted here: jupyterlab/frontends-team-compass#273 (comment)
|
Maybe one improvement that would help address some of @echarles usability concerns is to consider some way to dump out the plugin dependency graph, so if a user reports some unexpected behavior because on conflicting plugins, we can more easily trace the issue? |
A valid vote being now opened, I will thus not join today Executive council to discuss this case cc/ Executive Council @afshin @Ruv7 @ellisonbg @fperez @jasongrout @Zsailer |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I noted a tiny typo, otherwise good!
// Populate application info. | ||
this._info = { ...JupyterLab.defaultInfo, ...info }; | ||
this._info = new JupyterLab.Info(options); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note to self: this will prevent writing to some attributes, but it's ok because it is private
Co-authored-by: Michał Krassowski <5832902+krassowski@users.noreply.github.com>
Thanks @krassowski for the review! |
ServiceManagerPlugin
, drop JupyterLiteServer
jupyterlite/jupyterlite#1590
References
Fixes #15329
Fixes #12504
Replaces #16556
Replaces #16783
Closes #16141
Depends on #16804
More references:
PluginRegistry
class independent of theApplication
lumino#703PluginRegistry
class independent of theApplication
lumino#703): https://github.com/jupyterlite/jupyterlite/blob/eb0bcb543703213ea883dc1da948ce07494a3148/packages/server-extension/src/index.tsMotivation
See #15329 (comment)
Code changes
@lumino
packagesIDefaultDrive
andIContentsManager
ServiceManager
services to their own pluginsServiceManagerPlugin
plugin typeUse a separatePluginRegistry
for service manager plugins? Or the same one as regular plugins?A different one clearly separates the two phases of plugin activationIKernelManager
instead ofapp.serviceManager.kernels
.IConnectionStatus
Add to the user / developer changelog for visibility?Postponing for now@jupyterlab/services-extension
package to host the service manager pluginsThis can be tested using this example extension, which disables
@jupyterlab/application-extension:default-drive
and replaces with its own implementation: https://github.com/jtpio/jupyterlab-custom-service-manager-pluginsExample providing a custom default drive
Example providing a custom
ContentsManager
that logs eachget
callUser-facing changes
None
Backwards-incompatible changes
None