Wow, some 7 months since my last blog post, I have been bad :-) Obviously life has been rather busy this last 9 months since going back to full-time work, strangely my employer expects a full 8 hour day, then there's the 4 hour commute, plus university studies in the evening and various excavations on the weekends. Needless to say my time for KDE has been severely limited and what little time I have has mostly gone into working on Qt 5 trying to improve the Localization and Printing modules.
Before I get into some dry details, I'll give you a couple of pictures in compensation. First up aseigo may recognise these two characters who I've had the good fortune to work with a couple of times now:
If you watched the Time Team special on Isambard Kingdom Brunel then you might have spotted me wandering around in the background trying to get into camera shot :-) However archaeology is about more important things than TV stardom, it's about digging up cool stuff right? Well here's my best find to date:
I would show you where I found it, but I think 1600 year-old Roman skeletons don't quite belong on the Planet :-)
Anyway, enough of that, how's Qt 5 going? I'll cover printing in a separate post, so here I'll cover Localization. The plan was to overhaul QLocale for Qt 5.0 to fully support all KDE's requirements, including proper calendar and time zone support. After a couple of months working on that and discussions on the Qt development list we realised that the amount of extra code required and the memory consumption of the extra locale data was going to be excessive if we stuck to the current implementation model, and would work against the plan for a slimmed down QtCore.
After a bit of thought it was decided that instead Qt5 would switch to using ICU as the localization backend. ICU ships on all modern Linux distributions where it is used by apps like Mozilla and LibreOffice, is used by OSX, iOS and Android, is available on Windows and is already a pre-requisite for QtWebKit so for most cases the dependency will not be an issue. Obviously the native host locale functions will still be used for the system locale, but ICU will provide the Linux system locale, and non-system locales on all platforms. This will greatly reduce the amount of code we have to write and maintain, and will give us a lot of new features like collation that we don't even have in KDE. It also means locale data is no longer all stored in libqtcore so distros and embedded users can slim the data files down to just what they need. About the only down-side is I no longer have calendar code to maintain :-(
Unfortunately this meant starting over, and with not enough time to fully implement support before the feature freeze I concentrated on making what source and binary incompatible changes were needed to be made for 5.0, while still maintaining near-100% API backwards compatibility. Now that stuff is really boring, but if you ever wanted to instantiate a QDate that lay anywhere in the range from Big Bang to heat-death you now can :-) Probably the most important part of this work was getting used to the Qt code-base and the Open Governance model, which I think is bedding in quite well now. The new QLocale API wrapping ICU will be introduced in Qt 5.1 in time for KDE Frameworks 5 to use it for its initial release, as well as the KDE Platform integration so that all Qt apps use the KDE locale settings.
Hey, now university is over for the year, perhaps it's time to venture back onto that great time-sink called IRC :-)