Make it Ace'd
"Plz make it Ace'd !"
This comment (or something similar) is seen on a daily basis here at WowAce, and it's time to clear up some misconceptions about what Ace is, what it does, and why it's not always the best choice for authors to use.
For another article similar to this, see What is Ace.
What is Ace?
"Ace is a lightweight and powerful system for building World of Warcraft addons. Ace provides developers with the tools needed by most addons, freeing them from repeating common tasks and allowing them to jump right into the creative part of building their addons. New and experienced addon coders alike can benefit from Ace's features."
See also Ace2.
What Ace is NOT?
Ace is not magical code sauce. It will not automatically make an addon faster, leaner, or more functional. All of those things are affected by the person writing the code, and nothing else.
So why does everyone love the Ace?
One could argue that my statement on what Ace isn't is false. Yes, a vast majority of Ace-based mods are more efficient, leaner, and more functional than their non-Ace counterparts, but that is because of a close-knit community checking each other's work, and offering suggestions, as well as the use of shared libraries in order to allow mods to use the same methods and data instead of defining their own. This winds up being a "more is better" scenario. The more Ace-mods you use, the more code that gets recycled and shared, and the more efficient things are overall. On a single per-addon basis, an addon gains little to nothing efficiency-wise from being Ace based vs something else.
Shared libraries are truly the double-edged sword here. When utilized to their fullest, they vastly cut down on the amount of code needed. However, many smaller mods will utilize only a single one or two functions of a large library. This in return winds up causing even more unneeded code to be loaded than if they would have just written those few functions themselves.
Big addons can do more with less code using Ace, small addons can do what they want with less code, without using Ace
To Ace, or not to Ace
This brings us to our main point. When is it appropriate to "Ace" a mod, what does an addon gain from being "Ace'd"?
- Easy configuration – Provides a nice unified way for the user to change settings using things like DeuceCommander and Niagara. (This however can still be implemented into a non-Ace mod via a separate tiny mod. IE BongosFu)
- Quick development – Ace provides a nice skeleton to get a mod up-and-running very quickly. Of course, there are other alternatives that allow the same thing like Dongle.
- Easy distribution – WowAceUpdater is, hands down, the single easiest way to install, remove, and update a large number of addons for Warcraft. Again this is nothing new though; various communities have distribution methods that are also relatively easy. (The Cosmos patcher, WowEcon's updater, Dongle's use of GoogleCode and Subversion, even WowInterface's favorites/e-mail features)
But what does it all mean?
Simply put, Ace is a convenience and a preference. It allows developers to quickly get their mods up-and-running and gives a nice large community for feedback on their code. The updater is convenient for end-users, but it's nothing revolutionary. When it all boils down, again, a mod is as good as the person coding it. Authors like Tuller, Cladhaire, Tekkub, and Gello are prime examples of people who can make something good, clean, and efficient, regardless of the framework they choose to use (or not to use).
Unless an addon is dead, broken, or very inefficient to begin with, it will gain nothing from being Ace'd, other than the convenience of showing up in the files repository.
Using the AceSVN if you don't use Ace2
Using Ace2 in your addons is not a requirement for using the AceSVN and getting your files on files.wowace.com and inside the updaters that support it. Everyone is welcomed to participate in the community, including the services provided, regardless of your library of choice. ... but rest assured, if we think your code is a huge unwieldy hog, you will hear about it :-)