Planet Collabora

February 09, 2010

Youness Alaoui

New project!

Hi,

I’d just like to announce to everyone that I’ve decided to start working on a new project!

Seeing as I’ve loved the game Braid, I thought it was be nice to have an open source clone of the game! I should start working on that soon(-ish), and I hope I can actually see this project through…

Unfortunately, I don’t have much experience or interest in UI/OpenGL work, so I’ll start by designing and writing the low level classes that would allow a game to have the same time-based manipulation mechanic as Braid. And I hope that I’ll find someone willing to join the project and provide the UI/art part of the project!

I’ve contact Jonathan Blow, the author of Braid, and he said he’d be willing to help and provide me with the level file format  he used for the game, so we might be able to have this project working with the levels of the official game (assuming you bought the game and have its data files)!

That’s it, I’ll let you know more about how that goes! In the meantime, maybe someone (who played the game preferably) could come up with a nice name for the clone! :)

KaKaRoTo

by kakaroto at February 09, 2010 08:44 AM

Braid for linux!

Hello world!

I feel honored to say that I’ve recently been in contact with Jonathan Blow, the author of the awesome game Braid.

For those who don’ t know the game, it is an extremely challenging, fun, rewarding and original puzzle platformer which is so far the best game I’ve found on PSN.

I’ve asked Jonathan whether or not a Linux port of the game was in the works, since I’ve seen him hint at that in old posts on his blog (January 2007 and August 2008). I’m glad to say that he reported that a Linux port of the game was indeed being developed. To quote :

“[..] one is in progress but hasn’t quite been completed, but may eventually be released.”

He also said that the porting is about 95% complete, but I don’t know how much time it will take for the remaining 5% to be completed, so maybe it will soon be available, maybe not, but this is great hope for the Linux community!

I also spoke with him a little about Open Source, and I was pleasantly surprised to see him not completely reject the idea of open sourcing his game, but he said “it is not likely at this time”, so although it is not likely to happen, it is maybe another hint of hope for the future!

Finally, as my last bit of news. Just in case you were wondering, I also asked about possible DLC, to which he answered (no surprise) :

“There will probably not ever be DLC for Braid. The game is complete without it.”

That’s it, I hope these news are comforting to those who are just dying to play Braid on their Linux systems!

KaKaRoTo

by kakaroto at February 09, 2010 08:31 AM

Danielle Madeley

if I had a tee saying "Tech Goddess" I would wear it today

Steph's MacBook is affectionately known as the FrankenMac. It was built from the parts of 3 other MacBooks. The other night it started going into what seemed like swap death. Turned out to be catastrophic hard disk failure. Also, in what can only be described as a massive oversight, her laptop was not being Time Machined (whoops).

Anyway, after trying and failing to read the disk back using targeted disk mode plus dd_rescue on another Mac, I ended up swapping the disk into my Thinkpad last night and booting an Ubuntu LiveCD, ran dd_rescue and copied the hard disk image to an external hard drive. The filesystem is a little corrupted, and OSX can't read it... but Linux can! [Gotta say, this surprised me.]

I probably could have just booted the Mac itself with a LiveCD, but after targeted disk mode didn't work, I was worried it might be a logic board failure (let's just say Apple and I have a jaded history regarding logic boards). Also, I forgot for a bit that Macs can run Linux.

Since it did just seem to be a bad disk, I went and bought a new hard disk today, and have just successfully gotten the machine reinstalled and running again. The FrankenMac lives again!

So in summary, I am secretly brilliant, and Steph now has a 500GB USB harddisk to use with Time Machine.

P.S. something I forgot. This is for people who write articles for online Apple magazines: just because something is an Apple filesystem, they are still inodes, not iNodes.

P.P.S. I had to laugh, but I also forgot to give kudos to gnome-disk-utility which popped up a dialog during my dd_rescue, something like "One of your hard disks may be failing". Let's just say OS X loses here, being an OS that can't tell the difference between disk failure and filesystem failure.

February 09, 2010 03:30 AM

February 08, 2010

Frederic Plourde

Electrolysis revealed (part 1/5)


I must admit that people around me are starting to show an increasing interest in multi-process Firefox and so, I’ve decided to further document the electrolysis project over a series of articles. My intention is to write 5 articles in the upcoming months and explain in details how the electrolysis project is going to make Firefox (and Firefox Mobile a.k.a Fennec) multi-process.

The electrolysis project ?

Electrolysis is the working name of a Mozilla project which goal is to re-arch good old single-process Firefox into a multi-process one. The idea’s been around for some time now, all the more so since competitors like Google and Microsoft have released multi-process versions of their browsers!  Currently, there is going to be three types of concurrent processes :

  • The main browser process (called the “chrome process”)
  • Plugins processes (called “plugin processes”)
  • Web content and script processes (called “content processes”)

And why are we moving toward multi-process browsers ? Because there are several benefits associated with it :

Security

Generally, plugins are a potential threat to browsers integrity. In the single-process case, they can load themselves into the main address space and exploit weak entry points by, say, calling functions with forged string arguments. With multi-process electrolysis, though, each plugin gets loaded into its own process (with its own address space) and is considered “untrusted” process. Those “plugin processes” have to communicate with the main browser process through IPDL, an inter-process/thread communication protocol language developed by Mozilla. Thus, most of exploit/attack attempts from plugins are more easily caugth. When caugth (Or in fact, when any IPDL protocol error is detected), we just shutdown the plugin process.

Regular web content and malicious scripts may just as well do harm to the system. Thus, each tab you open in the browser is going to load and run its web content in separate “content processes”, also considered “untrusted”, thus leading to all the above-mentioned security advantages.

But IPDL is not the only security feature that’s added to electrolysis. In fact, multiprocess Firefox will also implement sandboxing to keep untrusted processes from accessing some system resources/features.

Performance:

Since we’re seeing more and more multi-processor/multi-cores CPU coming to the market nowadays, it is very likely that this chrome/content/plugin process separation will greatly increase general performance. In fact, multi-process software are well-suited for multi-CPU/multi-cores systems and therefore, each process can be separately run on a single CPU.

Stability:

Formerly, with single-process Firefox, if some web content happened to crash, the whole Firefox process would crash. This will not be the case any more with multi-process Firefox. Because every web content/plugin will run in its own process and address space, crashes caused by some scripts/plugins/content on some web site will only affect the associated browser tabs, thus letting the user browse other web sites normally.  This is an important breakthrough for increased Firefox stability and, because the “chrome” process (the main Firefox “default” process) is self-contained and well-tested, the rate of main process crashes should drop near 0.

UI responsiveness

UI responsiveness is an important aspect of every user’s browsing experience, especially on mobile devices. UI responsiveness could be simply defined as the time elapsed between, say, a click from the user and the associated visual feedback from the UI. In the browser world, UI responsiveness is especially important when panning the content area around. The user wants to feel he’s really manipulating the content in realtime. In Firefox, the main “chrome” process is responsible of all the UI stuff. So, having all the UI-related management isolated into a single trusted process will surely increase the browser’s responsiveness.

by fredinfinite23 at February 08, 2010 10:48 PM

Jeremy Whiting

The state of free accessibility

