@paul121 @gbathree and I have been discussing the idea of adding a core farm_integration
module to farmOS. The main problem we’re trying to solve is:
There are community modules being built that add integrations between farmOS and other third-party services and applications, but there isn’t a standard place to put the menu items for these in farmOS.
So, at the very least, a core farm_integration
module could add an “Integrations” menu item and/or route that other modules could add to. This would be essentially equivalent to the core farm_report
module, which just adds a “Reports” item to the menu.
So the first question for others in the community is: what do you think? Does adding something like this to core make sense?
The second question is: where should the menu item go? We’ve discussed putting it in the main menu, so it’s available right under “Records”, for example. Another option is to put it under Setup > Integrations.
A third question: where should the “settings” for integrations go? Under Integrations > [integration name] > Settings? Or under the existing Setup > Settings > [integration name]? It feels to me that each “integration” should be encapsulated in the UI as much as possible, so it’s easy to find what you’re looking for. But it means splitting things out of the Setup > Settings, which could also cause confusion.
It’s also possible that some integrations won’t want to put their routes in any of those places, and will just want to add widgets or other features to existing farmOS UIs.
I’d like to use this forum topic to centralize the discussion and open it up to the rest of the community. We can’t control what downstream module maintainers do, but we can provide some patterns and guidance in core to encourage consistency.
Perhaps a good starting point is to list out all of the integration modules that exist right now, and think through where each of their routes/features would be best suited in the UI.
It would also be worth looking at other systems that have third-party integrations (eg: Quickbooks? Stripe? others?) to see how they handle things.
I think there is an important balance between making the integrations visible to end users, without cluttering the UI with things that are not used often. A lot of these decisions will be case-by-case, but perhaps we can come to some consensus on general guidance for module maintainers.