Currently, we are using a somewhat linear relationship between Civis, where problems have causes and causes have solutions. However, the relationships between problems, causes, and solutions are non-linear. For example, a solution to one problem might cause others (e.g., climate engineering solutions may cause widespread problems.). Likewise, a solution to one problem may also solve others.
Further details
Given the complexity of the problem, cause, and solution space, our data model should be a bit more flexible and resilient, allowing us to capture the nuance of human agency.
For example, we currently do or are discussing the following.
delete all solutions when deleting a cause (#1436)
impose a strict linear relationship of Problem -> Cause -> Solution (original description from #101)
This issue proposes we clarify the intended flexibility of the Civi data model. We should also consider how to implement a more graph-like structure where we can traverse Civis via links like "causes," "caused by," "fixes," etc., as described in #149
Some examples
Problem <- ´caused_by´ <- Cause <- ´fixed_by´ <- Solution <- ´caused_by <- Problem
Idea summary
Currently, we are using a somewhat linear relationship between Civis, where problems have causes and causes have solutions. However, the relationships between problems, causes, and solutions are non-linear. For example, a solution to one problem might cause others (e.g., climate engineering solutions may cause widespread problems.). Likewise, a solution to one problem may also solve others.
Further details
Given the complexity of the problem, cause, and solution space, our data model should be a bit more flexible and resilient, allowing us to capture the nuance of human agency.
For example, we currently do or are discussing the following.
This issue proposes we clarify the intended flexibility of the Civi data model. We should also consider how to implement a more graph-like structure where we can traverse Civis via links like "causes," "caused by," "fixes," etc., as described in #149
Some examples