RAW files with ristretto – (GtkPixbufLoader mimetype recognition bug)
In the release-notes for ristretto 0.3.5 last weekend, I mentioned the following:
Most problems with ristretto are actually caused by incorrect mime-type recognition
of the operating-system, identifying raw files (like canon’s CR2 format) as TIFF files.
This will result in an error from the tiff loader, these errors are now displayed in the UI,
making it possible to identify the source of the problem.
Since I could not understand why this happened, I started investigating the problem a bit further.
So, I executed the following commands on my system:
$ mimtype IMG_6635.CR2
IMG_6635.CR2: image/x-canon-cr2
$ file IMG_6635.CR2
IMG_6635.CR2: Canon CR2 raw image data, version 2.0
In my defense, I have seen it return image/tiff in the past, but clearly that was not the case right now. Both commands returned image/x-canon-cr2 just fine.
But opening the raw-files with ristretto (with the libopenraw-gnome backend installed), still gave me TIFF image-loading errors.
So something else must be causing the problems. Apparently, the OS determines the mimetype just fine, but something inside ristretto does not. Checking the source I discovered I was using gdk_pixbuf_loader_new(), which creates a pixbufloader that automagically determines the mimetype based on the stream of data you feed it.
So, I replaced that with a call to gdk_pixbuf_loader_new_with_mime_type (mime_type, NULL) and retrieved the mimetype using GFileInfo.
The commit that fixes this problem is 8dd741057f7b935d8e7c327017d850388ba77767, you can cherry-pick it and install libopenraw-gnome to support the rendering of raw files inside ristretto.
NOTE:
Libopenraw-gnome is still under active development and rendering-bugs can occur. – When the image looks bad, this is not a bug in ristretto, it is probably some terrible photography ;-), or maybe something is not yet fully implemented in libopenraw-gnome.
Using git-master this weekend did not result in any usable whitebalance or exposure compensation for me.
FOSDEM 2012
This year’s FOSDEM is over and I hope that most of us have by now recovered from an exhausting weekend that was first and foremost exciting and a lot of fun! With about 12 people, the Xfce group was—I think—larger than ever before. Add to that a fairly large number of my colleagues from Codethink, into which I bumped at the beer event and FOSDEM itself from time to time. Despite mostly staying with Xfce, I enjoyed knowing and meeting people all over the place.
Unfortunately, some of us—myself included—missed half of the beer event because our trains and planes arrived late. Snow in Brussels, a cold weekend ahead. When we arrived at the Delirium Café at around midnight, I was glad to see that all the others had already made friends again. Olivier, Stephan, Peter, Nick, Simon, Christoph, everyone was there, some of them sufficiently drunk, I imagine. Although to be be fair, you wouldn’t really notice. Most of us left not to long after that in order to be in a good condition in the morning. Having only caught up half on drinking, Christian, Mike and I ended up staying at the Delirium with a few Codethink colleagues including Sam, Luc and Javier—until they finally kicked us out at around four in the morning.
Food, taxi, 2 1/2 hours of sleep later and we were sitting in the hotel, enjoying a fantastic buffet breakfast. Admittedly, I couldn’t eat that morning, ending the night in the Delirium had lead to quite a strong hangover. After the majority of us had gathered in the hotel lobby, we squeezed ourselves into the 71 bus in two groups and finally arrived at FOSDEM. I do not remember the details of the day, but it was a great mix of talks (including my own one about Tumbler, which I felt was not very special, picture below), chatting and minor hacking (at least on my side; Nick made good progress with the settings editor in the meantime). During the day, Jean-Francois, Jens and Mark joined us and we (or most of us at least) ended the day having food in a Vietnamese restaurant close to the hotel and a beer in the hotel lobby.
Sunday was similar, except that I could finally enjoy the breakfast. Lovely. Unfortunately, we didn’t manage to get everyone together anymore, so our initially large group was now split up into smaller ones for the rest of Sunday. We still managed to have a few technical chats about Xfce that day and made a few decisions (see below). Regards talks, I mostly remember the Wayland Q&A session and a talk about social engineering in free software communities, Most of us left in the afternoon or evening. I met up with Luc, Sam, Javier and a bunch of other people to have food in a very nice restaurant. Got up at six in the morning, walked to the central station, took a plane home from the airport and went back to work in the afternoon. Unlike a few others I seem to have escaped the typical illnesses (cold, broken sleep cycles, general exhaustion) that events like FOSDEM always bring along.
Xfce-Related News — Fresh from FOSDEM
Wayland was big this year. I will spare you the details of how it works. Throughout the weekend, we had various discussions that involved Wayland. While it may take some load of Olivier by eventually making window managers obsolete, there is still a major problem with it: it does not support the XEmbed protocol, and therefor will break pluggable settings dialogs and panel plugins. We have sent mails to the wayland-devel list to find out how they feel about this. For now, I suppose this is all we can do.
Reorganization of the settings dialogs
One thing we decided on Sunday was to reorganize the settings dialogs so that the location of particular types of settings becomes more predictable. This applies to appearance and window manager themeing, and the application keyboard shortcuts and window manager keyboard shortcuts in particular. We will rearrange some of these tabs and merge them so that all related settings are in one place. We will also merge the window manager and window manager tweaks dialogs into one.
Release Schedule for Xfce 4.10
Despite a lack of completed features in Thunar (which are unlikely to get finished before 4.10), there are only a few things that really keep us from releasing Xfce 4.10. We have not decided on a release date, but if things go well, we should be able to roll the first pre-release one month from now, in early March. This would mean that a final release in May or June would be feasible.
Possibility of a hackfest
Meeting up with the team is always great fun. Unfortunately, FOSDEM is a busy event and only lasts two days. Like last year, we discussed the possibility of an Xfce hackfest in the future. I would love to see this idea becoming reality. If half a dozen of the relevant people can make it for at least a couple of days, this could greatly benefit the development of Xfce. Ideally, such a hackfest would span over at least 4-5 days, ideally including a weekend to make it easier to attend for people with jobs. Given a relatively small group, it might even be possible to hold an event like this at someone’s flat. This is definitely something that we will look into soon.
Like every year, FOSDEM 2012 was a great event. And like every year, a few more nicknames have turned into real faces that, unsurprisingly, belong to incredibly friendly human beings! I only wish that we had more time to discuss things face to face and do some serious work on Xfce together. In any case, this calls for another iteration next year. And with that, I shall end this wrap-up.
Xfce 4010 – (release-schedule and versioning)
Hi all,
There has been a lengthy discussion about the xfce version-number.
Is it OK to call the next version of xfce 4.10?
Some package maintainers have a problem with 4.10 being a later version then 4.8, since they see 4.10 as 4.1 with an extra decimal for precision.
Since it could cause upgrade-problems for several distributions, we should find a way to solve that problem.
Why not go for 5.0?
If the ‘.’ is a decimal-separator, a 0.2 upgrade from 4.8 would end up at Xfce 5.0. But we already discussed that . We are not going for 5.0, it would only create confusion, and people start thinking we pulled a ‘gnome-3’ on them. So that one was out pretty quick.
But, the confusion remains. Olivier Fourdan argued that we could think of it as a hexadecimal value, so 0x4.8 would be followed by 0x4.A. Though this sounds funny, and it solves our problem for a few versions (0x4.C, 0x4.E) but we’d end up with 0x5.0 eventually… resulting in the same problem.
And nobody uses the hexadecimal system for version-numbers, that is silly.
So? Now what?
It took a while before we realized, that the ‘.’ could be seen as a separator for thousands (it’s used like this in most of Europe). So you’d have Xfce 4,008 and Xfce 4,010. This not only solves our problem for the next version. At the rate of one release every 2 years we stay away from the whole 5.0 discussion for another 990 years. (Unless another reason appears to introduce a 41xx series of 50xx series of Xfce somewhere this century).
So, here’s the conclusion:
The next version of Xfce will be Xfce 4010 (four-thousand-and-ten)!
But that’s ridiculous!?
Well, it used to be. But these days anything is possible with version-numbers really, except for going backwards.
Which is precisely what we are avoiding here.
Just look at Mozilla Firefox (moving from 4 to 9 at the same pace as they went from 0.7 to 1.0) or Google chrome (what version-number are they using anyway?), or the linux-kernel, going from 2.6.0 to 2.6.39 with entire subsystems being rewritten from scratch, and then moving from 2.6.39 to 3.0 without any radical change whatsoever.
Really, moving from 4.8 to 4010 is not really that big a deal, if it serves the right purpose.
That’s nice and all, but when will we get it?
Ah, more good good news :)
We have a new schedule. (it is not published to the wiki yet though)
Essentially, the development-phase is pro-longed until the weekend after FOSDEM, giving us time to do some hacking there and get it in master the week after.
Dates | Phase/Deadline | Everyone’s Tasks | Release Team Tasks | Maintainer Tasks |
2011-Feb-13 – 2012-Feb-12 | Development Phase | Support Xfce | Supervise development, remind people of deadlines | Hacking |
2012-Feb-12 – 2012-April-01 | Release Phase | Wait patiently | Perform releases, remind people of deadlines | Perform releases of own components if desired |
Xfce 4010pre1 (Feature Freeze) | Prepare release announcements, release Xfce 4010pre1 | Make sure the latest development release is in good shape and uploaded | ||
2012-March-11 |
Xfce 4010pre2 (String Freeze) | Prepare release announcements, release Xfce 4010pre2 | Make sure that strings in the latest development release or in master are good | |
2012-March-25 |
Xfce 4010pre3 (Code Freeze) | Prepare release announcements, release Xfce 4010pre3, create ELS branches | Make sure the latest development release is in good shape, or that code is solid/finished in master | |
2012-April-01 |
Xfce 4010 (Final Release) | Celebrate | Prepare release announcements, release Xfce 4010, branch for stable release, merge ELS branches into master | Make sure to upload a new release of own components before this deadline |
We hope you are as happy as we are with the new release schedule.
Update: There was some confusion about the date notation, updated it to get rid of the month-numbers.
Update-2 [18-01-2012 13:37 CET]: For more background information about this decision, check this link
Documentation Wiki
Over the last years we’ve tried many techniques to make it easier to submit documentation for the Xfce packages. Unfortunately, whatever we’ve tried; hardly any documentation was contributed.
Complete documentation (or close to that) was still a goal for Xfce 4.10, so we’ve decided to drop the package manuals for the next stable release (now GIT master) and focus on a wiki-based setup. This means that the Help buttons in 4.10 will try to open your web browser and redirect you to the correct page on docs.xfce.org.
We understand a small group of people without Internet are affected by this change. However as the situation is right now, clicking the Help button is often not even possible and once the wiki is starting to grow, we’ll look into an xfce4-docs package that contains a snapshot of the wiki data.
We hope with this change the barrier to contribute manuals is low enough for contributors to help us with good documentation, so Xfce 4.10 will be the best documented release we’ve ever made (and that should fairly easy ;-).
Xfce git modules
I needed to update my scripts to checkout everything in the Xfce git repositories. I used to run something like ssh ls /var/git
on mocha (our old git server) to get the list of modules, but now I have this:
lynx -dump -listonly git.xfce.org \
| grep "git.xfce.org/[^?]" | grep -v "archive" \
| sed -e 's^.*http://git.xfce.org/^^' -e 's^/$^^'
Any better suggestions? This works very well for me, already.
Now, unfortunately, I have not found the time and energy to do something useful with all that fresh code. But it feels good to know it’s there if I do ;-)
Looking for new maintainers for some of my projects
I am looking for a new maintainer for some of the open source projects I started over the last couple of years. Due to taking a full-time position as a software engineer, I will have less spare time to hack in the near future than I had while being a student. I will continue contributing to Xfce but I would like to focus on core development (thunar, tumbler, garcon etc.). As a consequence, I am looking for people interested in maintaining the following projects:
- thunar-media-tags-plugin
- xfce4-verve-plugin
- xfce4-mixer
- xfce4-time-out-plugin
- jptemplate (see http://lunar-linux.org/~jannis/jptemplate/ for documentation)
Most of these are smaller projects but some of them (like thunar-media-tags-plugin and xfce4-mixer) have many users. xfce4-mixer is particularly interesting, I think. It’s code base is of medium size and it lacks integration with notification daemons, key bindings for muting and altering the volume of a selected channel. Also, the per-channel widgets could be arranged in better ways than they are right now. PulseAudio support has been requested several times but that is an entirely different story. xfce4-mixer is mainly intended as a mixer for GStreamer. A PulseAudio mixer would better be written from scratch. But if anyone is up for the task - why not!
If you are interested in maintaining any of the above (yes, you are free to rename jptemplate to something that does not carry my initials!), please let me know in a comment or send a mail to xfce4-dev@xfce.org!
(You will need knowledge of C, GLib and GTK+ for the Xfce projects and VIM script for jptemplate. But in particular panel plugins are really simple, so the code base should be easy to understand even for a GTK+ newbie who is willing to read API manuals.)
Joining Codethink
I already hinted at the end of my studies in earlier posts related to my thesis. After submitting that thesis I moved 400km south of Lübeck to enjoy a few quiet weeks, record music and work on Xfce. However, I only stayed there for two weeks before I was set to fly over to Manchester, UK. The reason: I will be joining Codethink in January!
Having spent the last three weeks in and around their office, the city of Manchester and one of its suburbs, I can confidently say that this was a great decision. Codethink is a social and diverse company with a strong background in open source, with bright people, and a nice overall atmosphere and attitude. We had plenty of enjoyable evenings, chats, not to forget the brilliant food. I managed to feel at home already, but sadly, I had to leave again yesterday.
Like many people in Codethink, Manchester appears to be a city that likes music, a place where almost everyone is either a die-hard music fan or even a musician. I found a room right in the hart of the northern quarter at 10 minutes walking distance to the office, surrounded by record shops, live music venues and pubs. Rehearsal spaces are expensive but nearby. I could list various additional reasons for why I’m really happy. This simply is a good move.
About three years ago I was about to cancel my studies and look for a job. In the end I decided to carry on. Last week my Diplom (the German equivalent of an MSc) certificate arrived. Despite many doubts throughout these years, I managed to graduate with honors. It’s funny that this grade will have no impact on anything and is only really useful for proving to myself that I can pull through if I really want to. But then again, I had a great and chilled time being a student. So in retrospective, I guess I only ever had doubts because I was impatient and eager to make a difference in what was supposed to be the “real world”.
Now, with Codethink, I can.
Learning from GNOME
I just read an interview with Federico Mena-Quintero, which is a good read in its entirety, but one thing struck me as being a very important change to how GNOME is being developed.
Federico says (emphasis mine): “The latest thing is that now things have to go through the design team first, and I don’t think that is a good thing; there should not be a central body of control that decides how things are done, because that simply doesn’t scale. And it also doesn’t teach people in how to do design properly. I really would like to move to a model where, instead of having a central body of people who can veto things in or out, we can have a shared understanding of what constitutes good design and implementation.”
This has been very important in my personal development as a programmer. I remember the vivid discussions about usability on the gnome lists with well-known names like Havoc Pennington. And they helped me enormously to form my own opinions on these matters.
From a (safe ;-) distance it seems like GNOME is missing a big opportunity to teach the world, oh alright, other free software developers about good design and thereby giving chances to new developers to learn from their peers. Specifically, it is not as easy as it once was for a casual observer to gain an understanding of the concepts and their implementation that are the basis for gnome development and that’s a real pity, I believe.
On MeeGo
Whatever MeeGo was, it never made it into the open source mainstream, which I consider to consist of projects actively worked on by volunteers and companies alike, and didn’t manage to become an project attractive enough for individual open source enthusiasts not driven by money to make substantial contributions.
There is enough room to speculate over the reasons why this is. My personal take is that MeeGo failed to be a successful open source project because the corporate commitment to the open source idea was not strong enough and expectations were too high right from the start.
Open source projects start with an idea and evolve into a proper product over time. Sometimes they are developed incrementally, sometimes it happens that big parts of them are replaced all at once. The idea behind an open source project may be huge but they all start off with baby steps. MeeGo, however, wasn’t supposed to. The idea behind MeeGo was big, and due to market pressure it was expected to become complete and successful quickly. It occurs to me that the idea was to sort of guarantee success by providing the project with professional, corporate governance.
I think everyone who started working on open source as a hobby knows that this is something a lot of hackers don’t are comfortable with. An open source project under corporate leadership may easily suffer from top-down decisions that give developers the feeling of working in a restrictive environment rather than a playful one. I’m not surprised by the fact that the only people I know ever contributed to MeeGo worked either for/with Intel or Nokia.
It isn’t the technologies, tools or frameworks that are reason for the failure of MeeGo. KDE and GNOME are large and successful projects based on Qt, GTK+, Clutter, D-Bus-based desktop middleware etc. What has lead to failure in my eyes—-the eyes of an outsider, opn source developer and potential user—-is that the dynamic nature of open source projects conflicted with corporate expectations and hopes for a quick success they needed so badly. Add to that the pressure on Nokia, the corporate culture clash of two global information technology companies and the fast pacing world of mobile devices and interfaces, and you have a pretty explosive mixture.
Personally, I won’t place my bets on Tizen. I can only imagine how frustrated and disappointed everyone who tried to get involved may be today, even those who contributed to MeeGo as part of their work for Intel, Nokia or one of the many smaller companies that make up the corporate part of the open source ecosystem. It is also frustrating for me as a developer aiming for a job in open source and desktop/mobile/UI technologies.
I guess the mobile open source platform we are all hoping for will be there some day. But it will only appear slowly, driven by the efforts of enthusiastic individuals with big ideas, realistic expectations and sound knowledge of the pace and dynamics with which open source projects grow and mature. This of course relies on open hardware and I don’t know enough about the manufacturing industry to predict the availability of open, hackable devices in the near future.
In the meantime, the best we can do as open source software developers is improve the base OS level and innovate in desktop/mobile/UI technologies by experimenting with new ideas and extending existing frameworks. I’ll help where I can.
Hiding backup files in Thunar
There was one feature in the new Thunar with GIO (since Xubuntu 11.04 Natty) that I didn’t like. It was stubbornly showing backup files (*~). I asked the Thunar developer Jannis Pohlmann today if there is a solution/workaround for that, and there definitely is!
Close Thunar, add the line MiscShowBackup=FALSE
at the end of your ~/.config/Thunar/thunarrc
and launch Thunar again and you’re not seeing the backup files anymore. What a relief. Thanks Jannis!
On a sidenote, I’ve finally started making decent, serious backups of my (Open Source) work. The rsync-based script works better than I could have ever imagined. Thanks go to Marko for that.