Development Tools (LUA & XML, not AddOns)
Voices, which begin as a murmur, will build to a babble ... and finally all those voices will overwhelm each other in a constant crash of noise. Very small things, taken to great quantity, leave the observer with nothing useful.

I am very much in favor of giving people one voice to say many things. Reusable tools. Therefore, I place templates and open-ended functions in a folder called "JIM_toolbox" where everyone can find them. This folder is included in every AddOn you download from me. Those that use tools, anyway.

Here is a list of the tools I offer to other AddOn authors:

CONFIG_OPTION_ROW - These rows put a label in their top-left, a configuration object in their bottom-right, and lay themselves out vertically so you don't have to.

JIM_DROPDOWN - A JIM dropdown inherits from UIDropdownTemplate. In my opinion, they make dropdown and menu systems much easier to write (a single table definition). In addition, they let you substitute whole windows for the submenus that Blizzard provides (DropDownList1, 2, and 3).

ROTATING_MINIMAP_BUTTON - The button is any image that sits on the rim of the minimap, which will slide around when clicked and dragged. Gello pioneered the concept. I have provided it in a virtual frame that you can build from.

SpellCast - SpellCast is a LUA and XML that keep very careful records of what spell is being cast, on who, for how long, and so forth. It can be used to power AddOns that work with cooldowns, targeting, spell and item queues. The most important piece of data you'll ever use for this purpose is a table named SpellCast_inProgress.