I was on a quest to find a Windows jabber client That Doesn't Suck, which is a surprisingly tall order. Along the way, I came across Miranda, which looked promising at first. The project's goal, apparently, is to develop a small and easy client. The website makes a good impression, in fact it turns out to be a lot more fetching than the client itself, which isn't beautiful. But enough about looks. I was testing for a certain subset of features, and the first impression was good. Multi protocol client, low memory footprint, small windows, and it seemed to have all the essentials - file transfers, avatars.. hm no emoticons? Turns out Miranda is so small that emoticons are treated as a plugin. I download the add-on, a .dll (not the first thing that comes to mind when you say user friendly) and dump it in the right place. Yes, emoticon themes are supported. I'm interested in that, because I maintain one.
Now, it's bad enough that every client has a different way of dealing with emoticon themes. And these approaches do not vary in what functionality they provide, all of them do the exact same thing. Making an emoticon theme is no more complicated than this:
[default]
angel.png *angel* *A*
biggrin.png *biggrin* *g*
blind.png *blind*
The above is from gaim. It's simply a picture, and a list of replacement strings which activate it. There's nothing more to a theme declaration than this. For the purpose of my emoticon theme, I wrote a few simple scripts which generate these files (which are all similar). Thusly, I wanted to find out how to generate a theme file for Miranda.
I was in for quite a surprise. The declaration itself is very much the same, of course:
; defines-----------------------------------------------------------------
Smiley = ".\OGSmileys.dll", -127, "*biggrin* *g*"
Smiley = ".\OGSmileys.dll", -122, "*blind*"
Smiley = ".\OGSmileys.dll", -111, "(B) (b)"
But what of the smilies themselves? They're in a .dll file! That's right, in Miranda's Smaller, Faster, Easier spirit, they have stored the images in a .dll. This simply means that the same bits are aggregated in a library, there's nothing more happening there, they're not being compressed or processed in any way, just plain stored.
Need I mention that emoticon themes are supposed to be easy to create? It's not supposed to take a coder to do it, it's a feature for users to enjoy, to tinker with, without needing any help.
So for someone who wants to make themselves an emoticon theme for Miranda, they need a compiler! Yes, nothing easier than tossing a few images into a directory and setting up a definition (like the one for gaim), that any schmuck can figure out, no you have to compile the bloody thing. Screw that all the other clients are doing it this way, we don't give a shit, compile it or piss off. Needless to say, for me to find and set up a compiler just for this would be a humongous hassle and no sooner did I discover this interesting little quirk did I dump Miranda altogether.
The Miranda people are so in love with .dll's, that connecting to Google Talk (which is also an add-on), you need to download another .dll. Then you need to install an openssl library as a whole separate install. Yes, ssl also an add-on, who would possibly need that?
UPDATE: Apparently there are other ways to do this.
UPDATE2: Factual errors were discovered after this entry was written, as such I posted the link above, to the Miranda forum, where the clarification was established. However, not unreasonably so, the Miranda people have urged me to clarify the situation right here as well, so as not to misrepresent their client.
Emoticons in Miranda were historically stored in .dll's. That explains why the theme that comes with the plugin is as such. However, that is not the only way to store them, and the emoticon definition example included in the plugin (which I failed to notice), explains the different options, including just using pngs.
It was never my intention to misrepresent Miranda, and while my observation about .dll's was not incorrect, it was incomplete.