Just to finish the thought I alluded to in my last comment…
Imagine the following structure:
- First we write up a “convention” for how to make a “Pasture Health Observation Log” (what quantities does it contain, what units do they use, etc). This provides a standard interoperable data structure.
- farmOS core provides a “configurable Observation quick form”, allowing multiple instances of pre-configured observation quick forms to be created easily.
- Another module (Grazing Plan or otherwise) provides a “Pasture Health Observation” instance of this core quick form (so it appears as a standalone quick form in the UI, but is pre-configured to collect specific data points for pasture health). This writes logs that follow the “Pasture Health Observation” convention.
- This module also adds a prediction graph UI to the Grazing Plan that loads up data points that were entered via the Pasture Health Observation quick form. It reads logs that follow the convention.
Each component is self-contained but builds on the lower-level pieces.