Hello all. As some of you may have read at osswatch, or in Jeanie's open letter to Oracle, or even from mark doffman of codethink (or experienced yourself in some cases) the state of free accessibility technology is somewhat lacking as of late. I've spent some time investigating the various players, testing solutions, discovering what's out there, etc. and would like to give an account of how things are from my perspective as a KDE developer and as one who would like to see desktop accessibility on Linux and our other platforms flourish.

First maybe an introduction of the key pieces of this puzzle would help.

The first piece of the puzzle from a KDE developer's perspective is Qt's Accessibility classes here. As part of QtGui module most (maybe all) Qt widgets are accessible as far as they can be. They all provide description, state, role, and actions in Qt's way that allows them to be "seen" via accessibility on Windows, should allow them to be "seen" on linux/unix via at-spi2 (will discuss this piece a bit later) and allows them to be "seen" with carbon builds on Mac also (accessibility for cocoa is a feature request that has not been scheduled at the moment). So as far as gui developers are concerned, as long as existing Qt gui widgets (or derivatives) are used, we should be in good shape. Unfortunately, the next piece falls a bit short.

The next piece of the puzzle is the qt-atspi2 bridge. This is in the works and can be found here. This takes the form of a qt plugin backend for qaccessible. It bridges the gap between qaccessible classes and at-spi2 dbus interface. Though Mark Doffman at codethink has done amazing work here. The latest version is not quite ready to work with at-spi2 because of recent changes in at-spi2 itself.

The final piece of the puzzle for kde/Qt apps is at-spi2 itself. This has been developed quite a bit by various members of the gnome-accessibility community. I know Mark Doffman spent some time optimizing some things and fixing issues in there. Gnome is going to be switching from corba to this new dbus-based at-spi2 for gnome 3.0 (and possibly sooner, depending), so desktop accessibility will at last be unified on linux platforms. Unfortunately for Qt apps, the api recently changed quite a bit in january of this year, so the qt-atspi2 bridge needs to be updated to work with these changes. I have a description from Mark of what needs doing, but need to wrap my head around it before being able to help with the effort here, come join irc.gnome.org #a11y if you'd like to lend a hand. This really probably needs to become a community effort in the long run.

As can be seen above there is lots to do to make kde accessible, lots to do to make linux desktop accessible and lots to do to make sure everything is in place for everything to work nicely. So... come join the effort! join #kde-accessibility (I was often alone in there until recently Luke Yelavich of speech-dispatcher fame joined). join irc.gnome.org #a11y. get on some mailinglists, come to akademy (I hope to have a talk there, we'll see).

by JPWhiting (noreply@blogger.com) at February 08, 2010 04:18 PM

Youness Alaoui

Adding reliability to libnice

Hey all,

First news I’d like to share is about libnice!

I’ve been working lately on adding reliability to libnice. This means that you could be using libnice as a reliable socket.. This is accomplished using some form of TCP over UDP, which is compatible with google’s libjingle implementation.

The API doesn’t change much, you only need to call nice_agent_new_reliable, and there’s a new signal ‘reliable-transport-writable’ in case you fill in the internal buffer and nice_agent_send starts returning -1. That’s all!

I know a lot of people were waiting for a reliable transport with libnice. I’ve discussed with many people during GCDS and most of them said that they’d like to see some kind of TCP over UDP in libnice, so I’m happy to say that I finally got around to doing it.

I also decided to make this TCPoUDP algo into its own GObject and make it available through libnice, which means that you could use the TCPoUDP implementation directly yourself, outside of libnice, in your own applications, if you ever wanted to!

Expect this new exciting feature to become available to you in the next release of libnice!

KaKaRoTo

by kakaroto at February 08, 2010 06:45 AM

New blog!

Hi all,

Welcome to my new blog!

This is my first blog.. I usually hate blogs, but I thought it would be nice to start sharing some information about what I do.. not what I ate today, but more like, what I’m working on lately…

I just hope I won’t forget about it.. so hopefully, I’ll keep it up to date with  the latest developments on the projects I work on. Mainly, you’ll be seeing stuff about aMSN, Zeitgeist/Teamgeist, Libnice, Farsight and Telepathy!

Click that RSS link now!

KaKaRoTo

by kakaroto at February 08, 2010 06:30 AM

Eitan Isaacson

GNOME accessibility, don’t take it for granted

I have been on the road for the last two weeks. Headed back to Seattle tomorrow after a great FOSDEM in Brussels.

While on the road I have heard all sorts of news regarding GNOME accessibility, none of it good. I am angry, I feel like blaming somebody or something, but I am not sure what. Right now I am directing my frustration towards academics who still have funding to continue various assistive technology research that will probably never see the light of day as a usable application while the real bread and butter of an accessible platform is being taken away. It’s reflexive, I know it. Maybe later I will have a clearer picture of how we move forward.

Until then, here are some notes from Joanie and Mike.

While my initial reaction was what a damper this is on our first a11y hackfest, I really hope that it will be an opportunity to regroup, have some good discussions, interact with the wider a11y community, and have some business interactions. So please come to San Diego, you know who you are!

by Eitan at February 08, 2010 12:12 AM

February 07, 2010

Ian Monroe

A Git Workflow

It's been a while since I blogged last. I blame microblogging. So just to introduce myself again, I'm Ian Monroe and I'm an Amarok developer. I live in Iowa, USA. For about a year and a quarter I've been working for Collabora. I believe the rate of hired Qt developers has been growing exponentially at Collabora year-to-year since 07, so it won't be long until we all work for them. ;)

You'll find tons of sample Git workflows in Git docs all over the Internet. We've been using Git in Amarok since July and I've been using it everyday at my work since January so now I have my own Git workflow to add. It assumes you know the basics of Git already and that the project you work on is actively developed by others at the same time.

But first a note on why my commands are longer...

Keep it Explicit

One thing that much of the documentation for Git does is make things 'simple' by using various command shorthands. From helping fellow Amarok devs get used to Git and just from my own experience I've decided that in the longterm using commands that combine several tasks or use default options are confusing. Most of us type at about 50 words per minute causally, there's really no reason to skimp.

An example of this is to use git push origin master:master instead of git push. That tells you exactly where your commit is headed: to the default remote named origin. The master:master says you are pushing from the local branch master to the remote branch named master. I like being explicit with branch names since getting mixed up which one you have checked out is a mistake I've made before.

Importantly it keeps you in control and aware of what you're doing.

A Workflow

So you notice it's time to go make dinner, instead of just leaving the code uncommitted I say its a good idea to go ahead and do a git commit -a before you leave. Writing the commit log is helpful for when you sit back down later. Remember you can always git commit --amend and add to your last commit before pushing.

Okay so next morning, back to hacking. Time to update. It is important to often update to avoid conflicts.git remote updateThis command refreshes all the remote branches. It doesn't touch your checkout. Both 'pull' and 'rebase' let you interact with remote branches directly, but I like to break it up. So now bring in the latest changes to your checkout:git rebase origin/masterThis is mostly why I like to leave all changes committed before I leave, because then the rebase works without you having to remember to git stash or commit when you're updating in the morning before having had any tea.

The advantage of rebase over doing a merge/pull is that it changes the commits you haven't pushed yet by making them patches on top of the latest code. It gives those commits a 'new base.' It's actually how Subversion works all the time, if that makes it easier to understand. This leads to easier to understand linear history, in the unlikely event everyone else in your project also uses rebase.

