What we're targeting with Pidgin 3.0.0-Alpha1
Tags: repost, pidgin3, alpha
Published: 2023-05-18 14:00:00

> This article was originally posted on [Patreon](https://www.patreon.com/posts/what-were-with-3-78291546) and has been brought over here to get all of the [Pidgin](https://pidgin.im) Development/History posts into one single place.

People have been asking for a Pidgin 3 road map for a very long time, and I've resisted nearly every step of the way.

Part of the reasoning for this is that this is a volunteer project. While we have plenty of stakeholders, we have zero shareholders, and no one gets paid to work on it which means the time available to work on it is always fluctuating.  So trying to putting a date on anything is setting ourselves up for failure. But to be quite frank, we weren't sure where we were.

Where we are with Pidgin 3 is still more of a guess than anything concrete. However we've set out some goals that we have determined as necessary for the first Alpha release.

Our first goal is to have basic Pidgin 2 functionality. What we mean by this is that you should be able to send and receive messages just like you would in Pidgin 2 in a familiar way. This is purposely ignoring stuff like file transfers, themeing, and so on.

While this might sound easy, we've actually had to completely redesign how messages work inside or Purple 3 including conversations and the old logging API. The reasoning for all of these changing is that they're all necessary to be able to support modern chat features like edits, redactions (deleting messages), replies, reactions, threads, and attachments. Previously we had no way to look up a message after it was written to the conversation window which was blocking all of these features.

Our next goal is to get the majority of the user interface figured out. Pidgin 2 is a GTK+ 2 application, with Pidgin 3 we were originally targeting GTK 3, but we've now ported Pidgin 3 to GTK 4. As you might have guessed, many things have changed in GTK over these 3 versions. As such what is possible in the user interface has changed drastically and previous designs just don't make sense anymore. You have no doubt seen some of these changes during my [streams](https://twitch.tv/rw_grim) or the [State of the Bird](https://www.youtube.com/playlist?list=PLUmrAdJiXFMVZXy5DIrL8geGDzw3OJaAo) and we're finally dialing this in.

Our final goal is to get the protocol plugin interface as close to finalized as possible. With all of the changes between purple 2 and purple 3 protocol plugins are probably getting the worst of it as aside from just dealing with the normal API changes, all of the protocol plugin APIs have changed as well. So we are aiming to get that as close to final as possible so that third party protocol plugin developers can start looking at porting to purple 3 and not have to worry about completely rewriting large portions of their protocol plugins for Alpha 2.

There's one thing you haven't heard me mention yet... And that's Finch 3. While Finch 3 is still on our radar, it will most likely be disabled by default in Alpha 1. The reasoning for this is quite frankly that Finch just doesn't get as much attention as Pidgin does. We have limited resources and we keep Finch 3 compiling, but there are a number of things that finch just hasn't been ported to yet and isn't likely to happen until after the Alpha 1 release. If you are a developer that is also a Finch user and would like to step up and start addressing these things, please reach out!

Finally if you want to keep an eye on things, you can see roughly where we are with this [search](https://issues.imfreedom.org/issues?u=1&q=Scheduled%20versions:3.0.0-alpha1%20) in our issue tracker. I say roughly because many tasks haven't been broken down yet, and we don't always remember to put stuff in there either.

I hope you're enjoying these posts! Remember they go live for patrons at 9AM CST on Mondays and go public at 12AM CST on Thursdays! If you'd like to support my work, you can join find a list of ways to do so [here](https://imfreedom.org/donate/#gary-kramlich).