Sputnick's blog

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

New Cuties - Quassel 0.11.0

Hi all,

It's that time of the year again for another Quassel release! For 0.11.0, we've focused mainly on full support for Qt 5.2+ (in addition to Qt 4.6+, which will be supported alongside for the time being). Since Qt 4.x has not seen much development for quite some time, and subsequently we've missed out on much work that has been done by the Qt developers, this marks a major improvement in particular for our users on Windows and Mac OSX. Support for both platforms has seen many improvements in Qt 5, and thus our official packages for those platforms are now built against Qt 5. In particular Mac users should be much happier now!

For KDE users it is recommended to still use Quassel built against Qt 4, because KDE integration support has not been ported to the new KDE Frameworks yet. This is something we plan for Quassel 0.12, so stay tuned!

In order to make dual-Qt support easier, we fully revamped the build system, something that was long overdue. The existing build system still came from the dark CMake 2.6 ages, and it was increasingly hard to maintain. So now everything has been rewritten, taking newer CMake features into account. Some build options have changed as a result; in particular, we use package properties now for finding optional dependencies rather than CMake defines. After configuring the build, CMake will output a summary of required and optional packages that could or could not be found, alongside with information on what a particular dependency does and where to find it. The INSTALL file has been updated accordingly.

Starting with 0.11, we also increased the build requirements. A C++11 capable compiler, such as gcc 4.7+, Clang 3.1+, or Visual Studio 2013 (at least the November CTP), is now needed in order to build Quassel from source. In addition, at least CMake 2.8.9 is required. We feel that these are reasonable requirements that should be supported by most current distributions (and there were no objections when we asked around).

Besides these major changes, this release also contains a bunch of bugfixes, most generously provided by our awesome community. Among other things, the handling of database errors has been improved, we now split CTCP lines that are too long (important for role players using /me a lot, I'm told), and some issues with QuasselDroid have been fixed. For those of you who you only want to get those fixes, but not the build system changes, Qt 5 support and the increased build requirements, we tagged Quassel 0.10.1. This bugfix release marks the last of the 0.10.x releases; we will not provide further support for this branch (as usual).

And now, get downloading unless your friendly package maintainer has already done this job for you!

Cheers,
~ Sput

A Bleeding Heart

Hi all,

as you should have heard by now, a major security vulnerability was discovered in OpenSSL. This does affect Quassel as well, as by default the connection between a Quassel client and core is encrypted using SSL (or, rather, TLS); in particular, it affects you if you run a core that supports SSL and is exposed to the public internet (clients, both monolithic and stand-alone, are not affected because they don't offer an SSL-encrypted service).

Into the Double Digits - Quassel 0.10.0 Is Out!

Hi all,

we proudly announce the latest release of Quassel IRC, version 0.10.0! As promised, development has become more active in the past few months (both because we gained several new contributors (thanks a bunch!), and I myself have finally some more time for development), so besides a host of bugfixes that already went into 0.9.x, this development cycle also saw various new features as listed in the ChangeLog. Besides, for example, various improvements related to SSL connections, optional multi-line input field, support for the Snore notification framework, the ability to show backlog messages in the ChatMonitor (beware though; it will slow down your sync!), the possibility to hide inactive networks in your Chat List, more translations, and a new version of the inxi (/sysinfo) script, this release features a new core/client protocol: the DataStream protocol.

This new protocol is one (intermediate) result of the refactoring work that has been going on behind the scenes for several releases now, aiming for separating out protocol-specific code from the rest of the codebase in order to be able to do things like, well, replacing the protocol (and making it easier for third-party client authors to work with it). The DataStream protocol is not much different from the original ("legacy") protocol, but it removes some of the unnecessary overhead. Due to a change to data compression, QuasselDroid can finally use compression when connecting to a 0.10.x quasselcore! You can read more about the protocol changes in the Wiki (work in progress). Note that we kept backwards compatibility, so using a new client with an older core, or vice versa, is fine (but won't get you the new protocol, of course).

That's about it. Go now and grab the newest version from our downloads page, or directly from your friendly distro's repositories once it's there!

One last note for people following development closely and interested in the goings-on in Git: The master branch has seen a revamp of the build system and features full support for Qt5 now (minus some glitches). Soon, we will start using C++11, as announced previously; so make sure to update your toolchain if it's ancient!

Cheers,
~ Sput on behalf of the Quassel Team

Yet Another Important Update: Quassel 0.9.2

Hi all,

the last update in the 0.9.x series has been released only a few weeks ago, and now it's already time for another one. Besides various bugfixes (among those, Phonon notifications play sound again!), and a bunch of new and improved translations, the main reason for this one is, unfortunately, another vulnerability: with a carefully manipulated client, you can retrieve the backlog of other users on the quasselcore you're using. Proper authentication is still needed, so this will only affect people who allow untrusted and malicious users on their shared core. Still, an upgrade is highly recommended.

If you happen to be a distro packager, please be advised to backport (i.e. simply apply) this and, if you haven't done so yet since the release of 0.9.1, this patch to your packages, if you can't bump them to 0.9.2 for release process reasons.

Well, here's hoping that next time we won't have that sense of urgency again :)

Have a nice day, and happy updating,
~ Sput

We Have Mailing Lists!

Hi all,

finally (after years of pushing and prodding for it), we now have mailing lists for Quassel IRC.
While most of user support and discussions happens in our IRC channels (mostly #quassel on
Freenode), mailing lists have distinct advantages - in particular, there is an archive, and
people can chime in asynchronously.

So now we offer the following lists:

  • quassel-announce

    This is a read-only list, where the development team will send important announcements
    to. We highly recommend distro packagers to subscribe to this one, as we'll announce
    releases and other important information there.

  • quassel-users

    This list should be used for general user discussion about and around Quassel IRC -
    questions, tips & tricks, that sort of things.

  • quassel-devel

    This list is for discussion about development of Quassel IRC itself. Everything that is related
    to development should go there, and we'll share our plans and ideas there as well.

So, feel free to go ahead and subscribe!

Please note that this is my first time setting up a list server, so if the lists show unexpected
behavior or have configuration issues, feel free to poke me so I can fix it.

~ Sput

Syndicate content