new client plans and libpurple

John Bailey rekkanoryo at
Wed Mar 27 19:37:50 EDT 2013

On 03/27/2013 04:52 PM, nemtom wrote:
> Hi, I'm not sure whether this is the right place to write to, but I haven't
> found any which were more suitable.

This is the correct place.  This list is for discussion of Pidgin, Finch, and
libpurple development and related issues.

> I'm planning to create an open-source messaging client for Windows using
> libpurple. I considered adding features to the Pidgin client, but my ideal
> feature set might not match others'. I could write plug-ins instead, but I want
> a client which is native to Windows. (I have a strong dislike towards multi
> platform toolkits.) I looked for other clients (not just Pidgin but general
> messaging ones) but haven't found one that looks good enough and has all the
> features I want.

You have no idea how happy it makes us that someone wants to write a "native"
Windows client based on libpurple.  We've wanted one for years, but to the best
of our knowledge, every attempt has died off due to lack of time (mostly) or
ability (rarely).  A native Windows client would be a great service to the
Windows-using portion of our community, and if done right, I think the majority
of us would recommend that our Windows users switch to it.

There are a number of challenges that you'll face, such as compiler/linker
issues (if you use Visual Studio .NET to build your UI, you either have to
compile and link against the Windows Driver Development Kit's libraries or
rebuild libpurple and all its dependencies to use msvcrt{7,8,9,10}.dll for one).

> Picture sending from clipboard, custom emoticons, animated emoticons, animated
> buddy icon, hiding oneself and/or communicating while hidden (I guess this is
> not possible), choosing font (I don't mean font style, instead size or face and
> I can't see this in Pidgin), related: mixing font styles in a line, sending more
> than a given number of smileys in one line (again there seems to be a limit in
> Pidgin), logging (obviously possible, the question is whether libpurple manages
> this or can I do it any way I want), general message text next to names in the
> buddy list (is this what is called status in Pidgin?), binary data sharing which
> is ignored by another client if not understood (similar to file sending but the
> program would recognize it as special), chatting with a webcam (I have
> absolutely no knowledge regarding this, and I don't need it that much either,
> but if libpurple does the hard work then why not)

I'll try to address what I can here:
  * Custom Emoticons - support is provided by libpurple.  Our MSN and XMPP
plugins already support it.
  * Font - libpurple and Pidgin already support this.  Remember Pidgin has
options to ignore formatting.  Also, GTK+ handles font sizes differently than
"native" windows apps, so you could be seeing the behavior in Pidgin already and
not realizing it.
  * Font style mixing - Pidgin and libpurple have supported this for years.  MSN
does not support it, thus Pidgin does not support doing this _on MSN._  Note
also that on a protocol like IRC that does not support formatting, Pidgin
doesn't allow setting formatting options.
  * Limited number of emoticons - Yes, this is a hard-coded limit in Pidgin,
needed for performance reasons (and by extension of this same premise as a way
to prevent a denial of service attack on Pidgin users).  You can choose to do
whatever you want with stupidly large numbers of emoticons in your own UI.
  * Logging - libpurple handles logging, but it is done in such a way that you
can write your own plugin to handle logging to do whatever you want.
  * "Binary data sharing" - this requires protocol level support.  For something
like XMPP, you can of course extend the protocol, but for closed protocols such
as AIM, Yahoo, etc., you have to work within the limits of the protocol.
  * "General message text" - I believe you are referring to status text.  The
text shown below a buddy's username or alias is the status message on most
protocols (it's called the "friendly name" or some similarly nonsensical thing
on MSN).
  * Webcam/voice - Pidgin and libpurple support this, but only on XMPP, and
right now only on NON-Windows systems.  It is technically possible to get this
working on Windows--Eion Robb has done it--but it's not something we officially
support, nor do we plan to in the immediate future.  If you want to take a stab
at it, please feel free to do so.  You could be helping the wider Pidgin
community if you succeed.  As far as supporting on non-XMPP protocols, that's
also something that we don't support or plan to support soon, but we will
definitely accept patches.

> I can't say enough that most of these are fairly obvious. For example for
> sending a picture copied to the clipboard I will have to create a temporary file
> first.
> I see tons of dll files in the Pidgin folder. Are those all required beside
> libpurple.dll? I only want to support xmpp, though if it is not much extra work
> to support anything else I will consider adding those as well. I don't want to
> compile the libraries myself if it was done already and with the correct
> environment. I will try to look for an answer regarding the use of those
> libraries but if this information is not written anywhere, I will appreciate any
> help.

If you use libpurple as intended, you won't have a choice about supporting
multiple protocols--*all* protocols Pidgin supports are handled by libpurple
plugins.  Thus, if you write a true libpurple UI, multiple protocol support is
roughly free and almost entirely mandatory, especially if you don't want to
build libpurple and friends yourself.

Welcome aboard, and good luck!


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <>

More information about the Devel mailing list