State of the Bird March 2026
The State of the Bird is a recap of what has been happening in Pidgin and related projects over the past month.
You can find the previous posts via the state-of-the-bird tag or via RSS.
Retrospective
Our last State of the Bird covered February 2026 was published on March 2nd 2026.
March was a very busy month as we prepared for Pidgin 3.0.0 Alpha 1 which was released! On the following day we announced to the world that Gaim 3 exists as well as its new website.
We’ve also come to realize that while the State of the Bird is great at keeping people up to date on what we’ve been doing, ironically it doesn’t actually help people know what the state of the projects are as its just an iterative update. So to correct this we’re looking for a way to help to quickly express this to people. However, we also don’t want to create too much work for ourselves in the process, so if you have ideas, please lets us know in the comments section!
Metrics
We have a number of metrics we keep an eye on which you can see below.
Code Contributors
The number of code contributors continues to fluctuate a bit, but that’s not out of the ordinary for a volunteer project.
Review Requests
Review requests are what we call our code reviews and is the way that all code is accepted into our code bases. This is a look at how many were open and closed each month.
Issues
This is a look at the number of issues that were opened in our issue tracker as well as how many were closed by month. We don’t create issues for everything we do, but this is still good to look at as it will include bugs and other issues users have brought to our attention. As usual, the vast majority of the work we did did not have a ticket.
I went on a closing spree in January and closed a bunch of stuff that hasn’t been touched in a very long time and realistically we weren’t going to fix. But we still have more than 1000 open issues that need to be reviewed at some point.
Commits
This is a break down of commits to each project per month. In most cases a review request is just a single commit, but this chart helps to see what projects are being worked on.
Infrastructure
The Gaim web site is finally up and live at gaim.imfreedom.org. We we likely create similar sites as subdomains on imfreedom.org for our other projects.
pidgin3
Pidgin 3 is our next generation universal chat client whose goal is to give you the best experience possible when using modern chat networks.
Retrospective
There was a lot of work around the new account settings cleaning up some things that were initially overlooked. We also spent a fair amount of time working on Zulip, but still haven’t quite gotten to getting conversations working quite yet but we are receiving events now.
Unfortunately there are not any screenshots this month as there weren’t any big user interface updates. But we do have a few already for April already!!
Highlights
- Purple: add virtual functions to the Ui class for getting versions (RR 4406) (Gary Kramlich)
- Purple: Update Purple.PresenceManager to use Purple.PresenceManagerBackend (RR 4407) (Gary Kramlich)
- Purple: Replace Account.request_password with an async pair (RR 4409) (Gary Kramlich)
- Purple: Update Ui vfuncs to set errors when not implemented (RR 4415) (Gary Kramlich)
- Purple: Make the core an object (RR 4438) (Gary Kramlich)
- Pidgin: Use new icon as application icon (RR 4460) (Markus Fischer)
- IRCv3: Migrate to Purple.AccountSettings (RR 4451) (Gary Kramlich)
- Purple: remove the old account option API (RR 4452) (Gary Kramilch)
- Purple/Pidgin: Remove the last remnants of the prefs API (RR 4455) (Gary Kramilch)
- Purple: replace the usage of the debug api with the glib versions (RR 4456) (Gary Kramlich)
- Pidgin: replace the usage of the purple debug api with the glib versions (RR 4457) (Gary Kramlich)
- WinCred: use the glib log functions instead of the debug API (RR 4459) (Gary Kramlich)
- Purple: remove glibcompat.h (RR 4461) (Gary Kramlich)
- Purple/Pidgin: remove the rest of the purple_debug api and uses (RR 4463) (Gary Kramlich)
- Purple: don’t change connection state when Account:enabled changes (RR 4465) (Gary Kramlich)
- Purple: Give the core ownership of all the managers (RR 4467) (Gary Kramlich)
- Pidgin: Fix problem that conversations cannot be closed (RR 4469) (Markus Fischer)
- Purple: Use GPlugin.Manager to track plugin states (RR 4468) (Gary Kramlich)
- IRCv3: Fix settings type of plaintext SASL auth (RR 4470) (Markus Fischer)
- Windows: clean up a bunch of stuff related to resources including the icon (RR 4462) (Gary Kramlich)
- Pidgin: Fix a warning when failing to leave a conversation (RR 4474) (Elliott Sales de Andrade)
Releases
- 3.0.0 Alpha 1 was released on 2026-03-31 Release Announcement
Future Plans
The following items are still in the works from previous state of the birds.
- Add persistence to the scheduler.
- Add persistence to the contact manager. Contacts are done, we need to finish people.
- Get the Zulip protocol working.
As always, you can view the burn down chart for our next release here.
pidgin2
Pidgin 2 is our stable “production” release of a universal chat client. Meaning that you can use it as a single interface to many chat networks!
Retrospective
We’re still planning on doing a 2.15.0 release, but we haven’t finished it yet, but we did make some tweaks this month. Also we took ownership of the Pidgin 2 Flatpak on Flathub and started adding popular third party plugins to it.
Highlights
- Disable gevolution by default (PIDGIN-18156) (RR 4403) (Gary Kramlich)
- Fix a crash in the media manager (PIDGIN-18142, PIDGIN-18142, PIDGIN-18155) (RR 4404) (Gary Kramlich)
- Add support for setting plugin paths from environment variables (RR 4405) (Gary Kramlich)
- Add larger app icons and some tweaks to the appdata (RR 4484) (Gary Kramlich)
Releases
None
Future Plans
We still need to finish up the build environment packages so we can upgrade GTK on Windows and get that all into the installer. We also need to remember to update the spell checking dictionaries as we haven’t done that in awhile.
Gaim 3
Gaim 3 is an additional user interface built on libpurple 3 to keep the look and feel of Pidgin 2 and Gaim before it in GTK4.
Retrospective
While we were hopeful to have a release out, we did announce this to the world on 2026-04-01 and launched the new website for it at gaim.imfreedom.org. We have also created a mastodon account at @gaim@fosstodon.org.
I was hoping to have it usable before the announcement, but I just ran out of time. So we announced it as just having the contact list and the account manager/editor working. You can see screenshots on the site.
Highlights
- The launch of the site was well received even with a healthy dose of skepticism as we announced it on April Fool’s day which was the only day we could make an announcement like this!
Releases
None
Future Plans
With the account manager and editor complete, we can no start focusing on conversations and actually get things functional.
GPlugin
GPlugin is our GObject based plugin library that is used in Pidgin 3.
Retrospective
No work this month
Highlights
None
Releases
None
Future Plans
We’re going to continue moving forward with the GLib.List → Gio.ListModel changes and eventually have GPlugin.Manager implement Gio.ListModel.
hasl
HASL is the Hassle-free Authentication and Security Layer library. It implements SASL in a modern and easy use way compared to the existing libraries.
Retrospective
No work this month
Highlights
None
Releases
None
Future Plans
We have been in the progress of implementing the SCRAM Mechanisms which will be included in a future release.
Birb
Birb is a library of GLib utilities that we use across all of our projects.
Retrospective
Highlights
- Add a simple birb_str_wipe implementation (RR 4411) (Gary Kramlich)
- Turn off pedantic warnings (RR 4434) (Gary Kramlich)
Releases
- 0.7.0 was released on 2026-03-11 (Release Announcement)
- 0.7.1 was released on 2026-03-13 (Release Announcement)
Future Plans
We need to create some basic HTML and Markdown formatters.
Xeme
Xeme is our XMPP integration library. It is the basis for both the Link Local Messaging (Bonjour) and XMPP protocols in Pidgin 3. It is still early in development and has not yet had a release.
Retrospective
No work this month.
Highlights
None
Releases
None
Future Plans
The next steps here are going to be creating unit tests with Birb.ResponseStream to do initial connection and feature negotiation.
Ibis
Ibis is our IRCv3 integration library. It has seen a lot of active development as it is used in the IRCv3 protocol plugin in Pidgin 3.
We are nearing known feature completion on it and expect to do a 1.0 release in the near future.
Retrospective
No work this month.
Highlights
None
Releases
None
Future Plans
Continue working through the open issues and watching new IRCv3 specifications for things we should be including.
Add outgoing formatting support.
Figure out the issues with not recognizing disconnections. The client::stopped signal was the first piece of that.
Hiya
Hiya is a new client abstraction library for mDNS. It was created to help make implementation of the Link Local Messaging protocol easier as we would have to abstract out the different platform implementations and by putting it in a library that abstraction can be used by other projects.
Hiya has not yet had a release.
Myna
Myna is a new integration library for Matrix. It is still extremely early in development.
Seagull
Seagull is a new library we created to make working with SQLite feel more like a GLIB/GNOME library and force usage of prepared statements with named parameters and other similar things.
Retrospective
No changes this month other than the release.
Highlights
- Add support for handling uint and uint64 (RR 4408) (Gary Kramlich)
- Normalize the license headers (RR 4426) (Gary Kramlich)
Releases
- 0.8.0 was released on 2026-03-11 (Release Announcement)
- 0.8.1 was released on 2026-03-13 (Release Announcement)
Future Plans
We have a few features to fill out yet and a few ideas that need a bit more time in the oven.
More specific details can be found in our open issues.
Traversity
Traversity is a new library for traversing NATs. There are many different ways to traverse a NAT and the goal of Traversity is to hide that from developers who just need to traverse a NAT.
It is still early in development and has not yet had an official release.
retro-prpl
retro-prpl contains all of the abandoned protocols that have ever lived in our code base and is meant to make them easier to study and for people to use with services like Retro AIM Server and escargot.
Retrospective
Some minor work this month. But the package did get added to the AUR and it was also added to the Pidgin 2 Flatpak which is available on Flathub.
Highlights
- This was added to the official Pidgin 2 Flatpak to make it easier to use.
Releases
None
Future Plans
We have a bunch of open issues that we could use some help testing with. If you’re interested in helping please don’t hesitate to jump in!
Closing
It was a very busy month as we got Alpha 1 out the door and announced Gaim 3’s existence to the world which is causing everything to ramp up, but in a good way even if it might have been unhealthy for us… Either way, I hope to see more months like this with more people contributing as we get closer to a general release.
We hope you all are enjoying the new format and if you have any questions of comments please leave them below!
One Last Thing
Our projects and our communities are built up of many individuals and I’ve realized that we’ve been hyper focused on the development of the project and not so much on the communities as a whole.
To address this, I’m looking to add some additional metrics to include all contribution types not just code. Things like supporting users in chats, interactions with our ticket system, maybe even news and social media mentions.
If this is something you’re interested in seeing, please let me know by commenting below. Likewise, if this is something you might be interested in helping with, please don’t hesitate to comment below!