GSoC/GCI Archive
Google Summer of Code 2015

Pidgin, Finch, and libpurple

License: GNU General Public License version 2.0 (GPLv2)

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, 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.


  • Facebook Messenger Protocol for libpurple Many chat clients, such as Pidgin/Finch, support Facebook chat via the XMPP interface. There are two key issues with the XMPP interface: it has been deprecated and there is no group chat support. With the imminent shutdown of the XMPP interface, many users will be left in the dark. And even with XMPP, the group chat functionality has been nonexistent. In order to better support the platform for what people use it for, which is chatting, group chat support is essential.
  • Google Hangouts Plugin: Protocol Implementation Pidgin currently supports GTalk through the open XMPP protocol. XMPP protocol is no longer supported by GTalk and Google has replaced GTalk with Google Hangouts which implements the proprietary protocol Google+ Hangouts. The aim of this project to write a libpurple plugin to support Google Hangouts by implementing the Google+ Hangouts protocol.
  • Maintenance hero I would like to spend this summer as Pidgin's maintenance hero-intern, working through stagnant or hairy bugs, implementing small XEPs that have been on the to-do list, and generally helping to make the 3.0.0 release as smooth and as soon as possible. I recently worked with Tomasz to change my project, so this proposal is a work in progress. If you have any questions, please ask in the comments and I'll answer quickly.
  • Rewrite chat log backend and frontend A proposal of refactoring chat log to make its backend more flexible.
  • XMPP prpl improvements In this project we intend to add some new extensions to XMPP protocol supported by Pidgin (libpurple). Also, we would fix some current issues with the XMPP functionality as well as user-interface problems that are related to it in Pidgin.