In the near future, we would like to deploy a farmOS “Community Aggregator”. This will be an instance of the farmOS Aggregator that is owned and managed by the community itself, which allows farmOS instances to “opt in” to be a part of it. Only minimal access would be requested, such as general farm info like name and location. With that, we can build a simple app that displays the farms on a map.
Apart from building the frontend app and setting up an aggregator instance, we will also need to develop the connection on the farmOS side. We can create a new module, enabled by default, which provides an OAuth2 client. And the module can provide a way to “opt in” to the community aggregator itself. This could potentially be a step in the “farmOS Setup Wizard”.
Here’s my attempt to synthesize some of the ideas that we have been kicking around. I’ve outlined features of a community aggregator MVP, and what this would require from a farmOS module. Down at the bottom, I also included my own ideas about potentials this could create in the future.
The farmOS Community Aggregator is an aggregator instance with a front-end SPA written in Vue. When deployed, it will collect and display information from farms that opt in to the community aggregator. It will use Open Layers for mapping.
Features of a minimum viable product:
Displays a map of all farms that have opted into the community aggregator
Points are color-coded by farm type
Hovering displays the farm name (maybe a couple of other metrics too?)
Clicking opens the farm info view
Displays summary statistics about participating farms
Number of farms
Total acreage, assets, areas, logs
Farm list view
Lists the names of all farms that have opted into the community aggregator
Allows filtering buy proximity (within XX miles/ km of me) and farm type
Clicking opens the farm info view
Farm info view
Displays all farm metrics, and a link to the farm’s public-facing website if provided
What this would require from a farmOS module:
Retrieve farm name
Calculate a centroid for the farm
Calculate total farm acreage from areas OR request total acreage from the user optional?
Calculate number of areas, number of assets and number of logs optional?
Request a farm classification from the user (could be as simple as produce, grain, livestock; could use more nuanced categories; could additionally request that they classify their growing practices as organic, conventional, or a mix)
Request or retrieve a ‘using farmOS since’ date
Request an optional link to the farm’s public-facing website
Share all of the above information with the aggregator when users opt in
What the Community Aggregator could evolve into:
I believe the community aggregator (or a fork thereof) could ultimately turn into a platform for data sharing and farmer-led research. Many of the data that farmers are collecting as part of their day-to-day record keeping could potentially be very useful to other farmers. Ultimately I would love to give farmers the option to share additional, anonymized data about their farms for free use by others.
Here are some examples of how this could be useful, based on my own farming experience:
Season planning requires an estimate of yield, and yields are very hard to predict. This is especially true when trying a crop or animal for the first time. Expected yields provided by seed companies, etc can be unreliable and geographically unspecific, and relevant published research can be hard to come by. Yield data from nearby farms using similar growing systems could be helpful for beginning farmers, as well as established farmers trying new crops, animals, or growing systems.
In crop systems, planting time is one of the most important factors in crop success. Planting time recommendations are based on USDA zone maps that are rapidly becoming obsolete due to climate change. Planting time data from nearby farms using similar growing systems could help with climate adaptation, especially if they could be correlated with yield data.