The correct (IMHO) solution is to ensure that groups are federated. First, ensure that groups can be addressed specifically, eg. !group@sn.jonkman.ca (perhaps this already exists in newer GNUsocial code). The next step is to distribute/federate the "ownership" of a group. When a new group is created there is the option of federating with another group, so a new !group@gnusocial.de could join !group@sn.jonkman.ca -- the two instances would share distribution of messages. Now when a message is sent to !group the message goes to all members subscribed to my instance as well as any federated groups. It could be done as a tree, eg. !group@gnusocial.de is a subscriber of !group@sn.jonkman.ca, so sn.jonkman.ca sends one copy to !group@gnusocial.de which then distributes to its subscribers. That tree-like hierarchy is fragile, because if there is a chain of intermediate groups and one of them disappears it'll split the group. Perhaps message distribution can be hierarchical, but group management needs to be fully meshed so a missing instance can have its subscribers picked up by the other instances.