tullamods

Pants: Random thoughts about addons

This post is about addon design. Its long, a little old, and probably a bit harsh :)


Thoughts About Design

Code Reuse

  • Reuse whenever possible.
  • Reuse means less work, thus less bugs, and less code to maintain.
  • Higher order functions are good times.
  • "Reusing" 100kb of code for a 10kb addon is generally a bad idea.
  • "Reusing" 10 lines of code from a 100kb library is also a bad idea, unless you're absolutely certain that library would have been loaded anyway.

Features

  • Adding stuff people need is generally a good idea (duh).
  • Adding things a single person requires is bad, unless you're sure the general users of your addon will embrace the new feature (or you're that person :))
  • If your addon is popular enough, failure to follow rule 2 will eventually result in the creation of a competitor addon to your own.

Interface

  • Slash commands are mostly evil. With the advent of load on demand, performance considerations isn't really an argument against them. Your user has a mouse.
  • Slash command are great for the following areas: scripting, macros, and commonly used commands.
  • The interface for an addon should be obvious to most people. It shouldn't take an hour to say, figure out how to open the options menu. (This doesn't count for people who don't read :))
  • Don't give the user too many options at once. Giant menus can freak people out just as much as a long list of slash commands.
  • Encourage the user to discover new features.
  • Things should work how the user expects them to. Yes, this statment is vague.

Performance

  • How well an addon should perform is based on what it should do. Action bars should focus quite heavily on performance, while an option menu shouldn't.
  • Features that will significantly degrade the performance of a given addon should be completely separate from that addon, unless rewriting the addon to include those features will not decrease performance.

string.find and string.sub are slow.

  • Optimize areas that are executed a lot (duh).

Libraries

  • Libraries, even more so than addons, need to have very specific design goals.


Critiques of Other Addons, and Other Stuff

CT Raid

  • CT Raid performs poorly. This is a result of poor design (remember when CT Raid and Boss mods were one?), a lack of updates to take into account API additions, and also the decision to retain compatibility with older versions of CT Raid. The only real solution is to rewrite CT Raid, breaking compatibility with older versions like Apple did with OSX.
  • They're working on CT Raid 2, as a complete rewrite. This should be good news, as long as its written in a modular fashion. oRA is a good idea, but CT has the network effect to its advantage.

Ace Fallacy

  • The usual argument is, "I replaced this group of addons with Ace'd versions, and I gained x memory!" This was NOT due to Ace. Instead, it is due to either the replacement addons being better coded, or the replacement addons having a more narrow set of features (less bloat).
  • The best Ace can help with is code reuse, but it comes at the cost of extra overhead.

Ace2

  • Ace2 is bloated. An Ace3 (Ac3?) should be written to "trim out the fat", that is reduce the entire thing to just core functionality.
  • The greatest strength and weakness of Ace is its community. Pitbull is a very good example of this. It started out as a "lightweight" unit frame addon, and features were rapidly added to it by the community. What has resulted is, however, quite bloated.
  • Ideally, Ace2 needs to become a series of downloads with a package management system, like APT. This would result in a system where the user maintains only a minimal set of libraries, with no copies, but also would require a large amount of work. WAU has helped this happen to a certain extent, but the transition is not complete

Dewdrop

  • Dewdrop (the method most commonly used by ace addons for configuration interfaces) is evil. It is relied upon not because it is the right tool to use for the job, but simply because its an easy way of creatuing a GUI.
  • Simply throwing a bunch of options in a right click menu will not make an addon easy to use.
  • Comments

Add Comment  

Add

You need to login or register to post.

Benefits of Registration

  • Interact with hundreds of thousands of other gamers on an open social network.
  • Post your stories, news, images, videos, and other content to share.
  • Create a network with your fellow gamers or join an existing one.
  • Gain reputation for everything you do.
 
  • centrum said 
    Fri, Aug 10 2007 8:10 PM ()

    Very interesting read, you should keep us updated on what s going on in the addon scene weekly :)

  • Jesamyn said 
    Fri, Aug 10 2007 8:10 PM ()

    I enjoyed reading this and agree with several points. I try a lot of your addons because I know from past experience that they'll be lightweight and well-designed. (And I sincerely hope you don't drop Sellfish, but understand if you do. It's your mod, after all!)

  • Flisher said 
    Fri, Aug 10 2007 8:10 PM ()

    Adding things a single person requires is bad, unless you're sure the general users of your addon will embrace the new feature (or you're that person :))

    Keep in mind that out of 200,000 download, you will receive less than 200 feedback, and most will be negative when a bug occur. Trimming those leave about 100 new idea to put in an addon.

    Soo the single person might represent 10k people :).

    I'm out of the WoW coding scene but preparing for WAR arrival. Of course, code reuse is great, when the source used is good :)

  • Tuller said 
    Fri, Aug 10 2007 8:10 PM ()

    SellFish probably won't be dropped, but yes it is neglected. ItemPriceTooltip does approximately the same job, and is updated more frequently, but I like my algorithm better :)

  • Tuller said 
    Fri, Aug 10 2007 8:10 PM ()

    Yeah, it is important to remember that the majority of addon users won't post comments, and when they do, its usually when something breaks.

    What I was trying to get at, though, is simply to try and avoid feature creep. Useful features should be added, of course, but only if you know the majority of your target audience will use them (and yes, this is vague, too :))

  • Fri, Aug 10 2007 8:10 PM ()

    Very, very late comment (got here 'by accident' after reading your bongos 3 blog)- just wanted to say that it's good to see the whole 'ease of use' thing being promoted.

    Often the most difficult part of building something (macro/add-on/web page/game, whatever) is making using your baby as intuitive as possible for others. Worth the effort though, otherwise you you'll just end up with a stillborn bright idea.

    Oh- and never listen to randoms on teh internetz, which I guess makes this whole comment redundant :)

  • Tuller said 
    Fri, Aug 10 2007 8:10 PM ()

    "A stillborn bright idea", interesting phrase.

    One thing I've also had to learn is that: "What is intuitive to you is probably not intuitive to anyone else"

  • 1 page(s)