-
Notifications
You must be signed in to change notification settings - Fork 3.2k
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
User interface plugins #6945
Comments
Hello @alexec ! I am willing to work on this issue but I am not familiar with cncf projects. I am facing a small issue that resources are more than enough and I am feeling a bit lost in all these repos and all. Kindly help me out a bit. I would also love to start contributing on this. If this issue is available then kindly assign this to me. |
Hi @DhairyaBahl this issue is currently being held for Google Summer of Code. It’s a really big issue and wide ranging issue, with potential for massive impact, and would require some time and dedication. We do have a lot of issues marked “good first issue” which are great places to start contributing (if you have not done so before). Users vote for issues with 👍 so you can sort issues by 👍 to find popular issues. |
@alexec Understood! Thanks for explaining this part to me. I will checkout other issues for the time being. 😄 |
Hi, is this issue opened and could anyone work on it now? |
I had been thinking of a relatively simple (and not necessarily the most efficient or secure method) way to do UI plugins in #12682 (comment) and #12943 (comment). If we have a "Settings" page (or section on the UserInfo page or on the Plugins page or something), we could potentially just allow users to add arbitrary JS links there. Like all settings, they'd be stored in Executing arbitrary JS is not the safest thing, of course, but there's no great way of sandboxing DOM interactions in JS right now (WASM and Worker interop are possible, but are not quite yet practical). A user would have to manually copy+paste the URL themselves as well and we could add a bunch of warnings around that. It's also not the most efficient as it's an arbitrary script and not a React component or similar; it has no way of interacting with the app state and so can conflict with React's reconciliation. Plus it might end up duplicating libraries and bundler code etc. But it seems like a workable, simple PoC, particularly for things like overlays. Effectively it could work like browser extensions, minus the isolation those have (pending the permissions an extension needs). |
Currently, to add a new resources to the UI you need to implement both backend and frontend changes:
Unlike workflows APIs, the events and dataflow APIs are generic, we could replace them with a "dynamic" API that uses the
dynamic.NewClient
. That would open up a bunch of APIs that could be used to support any resource we wanted.This dynamic API would make the events and dataflow APIs redundant.
Argo CD has a UI extension mechanism to load the rollouts into the UI that is proven. We can lift inspiration from this for a similar feature in workflows.
Et voila - we have a user interface with extensibility.
Other needs:
Workflow APIs are too complex to generalise, e.g. there is as
/suspend
API with logic behind it. So we need a way for users to plugin logic too (TBD).The text was updated successfully, but these errors were encountered: