We have recently tagged a bugfix release for the stable branch, appropriately named 0.4.1. Users of 0.4.0 are heavily recommended to upgrade. Note that no new features have been added; users of the development version from git should not use 0.4.1 as it would be a downgrade.
Some of the bugs fixed include:
- Correctly display images in the web preview in static builds
- Improve selection and multi-line paste behavior
- Fix cert handling for identities
- Create a proper default identity for new networks
- Improve ping timeout detection (don't time out after 30 seconds with a shaky connection)
- Fix bufferview sorting
- Updated and new translations: Slovenian, Russian, French, Czech, German, Turkish
- Improve flood control (avoiding Excess Flood in most cases)
- Various improvements to the build system
You can grab the new release from our download page; many distributions also have updated packages available already.
After about three months of hard work, the Quassel Team has tagged the brand-new and extra-shiny 0.4.0 release for you! And for extra convenience, we even have updated our downloads page! To reach this important milestone, 432 commits went into Git since 0.3.1.
This was one of the comments our new shiny application icon caused, and it was even suggested as our new tagline. I LOL'd :)
We have been fading out our old logo, the All-Seeing Eye, during the past few weeks. This was created by John "nox" Hand, who deserves kudos for his work as well, of course. Thank you! Your logo has served us well for a long time, but now it's Oxygen all the way...
New Quassel artwork coming to a release near you in only a few days!
With Qt 4.5-rc1 recently released, we've stumbled over a strange issue with Quassel. A binary compiled against Qt 4.4 would completely freeze when used with Qt 4.5. This problem mostly hit users on binary distros trying out Qt 4.5. As it turned out, recompiling Quassel against Qt 4.5 magically fixed the problem - but of course, this is not an option for distro packagers, as they will have to provide packages built against 4.4 at least until 4.5 hits their distros proper.
So we hunted for that bug, to no avail at first, but then EgS
stumbled over dug into the strange dungeons of his memory, and there found lurking a blog entry by one of the Trolls:
Well if you leave the code as it is then you will either get a crash in your code or it will simply cause the application to hang because the QRegExp object passed into QString::indexOf() is no longer modified. The good news is that there is a solution which you can use now even if you are not switching to Qt 4.5 straight away. What you should do is change the calls from QString::indexOf() to QRegExp::indexIn().
We found one location in our code where we did this, and changed that:
- matches[i] = str.indexOf(regExp[i], qMax(matchEnd[i], idx));
+ matches[i] = regExp[i].indexIn(str, qMax(matchEnd[i], idx));
This seems to fix the issue, and Quassel binaries built against Qt 4.4 now reportedly work with 4.5.
What I don't get: I can see how "not modifying the QRegExp object" causes our code to hang here, and why the above makes it work again. But why the fringle does a mere recompile against Qt 4.5 fix that issue as well? Does the regexp magically become modifiable again? Luck? Karma? Voodoo? Anybody can help me out there? ;-)
Qt has this nice feature that you can embed arbitrary files into your binary, and access these so called Resources via special paths starting with a colon. For the longest time, Quassel has exclusively relied on resources and embedded all its data files, including icons, into the binary. This had the advantage that we could always be sure to find all required files at a certain location and need to provide fallback mechanisms. It also meant that Quassel binaries didn't need to be installed; they were completely standalone and could just be run from any location. Quite nice especially on a platform like Windows that does not have standard locations for all sorts of data files. And on Linux, whose various flavors still do not always agree where stuff should go.
Now, where's the problem with that approach? For once, the binaries get bigger. Maybe not on the file system (having dozens of small files tends to waste a lot of space due to fragmentation and partial blocks), but certainly in RAM. It also increases loading times a bit. Then there was the issue with translations. We would embed all translations into the binary - obviously a waste of space even though each individual language file is surprisingly small. The LINGUAS variable, restricting the languages to be built, helped a bit, but not much. Distros tend to provide language packs, so support for external files would be needed.
But the real killer was KDE integration - KIconLoader, for example, wouldn't look into our binary to find an icon, obviously. So for KDE support, we needed to install the icons separately. Consequently, Quassel gained support for that a while ago, complete with some confusing cmake options. Over time, we got more data files, such as .knotifyrc for KDE's notifications, and networks.ini containing predefined network definitions. As it turned out, our build system installed them in locations that would be re-found at run-time only by pure luck, if at all. And it would fail completely on Mac and Windows.
I have fixed that in the past couple days, and Quassel now has proper data file handling. Read on for more information, in particular if you are a distro packager!
One of the more enduser-confusing issues with Quassel used to be its storage locations for settings and the backlog. The various platforms Quassel supports handle the storage of configuration much differently. Qt helps us there with abstracting this away, and giving us for example QSettings, which allows for the storage of configuration data in the platform's native format without having to bother about platform issues. In particular, this means that settings go into the XDG location on Linux (usually in $HOME/.config/), into .plist files on Mac, and into the Registry on Windows.
All nice and dandy, but what to do with data files, such as the sqlite storage? Well, Mac has a standard location for that, as does Windows (%APPDATA%). On Unixoids, such data traditionally goes into $HOME/.. And that's where the trouble started.
Since people keep asking us what our view is on the usability review seele recently did about Quassel IRC, I thought I should blog a little something.
First of all, it didn't hit us as a surprise. We've been in contact with kubuntu about their plans before, and we've ongoing discussions with seele and other kubuntu devs about how to make Quassel suitable for new users, in particular for kubuntu's main target group. Many things seele mentions in her review have been on our TODO list for a while now, but of course, being developers, we tend to put such issues off in favor of new features... now this whole thing shifts our priorities to focus on usability for a change. Sorry guys, this also means scripting support has to wait again...
Meanwhile, apachelogger is busy making the Quassel packages rock on kubuntu, and now provides nightly Quassel builds via Project Neon. And the Quassel developers, of course, are now busy to convert the review into code :)
Read on for some specific points.
As my XMas present to our faithful community, I have merged my branch named "kde" into git master a few days ago. As the name suggests, this brings you the long-awaited optional KDE4 integration! Mostly this means that Quassel, with KDE integration enabled, will use your KDE icon and color theme, it gives you editable shortcuts, and - finally - full support for knotify (the KDE notification system). Some more things will probably follow soon.
Meanwhile, EgS has been busy pimping the core, adding extended backlog features, query merging, proxy support, SSL authentication (e.g. for OFTC) and more cool stuff. We will now focus on usability issues and general UI polishing, thanks to seele's efforts who gratiously took the time to thoroughly review Quassel's UI.
All this will of course be part of the next release, quassel-0.4.0, due early 2009. So that's definitely something to look forward to in the new year ;-)
Update: Just to avoid confusion: KDE integration is an optional feature, and it will stay an optional feature. We do not intend to enforce a KDE dependency, since many Quassel users don't use it (for some bizarr reason ;-)), and it would be a mess on Windows and MacOSX anyway. This does not mean that our KDE4 users should have to miss out on great features like shiny Plasma bubbles though :)
As many of you probably have noticed by now, we have had some server trouble right in time for christmas. We are currently in the process of restoring all services, but it will probably take us a few days. So far, we have most of the webpage running again The FAQ is still missing, and we will tweak the theme a bit I guess, as this was just a rather quick hack to make the page work at all with the new Drupal version (yes, we took the opportunity to update that). Git is back too, as are the download pages. The bug tracker is still offline and will be for a few more days probably, as we are evaluating switching to a different software.
Anyway, sorry for the inconvenience.
Merry XMas/Chanukka/Season's Greetings/Weekend and a Happy New Year :)