Okay now you've done more hacking and are ready to push. Repeat the above steps to make sure your code is still up-to-date. If you try to push when its not, Git will notoriously tell you that you are trying to do a non-fast-forward. It sounds scary, but 90% of the time it means you just need to update.git status
git commit -a #or git commit -a --amend if you want to add to a current commit
git remote update
git rebase origin/master
#maybe double check it still compiles after updating
git push origin master:master

Obviously there are other ways to use Git, but this is mine. I hope it has been helpful.

by eean at February 07, 2010 11:37 PM

February 06, 2010

Travis Reitter

LCA 2010 - Day 3

Day 1 | Day 2

Andrew Tridgell - FOSS and Patents

This informative talk went into a bit of detail on the current situation with (software) patents and some best practices for open source projects who want to avoid litigation. First, if you do get contacted by a company who claims your project violates one of their patents, contact public defenders, such as the Software Freedom Law Center or Electronic Frontier Foundation. In general, it's useful to know how to read patents, such as reading the abstract (but not stopping there, since they can often be misleading), then skipping ahead to the individual claims (which are the core of the patent), and then referring back to the diagrams, definitions, etc. as necessary.

And important point is that the "prior art" defense that so many people like to cite is actually very hard to win. This requires that the prior art covers every single claim in the patent. Instead, a "non-infringement" defense only requires that your work not (exactly) match every independent claim in the patent. There tend to be far more dependent claims than independent claims, so this defense tends to be easier to win.

An interesting point Andrew brought up was that he doesn't think it's to our advantage to avoid reading patents. His point is that even single damages (in the case that you unknowingly infringe a patent) is enough to end an open source project, so if you are forced to pay triple damages (in case you are aware of the patent), that doesn't change the end result. I unfortunately didn't have time to ask him this: wouldn't it matter to the author themselves whether they have to pay $LARGE_SUM_OF_MONEY or 3*$LARGE_SUM_OF_MONEY out of their own pocket? In either case, it's an ugly situation that you can be punished for being more knowledgeable.

Finally, Andrew suggested this strategy for open source projects to make themselves worse targets for patent suits (which is really all that matters): find and widely publicize work-arounds to patents. Closed-source companies are unlikely to do so, since a work-around could be a business advantage over another competitor who might otherwise be forced to license the patent. That way, we'll appear (and effectively be) a lot more work for patent owners to troll. That way, we can build up a reputation for not being worth the hassle. A great thing to aspire to.

20100123_007.jpg

Paul Mackerras -- Perf Events (in the kernel)

A replacement for perf counters, perf events provide kernel probes and simple API to perform fine-grained performance benchmarking on a Linux system. Whenever possible, perf events use hardware to get the most-precise data possible. There's a reasonable software-only fallback based on the high-resolution system clock (which most systems support at this point).

The API is essentially just one system call (which returns a file descriptor) and specific content behavior from that virtual file. Everything else is read(), close(), etc.

Events can be per task, per CPU, and, recently added, per-task-per-CPU. Per-task tracking can be recursive (forked processes get a copy of the parent counter struct and its final values are added to the parent upon exiting or explicitly synchronizing).

Perf events can trace cache (including TLB) activity, page faults, context switches, CPU migrations, and data alignment and instruction emulation traps.

Useful benchmarking always starts with good tools, and it sounds like we're finally getting a great tool with perf events!

Rusty Russell -- FOSS Fun with a Wiimote

Rusty detailed his geeky plans for making sure his daughter grows up to be a geek. These mainly involve writing some software to (ideally) translate her hand movements to actions on their TV. The idea was to help her establish causality at an early age, I think.

Anyway, I can't really do it justice in writing. You'll have to wait until the video is posted to see for yourself.

20100118_107.jpg

Carl Worth -- Making the GPU do its job

After giving a brief history of computer graphics an GPU development, Carl explained how hardware graphics support has sort of oscillated between discrete and integrated (into the CPU) hardware. (I wasn't aware that we'd already made the integrated → discrete → integrated cycle once before our current (in some contexts) migration back to integrated graphics).

The main problem with graphics in Linux right now is that we often have bad performance (which also means bad power consumption) and we need two drivers per video card (family, at least) -- one for 2D and one for 3D.

In order to figure out our bottlenecks, Carl created cairo-trace to measure the actual performance. This nifty program records the timing of cairo API calls for any program running under it. These traces can be played back through cairo at any time (at maximum speed), to continually improve performance for real-world uses of Cairo. I'm not sure if it's already in place, but these could easily be added to the (from what I hear, very good) automated cairo test suite, to avoid releasing regressions. If only more open source projects took testing and performance this seriously!

As it turns out, the current performance in most cases was actually better in pure software than in cairo-xlib (the latest stable backend for cairo).

An experimental GPU-accelerated backend (cairo-drm), in which Cairo bypasses X and uses GEM to render directly in the kernel, improves performance dramatically (10x speedup for Firefox). But the caveat is that it requires yet another driver per video card (bringing us to 3 total, for those of you keeping track at home).

Another approach, cairo-gl, which has Cairo bypass X to render to MESA, requires only 2 drivers total and should eventually have performance closer to that of cairo-drm. But for the moment, its performance is much worse than cairo-xlib.

Robert O'Callahan -- Open video on the web

Video on the web right now has two major players: Flash and Silverlight. (Maybe I just took ambiguous notes, but it's obvious that Silverlight is nowhere near Flash in terms of marketshare).

Beyond the obvious problem of software freedom, Flash is notoriously unstable (apparently a huge percentage of crashes of OS X are directly Flash's fault). Mozilla has decided that it's time to do something to push open media formats, to ensure this important (and growing) chunk of the Web retains the openness that has made the rest of it so popular and useful.

Some questions about the open formats:
  • Should we ignore patents?
  • This is only feasible while open formats are irrelevant, which isn't a great strategy.
  • Wait for the patents to expire?
  • They'll just be replaced with the next closed format.
  • Just pay the licensing fees?
  • Using a codec means you need to license it for your market size and per viewing (according to MPEGLA's fee structure), which is impossible for most websites serving content and for Mozilla to pay for distributing Firefox.

Another issue: video is not just about YouTube (passive watching). Flash adds interactivity (related videos, captioning, relevant ads, etc.), so we'll need an open counterpart to this as well.

Mozilla's solution for open video is Ogg Theora, which has had nice advances lately. GStreamer developer David Schleef got decent performance on OMAP3's DSP (in the N900 and other embedded devices) for Theora. The Ogg Index project adds indexing to the Ogg (container format?) to fix stream seeking over the web (which is frequently unusable without an index).

Mozilla has been shipping Theora support in Firefox 3.5+, since it doesn't want to pay, can't pay, and shouldn't pay for licensing codecs. If suddenly software patents were invalid, it'd be fine to just standardize on h.264, but that probably won't happen.

A big part of the chicken-and-egg push for open formats requires working with content providers and distribution networks. So Mozilla has gotten Dailymotion, the Internet Archive, and other websites to support Ogg Vorbis and Theora.

The other half is getting the browser to support the formats. Firefox 3.5+ can handle a Theora <video> tag; Chrome ships Theora (and H.264) support; Opera will ship Theora only. In FireFox 3.6, we'll get fullscreen Theora. Also in the pipeline is GPU-accelerated playback and Mobile/Maemo optimizations.

Partial successes in this push to open video include Vimeo and YouTube planning to support HTML 5's <video> tag on their sites (though they'll only be using the non-free H.264 codec).

So open media formats are slowly advancing on the web. We're basically at the point where most web standards are friendly to free software; if Gecko and (or) WebKit can't implement it, people don't propose it as a standard.

20100121_003.jpg

February 06, 2010 09:16 PM

Will Thompson

Foschart: a FOSDEM schedule app for the N900

Hello internet! I am at FOSDEM 2010 in Brussels. I tried the fosdem-maemo schedule application for my Nokia N900, and decided to write an alternative app which is easier to use with my fingers, and looks more like a Maemo application.

screenshot of foschart

The result is foschart. It's just something I knocked together in a few hours yesterday, but it's pretty usable already. It supports showing talks grouped by track, by room, and just in chronological order, and a list of favourites. It's all happily kinetic-scrollable, etc., and is very snappy once it's started.

There's no proper release or package yet; if you want to package it up properly, please do! But for now, apt-get install python-hildon, then copy foschart.py and schedule.xml to /opt/foschart, and foschart.desktop to /usr/share/applications/hildon. Then it should show up in your application list, and away you go. As ever, patches welcome. Enjoy!

Update:

The illustrious Jonny Lamb has made a package!

February 06, 2010 03:51 PM

February 04, 2010

Guillaume Desmottes

FOSDEM

This year again I'll be at FOSDEM this week-end[1]. I should be around the GNOME stand/devroom and will, of course, attend the beer event on Saturday night.

Don't hesitate to come and say hi if you want to discuss about Telepathy, Empathy, Moovida or about your favorite Belgian beer.

For those who are lucky enough to own a N900 don't forget to download the FOSDEM 2010 Maemo application. The UI is pretty shit but the features are quite nice and it allows you to easily build your schedule for the week-end. If you are more an Android, iPhone or Palm person the app is also available for those plateforms.

See you there!

Notes

[1] assuming I'm not delayed on my way back from vacation this night

by Guillaume Desmottes at February 04, 2010 12:28 PM

Jeremy Whiting

Kttsd 0.5.0

Ktts is finally getting a version bump since 4.0. What can you expect in this release (that will come out with KDE SC 4.4 as part of kde-accessibility)? Well, a lot of things have changed, but more is still a work in progress. The most significant change is that ktts now talks directly to speech-dispatcher, which is a daemon that handles all speech from kde, gnome, console, etc. Speech-dispatcher itself supports many synthesizers like espeak, festival and so on. The plan was to make ktts expose all of the capabilities of speech-dispatcher, but it didn't quite get to that point yet.

The first new thing you should note is that if speech-dispatcher is set up, ktts doesn't need any voices configured at all. speech-dispatcher uses whichever synthesizer it can find and plays a dummy wav file if it can't find any. (The talkers tab in kttsmgr doesn't really affect anything inside speech-dispatcher yet anyway...) You can play with the different voices from the jobs tab though, setting different pitch, volume and speed, hitting apply, then clicking speak clipboard contents (I'll add a test button for 4.5, or possibly 4.4.1 if the translators let me).

One thing that didn't make it in to this release was the gui for setting up speech-dispatcher. It has a command-line configuration tool called spd-conf which works fine. But I would like to get a gui for it in the next release if time permits.

I'd also like to join kttsd and kttsmgr into one process/app, kttsd doesn't do job management anymore because speech-dispatcher does all that now (yes I know the jobs tab will be renamed at some point, since it doesn't deal with jobs at all). So joining kttsmgr and kttsd makes sense I believe. Alternatively making speech-dispatcher have its own dbus access would remove the need for kttsd completely, kttsmgr could then just be a gui for configuring and controlling speech-dispatcher itself. We'll see which direction things go as this progresses.

Anyway, junt wanted to give a short update. Enjoy the wonder that KDE SC 4.4 will bring =)

by JPWhiting (noreply@blogger.com) at February 04, 2010 03:49 AM

February 03, 2010

Marco Barisione

jid-to-email

During the Christmas holidays I managed to find some time to write a couple of small programs related to the address book on the N900; they are nothing too fancy (no UI, no proper packaging, not the best code quality, etc.) as I wrote them for my personal use, but I still think it could be useful to share them with other people.

The one I’m talking about today is a simple command-line utility that adds an email address to your contacts based on the Jabber ID (or on the ID of other protocols). This is very useful to me as in Collabora we all have a roster automatically filled with the other Collaborans, this way I can automatically have their email addresses in my address book.

This cannot be done automatically for all the contact as, usually, it’s not true that a Jabber ID is also a valid email address (for instance it’s not true for jabber.org users), but it’s true at least for the GMail and Collabora servers.

If you want to try jid-to-email get the already compiled arm executable or the source code. Remember to take a backup before trying it, I don’t want to be blamed if something goes horribly wrong ;).

The program accepts two arguments: the vcard field for the IM protocol and a regular expression. For instance, if you cd to the directory where the program is and do “./jid-to-email X-JABBER @collabora.co.uk”, an email address will be added to all the contacts that have a Jabber ID containing “@collabora.co.uk”. Similarly “./jid-to-email X-JABBER ‘@g(oogle)?mail\.com’” will add an email address to all the contacts with a Jabber ID containing “@gmail.com” or “@googlemail.com”. You could also try using “X-MSN” to do the same thing for contacts that use their GMail address as MSN ID.

Please, let me know if you know any other server where the Jabber ID is always a valid email address.

By the way, this week-end I’m going to Brussels for FOSDEM: hope to meet a lot of GNOME people there!

I'm going to FOSDEM, the Free and Open Source Software Developers' European Meeting

by barisione at February 03, 2010 08:37 AM

February 02, 2010

Christian Schaller

London and Scandinavian food

Went down to London yesterday for a meeting and I used the opportunity to visit the scandinavian deli and grocery store there. Turned out to be pretty nice, with a decent selection of food. I stocked up on Swedish liquorice, Norwegian lompe, Danish red hotdog sausages and a Norwegian brown cheese.

In other words I am well set for another week of scaring Abigail with Scandinavian food :)

by uraeus at February 02, 2010 11:06 AM

January 28, 2010

Danielle Madeley

Monique Brumby and Rosie Burgess Trio

[info]socraticomatic was enthusing recently about Rosie Burgess Trio, so we went to see them for their single/video clip launch at the East Brunswick Club.

First up, they were supported by Monique Brumby, which is a gig I'd go and see by itself. Melbourne is so crazy, where you can have people who've won like awards and stuff as support acts.

Seriously though, Rosie Burgess Trio were fantastic. I had so much fun. I laughed so much from their banter, I wanted to cry. If I were a music magazine, I'd probably describe them as dynamic. They were lots of fun. Also, any band with songs about veganism is awesome. <3 <3 <3 (I think [info]socraticomatic's in love too).

Came away with 4 CDs (the new single was a freebie + one Monique Brumby + two Rosie Burgess). Both have new albums coming out too.

Finally, if you're in Sydney, the Rosie Burgess Trio is playing in Glebe next week. You should go.

January 28, 2010 01:21 PM

January 26, 2010

