Sputnick's blog

Happy New Year - With Quassel 0.14.0!

Hi all,

again too much time has gone by since the last release, and I want to apologize for this. I've had different plans for the past couple years, however as all of you are aware, a certain pandemic has caused major changes and disruptions on both a global and local level, and those haven't left me and my private and professional lives unaffected. Without going into details, suffice it to say that it has been very hard for me to find both the time, focus, and motivation to sit down for long evenings of coding on Quassel (or any other private project, for that matter). We'll have to see how this might change again going forward; I still have many ideas for improvements and features, and so do our main contributors.

Anyway, I've finally managed to wrap up the 0.14.0 release of Quassel! A long list of changes has gone into this one, most of it again thanks to our many contributors, most notably Shane "digitalcircuit" Synan and Janne "justJanne" Koschinski, who have been awesome! Thanks a lot, and sorry for letting your contributions rot for too long at times... your help and support is always appreciated!

Highlights of the new release include the addition of many IRCv3 capabilities, support for the HAProxy protocol and for providing Prometheus metrics, improvements for the configuration of the core/client connection and ignore list rules, updated translations and icons, and a host of smaller fixes and improvements. However, most of the work has happened behind the scenes: After removing support for Qt 4 and KDE 4, and requiring newer compilers that support C++14, both the build system and the codebase have been thoroughly modernized and cleaned up. We have also moved our CI system to Github Actions, allowing us to automatically validate builds against several supported distributions, as well as automatically creating installers for macOS and Windows. We're not done yet with moving this almost 17 year old project into the present and prepping it for the future; for the next release cycle we intend to bump the toolchain requirements yet again, so we can move towards C++17 and more recent versions of Qt 5, as well as start supporting Qt 6 once viable. Stay tuned!

Last but not least, the move of our IRC community from Freenode to Libera Chat is now reflected in the code as well as the documentation. You'll find us in #quassel in case you have any questions or or ideas, or just get in contact with our community!

You'll find tarballs as well as builds for macOS and Windows at our downloads page, or soon at a distro near you. Please note that we no longer provide builds for 32 bit platforms, as those are not supported anymore by our tooling and demand has been miniscule anyway. Before you upgrade, please be aware that both the database schema and the config file formats have been updated since 0.13. Quassel will automatically upgrade both once the new version is started for the first time, however no rollback is possible, so backing up your data prior to starting the new version is highly recommended.

And now I wish all of you a very happy 2022, stay healthy!

Cheers,
~ Sput

Moving Our Home - Good Riddance Freenode, Hello Libera Chat!

Hi all,

Since the beginning of development more than 15 years ago, we, the Quassel IRC development team, had called the Freenode IRC network our home. For the longest time we have enjoyed the network, its people and communities, its helpful and friendly staff, its services and ease of use. Freenode was the home of a large body of Free and Open Source software, also the home for communities close to us, such as the Qt, KDE, Gentoo or Ubuntu/kubuntu communities.

Unfortunately, recently the situation has changed drastically. What happened was what many people call a "hostile takeover" of the Freenode network and organization by people who basically treat with contempt Freenode's original values that formed the core of the community, and a main reason for many projects to choose that network in the first place. As a result, basically all of Freenodes volunteer staff has resigned, afterwards many channels have been taken over by the new management, their former admins robbed of their rights and ownership. I don't want to go into all the details here; there should be ample information about this on the internet. As a starting point, feel free to read through the discussion (including links to various sources) that ensued in our own, the Quassel community, as part of a Pull Request created to deal with this matter.

As it turns out, the core of the former Freenode volunteer staff have founded a new network, Libera Chat, with safeguards in place that should prevent another hostile takeover to ever happen. Many projects have moved to Libera Chat, and the Quassel IRC team has decided to follow suit. Since we know the people behind the network, and their philosophy, we expect Libera Chat to continue the legacy of the original Freenode. And as a more practical consideration, the network setup, the services, the processes behind the scenes, all are pretty similar, and thus from a technical perspective, the move was rather straightforward.

So going forward, you'll find the usual suspects of the Quassel community in Libera Chat, in the same channels they joined previously - #quassel, #quassel.de, #quasseln and so on. We will change the links and network list in the client with the next release. For the time being, our channels in Freenode are still open, but we expect participation of our most active users to cease, and we always have to expect a hostile takeover of channels by Freenode admins, so we urge everyone to join Libera Chat instead.

