GSoC/GCI Archive
Google Summer of Code 2009

Pidgin, Finch and libpurple

Web Page:

Mailing List:

Pidgin is an instant messaging program which lets you log in to accounts on multiple chat networks simultaneously. It runs on Windows, Linux, and other UNIX operating systems. Pidgin is compatible with the following chat networks out of the box: AIM, ICQ, Google Talk, Jabber/XMPP, MSN Messenger, Yahoo!, Bonjour, Gadu-Gadu, IRC, Novell GroupWise Messenger, QQ, Lotus Sametime, SILC, SIMPLE, MySpaceIM, and Zephyr. It is written in C and makes heavy use of GLib and GTK+.

Finch is a command line instant messaging program. It also lets you log in to accounts on multiple chat network simultaneously, and it is compatible with the same chat networks as Pidgin. It is written in C and makes heavy use of GLib and ncurses.

Pidgin and Finch utilize a programming library called libpurple in order to connect to the various IM networks. libpurple is also used by the OS X IM application Adium (although Adium is a separate project and not affiliated with Pidgin/Finch/libpurple). It is written in C and makes heavy use of GLib.


  • Privacy Rewrite The project aims to rewrite the privacy subsystem (API as well as the UI), so as to be able to implement privacy features of various IM protocols, provide Pidgin the means to present an interface that is consistent across various protocols and also eliminate the confusion in the end user arising from supporting privacy features of so many different protocols.
  • Struct Hiding and GObjectification The first phase of this project will be hiding all purple structs. All struct declarations will be moved into C files and only typdefs will remain in the header files. Accessors will be created to allow access to certain members, while some parts will remain private on purpose. The second half of this project will GObjectify purple. This will entail writing all class and type instantiation code. Refactoring of types will be done where possible using the inheritance aspect of GObjects.
  • Telepathy prpl This project aims to create a Pidgin protocol plugin that will handle Telepathy connections. This will allow Pidgin to use any protocol supported by the Telepathy framework and benefit from the advantages provided by the Telepathy stack
  • Webkit message view Quoting [1] Webkit is a popular HTML rendering engine used in a number of browsers. Adium uses it for their message windows as well. Your task for this project is to rip out GtkImHtml and replace it with Webkit. This includes the input areas as well. [1]
  • Win32 Front-End for libpurple It is proposed to create a Win32 front-end for libpurple using the Win32 API directly, without any intermediate framework. This resulting application would feel similar in use to the majority of other Windows applications, overcoming one of the significant problems when using Pidgin on the platform.
  • XMPP - libpurple transport The goal of my project is to create XMPP - libpurple transport. The transport should allow Jabber users to chat with their friends who use one of the IM networks supported by libpurple, send files to them, participate in groupchat and allow them to use as many Protocol-specific features as possible.