[GSoC] A Modern Windows IM client based on libpurple

Alexis Christoforides alexis at thenull.net
Tue Apr 8 00:01:43 EDT 2008

Hey everyone!

My name's Alexis, and I'm one of the people who submitted a proposal to
Pidgin. I thought I would post the proposal here to see what  the dev
community thinks about it, especially when there's a point or two where I
would really appreciate everyone's feedback. Or you can just wish me luck,
that works too :-)

Full text follows.


A Modern Windows IM client based on libpurple

Hello! I'd like to work on creating a new GUI-based IM application for
Windows, on top of the libpurple library.

- A native Windows user interface using the latest available controls and
styling, and following the latest User Experience Guideline from Microsoft (

- Client completeness to the point where a user can install the application,
add accounts and add/view/chat with contacts.

- Support for contact grouping, status/away message displaying and display

- Integrated 'toaster' notifications (similar to the ones provided by the
Guifications plug-in or Windows Live Messenger)

- Resolution Independence (if developed using Windows Presentation

Choice of API

There are multiple paths one can choose from when building a Windows
Application: MFC, Windows Forms, and Windows Presentation Foundation (WPF)
are the three most popular ones, with the first one being the prevalent
choice for C++ applications.

While I have experience writing for all three, I believe that this new
front-end should be designed using .NET and WPF.

Advantages of WPF
WPF's major advantage is the power of the framework provided, clearly
designed to host next-generation desktop applications by providing effects,
animations, easier addition of media into the interface and resolution
independence, as well being better at ensuring that the applications adhere
to Windows interface guidelines. I also believe that it is important for the
client to be as good-looking as possible to encourage transition of Windows
users to open-source software for their IM needs.

WPF is also quite easy to write in and adjust, which will leave more time
for creating .NET bindings for libpurple.

Disadvantages of WPF

The biggest drawback of using WPF is the limited backwards-compatibility;
However, Pidgin would probably remain as the 'main' IM client for all
versions of Windows for now, while people who want the possibly more
modern-looking new client can use that if their systems allow it.

The other (possible) limitation has to do with WPF performanceas it can be
more resource-demanding that regular GDI+ applications. I will be sure to
test the program on lower-end hardware running Windows XP and profile
possible bottlenecks such as animations.

PLEASE NOTE: I am more than willing and ready to execute the project using
Windows.Forms if that is decided to be preferable.


The following will be delivered upon the Summer of Code project deadline:

-    Complete source code for the client, under version control (either
under a new Pidgin Monotone branch or elsewhere)
-    The libpurple interop class library, written in C# and separated from
the client, to allow others to work on their own IM clients in .NET from
-    Documentation on usage, development and configuration of the client.


Acceptance to 26 May - During the Community Bonding Period I will converse
with my mentor(s), subscribe to the Devel mailing list, go through the
libpurple source code and continue reading on WPF. I will also look into
Monotone as I have not used it before (I've used one other distributed
version control system, BZR. I'm hoping it's similar).

26 May - Commence work on the project. Discuss communication method with the
team (blog, wiki, etc.)

15 June - Present a UI prototype of the program. If possible, have the
prototype to at least be able to view the contact list with display

7 July - Deliver a complete C#-to-libpurple interop library, and preliminary
(but working) version of the actual client. From here on, provide weekly
versions of the client to the community for UI evaluation and bug-fixing.

5 August - Deliver a feature-complete client for testing and last-week

11 August to 18 August - Project fully tested, submitted and documented. A
final report will be posted.

Documentation will be provided and will be wiki-based.

Some of the challenges that I can identify at this point are:

1) I have no experience with developing with libpurple. However, interfacing
with it looks to be pretty straightforward according to the wiki page (
http://developer.pidgin.im/wiki/WhatIsLibpurple) provided that the program
makes sure to only use a single thread to interact with the library.

2) I have not worked extensively with WPF. If this choice turns out to be a
blocking problem, I will proceed with using Windows.Forms instead. I do not
believe this will necessary though.

3) Client design will require the creation of a number of custom controls, a
fact that from personal experience seems to significantly increase debugging
time.  Also, the client will need to be able to handle plug-ins and
skinning, a feature which is highly desirable but, under the time
constraints of this program, probably not achievable. I will do my best to
make the program easy to extend and understand though.

Why Choose Me?

- I have many years of working/commercial experience in both Windows, Linux,
C++ and C#, and I have been programming in C# since 2001. I've also been
required to write 'interop' code between C++ libraries and C# before, which
will be a necessary skill for this project.

- I'm currently reading 'Windows Presentation Foundation Unleashed' by Adam
Nathan, which is considered to be one of the best books on the subject. It
is a very thorough and practical guide to the API and, along with the MSDN
documentation, it should be more than enough to help me work things out.

- I've always been very interested in the design of user interfaces and
would love to work with the community of a popular piece of software on
designing something that is practical, good-looking and easy to use.

- I'm a happy everyday user of Pidgin for AIM, but at the same time still
run Windows Live Messenger because of its (to my opinion) often superior UI
and the fact that it blends better with the rest of Windows applications
(especially in Vista).

- I've already participated in a previous year's Summer of Code, which means
I'm well aware of the time limitations and the high cost of procrastiation

More about Me

Hello, I'm Alexis! I'm 24 and a Greek-Cypriot senior undergraduate at
Arizona State University. I have been a mediocre computer programmer for
about 13 years and a better one for the last four. I have been to a number
of programming competitions such as the International Olympiad in
Informatics (IOI'01, '02 and '03) and have in the past been a
shareware,freelance and hobbyist open-source programmer as well as minor
contributor to the Mono Project. I've also participated to the 2006 Google
Summer of Code, working on the Beagle Project (working support for desktop
search over a network). I'm currently an intern working on an cross-platform
C++ genotype analysis application at the Translational Genomics Institute
(TGen) in Phoenix.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://pidgin.im/pipermail/devel/attachments/20080407/664407ef/attachment.html>

More information about the Devel mailing list