Replies: 1 comment
-
Thanks for opening our first discussion with your proposal. I especially appreciate the simple implementation. Adding a plugin architecture for CumulusCI to support custom services and tasks would be a big improvement to the framework. I also agree that the batteries-included approach has both benefits and drawbacks. ContextI reviewed a write-up David Reed did last year, which stressed the need for better organization of tasks and flows. For example, Stewart suggested adding an Additionally, your recent contributions pointed out that managing third-party dependencies adds administrative overhead and slows down the review process. Here were the main ideas we discussed internally around that time:
Approaches We Are ConsideringThese are some broad strokes:
Questions for Discussion
|
Beta Was this translation helpful? Give feedback.
-
CumulusCI has always had an all batteries included approach to package dependencies. Installing the
cumulusci
package pulls in a lot of Python packages, many of which are used for more edge case functionality.There are also plenty of existing Python libraries which would be great to use in expanding CumulusCI. The problem is adding more dependencies to core doesn't seem like the right thing anymore. Core is already too bloated as is.
A few years ago I prototyped a really simple plugin framework for CumulusCI using the following concepts:
plugins
key incumulusci.yml
containing a list of Python package namesThis allows projects full flexibility to require a plugin be installed in the runtime with no impact on projects not using plugins.
Advantages
cumulusci
into separate packages that can be optionally installedImplementation
The implementation of all of this is amazingly only ~30 lines of code changes to
cumulusci.core.config.project_config.BaseProjectConfig._load_config
as seen here:https://github.com/SFDO-Tooling/CumulusCI/compare/main...muselab-d2x:CumulusCI:feature/plugins?diff=split&w=#diff-1f678872ff8728a8dab42acfb218e9f83932f3a91af85e7c63494298e3e65657R142-R226
I'll work on test cases and get a PR for this implementation but figured I'd kick off the new discussions with a post to see if anyone has any thoughts on the idea.
Beta Was this translation helpful? Give feedback.
All reactions