I'm creating an officer note addon to keep more detailed notes on guild members, since the current Blizz-implemented solution is very limited. I've pretty much gotten everything, except one thing. I'm trying to figure out a method to sync notes between officers. For example, if I create a note for Guild member xxxxx, how will the addon save it if there are no other officers online and queue it to be sent via AceComm and send it when I'm online with another officer, and then that officer's addon will distribute the new note as well as me, etc. See the picture for an example. Hope it isn't too confusing =P
There are lots of existing addons that sync data across your guild. You should take a look at some of them to see how they handle this problem. For example, LibGuildBankComm synchronizes the contents of the guild bank between all members of the guild, and has awareness of guild ranks and bank tab permissions.
For the guild bank case, the problem is a lot simpler though since for a given time t, there is only one valid state so can just time stamp your data and go with the newest version.
In the case of officer notes though their could be a branched edit resulting in merge conflicts.
Consider the case A edits a note, goes offline.
Then B comes online and edits the note, too.
Now A comes online again. Both A and B have an edit for the other person to sync, which one should be taken?
A possible solution would be to allow one note per officer resulting again in only a single valid state at a given time.
So if I understand you correctly, what you're saying is instead of assigning a note for each guild member, give each officer a note. Then I can just sync when an officer comes online, or when a note changes, and each officer will only send their own note. Which would also make my SavedVariables DB substantially smaller.
You can still have one note per user per officer, just pick how you need it.
The main point is that if there is only one entity that can edit a note, a timestamp is enough to update to a newer (though not always the newest) version, since there can't be merge conflicts by multiple people changing data independent from each other.