Eitan Isaacson

On The Road

Sitting in JFK’s Jet Blue terminal, I could run out and catch a train to my grandparents, but it just seems so darn early, and I am not sure if I want to brave NYC just yet.

Here is a silly badge:
I'm going to FOSDEM, the Free and Open Source Software Developers' European Meeting

If you asked me a month ago, I would have said that the next time I get to geek out with European GNOME folks would be in the summer. But it’s not, it’s next week! I only have a vague picture of who will be there outside of the Collabora scene, but I am looking forward to seeing folks. I also really wanted to go to the usability hackfest later in February, but there is just that many times you could cross the Atlantic in a month (once).

The accessibility hackfest is coming up! I’m excited. I hope to have a few moments of clarity when this event is over. It will be useful to have a list of tasks and dates if we want to pull this off again. A special thanks to Stormy, the GNOME board and travel committee for their help in putting this together. I usually spare my pretty little head from logistics and organizing, but it’s good to take on such a project once in a while.

by Eitan at January 26, 2010 12:25 PM

Christian Schaller

Norwegian Fenalår

I always try to bring some Norwegian food back with me when I have visited Norway. This year I brought a leg of Fenalår which is a leg of cured mutton. So it is just like the cured ham people eat all over Europe, except from being made from sheep. Anyway I brought it to the Collabora office today to let people have a taste and Marco snapped this picture of me holding the leg.

Of course not all scandinavian food is equally appreciated by our southern neighbours.

by uraeus at January 26, 2010 11:31 AM

January 25, 2010

Andre Moreira Magalhaes

Introducing TelepathyQt4

So this is the beginning of a series of blog posts about TelepathyQt4. I am going to start with a basic introduction: what it is and the ideas behind it.

These blog posts are intended to explain what TelepathyQt4 is, and how to use it to write IM/VoIP/Communication applications. They are not meant to explain what Telepathy is, or what it's intended for. Please check the wiki page for a quick introduction to Telepathy.

- First: what is TelepathyQt4?

TelepathyQt4 is a convenience library, written in Qt4, for those who want to write applications that use the Telepathy framework.
The idea is to have a high-level, but complete, API that hides most underlying D-Bus calls, making it easy to communicate with other applications using Telepathy.

- Why TelepathyQt4?

Up until we started writing it, there were only convenience libraries for Glib and Python, so Qt4 developers were left behind. Those who wanted to use Telepathy had to stick to those libraries or use D-Bus directly. This was limiting the usage of Telepathy across Qt/KDE applications.

- What kind of application can make use of TelepathyQt4?

Right now we have a Kopete branch (implemented as a Kopete protocol plugin) that makes use of TelepathyQt4, and an experimental krdc/krfb branch that enables sharing the desktop among IM contacts.
Other applications that can use TelepathyQt4 include:
* instant messaging programs
* email applications that want to show contacts' presence
* word processors that want to let users collaborate across the internet

- Components:

TelepathyQt4 is divided into 2 parts: the classes that are auto-generated from the spec, and the high-level API that uses the auto-generated classes internally, exposing an easy-to-use API for applications.
We tried to make it as extensible as possible, so adding support for new D-Bus interfaces is quite easy.

We just hit the first milestone with the 0.2 version, which will be API/ABI compatible across the 0.2.x release cycle.
The library is maintained by Collabora and any help is appreciated.

If you have interest in using/collaborating with TelepathyQt4, you can join #telepathy@freenode or #kde-telepathy@freenode for more KDE-specific questions or check the mailing list.
You can also poke me (andrunko - current maintainer) or Simon (smcv - official reviewer).

Development is done in the git repository found here and releases can be found here.

In the next blog posts I will be talking about how to use it, so stay tuned.

by Andre Moreira Magalhaes (andrunko) (noreply@blogger.com) at January 25, 2010 07:03 PM

Tollef Fog Heen

How free is the N900?

Lucas asks about how free the N900 is, whether he can download and recompile and reflash. I'll try to answer some of those questions.

No, you can't download all the source. Part of it is just not open. I am not privy to Nokia's decisions on why or why not to open up, but it seems like the user interface bits are only partially open. Hildon itself is open so you can poke at widgets and see how those work. The address book is not open. The telepathy component that talks to the cellular modem is not open.

As for having to accept EULAs, I honestly don't remember accepting one of those, but I'm not going to say there are none. There's at least one which is every time you install a package where you have to check a box saying "Yes, I know this package is third party and will not sue Nokia if it causes my house to burn down, my wife to divorce me or causes somebody to steal the car". It's annoying, but I'm willing to live with it.

The contents of apt's sources.list is:

deb https://downloads.maemo.nokia.com/fremantle/ssu/apps/ ./ 
deb https://downloads.maemo.nokia.com/fremantle/ssu/mr0 ./ 
deb https://downloads.maemo.nokia.com/fremantle/ovi/ ./ 
deb http://repository.maemo.org/extras/ fremantle free non-free
deb http://repository.maemo.org/extras-devel/ fremantle free non-free

(technically, it comes from /etc/apt/sources.list.d/hildon-application-manager.list, not sources.list.)

I believe the built-in applications are generally not free, so rebuilding everything that is free will for instance leave you without any address book UI, the built-in map application or camera. Sadly, the X driver is also proprietary, so you won't be able to see anything either.

I don't think you can usefully install another free distro on the N900. You might be able to, at some point, assuming somebody goes to the effort.

The last question is "- Besides the non-free telephony stack, are there any other “antifeatures” I should be aware of?". The telephony stack is implemented around Telepathy, which is LGPL-ed free software. While it's correct that telepathy-ring (which talks to the cellular modem), the call UI and most of the address book are proprietary, the rest of Telepathy is free. There are SIP and XMPP connection managers that are free, and you can install more connection managers for MSN, IRC and so on.

Also, I think it's important to emphasise that the telephony stack does not contain any antifeatures. The closest thing you would be able to find is probably the restriction to one active and one held call at the same time, but as one of the developers said: "That's to prevent the UI from going mad".

While I like to tout the N900 as a free phone, it is in no way completely free. Large parts of it are free, and almost as importantly: most of the programming interfaces are free and at least somewhat documented, so if somebody wants to replace the built-in camera application with a free one, they can replace the DBus interface that the camera app provides. Ditto for maps applications, the address book and so on.

January 25, 2010 05:03 PM

Travis Reitter

LCA 2010 - Day 2

Day 1

Glyn Moody -- Keynote on OSS-like transparency outside of software

This talk covered a handful of ways in which open source software has inspired collaborative efforts in non-software fields, even reminding science of its origins in "open workbook" experimentation, where all the raw data is provided (as it should be). Jim Kent, a hacker working on his own, just barely beat Craig Venter's company, Celera, to sequence and publicly publish the human genome. Without this effort, Celera may have patented chunks of the genome (which obviously would have been a Bad Thing™). Kent did this thanks to a 100-machine Linux cluster, which was obviously a big win for both open source software and science.

Glyn then went on to point out that one of the biggest problems with the global financial system (and a large part of the crash) was due to its opacity. Even the industry experts don't really know much of the details, because all the data are locked up. Some governments are working to force this data to be more open -- Recovery.gov (in the US) is a good start, and the UK, Australia, and New Zealand are working on similar efforts.

20100118_019.jpg

Emmanuele Bassi -- A year of Clutter

Emmanuele delivered a few lightning talks in a row to cover what's gotten Clutter to 1.0, what has happened since its release, the plans for Clutter 1.2 (due in March), and the general plan for Clutter 2.x (begin before Clutter 1.x is end-of-lifed, and add any features that necessarily require API/ABI breaks; any changes that don't require breaks will also find their way into Clutter 1.x).

I'm not terribly familiar with Clutter, but it sounds like they've been making a nice amount of progress (which is especially important if it may become a dependency of GTK 3.x).

Dave Airlies -- Graphics drivers in the kernel; now what?

At the time X was first designed, graphics drivers in the kernel were infeasible, since they'd need to be re-written for all of the (many) different Unix kernels at the time. The environment is very different now, so it's worth the effort. Kernel-mode-setting (KMS) is the solution that Linux has adopted.

Tungsten tried doing something like KMS, but being developed top-and-bottom-inward, it ended up with an ugly API that didn't work very well. Keith Packerd wrote the Graphics Execution Manager (GEM), and KMS ended up being a combination of Tungsten's code with something more like GEM's API.

A couple immediate benefits of this new way of handling graphics is that we can now begin to handle video card power management and use the kernel debugger from within X.

Dave briefly discussed Wayland, the alternate display server. It seems to be desktop-environment-dependent and it isn't very complete (eg, keyboard input doesn't work yet), so it won't be replacing X.org (any time soon, if ever).

The Intel KMS driver is the most complete (except for GMA500), and just needs a little more work. AMD/ATi support is pretty good, though there's a stunning number of different video cards to support. Nouveau (the open nVidia driver) just moved entirely to KMS, and it's making decent progress.

20100118_142.jpg

Jan Schmidt -- Toward GStreamer 1.0

Jan gave us an overview of the progress GStreamer has made since its initial version (a lot), the current state (pretty good), and the future. There have been discussions of finally promoting the version number to 1.0; some of the downsides include a risk of development lull (as happened between 0.8 and 0.10) and the benefits include the ability to cut deprecated code and make it more clear to new developers that it's safe to use.

We also got a handful of nice demos (fully-functional DVD support, including menus and special "asides" subtitle support). But the crowd favorite seemed to be a demo app that tied playback rate to his laptop's orientation (from -$fast to +$fast). As Jan put it, "that's what accelerometers are for."

20100118_003.jpg

Adam Jackson -- The Rebirth of Xinerama

In a follow-up to his talk at last year's LCA about Shatter (an effort to better support aribtrary multi-screen setups), this talk updated us on the state of Xinerama to support similar configurations. Shatter eventually proved unworkable, but there has been some headway in other areas. At this point, X and the graphics drivers can support reasonably large-sum-dimensions displays, but the multiplexing of work across multiple GPUs needs to play catch-up (since more systems are starting to have multi-GPU configurations). The performance is linear with the number of GPUs -- unfortunately, it's 1/n, not n.

Adam discussed a number of potential solutions, as well as other issues which may be looming over the horizon (which is worthwhile, since most users weren't too concerned about supporting multiple GPUs in a single machine even recently).

January 25, 2010 07:36 AM

January 24, 2010

Thomas Thurman

RFK testing

The program which will eventually become rfk 1.40 is here, and the source is here. I would like some people to playtest it. Changes:
  • you can move around by tapping parts of the screen, rather than tapping with respect to robot's position; this is more like the iPhone port (which I haven't played); this change suggested by Will Thompson
  • portrait mode
  • kitten is on the front screen
I would like to know
  • whether portrait mode is playable, in general
  • whether it would make more sense to spin the board around 90° instead of pivoting it in place
  • whether there are too few spaces on one axis to make it easily playable in portrait mode
  • why the GtkLabel with the message on it on the front screen does not expand to the full height of the window in portrait mode (I'm sure I'm missing something obvious here)
  • whether you think a picture like this one would be better for the front page
  • anything else you find
Thanks for your help, everyone who is helping.

January 24, 2010 04:47 PM

Danielle Madeley

Plush Pizza: the most fabulous-est pizza in Melbourne?

Since going vegan, shop-bought pizza has been a bit of a hit-and-miss affair. There are lots of places that do vegetarian and vegan pizza, but none so far have been super great. Last night everything changed with a visit to Plush Pizza.

satay pizza and ben's special at plush pizza
why yes, that is a satay pizza

I wish we were going back there tonight. Trust me when I say I will be finding an excuse to return soon. The only downside is that it's a little tiny bit expensive, also that it's on the other side of town.

Saw this on the train to North Richmond today:

vegan


As always: recent food we've nommed.

January 24, 2010 05:36 AM

January 23, 2010

Jeremy Whiting

svn2git rules!

In case anyone has been hiding under a rock lately, yes kde is moving to git in the foreseeable future. There is a meeting weekly in #kde-git about the migration progress, what needs doing still, and what is done. One task that had not been taken on very much is writing the rules to import from svn into git (using svn2git, which is a handy app thiago wrote a while ago).

As one of the few people working on kde-accessibility these days, I took it upon myself to check those rules. This was a bit harder than I imagined it would be, and harder than it should be due to lack of documentation (or possibly my lack of reading the existing documentation?) and some nuances of the rule syntax and kde's svn history itself. Just thismorning I finished this and want to share some things I learned here for others doing the same for other modules.

#1 match lines should end with a / in most cases.
if you are matching a path in svn, you have to remember to add the trailing / or you will get cryptic svn errors about being unable to get data of a non-object or somesuch. Thanks to argonel for pointing this out to me the other day.

