Has it ever been explained why the API is so restrictive?
I understand there might be certain types of addons that Zenimax might not want to exist. Probably the most contentions of addons among players would be group damage meters. For that case, I can, for example, extrapolate why Zenimax doesn't let us see other player's combat events.
I could also understand restricting functions that help enable bots and other such things, though I would argue that bots don't need GUI addons to exist (obviously, given this game's tumultuous first months), so any restrictions meant to impede bots only impedes developers and players.
But there are dozens if not hundreds of basic features missing (or removed) and I can't imagine that all of them lead to questionable types of addons like damage meters and gear scores.
This is all exacerbated due to various shortcomings that should be default, could be handled with addons, but can't be created due to seemingly arbitrary restrictions.
Recently I looked into making an addon that displays the Expert Hunter buff, taking into account the increased duration from killing undead. While this is something that should be default, at least, I figured, it should be pretty simple to fix with an addon. When you activate Expert Hunter, start a timer. When you score a killing blow on an undead enemy, increase the timer by 15 seconds. Simple.
Apparently, however, EVENT_COMBAT_EVENT doesn't register activating buff abilities. Why? While there are workarounds available to determine when the player activates an ability...why obfuscate this? But okay, at least it's possible...
Then I ran into another issue. It doesn't look like ACTION_RESULT_KILLING_BLOW triggers for NPC kills. Why?
We get ACTION_RESULT_DIED, which seems to fire when my character sneezes out of combat while I'm afk. Like most things, it has zero documentation and I wasn't about to waste my time figuring it out. What dire consequence is this preventing?
Anyone developing addons for this game can tell you that they have run into cases that forced them to think "okay, I guess I just can't do that because...I don't know. Blah, that's so dumb. Whatever, I guess I can't do this project now."
I'm sorry if I sound irate, but it is exceedingly frustrating using this API, and I can't even find a justification for these practices. What I can find are many, many posts from beta developers equally flabbergasted as to why so much functionality was removed. I've seen countless posts from developers that have essentially read "Yeah, that's not possible anymore. They removed that event/function for some reason. Sorry, but it's out of my hands."