Ace is a lightweight and powerful system for building World of WarcraftAddOns. It is a new approach to addon development, a rethinking from the ground up.
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.
AceHook provides safe hooking of functions, methods, and scripts.
AceLocale makes localization (translation) of your AddOns ridiculously simple.
AceModuleCore helps you split your AddOn into separate "modules" that can easily be turned on and off. Handles enabling/disabling of events, hooks, tooltip scanners, etc for you.
Ace also has built-in myAddons support.
At the writing of this article, Ace 2 is in public beta. It is a major step up in documentation, and also allows the library (whichever parts you need) to be fully embedded into your AddOn if you do not want to depend on Ace being installed separately.
-Update- Ace2 is at end of life currently and superseded by Ace3.
Ace's design philosophy
The primary design philosophy of Ace is simple: less is more. This means less code, fewer resources used, less effort designing an addon, less stress on the UI. Every aspect of Ace is scrutinized for efficiency, not only in code design but in ensuring that only the necessary amount of memory and processing is used to perform a given task.
Ace seeks to consolidate this knowledge into a central resource, providing developers with a full addon framework that is easy to use, very flexible, and very powerful. This framework provides the most common components addons need, like data management and chat command handling, and it also provides a glue that links addons together and allows them to share system resources smoothly and efficiently.