Well Fed Cat

01 Sep 2021

[Home]

Modularisation Problem

Modularization problem

As of now (2021-07-31) well-fed-cat has already multiple sub-components. Currently they are all maintained in the same repository, which makes it not easy to apply significant changes to the core components (lots of adjustments need to be done in the dependent components, which cannot be done at once).

The solution, which comes to mind is to split the whole system into multiple repositories, so that some components could be first developed or modified independently and then other parts of the system could accomodate the changes.

But unfortunately this approach is not easy to apply cleanly.

The first solution, which came to my mind was:

This approach though has multiple weaknesses:

The second problem seems to be fundamental and still not be solved. Basically “dependency hell” is the manifestation of this problem. And e.g. Maven management of the transient dependencies is one of they attempts to solve it. In my opinion it does not really properly solve this problem, but I also don’t know fundamentally different and better solution.

To come around this problem I think we can give up on achieving “generic-flexibility”, i.e. that each component can be maintained independently from others except it’s explicit and trainsient dependencies (but not considering components, which in turn depend on it).

Instead we will split components into two groups (or probably later more):

Components from the first group will be combined into single repo.

Components from the second group will have each it’s own repo having “core-components” as submodule.

There will be one more repo, which has set of scripts to manage and build all “specific-implementation” repos, so that one could check, if all are functionall (not really yet sure, how exactly to acheive this).

There is one further layer of components: UI. E.g. interactive-console, desktop, web etc. Theoretically they can be arbitrarily combined with the stores implementation, which makes the task of managing all this system quite complicated. Probably we just need to select couple of specific combinations and just fucuse on those…

[Home]