Le blog de Olivier Crête

You are in the archive for the Informatique



June 2024

RSS 2.0

Log in

Due to unintentional behavior breakage in the newest versions of GUPnP and GSSDP, the UPnP NAT traversal in all VoIP applications that use Farsight2 is currently broken. This includes Empathy, Pidgin, aMSN, etc. I advise distributors to just stay with the older GUPnP 0.16 (and GSSDP 0.10) releases until this is sorted out. For those who care, the details are on bugzilla.

Update: I’ve released GUPnP-IGD 0.2.1 that works around these problems.

Just like everyone else on Planet GNOME,
I'm also going to the Desktop summit

You are all cordially invited to my talk: Improving the quality of video calls on the Free Desktop. I will try to explain why Skype’s video calls look so much better than ours and what I’ve been doing to fix it, and how there is much more to do.

Now that WebRTC and RTCWeb are coming, it is more critical than ever that we can have good quality video calls in the GNOME platform so we can stay relevant.

I’d also like to thank my employer, Collabora, for once again sponsoring my trip. And don’t forget the Collabora party on Tuesday night!

A couple months ago, Facebook announced announced that their chat system would also be available through XMPP. So it is possible to just configure it like any other Jabber server on a N900. And then to merge Facebook contacts with other contacts and it the address book will store it as a field of type “X-JABBER”.  Since the PR1.2 version of Maemo5, Nokia has added a specific profile for Facebook to the N900 software. But instead of calling the address book field “X-JABBER”, they created a “X-FACEBOOK” field (since Facebook Chat is not XMPP in the backend, it can not talk to other Jabber servers). So if you remove your old Jabber account and re-add it as a Facebook account and use Marco’s contact merger to merge back the contacts. You’re still stuck with a bunch of extra “X-JABBER” fields in your contacts. So to clean them up, I wrote a really simple program to remove them. It is based on Marco’s jid-to-email program. You can get the source code or a precompiled binary. You can just put the binary on your N900 and run it from the Terminal as “~/MyDocs/remove-old-facebook” (if you put it in the N900’s documents root). Be warned that is is not a good example like Marco’s code, I stripped all error handling and it never frees anything. If you want a good example, look at Marco’s code.

About a month and a half ago, I had a smallish bike accident, I did not have a single scratch, but I managed to fall right on my N900 and crack the LCD. So I’ve used a Nexus One as a replacement until I managed to fix the N900. That gave me a chance to compare them.

You should also know that I am entirely biaised as I was paid to make the VVoIP calling on Maemo incredibly awesome. I have no relationship with  Google and they did not pay me to make their stuff awesome (so it is not awesome). The opinions stated here are mine and mine only. They are not approved by my employer Collabora, any of our clients or competitors, the Queen or anyone else than me.

I’m comparing both devices with the latest software version as delivered by their respective OTA update system. So it is Maemo 5 PR1.2 for the N900 and Android 2.1 (Eclair) for the Nexus One. I make no claim of fairness. This is not a guide to chose which phone to buy.


  • Extensions: The N900 browser supports (badly) a few Firefox extensions (like Adblock Plus or Greasemonkey). That said, they’re already quite useful. Maemo +1
  • Windows:  Maemo 5 also handles multiple windows as regular windows, while the Android browser has them hidden in a menu. I did not discover that menu until I had a “Too many windows open, can not open new window” pop up. Also, the way “popup windows” appear in Android is really annoying, especially the fact that they are hard (impossible?) to zoom. Maemo +1
  • Flash:  It’s not really usable (more like really unusable). Flash video playback is really slow (since all decoding is done in software). Steve is right, Flash is a disaster on mobile devices. Maemo -1
  • Text column width cheating and reflowing: The Android browser has a nice feature where it scales the width of text columns to the screen width to be nicely readable. It tends to break the layout of some sites, but it’s well worth it. Opera Mobile seems to do the same thing. But the Maemo browser doesn’t. Newer Firefox Mobile builds seem to also lack that. This means it is also unusable in vertical mode. Android +1
  • Scrolling performance: The Maemo browser uses tiles for when scrolling, so if you scroll too fast, it has to work real hard to render the next tile. It was much smoother on Android. That said, I heard the Mozilla people are trying to fix this in Fennec 2. Android +1
  • Rotation: The vertical mode of the Android browser just works better than the half-baked rotation support in Maemo 5.  And holding it in one hand is much easier if its vertical. Android +1

Browser totals:   Maemo 1- Android 3

Contacts & IM:

  • IM protocols: Android only supports Google Talk out of the box, while Maemo supports  Skype, SIP and XMPP (including Google Talk) right of out of the box. And it is easy to add 3rd party support for other protocols (MSN, Yahoo!, etc) and it integrates fully into the existing system. Maemo +2
  • SMS/IM integration: SMS and IM are entirely separate in Android, but they are the same app in Maemo. Maemo +1
  • Metacontacts: Both platforms have metacontacts. Sadly, they are both incomplete. Contacts in both platforms include the basics: name, nickname, phone, email. Maemo can also link contacts from all IM accounts together, while Android only does it for Google Talk. But Android applications can put their own info in the contacts, so you can link in Facebook and Twitter contacts easily. On Maemo, well you can do it with Hermes, but you still don’t get the phone number or email address from Facebook (blame them for it). Equal points
  • Synchronisation: Out of the box, Android only supports synchronization with Google’s servers. Maemo only supports SyncML over USB (not over http) or Mail for Exchange. No points.

Contacts & IM totals: Maemo 3 – Android 0


  • Ringtone: The Nexus One ringtones are just not loud enough. I’ve missed many calls because I just didn’t hear it. My colleague complained it wasn’t loud enough to wake him up making it useless as an alarm clock. That’s a pretty big fault for a phone. Nexus One -2
  • Voice quality: I did not do any objective testing, but I feel that despite the active noise cancellation of the Nexus One (with a second microphone), I can still hear calls better on the N900. N900 +1
  • VoIP:  Android only has Google Voice (only works in the US) built in. Skype is only available from select providers. And I could not get any of the 10 SIP apps in the Market to work with SipPhone.com (a Google service). So no VoIP on Android for me. On the other hand, the N900 has excellent VoIP support (I know its excellent, it uses Farsight2, my project!). Out of the box, it supports Skype, SIP as well as XMPP Jingle calls. That means Maemo support Google Talk compatible calls, but not Android. How ironic. Maemo +2
  • Video calls: There is no front-facing camera on the Nexus One. The N900 has awesome video calls, including GMail compatible calls (a mobile first)! As well as Skype compatible video calls (another mobile first). Maemo +1
  • Accepting calls: The “incoming call” screen on Android has slide buttons. On Maemo 5, it has push buttons. Combined that with the fact that is auto-unlocks the screen when it rings and with the resistive screen, it means that I sometimes accidentally hang up or answer in my pocket. Really annoying. Maemo -1

Calling totals: N900 3 (Maemo 2) – Nexus one -2


  • Both devices have email clients supporting IMAP. Android also has a separate application for GMail. Since I don’t use GMail, I did not try it seriously.
  • Combined inbox: Android has a nice feature where the inboxes of all account are shown at once. Android +1
  • Searching: It’s a funny thing. The Android mail application does not have any search feature. At least, Modest (the Maemo email client) has gained minimal searching in PR1.2. Maemo +0.5
  • Performance: The android mail app just feels faster and doesn’t get stuck waiting for God knows what all the time. Android +2

E-Mail totals:  Maemo 0.5 – Android 3


  • Overall: The Ovi Maps application for Maemo is a disaster, Google Maps just works on Android. Android +1 Maemo -1 (I’m giving a -1 because Ovi maps is so disappointing, they should have released the device without it)
  • Network access: That said, Ovi Maps has one nice things, you can download maps, while Google Maps is just pre-rendered tiles, which means it always requires Internet Access.  Maemo +1
  • Navigation: Google has free navigation (in select countries), Ovi Maps for Maemo does not have navigation. Android +1
  • Voice commands: Android has them (including search), Maemo does not. Android +1
  • Search: Google Maps has Google search.. Ovi Maps has some crappy search that fails half the time if you don’t spell the address exactly the way it expects it. Ovi Maps can not search for things that are not addresses (like a restaurant ou a gaz station). Android +2
  • Extras: Google Maps also does nice things like public transit. I wish they had bike routes in Canada. Android +1

Maps totals: Maemo 0 – Android 6

Camera & Photos:

  • Camera Hardware: Both devices have 5 mega pixel cameras and they seem to have more or less similar performance. That said, I did not do any serious comparison. Equal points
  • Photo browser: The Android Gallery has a bit more bling, but it is the only built-in app that I’ve seen crash on the Nexus One. But functionality-wise, they seem pretty similar. Equal points
  • Button: The N900 has a hardware camera button. On the Nexus One, it is an on screen button. Touching the on-screen button while holding the camera in the right direction is really hard. N900 +1

Camera & Photos total: N900 1 – Android 0


  • Size: The Nexus One is quite a bit thinner, the N900 is a pretty bulky device. Good thing I don’t like thigh pants. Nexus One +1
  • Keyboard: The N900 has one, the Nexus One doesn’t. I though it was a fatal flaw until I discovered Swype, which is really awesome… if you only write in one language. But I write in both French and English.. Sometimes I send one message in French and the next one in English.. Sometimes I mix languages in the same message. Swype only does one language at a time. That’s not a problem with the keyboard. So N900 +1
  • Screen resolution: The same. Equal points
  • Touch screen: The N900 has a resistive touch screen, the Nexus One has a capacitive screen. Everyone is saying that capacitive touchscreens are nicer… I’m unconvinced. Yes, you need more pressure on the N900.. But the Nexus One’s screen sometimes strangely fails to react. It is also much less precise. That said, resistive screens have the annoying habit of reacting to pockets (especially annoying when it rings). Equal points
  • Digital compass: The Nexus One has one, N900 doesn’t. Nexus One +0.5
  • Volume buttons: On Android, when not in the music app or in a call, the volume button control the ringer volume. That means it’s really easy to turn it even lower than it already is. This is especially annoying sine the Nexus One volume buttons are too easy to push. Nexus One -1
  • Included Flash memory: The N900 has 32 GB. The Nexus One has none. Both have a microSD slot. The Nexus One did come with a 4GB card. That’s just not enough, I have 7 GB just for music on my N900, and that replaced a full 30GB iPod. N900 +2
  • TV out: The N900 has TV-out, the Nexus One doesn’t. I though it was completely useless (its just analog low def). But it was really useful when I cracked the LCD. N900 +0.5
  • Bands: The Nexus One is available in both AT&T/Rogers/Bell/Telus (850/1900) and T-Mobile USA (900/1700) bands for 3G. The N900 is only sold for the T-Mobile USA band (900/1700). Which mean no 3G in Quebec until Videotron launches its network (and they are one year late already). Both phones support the European 2100 band. And they’re both quand-band for GSM/EDGE. Nexus One +1
  • FM transmitter/receiver: The N900 has a FM transmitter and a FM receiver. I’ve only used them briefly. N900 +0.5
  • Speakers: The build-in speaker of the Nexus One is terrible, the N900 has some of the best stereo speakers I’ve seen on this kind of device. N900 +1

Hardware totals: N900 5 – Nexus One 1.5

3rd Applications:

  • Availability: There are lots of apps on the Android store. There are TWO paid games on the Ovi store for the N900 as of today (when it is not down). That said, Maemo has a lot of ports of existing Open Source apps in Maemo Extras. That said, many of the apps in the Android Market are terrible…  Android +1
  • Application installer: The Android Market (which also acts as an app installer) just works. The Maemo 5 application installer is a complete disaster. It is user hostile and developer hostile. Maemo -1
  • Developer story: Nokia decided to scrap most of the Maemo 5 platform and review everything with a brand new toolkit. They’re completely unable to get a straight story about developer APIs. I think that is in part because they also want people to do Symbian apps. Nokia please, please, just forget about Symbian apps, just use J2ME like on S40. Google has provided a stable Java API.. But not a stable C/C++ API. Maemo -2
  • Python: A lot of the Maemo apps are in Python and therefore are memory hungry (on a memory starved device). Maemo -1

3rd Application totals: Maemo -4 – Android 1

User experience:

  • Maemo’s greatest weakness is the out of memory handling. There is only 256 megs of RAM and 768 megs of swap. That means that as soon as you do too many things, it starts swapping and the performance becomes terrible. This is made even worst by the fact that application startup is really slow, so many applications are in pre-started. Nokia should put a lot more memory in the next device and seriously fix the application startup time. Android has a nice thing where apps can serialize their content and be shut down when the system in under memory pressure. This leads to a much better impression of performance. Android +4
  • CPU speed: The Nexus One has a 1Ghz Qualcomm Snapdragon CPU, much faster than the 600Mhz TI OMAP 3430 of the N900. Nexus One +1
  • The real “multitasking” is much nicer in Maemo5, Android just fakes multitasking by having applications save their state and restart at the same point. That means you can not load two web pages at the same time or anything like that. Maemo +1
  • Both have multiple desktops with applets. Sadly, when I load my N900 desktops with applets, the system becomes sluggish. Maemo -0.5

User experience totals: Maemo 0.5 – Nexus One 6 (Android 4)

Geek experience:

  • Maemo is the ultimate mobile Geek OS. Having an x-term built-in is just amazing. Maemo +3
  • Maemo is a real Linux desktop-like operating system. To anyone who knows Linux, it just feels right. Android is the Linux kernel + Android. It was done in secret in a corner and Google has not made any serious attempt to join the great community. They re-wrote everything from scratch all the way to writing their own libc. Maemo +2
  • The choice language on Android is Java (beurk!). On Maemo is it C (or C++). Maemo +1

Geek experience totals: Maemo 6 – Android 0

Other stuff:

  • Media player: I didn’t really try the Android media player since there isn’t enough space on the SD card to hold any significant amount of music.
  • Notes: Android does not seem to come with a built-in notes apps. The Maemo Notes app is just pretty bad. They could have just shipped ConBoy instead…
  • PDF reader: the PDF reader on Maemo 5 is terrible, the Android one seemed kind of ok (but not great either)
  • RSS Reader: Does Android have one? I use the web-based Google Reader anyway

Total: N900 16 (Maemo 9) – Nexus One  17.5 (Android 17)

The Nexus One is really being dragged down by its its hardware. Especially when it comes to the bad speaker quality and the low ringer volume.. Did I mention how much it annoyed me ? That said, Android is pretty good. Better IM integration would be a  big plus. And some VoIP too.

Our Nokian friends have their work cut out for them. First, they need to fix the memory handling story on Meego. Running out of memory and swapping all the time is just annoying. An almost desktop-class operating system requires desktop-class amounts of RAM (that means more of it). Ovi Maps needs a lot of work, hopefully they can work a deal with Google to get decent search in there.  The browser could get its share of small screen friendliness and a performance upgrade. If they fix these few problems, Meego (as the future of Maemo is called) could very well be a success.

Were it not for its high geek factor (built-in X Terminal!), the N900 would have lost badly. That said, it’s still my favorite phone ever (did I mention I was horribly biaised?)

The PR1.2 update of the N900 firmware is now officially released. The big new feature is video calls. It is also the world’s first phone to offer Skype video calls as well as Google Talk compatible video calls!  And all of this uses Farsight2, the GStreamer based voice and video calling library. The whole Farsight2 team is very proud to have been able to participate in this world first. And just like all other calls on Maemo, video calls use the Telepathy framework. We obviously also support Jingle (aka Jabber aka XMPP) and SIP just like the N800 and N810. But we also add H.264 support.

As a side note, my colleague Sjoerd (who now has a  blog!) has made VP8 work with RTP. The Googlers are working hard to make some kind of standard. So hopefully, with Google’s clout, we’ll be able to have calls between a fully free platform and a hardware phone!

The part of the socket(7) man page about setsockopt(.., SOL_SOCKET, SO_PRIORITY…)  says:

“For ip(7), this also sets the  IP  type-of- service  (TOS)  field  for outgoing packets.”

I wanted to know how exactly it mapped the socket priority to the ToS field, so I looked in the kernel code for a while, and it turns out that in recent Linux 2.6 kernel, this is a lie. The ToS field is never set when the application selects the socket priority, only the internal priority of the packet is set. That said, the reverse is true, setting setsockopt(.., IPPROTO_IP, IP_TOS…)  sets both the ToS header field and the internal priority of the packet.

So the question here is: Who is wrong, is the kernel buggy? Or is the man page incorrect?

Also, dear lazyweb, is there any support for applications to set the DiffServ field? Or are they only settable through iptables?

I’m in Bangalore for foss.in. First, the country is awesome, the Indian food is amazing, etc, etc. The weather is also pretty nice this time of year, not too warm, not too cold, just right. Although it has been a bit rainy in the last three days.

But its not only the country that is nice, it is also an awesome conference, the organizers are really doing a great job. The venue is nice, the speakers are really well treated, etc. But more importantly, the level of the conference is also quite impressive. It is a great place to meet lots of good developers that we rarely meet in the “western” conferences. Free Software is really alive in India and it is great to meet the people here. After my Farsight 2 talk (slides), there were some really good questions, from people who had actually tried to use it. It’s the fourth (and last) time that I give this talk in front of different audiences, and I really got the best questions and the best interaction. The organizers wanted to make it into a truly developer oriented conference and they’ve really succeeded.

One of my non-geeky friends is currently trying Linux on his laptop. For some reason, he stopped it incorrectly and on the next reboot a fsck was forced and the fsck failed… he gets this:

*** An error occurred during the file system check.
*** Dropping you to a shell; the system will reboot
*** when you leave the shell.
Give root password for maintenance
(or type Control-D to continue):

Obviously, at this point, he had no idea what to do… He couldn’t boot into his system and he had no idea how to fix it.


And it seems all distributions are doing it, including the supposedly user friendly ones like Fedora and Ubuntu. All non-geeks will be completely lost at this point…

What should be done is: “Repairing your file system may cause errors!!! Do you want to: [F]orce Repair, get to a [S]hell or [R]eboot?” .. ideally in a nice curses front-end. And in the force repair case, just run “fsck -y”.

First, this is my first post on Planet Gnome, so I’ll introduce myself. I’m one of the developers of GnomeICU and Farsight. I work for Collabora, mostly on Farsight and related things. For those who don’t know, Farsight is the GStreamer based audio/video conferencing framework used in Telepathy. Its most prominent platform is currently Nokia’s Tablet, but its coming to a desktop near you soon.

For the last two months, I’ve been working on a complete redesign of Farsight, in an effort we call Farsight 2. The new generation RTP plugin is based on the excellent RTP implementation by Collabora’s own Wim Taymans. With it, we gain some exciting new features, most prominently A/V synchronization and multi-party conferencing. Also, the first generation wasn’t designed with video in mind and it wasn’t nice, but this time we’re trying to make it right. It’s now a GStreamer element that implements an interface, so it can easily be used in GStreamer based applications to give some of the integrated features Telepathy is designed for. I’m also trying to have nice unit tests, so we can try not to have the same kind of regressions we keep on fighting with Farsight 1. We also want to keep the API as simple as possible and well documented.

This week, I’ve finally reached an important milestone.. it works! So I had to make a screencast (sorry for cutting it a bit short at the end and no, its not slow, its the screencast thats 10fps):

Three way conferencing with Farsight

For those who want to try, you need the CVS HEAD of gst-plugins bad, and for the demo gui, a patch to gst-python. Then you can try my git tree. It’s all very new, so if it breaks, you keep the pieces. I’d also like to thank Philippe Khalaf and Youness Alaoui who worked a lot on the design and all the people who wrote the code that was carried over from previous versions of Farsight.

Update: Oops, the git repository was not fetchable by http, its now fixed… Updated again: now we have a gitview and git server, so I’ll let the link point there instead

Collabora has provided me with a new computer: a ThinkPad x60s. Its really nice, extremely light and the battery lasts for a very long time (enough to fly to Europe!). On the inside, it’s almost all Intel, which means that there are Free drivers for everything (now that iwlwifi has been released). Well actually, not everything, one small chip resists, the modem. But it seems to be supported by Linuxant’s hsfmodem (not that I would use it). Did I say that suspending, both to RAM and to disk works like a charm? Hot-plugging an external display also works great with Xrandr 1.2 (again, thanks Intel!). And everything I needed to make it work is right there, in our Portage tree.


This page is XHTML 1.0 Strict and CSS level 3