Community Aggregator

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.

@alexas has started a Vue.js app that can serve as the frontend: https://github.com/alexadamsmith/farmOS-community

There has been a lot of discussion in chats, emails, and other non-public places, so I thought it would make sense to start a public forum post to help organize. :slight_smile:

1 Like

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”.

1 Like

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:

Home view

  • 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.
4 Likes

Thanks @alexas - GREAT summary and ideas!!

1 Like

I’m cleaning up/closing old GitHub issues… this one in particular had a lot of great ideas and discussion around the community aggregator: Crowdsource farmOS Aggregator · Issue #206 · farmOS/farmOS · GitHub