Story #17426

Support plug-ins

Added by Peter Amstutz 11 months ago. Updated 8 months ago.

Status:
Resolved
Priority:
Normal
Assigned To:
Category:
Workbench2
Target version:
Start date:
03/16/2021
Due date:
% Done:

100%

Estimated time:
(Total: 0.00 h)
Story points:
-
Release relationship:
Auto

Description

Design a plug-in scheme for workbench 2 whereby user extensions can be incorporated (probably compiled in).

Customization points

  • Add entries to the left hand tree to load custom panel; hide default entries
  • Add item to "NEW+"; hide existing items on NEW+
  • Add entries to user menu; hide existing entries from user menu

Plug-in initialization allows adding to a list of plug-in routes and dialogs. WorkbenchPanel dynamic list of routes & dialogs.


Subtasks

Task #17431: Review 17426-plug-insResolvedPeter Amstutz


Related issues

Related to Arvados Epics - Story #16782: Add-on module systemNew06/01/202209/30/2022

Associated revisions

Revision 31e84a93
Added by Peter Amstutz 10 months ago

Merge branch '17426-plug-ins' refs #17426

Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <>

History

#1 Updated by Peter Amstutz 11 months ago

  • Description updated (diff)

#2 Updated by Peter Amstutz 11 months ago

#3 Updated by Peter Amstutz 11 months ago

  • Target version changed from 2021-03-17 sprint to 2021-03-03 sprint

#4 Updated by Peter Amstutz 11 months ago

  • Assigned To set to Peter Amstutz
  • Status changed from New to In Progress

#5 Updated by Peter Amstutz 11 months ago

  • Target version changed from 2021-03-03 sprint to 2021-03-17 sprint

#6 Updated by Lucas Di Pentima 10 months ago

Some comments:

  • Unit test are failing
  • I wonder how we can make plugins writers' life easier by not needing to attach their code to wb2's code tree?
  • Looking for react apps plugin patterns I got to an article that made a good point: adding 3rd party code potentially exposes the whole app to plugin errors that make the entire app crash. I've found this that may be useful: https://reactjs.org/docs/error-boundaries.html#introducing-error-boundaries

#7 Updated by Peter Amstutz 10 months ago

  • Target version changed from 2021-03-17 sprint to 2021-03-31 sprint

#8 Updated by Peter Amstutz 10 months ago

Lucas Di Pentima wrote:

Some comments:

  • Unit test are failing

They are passing for me, test run here:

https://ci.arvados.org/view/Developer/job/developer-tests-workbench2/359/

  • I wonder how we can make plugins writers' life easier by not needing to attach their code to wb2's code tree?

The intended way to do it is now "write it in another repo, check it out under src/plugins".

It seems like it could theoretically discover them without modifying the "plugins.tsx" file but that would involve digging deep into webpack.

I think this is not much different from isolating errors in our own code (which wb2 doesn't do very well). That sounds like it is worth doing but I don't know if it should be a blocker for this branch.

17426-plug-ins @ commit:370d78f65bca409aa1a295d94a96436959b568ae

#9 Updated by Peter Amstutz 10 months ago

  • Target version changed from 2021-03-31 sprint to 2021-04-14 sprint

#10 Updated by Lucas Di Pentima 10 months ago

  • File src/plugins/README.md - Line 56: there's an incomplete sentence.
  • As a final comment: I think it would be nice to have a way to ensure in some degree that we're not breaking plugin compatibility without knowing. Not sure if it's a project on its own, though.

Other than that, it LGTM.

#11 Updated by Peter Amstutz 10 months ago

Lucas Di Pentima wrote:

  • File src/plugins/README.md - Line 56: there's an incomplete sentence.

Yea, I was distracted and didn't finish writing it. Fixed.

  • As a final comment: I think it would be nice to have a way to ensure in some degree that we're not breaking plugin compatibility without knowing. Not sure if it's a project on its own, though.

I think that if we have more than a few of these, it will be worth setting up integration test infrastructure specifically for the plugins (something that enables a plugin and runs tests for that specific plugin). We're not quite there yet.

Other than that, it LGTM.

Ok! Merged!

#12 Updated by Peter Amstutz 10 months ago

  • Status changed from In Progress to Resolved

#13 Updated by Peter Amstutz 8 months ago

  • Release set to 38

Also available in: Atom PDF