Salta al contenuto principale




State of the Bird August 2025


State of the Bird August 2025


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

You can find the previous posts via the #state-of-the-bird tag.

Retrospective


Our last State of the Bird was August 2nd 2025 and can be found here.

Things have picked up considerably since the summer lull in the northern hemisphere.

Metrics


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

Contributors


The number of contributors continues to fluctuate a bit, but that's expected for a volunteer project.

If you're interested in contributing you can find some documentation here including ways that don't require knowing how to program.

[chart type="bar" backgroundColors="#db3a83,#e76a2a,#4cdc8b" title="Contibutors" xAxisTitle="Time Frame" ]2025-03 | 2025-04 | 2025-05 | 2025-06 | 2025-07 | 2025-08Developers | 1 | 2 | 2 | 2 | 2 | 1 |Crazy Patch Writers | 1 | 0 | 1 | 0 | 0 | 1 |Casual | 0 | 0 | 1 | 1 | 0 | 1[/chart]

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.

As you can see activity has picked up quite a bit.

[chart type="bar" backgroundColors="#db3a83,#e76a2a" title="Review Requests" xAxisTitle="Time Frame" ]2025-03 | 2025-04 | 2025-05 | 2025-06 | 2025-07 | 2025-08Open | 78 | 44 | 26 | 20 | 42 | 61 |Closed | 82 | 43 | 22 | 25 | 39 | 57 |[/chart]

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.

[chart type="bar" backgroundColors="#db3a83,#e76a2a" title="Issues" xAxisTitle="Time Frame" ]2025-03 | 2025-04 | 2025-05 | 2025-06 | 2025-07 | 2025-08Open | 41 | 16 | 6 | 11 | 11 | 16 |Closed | 18 | 6 | 5 | 10 | 3 | 11 |[/chart]

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.

As you can see, Pidgin 3 activity continues to dominate everything else.

[chart type="bar" backgroundColors="#ed207b,#9eb83b,#0088cc,#b3b5b4,#8c6238,#231f20,#f1592a,#ffea61,#bf1e2e,#0088cc,#57e389,#7f007f" title="Commits" xAxisTitle="Time Frame" ]2025-03 | 2025-04 | 2025-05 | 2025-06 | 2025-07 | 2025-08Pidgin 3 | 27 | 28 | 15 | 10 | 25 | 51 |Pidgin 2 | 0 | 0 | 0 | 4 | 0 | 2 |GPlugin | 1 | 0 | 2 | 0 | 4 | 0 |HASL | 1 | 0 | 1 | 4 | 2 | 0 |Birb | 6 | 0 | 5 | 0 | 1 | 0 |Xeme | 7 | 0 | 0 | 0 | 1 | 0 |Ibis | 27 | 11 | 0 | 0 | 0 | 0 |Hiya | 15 | 2 | 0 | 0 | 0 | 0 |Myna | 0 | 0 | 0 | 0 | 2 | 0 |Seagull | 8 | 0 | 0 | 13 | 3 | 0 |Traversity | 0 | 0 | 0 | 0 | 0 | 0 |retro-purple | 0 | 0 | 38 | 48 | 0 | 3 |[/chart]

Infrastructure


No new updates here.

#pidgin3
Retrospective


Lots of work on Pidgin 3 this month!

Updates


  • Cleaned up and modernize PurpleImage. We were looking to get rid of this, but GdkPixbuf is getting deprecated so we cleaned this up and backed it with GBytes as we'll be using it going forward.
  • Replaced Purple.Avatar with Purple.Image. With the above mentioned GdkPixbuf deprecations there isn't much need for this anymore as Purple.Image will handle everything we need.
  • Added an avatar-for-display property to Purple.ContactInfo. This is just like all the other -for-display functions, but for avatars.
  • Created Purple.Contacts. This is a simple collection of Purple.Contact instances which is used by the new Purple.ProtocolDirectory API.
  • Created Purple.ProtocolDirectory. This is currently just being used to search for users but in the future will include channels as well.
  • Added Purple.ConversationMembers.find_first_other. This is used to help find the ConversationMember for the non purple user in a direct message.
  • Don't show the presence icon in messages. This turned out to get really obnoxious over time.
  • Made the demo protocol plugin use the active presence. This is the first step in getting a status selector going.
  • Added default handlers to Purple.Account to manage the online state of conversations. These handlers will automatically mark all conversations for an account offline when the account disconnects as well as ask the protocol to refresh the conversation when the account comes back online.
  • Added a Purple.ContactInfo:badges property. This allows us to set badges at a global global as well as the existing conversation level.
  • Added vfuncs to Purple.Protocol for setting display names.
  • Added a Purple.Conversation::displayed. This is useful for protocols so that they can avoid syncing a conversation until the user is actually looking at it.
  • Removed all of the proxy code. Nearly all of our proxy stuff is supported by GProxyResolver so we didn't really need it anymore. We do still need to add back the preferences and account settings, but there isn't a large need for this right now.
  • Moved the saved-plugins preference to GSettings. This was the last user of the preferences API.
  • Removed the preferences API. Everything has been ported to GSettings now so this API was no longer necessary.
  • Removed Purple.ContactInfo:username. For protocols that still use usernames should be using the id field and this field was just making everything more confusing.
  • Deprecated ChangeLog.API. This was a very large and difficult to read list and most of the API changes are in the core documentation and separate articles are being written to make the changes easier to understand.
  • Renamed Attachment:inline to Attachment:is-inline to fix some compiler errors on Windows.
  • Ported everything to the birb string functions.


Releases


None

Future Plans


  • The account options API is in the process of being replaced by a new AccountSetting API.

The following items are still in the works from the last state of the bird.

  • Add persistence to the scheduler.
  • Add persistence to the contact manager, this needs to be done so we can fix some issues with direct messages being restored correctly.
  • Gary has started an out o#gplugin-plugin-library f tree protocol plugin to help figure out how the voice and video API will work.

As always, you can view the burn down chart for our next release here.

#pidgin2


We're still planning on doing a 2.15.0 release, but we haven't moved forward on this at all this month.

Updates


  • Cleaned up the app data file.
  • Removed the auto package spec file.


Retrospective


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.

Releases


None

Future Plans


Just the same as what was mentioned above.

#gplugin


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

Retrospective


No activity this month.

Updates


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 activity this month.

Updates


None

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


No activity this month.

Updates


None

Releases


None

#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 activity this month.

Updates


None

Releases


None

Future Plans


Everything! Seriously though, we're looking to get back to this in the near future.

Ibis


#ircv3-library 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 activity this month.

Updates


None

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.

#sqlite3-helper-library


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 activity this month.

Updates


None

Releases


None

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 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, escargot, and NINA.

Retrospective


We realized that users can't necessarily point these protocol to different severs so we've been slowly correcting that.

Updates


  • Fixed some compiler warnings in libymsg.
  • Removed the default server from napster.


Releases


None

Future Plans


Right now we didn't add any support for protocol specific emojis because we completely forgot about them. Anyways we're looking at creating a custom emoji theme that will include everything for these retro protocols.

One Last Thing...


We've gotten a fair amount of feedback when it comes to the user interface direction of Pidgin 3. The feedback is that some people prefer the simplified user interface of Pidgin 2 which is more focused on one to one chats than multiple user chat rooms.

Due to this, Gary has been playing around with an additional GTK4 interface which will reproduce the Pidgin 2 look and feel. This is still very early in development, but as it's just another GTK4 user interface which we're all very well versed in, it should pick up steam quickly especially since it's cloning an existing design. However, we're waiting on the Account Setting API before we really move forward at the moment.

So that said, the only thing left to discuss is the name. As you might have guessed, we've spent a fair amount of time discussing this and I'm pleased to tell you that we're calling it Gaim 3. That's right, we're bringing the Gaim name back. We've talked to a lawyer and they believe we are in the clear when it comes to the old AOL trademark which has since expired.

We have created a #gaim category on our Discourse for additional discussion including some screen shots of what it looks like so far and Gaim 3 will be part of future State of the Birds!

Closing


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

Discuss this on our forum.


in reply to fossilesque

Is there something I'm supposed to be doing with Queen Anne's Lace? It gets more out of control every year, but I just rip it out and compost it.



Spotify will now let free users pick and play tracks | TechCrunch




Google Chrome has gone bad ?


Just updated Chrome on Windows.

You now have to sign in at the start, or go in limited "Guest" mode in which everything in settings has been cut out. So it automatically downloads to OneDrive for instance and you can't change it.

There is no Google prompt, only an AI prompt where the URL bar would be.

I'm using Firefox now, I can't get anything to work on Chrome.


in reply to tfowinder

Never pay for music again, and don't let anyone you know do that shit either.

They come for archives; nothing should be off limits.

in reply to tfowinder

Never pay for music again, and don't let anyone you know do that shit either.

They come for archives–nothing should be off limits.



FF won't let me install BPC extension


Looking for help here. I created a new Firefox profile and wanted to load the Bypass Paywalls Clean Add-on/Extension from the XPI file. So I did what I've always done and got the message displayed above.

Then I went into about:config and changed both xpinstall.whitelist.required and xpinstall.signatures.required to false. Fully exited and restarted the browser but still, no dice.

Anyone know how to fix this?

SOLUTION: go to extensions.blocklist.enabled and turn it to false

Questa voce è stata modificata (2 ore fa)
in reply to ReedReads

Oh they're actively deciding what you can do with the software now. Cool. Love that.
in reply to ReedReads

I just reinstalled it this morning on Waterfox and Fennec.


National Voter Registration Day


If there was ever a time to register to vote or check to confirm you’re registered, it’s now. The National Voter Registration Day website has plenty of resources so you can ensure your are able to vote. Register to vote/Check voter registration Find Your

If there was ever a time to register to vote or check to confirm you’re registered, it’s now.

The National Voter Registration Day website has plenty of resources so you can ensure your are able to vote.

Every election is important, especially at the local level. Make sure you can do your part.



Are You Under the Influence? The Tail That Wags The Dog - Dhole Moments


#tech


Plans to build Project Blue data center near Tucson are back


So despite the community saying keep you're hands off the water, the oligarchy will not be denied and are moving forward regardless.