(previous discussion: #2565)
There is an undocumented support for extensions in Redash, both for the backend (#2354, #2740) and frontend (#2799). For both of them we use Python packages Entry Point functionality to discover the extensions.
This works very well for backend extensions, but for frontend extensions it introduces several challenges:
- The extension can't have its own dependencies.
- The development workflow is a bit involved, because the extension code needs to be copied into the Redash code folder you need Python where you run the bundling process. Also in development, this means this part of the process needs to run in the container, while the webpack build process runs on the host (just explaining it is hard 😓).
We would like to define a new method for loading frontend extensions that will solve the above challenges.
Several directions and questions to address:
- Frontend extensions to be installed and managed using frontend tools (i.e. npm instead of Python entry points).
- How extensions will be used? Need to consider the fact that by default, we run
npm run build when we build the image. How additional frontend code can be loaded into a container which "inherits" from our default one?
- Developer workflow: ideally you should be able to work on your extension enjoying the same ergonomics (i.e. refresh on changes) you would when developing the main code.
Any comments, ideas and feedback are welcome.
(previous discussion: #2565)
There is an undocumented support for extensions in Redash, both for the backend (#2354, #2740) and frontend (#2799). For both of them we use Python packages Entry Point functionality to discover the extensions.
This works very well for backend extensions, but for frontend extensions it introduces several challenges:
We would like to define a new method for loading frontend extensions that will solve the above challenges.
Several directions and questions to address:
npm run buildwhen we build the image. How additional frontend code can be loaded into a container which "inherits" from our default one?Any comments, ideas and feedback are welcome.