GSoC/GCI Archive
Google Summer of Code 2013

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, MXit, Novell GroupWise Messenger, 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.


  • Easy Plugins Website This project includes creating a plugins website as well as redesigning the Pidgin plugins UI to allow easy installation of plugins right from Pidgin. The project would also allow developers to submit their own plugins for inclusion in the Pidgin plugins repository as well as upload new revisions of the plugins.
  • File Transfer between Libpurple/Non Libpurple Clients. The aim of the project is to implement: Seamless file transfer to and from pidgin : Perfecting protocol implementations(prpl) in Pidgin to enable the “Send File..” feature to flawlessly work between libpurple/libpurple and libpurple/non-libpurple clients(Yahoo Messenger and Google Talk). Alternate file transfer plugin Implementing an HTTP file transfer mechanism for cases where file transfer is not able to initiate/undergo due to any reasons.
  • GObjectification Projects This project aims to remodel the pidgin codebase around the GObject. I believe that this transition will benefit the code by making it cleaner, more robust and object-oriented. GObjectification would result in a more modern codebase that is not only more maintainable, but will also lift some of the restrictions developers currently face. The proposal also introduces an intuitive GObject-based plugin API, and a protocol interface that protocol plugins must implement.
  • Quail - A Qt GUI for libPurple I propose to create a Qt based user interface for libpurple. I would like to create a new application called Quail that is based around the Qt 4 and 5 toolkits.