On skins and plugins

I started this post over six months ago, but never quite got around to finishing it. It might never be finished. But this is a thorn to me, so I’m just going to post it as is.

Should your new application support skins?

Probably not. Skins are often a programmer’s way of saying “Oh, I don’t do UI. We’ll let someone else get it right.” Only nobody ever does, at least not in your product. Your UI just isn’t as compelling as the one it’s replacing.

The corollary to this is that if lots of people are demanding skins, it means your UI sucks. Once you add skins, you’ll never be rid of those skins, and you won’t have fixed your application either.

You’d probably do better to fix your application’s appearance and behavior.

Now, should you do a custom appearance?

If you’re planning a completely custom appearance for your applications, odds are it will suck. Unless you have artists that are beyond simply competent, but brilliant, you’ll probably fail.

First, you need a UI that looks and feels good. Secondly, it probably needs to fit in with the native platform. If you’re planning a full screen game, it’s fine to not fit in. But if you’re building a Windows-based BIOS updater, that custom UI that you think looks so amazing? The truth is, it looks like complete shit.

You’re better off fitting custom UI into the OS rather than changing your whole application to fit them.

Now, finally: What about plugins?

This one is a little less clear. There’s great reasons to do plugins. Integration with another system (whether technical such as a web site or social such as particular requirements for reporting) is a good one.

But you know what isn’t a great reason? Making your product a platform. Do you want to be a product people use, or a platform people struggle with?

Firefox’s plugins make me flinch. They’re usually poor quality, craptacular tools that lunge for a particular nugget of a good idea and fall flat on their faces a few yards away from it. There are a few that are interesting, but they’d benefit from being rolled in, or being a separate stand-along product on their own.

Pick your features carefully. 37signals didn’t become popular by picking an extensive list of features or allowing people to write their own features. Instead, they built something they wanted to use. And they’re not alone. There are a few things I’d love to see (MarkDown instead of Textile, for instance), but even if a hypothetical plugin system could add these things, they’d be overwhelmed by the layer of suck.

Before you build a plugin architecture, put the effort into your application.

Posted in Articles | Tagged , , , , , | Comments Off

Password Changes in Open Directory

John C. Welch (aka Bynkii, Angry Mac Bastard): Password Changes in Open Directory (One burst of profanity). For us Mac users who are sometimes a little too smug about the Mac’s user interface. (The podcast: Angry Mac Bastards. Extreme profanity there, though.)

Posted in Link | Tagged , , , | Comments Off

Not Your Average iPhone Screencast

Loren Brichter (Atebits, Tweetie): Not Your Average iPhone Screencast. How to make the simulator look like a real device in screencasts.

Posted in Link | Tagged , , , | Comments Off

The Conquest That Wasn't

Faruk Ateş: The Conquest That Wasn’t. How Microsoft dominated the PC world without conquering it. I think Faruk utterly nails this.

Posted in Link | Tagged , , | Comments Off

When the cookie crumbles

Tenni Theurer (Yahoo Interface Blog): Web Performance Research, Part 3: When the Cookie Crumbles. From 2007, but I hadn’t seen it yet.

Posted in Link | Tagged , , , , | Comments Off

Safe, threaded design and inter-thread communication

Matt Gallagher (Cocoa with Love): Safe, threaded design and inter-thread communication

Posted in Link | Tagged , , , , | Comments Off

Objective-C 2.0's dot syntax

Chris Hanson on Objective-C 2.0′s dot syntax. When to use it, when to not use it, and what it’s really there for.

Posted in Link | Tagged , , | Comments Off

Elizabeth Gilbert on nurturing creativity

Elizabeth Gilbert (Eat, Pray, Love): on nurturing creativity. Probably my favorite TED talk. I saw this a few months ago, but promptly forgot about it, so I’m linking to it this time.

Posted in Link | Tagged , , , , , | Comments Off

Git cheat sheet

Zack Rusin: Git cheat sheet. (via unixfudotnet)

Posted in Link | Tagged , , | Comments Off

Control and configuration of applications through Info.plist

Matt Gallagher (Cocoa with Love): Control and configuration of applications through Info.plist. I hadn’t heard of UIRequiresPersistentWiFi before, so this will be helpful to me.

Posted in Link | Tagged , , | Comments Off