#2 action recurse rules are tricky but necessary.
I first copied konversation's rules to start kdeaccessibility's ruleset, then merged in kdeaccessibility parts of kde-rules-main. There was a problem though, svn2git would get stuck when it got to creating the 4.0.0 tag, because the 4.0 branch didn't exist. Then I noticed a rule I had missed from kde-rules-main
match /(branches|tags)/KDE/([^/])/
action recurse
end match
after adding that though, the import would fail even earlier than before, because the above match would match files as well as folders, so entries with /branches/KDE/4.0/README which cannot recurse (because it's not a folder...)
The answer was to make the recurse match only what it needed to, so to create the 4.0 branch I set it to match /branches/KDE/4.0/ with a min-revision and max-revision of when /branches/KDE/4.0/ was created.

Problem with that match is that it didn't match 4.1 or others, since the match is a regex this was easy to fix, just make the match terminate with $ so it only matched svn revisions that are folders 4.0, 4.1, etc. etc.

I'll start looking into another module's rules next, so we can get this migration to git done. Any opinion which module I should look into next (kdeaccessibility was a good choice as its apps never spent time in kdereview or playground...)

by JPWhiting (noreply@blogger.com) at January 23, 2010 03:23 PM

January 22, 2010

Thomas Thurman

This Week In Metacity

This week: Collabora have been supporting me in working on Metacity over the last week or so. I began by trying to get the CSS themes branch merged, but then decided that a better use of my time would be patch review, especially given the impending feature freeze. Here's a partial list of some of the things I've touched; I'll update it for this week when this week's over.

ProjectJournal: Producing the Metacity Journal and other Metacity blog posts has been a helpful record of people's work on the program, but blogging about the project does tend to drive out actual maintenance and development. For this reason, a while ago I wrote a program called ProjectJournal which would prepare Metacity Journal posts automatically.

ProjectJournal used to scan IMAP folders for Bugzilla notifications and svn checkins. It would then output a list of bugs that had been touched, files that had been modified, and translations that had been made, as well as any hits for the name of the project on Google Blog Search, add a photo, and then post it as a draft to blogs.gnome.org. Then a human (me) would come along and tidy it up and write the introduction, resulting in posts like this one. It was a neat hack, and saved a lot of time, but it's rotted because it was never rewritten to work with git. Also, Bugzilla should be queryable directly now, though ours isn't at a version where the API supports queries, so it would have to be done with a screen-scraper. Ugh.

What I'm wondering is whether any of you would be interested in using such a tool for your own projects, if I resurrected and modernised it. Do let me know.

(For several months there was also a daily Bug of the Day post, but although that was fun and got the community discussing the issues, it didn't help the time I had available for coding. Perhaps the project needs someone who likes writing better than coding, a sort of public recorder. Or perhaps I could carry on doing it if there were many other people writing the code.)

Posts that might interest you: In case you're not reading the Metacity blog, here are some interesting posts from the last week:

Feel free to dive in on the discussions. Feel even more free to volunteer to write patches for some of these; I'll try to give you all the help you might need.

Podcast: At one point I used to record myself reading all the Metacity blog posts (such as this one). I'm not sure whether I should bring this feature back, or what should happen to it further if I did.

January 22, 2010 08:10 PM

Christian Schaller

Getting Chromium onto the GStreamer lovetrain

Bastien Nocera is known for a lot of things. Most people in Gnome probably knows him as the maintainer of the Totem media player. In the Fedora community he is known as one who deals with a lot of the challenges around multimedia. Here in the UK he is also known as the only frenchman to ever get fully naturalized.

Anyway his latest effort is to try to try and kickstart some work in Google Chromium to get it to use everyone favorite media framework GStreamer. Bastiens explains a lot of his rationale in the Chromium bug report, but I am hoping to get others in the community to chime in too, and even if you don’t have anything new to add, just let Google know you care by starring up this bug report.

by uraeus at January 22, 2010 04:46 PM

January 21, 2010

Travis Reitter

LCA 2010 - Day 1

This week, I'm in beautiful Wellington, New Zealand for LCA 2010. It's very well-organized conference (as always), and the weather has been even better than predicted!
20100118_150.jpg

Benjamin Mako-Hill -- Keynote on anti-features

Mako described his concept of anti-features (product features which intentionally reduce its functionality) and provided a number of amusing examples. I remember coming up with essentially the same idea several years ago (shortly before I switched full-time to Linux, coincidentally enough). It somewhat boggles the mind that there are so many engineers spending their time crippling their own work.

As Mako pointed out, most cell phones are surprisingly restrictive, but most of us just accept it. I gleefully raised my hand when he asked how many people had root access on their phone. Score another point for the N900 (which even avoids the G1 developer version's "freedom tax")!

Jonathan Corbet -- Kernel Report

Jonathan explained in great, yet digestible, detail what's happened in the Linux kernel in the last year. This shouldn't be too shocking to anyone who's familiar with his great reporting on Linux Weekly News. I'm fairly bad at keeping up with kernel news, so this was a great summary.

20100118_068.jpg

Chris Double -- Implementing HTML 5 Video in Firefox

A great update on the history and latest-and-greatest in video support in Firefox. They first built their own solution on some of the higher-level Xiph Ogg Vorbis and Theora libraries, but ran into a number of performance problems; then tried per-platform native implementations (including GStreamer on Linux), but the major platforms have no default codecs in common; next the tower caught on fire and then fell into the swamp; and most recently they've switched to an internal implementation that uses only the lowest-level Xiph libraries.

It was interesting to hear about some of the implementation limits. Apparently sound on Linux is still hard.

Chris's demos were fantastic - playback was very smooth, even when doing impressive green-screen, object insertion, and other fancy transformations. I can't wait to see websites take advantage of the video tag. Anything that minimizes our reliance upon Flash is exciting to me!

Denis Kenzior -- oFono: Open Source Telephony

oFono is a framework for handling mobline phone call/text/etc. features. It works on the idea of generalized modems for the various radio types (which, based on its goal of exposing only the interesting details to applications, I assume are hidden from the API) and has a daemon to do the work of sending and receiving audio calls and SMSes. The framework is meant to only support mobile phone functionality and intentionally ignores voice-over-IP (which Telepathy handles very well on the desktop and embedded systems by way of its telepathy-sofiasip connection manager).

There's an in-progress Telepathy connection manager which wraps oFono named yafono, written by my Collaboran colleague Andres Salomon.

Denis states that the current functionality is enough such that you could implement a 2G iPhone's cell stack with it.

Matthew Garrett -- Social Success for (and in) the Linux Community

Matthew discussed some of the social shortcomings of the Linux Community, who we consider members (mostly just developers, unfortunately). We were also graced with a number of relevant quotes and a touching story of his own transformation from occasional mailing list flame-thrower to sympathetic human being.

January 21, 2010 09:10 PM

January 20, 2010

Senko Rašić

Reading Wikipedia on N900

N900 is a device with a lot of connectivity options and a very capable browser. With that, it’s a good Wikipedia reader out of the box. But not so if your connectivity is limited (you’re on top of a mountain, or roaming, or don’t have a data plan alltogether and there are no open wifi hotspots).

Since I got a great Christmas gift from Collabora I’ve been poking at a small toy application that could store and read Wikipedia articles offline. Since Wikipedia hosts a huge number of articles, and device capabilities are limited compared to a desktop PC, this posed an interesting (but not unsolvable) challenge for the weekend hack sessions.

The result is Mawire (Maemo Wikipedia Reader):

Mawire 0.1 - home screen

Mawire 0.1 - home screen

Mawire 0.1 - search results

Mawire 0.1 - search results

Mawire 0.1 - Article view

Mawire 0.1 - Article view

The application

Having worked on bits and pieces in Maemo 5, I knew my way around the Maemo 5 SDK and some of the APIs, but nevertheless the Developer’s Guide was of great help. I’ve also perused examples, code (such as browser launcher) and packaging from marnanel’s raeddit application.

The application is a lightweight reader, so the aim is not to display complete article, but rather to show enough information for a quick check, and provide convenient way for the user to find more on the Wikipedia itself.

install mawire
At the moment you can download the application from here, or browse or download the source code from github. I hope to upload it to maemo-extras soon. If you’re reading this from your N900, you can install mawire automatically by clicking on the install icon. Warning: It’s an early development (alpha) version, only tested on my device so far, so proceed with caution and only if you know what you’re doing.

Since writing this blog post (but before I hit the Publish button), I’ve played around with portrait mode functionality, and released version 0.2 which has portrait mode support. If your keyboard is closed, mawire will switch to portrait mode. When you slide it open at any time (e.g. for typing search queries, or when you want to copy/paste part of the article), mawire will switch to landscape mode.

Data handling

Since Wikipedia (especially the English edition) has a huge number of articles, amount of text for a complete and comprehensive copy is just too large to conveniently use on the device. Recent enwiki dump contains more than 3 million articles and is almost 6GB of bzip2′d XML.

To minimise database size, and since I wasn’t trying to replicate complete Wikipedia functionality, I decided to strip the articles as much as possible, not only of markup (so only bold and emphasis are preserved), but also to only include content of a few first paragraphs - up to the first heading. The idea is that topic overview is probably outlined first, and then each paragraph expands the coverage (often also having a complete article of its own).

So, the reader only includes the overview and provides “Read more…” button that connects to Wikipedia proper. So the app can be used not only as offline reader, but as quick Wikipedia launcher by itself.

The other problem is number of articles and search performance. If database contains up to a few million articles, sequential searching through the database is extremely slow. Unfortunately, the version of SQlite3 shipped on N900 (and indeed in many Linux distros ATM) doesn’t support fast fulltext search (FTS3), which is ideal for mawire.

So, the application currently ships with its own copy of SQLite library with enabled FTS3 module. It’s installed in a private lib directory so it doesn’t clash with the OS version (similar to what Firefox on Linux distros does), and is only ever used by mawire.

The data itself was prepared by a Python program that:

  1. parses the XML dump (using expat),
  2. extracts, parses and strips Wikipedia markup (using a bunch of hacked regexps, as I haven’t found a suitable wikimedia markup parser - this is the weakest part of the program and I hope to improve it in the future),
  3. filters articles we want to exclude (special pages, lists of things, too short articles),
  4. compresses the article text (using zlib) and finally stores them to a SQlite3 database (using SQLalchemy).

The final step is manual, building of FTS3 index, and consists of two SQL statements. This is so it could be done separately, on a machine having SQLite with FTS3.

The program is included in mawire source code, so you can use it to create custom Wikimedia databases (or, indeed, database for any MediaWiki powered wiki).

install mawire-enwiki-small A database of selected articles (3000 most visited + featured + good + vital; about 14 thousand articles in total) from English Wikipedia (13.6MB). Database is installed in /opt so it doesn’t fill up your rootfs.

Complete English edition, as well as several other major language editions are also available, but I haven’t created Maemo packages for them. You can download them directly, put them on your device or MMC card and select from the application menu.

by Senko at January 20, 2010 08:20 AM

Thomas Thurman

Introduction to software localisation for conlangers

Some people have asked on CONLANG-L whether it's possible to translate free software into constructed languages. I said I would put some instructions together, and people were interested, so here goes.

Caveats:
  1. This is about the free desktop. It will describe how to localise GNOME or KDE. I don't know anything about how to do this on the Mac or on Windows, so my advice to you will consist approximately of "please install Ubuntu".
  2. Be sure you know what you're letting yourself in for. There are about 45,000 strings which need translation in GNOME, although you can get a decent effect by translating only a few thousand. Then there are the applications themselves on top of that.
  3. If you're translating into a language which uses characters which don't appear in Unicode, I'm going to assume you've already made your computer able to display them. Matters such as designing a character set, getting space in CSUR, and building fonts are outside the scope of this tutorial.
  4. This is just enough to get you going; I'll be cutting some corners and waving my hands around some of the difficult bits.
  5. Before we start, you should have both the "gettext" package and the Gimp installed.
  6. What I'm going to say is true for most programs, but a few have their own way of doing things.  Firefox is one of these.
Here's what we're going to do: we'll change the titlebar of the GNU Image Manipulation Program (the Gimp) to display in a conlang. Since I'm writing this, I'll translate the titlebar into my own conlang, Nimyad; work out what it is in yours before you go on. Bear in mind that "GNU" is a proper noun and should not be translated.

The phrase "GNU Image Manipulation Program", rendered in Nimyad, is "dajath GNU camimoth lirinanen", or in the con-script:



Next we'll need an ISO 639 code. These are rather difficult to come by for conlangs (even Toki Pona was rejected), but fortunately the codes between qaa and qtz form a private use area. We'll say that Nimyad is qny; pick one of your own and use it in what follows.

Now you need the translation template for the Gimp. You can get it here; click the green arrow next to "POT file" and it will download. Now rename the gimp.master.pot file to qny.po and open it in a text editor. (Don't use Emacs for this; it tries too hard to be helpful and will confuse you.) Find the lines which say

msgid "GNU Image Manipulation Program"
msgstr ""

This means that the string "GNU Image Manipulation Program" is translated to nothing at all. That's not very useful yet, so put your conlang's translation in there, after the msgstr, between the quotes. Save the file.

Now we need to compile the .po file into a .mo file, which is the format that the programs themselves can read. Run: msgfmt qny.po

If it worked, you will have a file called messages.mo in the current directory. If it didn't, make sure you did in fact install the "gettext" package!

Create the locale directory: sudo mkdir -p /usr/share/locale/qny/LC_MESSAGES
and move the file in: sudo mv messages.mo /usr/share/locale/qny/LC_MESSAGES/gimp20.mo

Finally you'll need to create all the locale data other than the actual language. You can just base that off another locale, such as en_GB, for now: sudo localedef -v -c -i /usr/share/i18n/locales/en_GB -f UTF-8 /usr/lib/locale/qny/

It will probably throw up a lot of errors, which you can ignore at the moment.

When you have a fair number of strings translated, it will make sense to run in the qny locale all the time.  But for now we'll just run it as needed.  So: now at last you're ready to type: LANG=qny gimp&

And you should see:



Well, that's one string down, 45,000 to go.  You see that the strings which haven't yet been translated fall back to US English.

Finally: now that you've seen how easy translation is, if you happen to speak any of these languages, please consider contacting the translation team and offering your help.

Let me know if you have any questions!

January 20, 2010 12:27 AM

January 19, 2010

Christian Schaller

Why is it impossible to not hate Ryanair?

When I went to Norway this year for Christmas I had the most convenient travel route ever. I had a direct flight from Stanstead Airport to Rygge in Norway. Rygge is a tiny airport, but when you visit people on the southeast side of Oslo like I did, its perfect.

The ticket was also quite reasonably priced even though it was the Christmas holiday.

Yet, despite offering me this ideally set up trip between the two airports on both side which fits me the best, I struggle to dig up any kind of positive feelings for Ryanair.

Was discussing it a bit with Wim and Tim and I think a big part of the reason for this is the constant feeling you get when booking a trip with them that they are trying to make you think their fares are cheaper than they actually are or the feeling that they attempt to ’sneak’ in extra options.

For instance how they charge you for the use of your credit/debit card, a fee that got nothing to do with the actual cost to them and the fact that it is practically impossible to avoid it. As Tim mentioned when we discussed it, if they just included that 5£ fee in the price you wouldn’t think about it and just be happy you got a cheap ticket, instead you feel they are trying to pull a fast one on you and make their prices look even better than they are by pretending mandatory expenses aren’t mandatory.

Maybe Ryanair doesn’t care if I or anyone else actually likes them, I mean I still booked my flight to Norway with them because they where the only ones flying from Stanstead. Yet on the other side I always tend to fly with Easyjet instead of Ryanair if I can, both due to usually flying to better airports and a general feeling that if I search for a flight the price they list for that flight is the price I am actually paying.

Maybe the problem is simply that Ryanair doesn’t understand that even when you are travelling I don’t like the feeling of being taken for a ride :)

by uraeus at January 19, 2010 02:42 PM