There are many different philosophies to sharing spell information.
Some believe in only sending information on spells they are interested in(Healcomm).
Some believe in sending all starts/stops/sucesses/interrupts (Comcastlib).
Some just send the start and stop for a single spell (CTraid Rez).
Some believe in only sending target information (Healsync).
Some believe guessing at cast targets is a necessary feature, others feel otherwise (Dorjae's/Nissesync).
... the list goes on (Healbot, etc)
I started writing a library to attempt to unite all of these different philosophies. However, I have since had my guild of over a year dissolve on me, and my interest in Warcraft has disappeared. So I am left with a grandiose vision to unite spell communication and tracking under one banner, and a half finished piece of code full of ideas.
However, I was hoping to spark a glimmer of interest in someone here. It is in that hope I link my unfinished code. If nothing else it will server as a proof of concept or an example of spell tracking to future addons:
The idea behind it is to have it scale to the addon's needs.
It should allow:
1) Spell Registration - this information needs to be shared
2) Optional Long Distance Tracking - START/STOP/DELAY/INTERUPT need to be communicated.
3) Optional Target scanning - Guess at someone's spell target by assuming their target. (half implimented.. tracks scanned targets, but currently doesn't distinguish between accurate/inaccurate)
4) CastingInfo function - Returns what someone is casting (not implimented)
5) CastingOn function - returns a list of people casting on a target (not implimented)
6) Event Callbacks for key events/all events pertaining to the spelllist(currently UNIT_SPELLCAST_* is non-key, where START/STOP/etc is KEY)
7) Remote Callbacks - A way to append information to the event (the structure is there, but it is not finished)
8) Incompatible Version Tracking - Major changes should make the libraries ignore each other.
Anyway, if you are intrested in this, yay, if not, I hope it serves as an example of what to do/not to do ;)