Would it be useful for farmOS core to provide an optional “Farm” asset type?
In general, a single farmOS instance represents a single farm. We’ve had a lot of discussions around supporting “multiple farms” in a single instance, but most of those have been focused on creating access control logic to support multiple separate farms within a single instance and restricting access to users based on the farm they are associated with. Setting the access restriction question aside for a moment, I’m curious if it would be useful to offer a “Farm” asset type for other reasons.
We’ve heard from some users who manage multiple properties that they think about their operations in terms of “farms, fields, and people”, where each “farm” is in a separate (sometimes distance) geographic location, and within that they have individual “fields”, and sometimes the “people” are assigned to specific farms.
If we added a “Farm” asset type, it could appear in the Locations hierarchy alongside other location assets like “Land”, “Structure” and “Water”. You would be able to organize fields (Land assets) under farms (Farm assets) to create a hierarchy that matches your mental model.
Historically, this has been accomplished in farmOS already using the “Land type” field on “Land” assets. One of the available land types is “Property”, so it’s already possible to create this kind of hierarchical model using existing asset types. But one key limitation of using “Land” assets to represent “Farms” is that you cannot add Farm-specific attributes/relationships without them being added to ALL Land assets. It isn’t possible to add special attributes to just “Property” Land assets. Attributes are shared across all Land assets.
This gets to another broader discussion we’ve been having about the need for more “Farm-level data storage” options. A “Farm” asset type could have new fields on it for standard things like “Mailing address” and “Telephone number”, which don’t have a place in farmOS currently (and don’t make sense on Land assets). Custom modules could add their own fields too, for whatever purposes they have. There has been talk about wanting to store things like “the list of certifications my farm has”, or “the locations where our products are sold”, for example.
And, getting back to the “access restrictions between farms” idea… this still leaves the door open for that. It could be possible to make some generalized access logic that restricts user access to “specific assets and their children”. So if a user is granted access to a “Farm” asset, and that has 3 “Land” assets in it, then the user has access to those as well. It’s still a large development effort, and separate instances are already an easy option that achieves the same thing, but this could be a step towards it regardless.
Thoughts? Strong opinions for/against? I’m curious what the wider community thinks, and how they might use a “Farm” asset type.