One of the main goals of moby-core is to define a component architecture such that moby-core can be broken up into smaller pieces but still be able to be combined together to work as a unit.
This componentization work requires a redesign of the current moby-core architecture.
The purpose of this topic is to get the discussions around such an architecture started.
Some questions to pose for those interested:
- What is a component?
a. Can a component live in process?
b. Can a component live out-of-process?
- What are the (if any) existing natural separations in moby-core today that would be low-hanging fruit for componentization?
- How are components registered and found?
- How do components communicate?
- Should moby-core be a hard-coded set of components or should it be able to swap out components?
a. If swap out, is this build-time or runtime?
b. How does this relate to the moby tool, which is designed to combine various components into a system?
Just a note for this discussion, there is some pre-existing (POC level) work to decouple various moby-core subsystems: