State of the Bird Q4 2022

The Q4 2022 State of the Bird is tentatively scheduled for January 19th, 2023.

The State of the Bird is a quarterly update on what has been happening in the world of Pidgin, Finch, and libpurple. The event will be held live on Gary’s Twitch.tv Channel. The presentation is scheduled for roughly one hour and will be followed by a question and answer session.

During the event you can ask a question at any time by typing !ask <the text of your question> into chat and it will be queued up for the question and answer session.

If you’re unable to make it, the presentation as well as the question and answer session will be posted on Gary’s YouTube Channel as soon as it is available.

Previous States of the Bird can be found in this YouTube playlist.

Hope to see you there!

Whoops didn’t remember that I made this one… anyways see the new one… :slight_smile:

Random thoughts:

* Single window UI
Not sure about that, I like seeing the status of my buddies while having the chat window open.

* Decommissioning of the oauth-helper plugin
I sometimes use Jdownloader2, and it delegates captchas to a browser extension. Maybe Pidgin can do something similar for oauth cookies instead of embedding a browser view? Just a thought.

* Removing XEPs from XMPP
What about adding missing XEPs? Currently, some are implemented in plugins, and some others are unsupported according to various web sites. I went to xmpp.org to check what XEPs Pifgin does support, and it turns out that it isn’t even mentioned. Ouch! You may want to contact them about it.

* Removing account registration
I seem to have encountered at least one public server that only supported registration via the client, though I guess using another client to register is a workaround.

* User names vs user IDs
The Discord plugin uses user names, and creates a new entity every time a contact changes their handle. Ugh!
Hitting the server may still be needed since a contact may change their handle mid-conversation.

* Colours for PurpleContactInfo
Wouldn’t it be more flexible to allow tagging contacts with different properties, and let the UI decide whether to map them to colours, badges, etc.?

* Contact list
I would really like to be able to display contacts as a multilevel tree (with searching and filtering). This applies to rooms/channels which some servers have myriads of (sorted into groups), and to some protocols that allow you to “bookmark” people for opportunistic chat.
Having everything in a single flat list would be unusable for me, and even a 2-level tree in Pidgin2 is too restrictive.

* Saving passwords
Storing passwords in Pidgin encrypted with a master password should be an option if I want to have all my data on a USB stick and run it as a portable Pidgin from any computer without saving my passwords into that computer’s password store.

Cheers!

*** Single window UI***
Not sure about that, I like seeing the status of my buddies while having the chat window open.

You will still see their status in their window and in the conversation list on the side of the window.

*** Decommissioning of the oauth-helper plugin**
I sometimes use Jdownloader2, and it delegates captchas to a browser extension. Maybe Pidgin can do something similar for oauth cookies instead of embedding a browser view? Just a thought.

This was specifically about the oauth-helper plugin i was developing for pidgin 2.

*** Removing XEPs from XMPP**
What about adding missing XEPs? Currently, some are implemented in plugins, and some others are unsupported according to various web sites. I went to xmpp.org to check what XEPs Pifgin does support, and it turns out that it isn’t even mentioned. Ouch! You may want to contact them about it.

We’re currently in the process of completely rewriting the xmpp plugin which will be formerly announced in the next state of the bird.

*** Removing account registration**
I seem to have encountered at least one public server that only supported registration via the client, though I guess using another client to register is a workaround.

Yep it’s a problem for now. But it simplified everything internally. The intent is to add it back at some point, but there was no reason to let it hold us back when only XMPP supports it and the developers that are running pidgin3 right now can just register an account in pidgin2.

*** User names vs user IDs**
The Discord plugin uses user names, and creates a new entity every time a contact changes their handle. Ugh!
Hitting the server may still be needed since a contact may change their handle mid-conversation.

No… That’s the entire point of PurpleContactInfo. It holds the user id and lets you update everything else. The idea is, new contact, grab all info then watch for server update messages. If the contact isn’t new, the update behavior should be defined by the protocol.

*** Colours for PurpleContactInfo**
Wouldn’t it be more flexible to allow tagging contacts with different properties, and let the UI decide whether to map them to colours, badges, etc.?

You mean like PurpleContactInfo:tags? This is going to take a very long time if I have to point out every api to you :slight_smile:

*** Contact list**
I would really like to be able to display contacts as a multilevel tree (with searching and filtering). This applies to rooms/channels which some servers have myriads of (sorted into groups), and to some protocols that allow you to “bookmark” people for opportunistic chat.
Having everything in a single flat list would be unusable for me, and even a 2-level tree in Pidgin2 is too restrictive.

We are not doing a tree right now. Maybe there will be reason to do it later, but with custom searching and filtering I can’t imagine why we’d need it. With the combination of tags on contact info’s you’ll be able to tag contacts with something like “close-friend” or something and then be able to filter on that. That said we should allow users to save searchers/filters too but that hasn’t been completed yet either.

*** Saving passwords**
Storing passwords in Pidgin encrypted with a master password should be an option if I want to have all my data on a USB stick and run it as a portable Pidgin from any computer without saving my passwords into that computer’s password store.

We are not cryptographers, we will get it wrong. Even lastpass whose job it has been to secure passwords has messed it up. Every platform has an existing password store and they’re pluggable to ass stuff like 1password or lastpass, there is absolutely no reason we should be doing this work that we will inevitably get wrong.

For your scenario, you can write a PurpleCredentialProvider in a plugin and be done.

Thanks for the reply!

Only those I am in active conversation with, not those I haven’t chatted with for a while.

It may work well for buddies but the usecase I am concerned about is Discord channels. Specifically the big “social community” servers.

I am a member of several Discord servers that have huge numbers of channels, sorted into groups. Moreover, the admins continuously create new channels, archive “old” ones, rename existing ones, move channels between groups, add/delete/rename groups…

Filtering a flat list of literally hundreds of channels to thousands of channels across multiple servers does not work when things are in a state of constant flux. It just doesn’t scale.
It works in the native Discord client because navigating a three-level tree of server/group/channel, when groups are collapsible, allows for quickly finding the information. I don’t see how it can be done efficiently with a flat list.

Quoting from a conversation with a friend:

Lurker: Can you tell me approximately how many servers you are a member of and how many channels do the largest ones have?
<redacted>: I have more than 18 communities and it's pretty hard to navigate them.
Lurker: How large are the large ones?
Lurker: In terms of number of channels, not users
<redacted>: TCC, which is one of the bigger ones I follow has about 100 members
<redacted>: And it's got about 45 channels, since it's a self help/writing center

I personally am a member of about 10 servers with over 50 channels each, the largest having about 180 channels (no, I am not active in the vast majority of those channels but sometimes I check the groups to see if any interesting ones were added).

Currently I have a Python script that generates blist.xml entries from Discord logs in the form <server>-<group>-<channel> from Pidgin debug logs but it’s a pain.

Only those I am in active conversation with, not those I haven’t chatted with for a while.

Sure, but it’ll still be there in the contact list pane… Look I’m pretty sure we’re not going to agree here, but the code is no where near finalized and maybe it’s better if that happens before you continue complaining about things you haven’t used yet.

It may work well for buddies but the usecase I am concerned about is Discord channels. Specifically the big “social community” servers.

These contacts are you on your buddy list because that’s the only way the plugin can persist their state without hitting rate limits on the server. The PurpleContactInfo api was explicitly created to address this. So all the random contacts from every discord server will not show up on your contact list anymore unless you are explicitly friends with them on discord.

Of course, the discord plugin has to be updated to pidgin3, but that doesn’t stop us from addressing these issues, like we have been, ahead of time.

As far as the channels go, we will most likely only make them available (aside from the ones you’ve saved to your contactlist) via the room list window and thus hide many of them by default but still allow to open them later.