State of the Bird May 2025

State of the Bird May 2025

The State of the Bird is a recap of what has been happening in the project.

We used to do these quarterly as an interactive live stream, but we’re now
doing these as a monthly posts instead.

You can find the playlist with all of the old videos on YouTube.

Retrospective

Our last State of the Bird was May 3rd 2025 and can be found here.

Things have been a bit slower this month than normal. That’s usually expected as summer starts getting closer and everything but I assure you we’re still here and working on things :wink:

Metrics

We have a number of metrics we keep an eye on which you can see below.

Contibutors

Our number of contributors continues to average around 3 per month and we are still seeing some casual contributors popping up from time to time.

2024-12 | 2025-01 | 2025-02 | 2025-03 | 2025-04 | 2025-05 Developers | 2 | 2 | 2 | 1 | 2 | 2 Crazy Patch Writers | 1 | 0 | 1 | 1 | 0 | 1 Casual | 1 | 1 | 0 | 0 | 0 | 1

Review Requests

Review requests are what we call our code reviews and this is a look at how many were open and closed each month.

2024-12 | 2025-01 | 2025-02 | 2025-03 | 2025-04 | 2025-05 Open | 21 | 92 | 72 | 78 | 44 | 26 | Closed | 19 | 88 | 72 | 82 | 43 | 22 |

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.

2024-12 | 2025-01 | 2025-02 | 2025-03 | 2025-04 Open | 11 | 44 | 30 | 41 | 16 | 6 | Closed | 7 | 34 | 18 | 18 | 6 | 5 |

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.

2024-12 | 2025-01 | 2025-02 | 2025-03 | 2025-04 | 2025-05 Pidgin 3 | 20 | 46 | 22 | 27 | 28 | 15 | Pidgin 2 | 0 | 8 | 0 | 0 | 0 | 0 | GPlugin | 0 | 0 | 1 | 1 | 0 | 2 | HASL | 0 | 10 | 5 | 1 | 0 | 1 | Birb | 0 | 12 | 1 | 6 | 0 | 5 | Xeme | 0 | 2 | 5 | 7 | 0 | 0 | Ibis | 1 | 16 | 10 | 27 | 11 | 0 | Hiya | 0 | 0 | 0 | 15 | 2 | 0 | Myna | 0 | 0 | 0 | 0 | 0 | 0 | Seagull | 0 | 0 | 23 | 8 | 0 | 0 | Traversity | 0 | 0 | 8 | 0 | 0 | 0 | retro-purple | 0 | 0 | 0 | 0 | 0 | 38 |

Infrastructure

Nothing new infrastructure wise outside of our our normal patching/updating for everything.

Pidgin 3

Retrospective

Link Local Messaging is taking longer than expected as we haven’t gotten Hiya to a working state yet.

XMPP support isn’t where we hoped it would be as we’re trying to get Link Local Messaging working first.

SIP/SIMPLE isn’t going as we hoped. We planned on using libsofia for it but we’ve run into a number of issues. First we can’t seem to find binaries for Windows, this isn’t a non-starter, but it means we have to figure it out.

QuLogic had some luck with a meson wrap but while using libsofia to write the protocol I determined that it’s going to be rather tricky to support multiple accounts on the same UDP/TCP ports as the architecture of libpurple and libsofia cause so issues here. We’re looking at our options here including a new SIP library although we really don’t want to go down that course if we can avoid it.

Updates

  • Support for formatting in IRC server messages was added
  • Discreet compile options have been added for each protocol and the group option has been removed.
  • Added a preference to show or hide formatting. This has temporarily broken links as the way they were implemented was not compatible with the new formatting.
  • Lots of cleanups and enable of preferences
  • The NOWAWAY and UNAWAY IRC commands are now handled
  • Added a Pidgin.PresenceIcon to Pidgin.ConversationMember to reflect the users presence

Releases

None.

Future Plans

Experimental 3 is scheduled to be released 2025-06-30. We are currently working towards the following goals for it but they are subject to change:

As mentioned in the retrospective, we’re behind everywhere and it’s unlikely that we’ll get any of the new protocols working in time. I am hopefully that we can get Seagull finished up and get the conversation persistence done in time, but that remains to be seen.

I will be updating the issues in the next few days moving stuff to Experimental 4 that we know won’t make it into Experimental 3.

As always, you can view the burn down chart here.

Pidgin 2

Pidgin 2 is of course still in maintenance mode which means we’re not actively adding any features, but as always we’ll continue to do releases as long as there are critical bug fixes.

Retrospective

No notable changes

Releases

None

Future Plans

That said, we decided to do a 2.15.0 release that have a bunch of minor fixes but will remove the rest of the protocols that have been abandoned by their creators (more on this later).

We’re also looking at FINALLY updating the version of GTK2 for our Windows releases. I was digging around there and finally figured out how to do it. We still have a few things to do there, but that’s all that’s left in the 2.15.0 release.

GPlugin

GPlugin is our GObject based plugin library that is used in Pidgin 3.

Retrospective

No notable changes

Releases

None

Future Plans

GPlugin is pretty stable at the moment but there’s quite a lot of maintenance stuff to get too, but it’s not as high of a priority as the other stuff at the moment.

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 notable changes

Releases

None.

Future Plans

We have been in the progress of implementing the SCRAM Mechanisms which will be included in the next release.

Birb

Birb is a library of GLib utilities that we use across all of our projects.

Retrospective

  • Added a bunch of helpers for our unit tests. We have some common testing patterns that we kept reproducing in each code base. We’ve now implemented them in a re-usable way in Birb.

Releases

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.

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 notable changes

Releases

None

Future Plans

Continue working through the open issues and watching new IRCv3 specifications for things we should be including.

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 notable changes

Releases

None

Future Plans

Our next features include being able to bind an object to a prepared statement as well as binding the results of a prepared statement back to an object.

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 is a new repository we’ve created on GitHub. This repository 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 NINA.

We have not yet had a release here but we will soon. The idea is to release this is tandem with Pidgin 2.15.0 or very shortly after.

The reasoning behind this decision and work can be found in the README.md for that project.

Closing

We hope you all are enjoying the new format and if you have any questions of comments please leave them below!

2 Likes