# Libpurple

**URL:** https://discourse.imfreedom.org/c/libraries/all-things-purple/11.md

[Latest](https://discourse.imfreedom.org/latest.md) · [Categories](https://discourse.imfreedom.org/categories.md) · [Tags](https://discourse.imfreedom.org/tags.md)

---

## [About the Libpurple category](https://discourse.imfreedom.org/t/about-the-libpurple-category/127)

<div class="topic-metadata">

**Author:** [@grim](https://discourse.imfreedom.org/u/grim)\
**Replies:** 0

</div>

This category is to cover things that are related to libpurple itself. This could include support, developer discussion, questions about the api, etc etc.

---

## [Message Drafting](https://discourse.imfreedom.org/t/message-drafting/431)

<div class="topic-metadata">

**Author:** [@grim](https://discourse.imfreedom.org/u/grim)\
**Replies:** 6\
**Last updated:** [October 3, 2026, 8:31pm UTC](https://discourse.imfreedom.org/t/message-drafting/431 "2026-10-03T20:31:05Z")

</div>

I’ve been triaging issues and I ran across an interesting one about being able to “stash” a message. Basically you’re drafting a longer reply or whatever, but the person sends another message which you can quickly respon…

---

## [Bouncers and Managed Accounts](https://discourse.imfreedom.org/t/bouncers-and-managed-accounts/434)

<div class="topic-metadata">

**Author:** [@grim](https://discourse.imfreedom.org/u/grim)\
**Replies:** 3\
**Last updated:** [September 29, 2026, 10:24pm UTC](https://discourse.imfreedom.org/t/bouncers-and-managed-accounts/434 "2026-09-29T22:24:59Z")

</div>

An idea I’ve had in the back of my mind for a bit is how to handle IRC bouncers and other similar ideas. Yes part of this is to look at making the detachable libpurple front end we’ve been after for ever. Anyways, the m…

---

## [Conversation Manager and Threads](https://discourse.imfreedom.org/t/conversation-manager-and-threads/423)

<div class="topic-metadata">

**Author:** [@grim](https://discourse.imfreedom.org/u/grim)\
**Replies:** 1\
**Last updated:** [September 27, 2026, 4:16am UTC](https://discourse.imfreedom.org/t/conversation-manager-and-threads/423 "2026-09-27T04:16:29Z")

</div>

This started out as me looking for input on how to proceed but in the process of writing it I believe I have come to a conclusion on how to proceed. But if you have any questions or comments, please don’t hesitate. I’m…

---

## [Audit log ideas](https://discourse.imfreedom.org/t/audit-log-ideas/427)

<div class="topic-metadata">

**Author:** [@grim](https://discourse.imfreedom.org/u/grim)\
**Replies:** 8\
**Last updated:** [September 21, 2026, 10:10pm UTC](https://discourse.imfreedom.org/t/audit-log-ideas/427 "2026-09-21T22:10:16Z")

</div>

It’s not uncommon for someone to change a setting (account, preference, etc) or something and then forget what it was or that they did it at all. To combat this, I want to add an audit log. The audit log should be focus…

---

## [Tracking contact metadata?](https://discourse.imfreedom.org/t/tracking-contact-metadata/411)

<div class="topic-metadata">

**Author:** [@grim](https://discourse.imfreedom.org/u/grim)\
**Replies:** 7\
**Last updated:** [July 31, 2026, 4:52am UTC](https://discourse.imfreedom.org/t/tracking-contact-metadata/411 "2026-07-31T04:52:40Z")

</div>

So I’m thinking of adding a “last-updated” property to a contact to track when it was last updated/refreshed by the protocol and am wondering if it’s useful to others. I’ve ran into an issue with twitch where I don’t ge…

---

## [Handling failure to send message](https://discourse.imfreedom.org/t/handling-failure-to-send-message/406)

<div class="topic-metadata">

**Author:** [@csb6](https://discourse.imfreedom.org/u/csb6)\
**Replies:** 5\
**Last updated:** [July 13, 2026, 8:01pm UTC](https://discourse.imfreedom.org/t/handling-failure-to-send-message/406 "2026-07-13T20:01:36Z")

</div>

When a message fails to send, how should/does this show up in the UI? Looking through the Pidgin 3 code, in pidginconversation.c a PurpleMessage gets created and PurpleMessage.send\_message\_async is called, but there is n…

---

## [Re-joining a conversation when opening Pidgin 3](https://discourse.imfreedom.org/t/re-joining-a-conversation-when-opening-pidgin-3/399)

<div class="topic-metadata">

**Author:** [@csb6](https://discourse.imfreedom.org/u/csb6)\
**Replies:** 1\
**Last updated:** [July 5, 2026, 9:59pm UTC](https://discourse.imfreedom.org/t/re-joining-a-conversation-when-opening-pidgin-3/399 "2026-07-05T21:59:39Z")

</div>

For my plugin I am wondering how best to re-join an existing conversation when opening Pidgin 3. (or whichever Purple 3 frontend is being used) Is this something that the Protocol class should handle, e.g. after the prot…

---

## [Platform dependent but UI independent plugins](https://discourse.imfreedom.org/t/platform-dependent-but-ui-independent-plugins/389)

<div class="topic-metadata">

**Author:** [@grim](https://discourse.imfreedom.org/u/grim)\
**Replies:** 5\
**Last updated:** [June 5, 2026, 5:54pm UTC](https://discourse.imfreedom.org/t/platform-dependent-but-ui-independent-plugins/389 "2026-06-05T17:54:46Z")

</div>

I was randomly looking at what would be necessary to create an idle source for win32 (more on that in another post) when I ran across an interesting issue. Now that we have Pidgin and Gaim we have an odd scenario where …

---

## [Add rust or zig support for libpurple3](https://discourse.imfreedom.org/t/add-rust-or-zig-support-for-libpurple3/387)

<div class="topic-metadata">

**Author:** [@Castro](https://discourse.imfreedom.org/u/Castro)\
**Replies:** 1\
**Last updated:** [May 23, 2026, 2:18am UTC](https://discourse.imfreedom.org/t/add-rust-or-zig-support-for-libpurple3/387 "2026-05-23T02:18:57Z")

</div>

Hi everyone, I just landing in here because I want to replace whatsapp web if a lightweight client. Taking a look on this MR, I need to say, as a non C developer this sound like a lot of noise for a simple MR. Too muc…

---

## [Libpurple3 show image](https://discourse.imfreedom.org/t/libpurple3-show-image/386)

<div class="topic-metadata">

**Author:** [@Castro](https://discourse.imfreedom.org/u/Castro)\
**Replies:** 5\
**Last updated:** [May 21, 2026, 1:34am UTC](https://discourse.imfreedom.org/t/libpurple3-show-image/386 "2026-05-21T01:34:38Z")

</div>

Hi everyone. I am porting the whatsapp plugin to libpurple-3, however I am facing a challenge. I need to display the qr-code so the user can log-in. However I didn’t found any component to display images, beside the Pur…

---

## [Protocols to support](https://discourse.imfreedom.org/t/protocols-to-support/234)

<div class="topic-metadata">

**Author:** [@grim](https://discourse.imfreedom.org/u/grim)\
**Replies:** 12\
**Last updated:** [February 8, 2026, 10:15pm UTC](https://discourse.imfreedom.org/t/protocols-to-support/234 "2026-02-08T22:15:07Z")

</div>

This is meant to keep track of what protocols we think or want to support in tree. Remember, we are only supporting open source/spec protocols in tree now. We also need to decide which protocol we want to implement next…

---

## [Should we delete persons when all the contacts have been removed from them?](https://discourse.imfreedom.org/t/should-we-delete-persons-when-all-the-contacts-have-been-removed-from-them/343)

<div class="topic-metadata">

**Author:** [@grim](https://discourse.imfreedom.org/u/grim)\
**Replies:** 1\
**Last updated:** [January 12, 2026, 10:07am UTC](https://discourse.imfreedom.org/t/should-we-delete-persons-when-all-the-contacts-have-been-removed-from-them/343 "2026-01-12T10:07:45Z")

</div>

A little back story here might be necessary so… A PurplePerson is an object that groups multiple PurpleContact objects and is what is used to display contacts in the contact list. They are very similar to PurpleContact …

---

## [RFC: Archiving of edited, redacted, and ephemeral messages](https://discourse.imfreedom.org/t/rfc-archiving-of-edited-redacted-and-ephemeral-messages/251)

<div class="topic-metadata">

**Author:** [@grim](https://discourse.imfreedom.org/u/grim)\
**Replies:** 2\
**Last updated:** [February 13, 2025, 10:25pm UTC](https://discourse.imfreedom.org/t/rfc-archiving-of-edited-redacted-and-ephemeral-messages/251 "2025-02-13T22:25:27Z")

</div>

Modern chat networks/apps allow the authors of messages to edit them delete them manually, and even delete them automatically after some amount of time after being read. These abilities are great, and we intend to suppor…

---

## [AIM/Oscar support removed?](https://discourse.imfreedom.org/t/aim-oscar-support-removed/214)

<div class="topic-metadata">

**Author:** [@squidgnz](https://discourse.imfreedom.org/u/squidgnz)\
**Replies:** 1\
**Last updated:** [November 15, 2024, 6:56am UTC](https://discourse.imfreedom.org/t/aim-oscar-support-removed/214 "2024-11-15T06:56:19Z")

</div>

Hi! First time chatter here, and I was looking to set up AIM/OSCAR for a third-party server host. But I can’t seem to find the actual protocol to modify so I can use it. Was it removed in a previous version? Thanks in a…

---

## [Building Purple 3 on Haiku](https://discourse.imfreedom.org/t/building-purple-3-on-haiku/149)

<div class="topic-metadata">

**Author:** [@grim](https://discourse.imfreedom.org/u/grim)\
**Replies:** 0\
**Last updated:** [April 13, 2024, 6:19am UTC](https://discourse.imfreedom.org/t/building-purple-3-on-haiku/149 "2024-04-13T06:19:30Z")

</div>

These are the basic instructions for building purple 3 on Haiku OS. This post won’t cover getting the source as that is already documented in other locations. NOTE: Purple is still currently in the Pidgin repository, t…

---

## [How does the Demo protocol create its conversations?](https://discourse.imfreedom.org/t/how-does-the-demo-protocol-create-its-conversations/141)

<div class="topic-metadata">

**Author:** [@ivanhoe](https://discourse.imfreedom.org/u/ivanhoe)\
**Replies:** 2\
**Last updated:** [February 28, 2024, 10:41pm UTC](https://discourse.imfreedom.org/t/how-does-the-demo-protocol-create-its-conversations/141 "2024-02-28T22:41:02Z")

</div>

With RR 2280 merged you can no longer open a conversation with Demo protocol contacts because they don’t have a conversation ID set. I would’ve liked to fix that but I can’t figure out where to do that. Where is the Demo…

---

## [XEP's Ranked by implementation count](https://discourse.imfreedom.org/t/xeps-ranked-by-implementation-count/140)

<div class="topic-metadata">

**Author:** [@grim](https://discourse.imfreedom.org/u/grim)\
**Replies:** 0\
**Last updated:** [February 24, 2024, 1:16am UTC](https://discourse.imfreedom.org/t/xeps-ranked-by-implementation-count/140 "2024-02-24T01:16:21Z")

</div>

Some times when working on XMPP stuff it’s good to know how wildly implemented something is. This page has that. https://data.xmpp.net/explore/xmpp/implementation\_counts
