DEV Community

Gary Kramlich
Gary Kramlich

Posted on • Originally published at patreon.com

Where did the name libpurple come from?

This article was originally posted on Patreon and has been brought over here to get all of the Pidgin Development/History posts into one single place.

People often ask me "Where did the name libpurple come from?". While it's a pretty quick story, there's a bit more back story I don't typically include which I'll be covering in this post.

I'm purposely not naming names in this post because I didn't clear that part with the involved parties and they haven't fact checked this either. That said I have started a history of Gaim/Pidgin project that all of this will end up in, but that project has been put on back burner a bit for Pidgin 3 development.

Way back in the very early days around 1998-1999, Gaim was a single GTK+ 1.2 application that just talked AOL Instant Messenger via the TOC protocol. There was talk of making Gaim support multiple protocols, but this didn't gain a whole lot of traction.

This lead to the creation of EveryBuddy (later succeeded by Ayttm) to create a new multi-protocol client from scratch. Protocols were added to EveryBuddy via plugins. This made it easy to add new protocols as there was a workable abstraction and is the origin of the term Protocol Plugin.

The Gaim maintainer at the time realized multi-protocol was the way to go ended up doing a lot of work on EveryBuddy which meant that Gaim development slowed down to a crawl for awhile.

In March of 2000, some new maintainers stepped in to revive Gaim. They quickly added support for plugins by April and added protocol plugins in December 2000, by adding support for ICQ, IRC, and Yahoo. Over time additional protocols would be added as well.

A few years later, a developer wanted to run Gaim on a Zaurus PDA, but that ran Qtopia, which was based on QT which obviously wasn't going to work well since Gaim was a GTK application. This developer did a ton of work to create the very earliest patches of what would later be named libgaim.

libgaim was everything about Gaim, except the user interface. It had signals and hooks that could be used to implement a user interface on its own. Obviously Gaim was updated at the time to become the defacto standard UI.

It wasn't until 2006 that libgaim would actually appear within the code base. It was something we were planning for our 2.0.0 release, but there was something else going on that we unfortunately couldn't talk about.

That was the Trademark lawsuit that AOL had brought against us for using "AIM" in our name. You may have noticed I've only referred to Gaim as Gaim, even though in its earlier days it was in all capital letters. Anyways this meant we needed to change our name. But it wasn't just one name we had to worry about, because we now had libgaim, Gaim, gaim-text, and gaim ncurses toolkit.

Believe it or not, we actually very quickly landed on libpurple. At the time people would abbreviate Protocol Plugin to prpl, or PRotocol PLugin. And apparently, some people would pronounce this as a "purple". So since libpurple's main purpose was to integrate protocol plugins to a user interface. It just made sense.

However, I recently discovered that the structure that represents all of the interactions for a Protocol Plugin is actually named PurplePluginProtocolInfo, so apparently some wires got crossed somewhere, but regardless the name stuck!

After that, we next landed on renaming Gaim to Pidgin. But we went through countless names that we had to clear with legal before landing there. After we had the Pidgin name, Finch came pretty easily as we decided to stay with the bird theme, and gaim ncurses toolkit easily became glib ncurses toolkit.

And well, that's the very long version of the story!

I hope you're enjoying these posts! Remember they go live for patrons at 9AM CST on Mondays and go public at 12AM CST on Thursdays! If you'd like to support my work, you can join find a list of ways to do so here.

Top comments (0)