Update 2021-06-21: Meanwhile, the new Freenode management has decided to completely wipe their data (with the official reason that they're moving to a new software suite for their network), which means that all NickServ registrations are lost, as well as our channel registrations. As a result, the Quassel IRC team no longer has control over our former channels in Freenode. This proves that our decision to move was justified. Please note that any op activity, or any topics that might be set in the #quassel namespace in Freenode, no longer bear any relationship with the Quassel IRC project.

Looking forward to seeing you on the other side!
~ Sput

Doing Some Maintenance - Quassel 0.13.1

Hi all,

we're back in 2019 with a maintenance release for the 0.13 cycle, Quassel 0.13.1. Besides a handful of fixes and improvements over the previous release, 0.13.1 fixes a particularly annoying issue with 0.13.0 on Qt4-based systems where backlog messages would not all be fetched. I'd like to thank Janne "justJanne" Koschinski and Shane "digitalcircuit" Synan in particular for finding the cause for this problem, as well as implementing and testing the fix!

So if you happen to run Quassel 0.13.0 on a system or distro still using Qt4, be sure to upgrade (or ask your friendly distro maintainers to do so), otherwise your chat history may be spotty... Official 0.13.0 builds for Windows and OSX already use Qt5, so they're not affected. Also any recent distro release should have done the migration already, as Qt5 has been out for quite some time.

Quassel 0.13.1 also makes database schema upgrades more robust by making them resumable, and allows to configure the listen addresses for the built-in identd. Please see the ChangeLog for a full list of changes.

As always, you can find the sources, as well as precompiled binaries for Windows and OSX on the downloads page.

Cheers,
~ Sputnick

It's happening! - Quassel 0.13.0

Hi all,

1312 days have gone by since the last feature release of Quassel IRC. At times, the project went almost dormant; then it was buzzing with activity again due to some very active contributors (digitalcircuit, justJanne, romibi, mamarley, just to name a few). And in the end, even I could not help myself and had to start coding again! As a result, we can finally unleash a new feature release on you. And what a release it is!

We have a new branding and application icon, support the modern Breeze iconset, and improved icon theme support as a whole. We added a whole bunch of UI improvements, from the ability to show user modes in chat to spell checking on all platforms. Many IRCv3 features are now supported, including the rendering of almost all of modern formatting options. New authentication and configuration options allow for containerization, or for using an LDAP backend for the core. The database now uses 64 bit message IDs and timestamps, making it future-proof for giant backlogs and the year 2038.

Much work went into supporting mobile clients better and improve performance. For example, chat activity tracking and highlight rules moved into the core, so clients don't need to pull all the backlog at once. The first mobile client to benefit from this is Quasseldroid, which itself has seen a full rewrite that will soon be released to Android phones near you. Of course, these improvements also lay the groundwork for future improvements for the desktop client's performance.

Please see the full ChangeLog for a more detailed list of changes.

Before you upgrade, please be aware that both the database schema and the config file formats have been updated since 0.12. Quassel will automatically upgrade both once the new version is started for the first time, however no rollback is possible, so do make a backup before starting the new version! The upgrade may take a long time (up to several hours) if your database is (un)reasonably large, during which the core or mono client cannot be used. The upgrade may also temporarily require up to double the disk space. Do not interrupt the upgrade process, otherwise your database may become corrupted!

With that out of the way, please head on over to the downloads page to get yourself a fresh Quassel tarball, Windows installer or OSX package. Or wait until the new version hits a distro near you! As always, feel free to join us in #quassel on the Freenode IRC network if you have questions, or just want to talk to our friendly community.

One final remark: As we have announced a few times now, the 0.13 release cycle is the last one still supporting the all-but-dead-for-years Qt4 and KDE4 libraries. But this it not the only change; behind the scenes, we have already been very busy modernizing the codebase, and we will merge a giant pile of changes into the master branch soon after branching out 0.13. Going forward, Quassel will require a more recent toolchain, as well as system libraries; the baseline we have chosen for the time being is Ubuntu 16.04 "Xenial", with no intention to support older versions than what's available there. We hope that this won't affect too many users; we think supporting a more than three year old setup is reasonable, and it gives us the opportunity to do some sorely needed cleanup and use modern C++ features and libraries going forward.

With all that said, I'm wishing you a nice weekend, and hope you like the new Quassel 0.13.0!

Cheers,
~ Sput

The Final Stretch - Quassel 0.13-rc2

Hi all,

the first release candidate for the impending 0.13 release uncovered some issues, the fixing of which required some more complex changes than we would have liked. Thus, we decided to roll a second release candidate.

Most significant changes compared to rc1:

  • Rework the init and shutdown sequence as well as signal handling to properly clean up everything on shutdown
  • Rework the handling of regular expressions e.g. for ignore and highlight rules for more flexibility and better performance. This may break legacy ignore rules; see the migration guide for more information

Please see the updated ChangeLog for more. Of course, the information and caveats mentioned in the release announcement for 0.13-rc1 still apply.

Please head on over to the downloads page to grab the packages, or just click here:

We expect to do a final 0.13.0 release in just a few days, pending discovery of serious issues that would warrant another delay.

Cheers,
~ Sput

A Candidate Long in the Making - Quassel 0.13-rc1

Hi all,

more than three years since 0.12.0 was released, and over 500 commits on top of what went into the current stable branch, we're finally in the last stretch of the next major feature release!

Since so much work and changes went into this, this time we've decided to not only roll a release candidate, but also announce it publicly, so daring people can test things before final release.

Some caveats upfront: Both the database schema and the config file formats have been updated since 0.12. Quassel will automatically upgrade both once the new version is started for the first time, however no rollback is possible, so do make a backup! Also the upgrade may take a long time (several hours) if your database is (un)reasonably large, during which the core or mono client cannot be used. The upgrade may also temporarily require up to double the disk space. Do not interrupt the upgrade process, otherwise your database may become corrupted!

Nevertheless, the Quassel protocol between remote cores and clients still is backwards-compatible all the way down to 0.5.0, which was released in 2009. While you may not be able to use all the newer features when connecting to older versions, things still work, and there is no need to upgrade both ends at the same time.

This is also a call for translators. If you'd like to improve the localization of Quassel in your language, please head over to Transifex and contribute. We'll merge back the updated translations shortly before final release of 0.13.0.

Too many changes went into this release to be able to list them all (have a look at the ChangeLog for a reasonable overview), but here are some highlights:

  • New branding, more modern icons (from the Breeze icon theme)
  • Better support for icon themes
  • Many UI improvements
  • Support for many IRCv3 features, including the display of modern formatting codes
  • Functionality such as highlights and chat activity tracking move into the core to help mobile clients to be more efficient
  • Support for containerization, i.e. config-less core
  • Optional authentication via LDAP
  • Database improvements, including support for 64 bit IDs and timestamps, and performance tweaks
  • ... and much more!

The usual packages are available for download now:

We're discontinuing the pseudo-static core, because creating static binaries that run on most platforms becomes increasingly fragile; bundling things like OpenSSL also introduces security risks, since the bundled version will not be updated with the system. Additionally, our binary packages for OSX and Windows do not support the PostgreSQL database backend for the core due to limitations in our build environments, as well as lack of demand.

Do let us know if you run into issues or regressions. Otherwise, we're expecting a final release in the coming weeks!

NOTE: As announced several times already, 0.13.0 will be the last feature release still supporting Qt4 and KDE4. We'll significantly bump the build and runtime requirements for future releases in order to be able to modernize the code base. Planned baseline for 0.14 onwards is Ubuntu 16.04 "Xenial", as well as reasonable recent toolchains for OSX and Windows.

That's it for now!

Always yours,
~ Sput

Two Years!? - Quassel 0.12.5

Hi all,

yes, it's been exactly two years today since 0.12.4 was tagged… Even though development speed has picked up again recently (mostly thanks to some very active new and old contributors, and only to a small degree thanks to myself), and several hundred commits have gone into the main development branch since 0.12 was forked away, we're still some weeks away from a new feature release.

However, chaign_c has recently discovered two vulnerabilites in the 0.12.4 core, so a new maintenance release is warranted (and an immediate upgrade of 0.12.4 cores is highly recommended!). Since it has been so long since the last release, we've decided to backport over a hundred commits worth of bugfixes and quality-of-life improvements to make upgrading worth your while. Go grab Quassel 0.12.5 from the downloads page!

Following our usual policy, we did not change the config file format nor the database schema compared to previous 0.12.x releases, and we avoided string and UI changes. Thus, upgrading should be safe, and going back to a previous 0.12.x release is possible in case anything goes wrong anyway. Please have a look at the ChangeLog for a list of major things that went into this release, or check out the full list of commits since the last release.

I'd like to use this opportunity to thank all contributors who keep Quassel alive and kicking despite my own lack of time, be it by providing pull requests, community support, translations, testing, or just being active in our IRC channels. For this release, I want to particularly express my thanks to Janne "justJanne" Koschinski, Michael "mamarley" Marley and Shane "digitalcircuit" Synan for their timely support in handling the afforementioned vulnerabilities so professionally, both providing fixes and very thorough testing! You rock!

Next stop (hopefully): Quassel 0.13. As announced, well, two years ago, this will be our last release still supporting Qt 4 and KDE 4. Afterwards, we'll also bump our build requirements significantly.

Until then, all the best,
~ Sput

Fixing Bugs - Quassel 0.12.4

Hi all,

while feature development is still slow -- too slow for my own taste, really, but what can you do -- some rather annoying bugs have been fixed that warrant another maintenance release. Most notably, Tucos (thanks a lot!) has figured out that invalid handshake data may cause the core to crash. Another annoying issue was the lack of support for the STATUSMSG feature available in some IRC networks. This one was recently abused by idio^Wpeople to pop up tons of spam queries for some of our users.

Long Time No See - Quassel 0.12.3

Hi all,

it's been a while that we did a new release, and it's still "just" a bugfix release this time. Turns out that real life is still keeping us busy... but it's the good kind of busy, so there's that. Thankfully, we have a bunch of cool people in the community who contribute patches, fixes and features while the core development team is on semi-hiatus -- many thanks to all of you!

Anyway, say hello to Quassel 0.12.3. Many fixes went into that one, and we encourage you to upgrade! One particularly nasty bug was fixed: if you have multiple users on a single Quassel Core, and use PostgresQL as a database backend, messages could be lost in earlier 0.12.x versions. So if you happen to run 0.12.{0..2}, and run a core for multiple users, you definitely should upgrade. A more extensive list of fixes can be found in the ChangeLog.

A short heads-up: The next feature release (0.13.x) will be the last one still supporting Qt 4 and, consequently, KDE 4. Supporting two diverging frameworks (Qt 4 and Qt 5), and two rather different desktop environments (KDE 4 and Plasma 5), proves to be increasingly challenging. Additionally, Qt 4 has officially reached end-of-life by now. So once 0.13 is release, we'll take the opportunity to clean up the codebase and remove a few hundred #ifdefs, wrappers and workarounds! This is still a few months away, and we plan to add a long-desired feature or two to the next release -- but now you know and can prepare for life after Qt 4!

That's it for today. Please head to the downloads page to grab the new source tarball. Binary packages for the various platforms will show up there over the next few days, and if you run Linux, I'm sure your friendly package maintainer is already working on getting an updated package near you soon!

Have a nice one!
~ Sput

A Bumpy Road - Quassel 0.12.2!

Hi all,

I'm happy to announce the release of Quassel IRC version 0.12.2! This version now fully supports KDE Frameworks, so Quassel behaves properly in a Plasma 5 environment. Other new features include an improved password hashing algorithm, proper unicode-aware message splitting for both normal and CTCP messages, improved handling of PostgreSQL database connections, a bunch of bugfixes and updated translations. If you connect to a 0.12.x core, you can also now change your core password from the client. Please see the ChangeLog for a more complete list.

Now you might ask: What happened to 0.12.0 and 0.12.1? This is the reason I titled this post "A Bumpy Road". Very shortly after tagging the 0.12.0 release, we've discovered a behavior change in Qt5 in regards to timezone handling in PostgreSQL databases. This resulted in backlog messages being stored with the wrong timezone information for some server setups. The fix for this went into the 0.12.1 release. Unfortunately, this fix also uncovered a more serious issue that has been around for a long time: restarting a PostgreSQL database while Quassel Core is running would not properly re-initialize the database session inside Quassel, bringing back an old security issue that we had deemed fixed. This forced us to create yet another release, so that's why we are now at version 0.12.2. The new issue is being tracked as CVE-2015-3427. Thanks to Pierre Schweitzer for registering this!

To be clear: We strongly recommend upgrading Quassel to 0.12.2 due to vulnerabilities in older versions, or backporting the patches referenced in the relevant CVE entries! We have also prepared a 0.11.1 release that contains the security fixes, but no new features. Older versions are no longer supported.

With that out of the way, we hope that you'll enjoy the new version of Quassel! Head on over to our downloads page to grab it, or wait for your favorite distro to provide packages!

Cheers,
~ Sputnick on behalf of the Quassel Team

Syndicate content