FOSDEM 2010
I'll be there.

Since getting back from my month-long holiday a few weeks ago, I've been working on Moblin's next-generation, Clutter-based UI toolkit: MX. You can check this out on moblin git. We're really hoping that we can make this toolkit all you'd need in writing a modern, Clutter-based application for Moblin, so if you're interested, please do check it out and give us some feedback! If you're already acquainted with the Moblin infrastructure, you should know that this obsoletes NBTK.
Today, I 'finished' on one of the new widgets that we'll be providing, MxPathBar. This is very similar to the breadcrumb-bar in the GTK file-chooser, with the added bonus of having an 'editable' mode that allows you to search. We intend to use this in the media library, and perhaps in the file-chooser (more on that at a later date...) Here's a little demonstration - note that this is pre-final stuff and animations/graphics may improve :)
Well, following on from my post from 2 years ago, here's a list of games that I played in 2009 (not necessarily released in 2009) that I think are worthy of a mention:
It's worth mentioning how disappointing I found Call of Duty: Modern Warfare 2. It has a single-player campaign that should be measured in minutes instead of hours, and although there are moments of brilliance, there are many more moments of needless frustration. The multiplayer hasn't really evolved since the first Modern Warfare either. Not to say it isn't a good game, but it was massively overrated. It makes you wonder how much bribery is involved with the review scores of large publications.
New Super Mario Brothers Wii was also very disappointing. The idea of taking the new look and mechanics from the excellent DS game and making a larger, shinier, multiplayer, console version of the game is great. The execution, however, is lacking. The levels and physics haven't been tweaked significantly enough to allow for the extra players, meaning playing anything other than single-player is a lot more challenging than it should be. The difficulty curve is also far too steep compared to pretty much every other Mario game in the series. Again, still good, but disappointing.
Not sure if it's worth mentioning how deeply disappointing Halo: ODST is. But there you go, just did it. And an honourable mention goes to Dead Space: Extraction on the Wii for proving that not all Wii games have to look like ass.
It was nice to see the trend of mediocre PS3 ports start to reverse in 2009. Although you're still better off buying the 360 version of a multi-platform game in the majority of cases, the gap is starting to narrow and there are a very select few titles that are actually better on the PS3. This is quite a testament to the sophistication of the programming techniques and middleware when you consider how different the architecture of the PS3 and the 360 are.
Hopefully games will continue to become more sophisticated in 2010, both in terms of technology and artistry. I'm especially looking forward to seeing Heavy Rain and Gran Turismo 5. Until next year!
R.I.P. Duke Nukem Forever.
The astute may have noticed that the default browser installed in Moblin 2.1 is not Moblin Web Browser. There are various reasons for this, but if you're interested in trying out the Moblin Web Browser (and how it would have been had it been included with 2.1), you still can by following the instructions here: How to install Moblin Web Browser in Moblin 2.1.
Note that development has already moved on quite a lot since the snapshot in the 2.1 repositories, and performance has been massively improved (to the point where it is almost indistinguishable, performance-wise, from Firefox, as long as you don't suffer from this bug). If anyone's interested in seeing the latest browser bits, do comment or drop me a mail and I'll see if I can get more up-to-date packages available somewhere.
I get mailed about it on a semi-regular basis, so the following is an updated version of the guide I wrote before on building Moblin Web Browser. Note that many things have changed since the last guide, so if you gave it a go then and weren't impressed (or even if you were), I'd recommend giving it another try! I'll try to keep this updated.
I'm going to assume that you build all of this in $HOME/moblin and that you're ok with mozilla living in /opt/mozilla-headless (trust me, it's for the best). I'm also going to assume that you have a system already setup for developing GNOME/Gtk applications. And that you have Mercurial and Git installed. You'll also need to install autoconf2.13 if you don't already have it. For those with non-debian systems without sudo setup, replace 'sudo [stuff]' with 'su -c "[stuff]"' (or setup sudo).
cd ~/moblin
git clone git://git.clutter-project.org/clutter
git clone git://git.clutter-project.org/clutter-gtk
git clone git://git.clutter-project.org/clutter-mozembed
git clone git://anongit.freedesktop.org/ccss
git clone git://git.moblin.org/clutter-imcontext
git clone git://git.moblin.org/nbtk
git clone git://git.moblin.org/mozilla-headless-services
git clone git://git.moblin.org/moblin-web-browser
hg clone http://hg.mozilla.org/incubator/offscreen mozilla-headless
You may also need a check-out of libunique; instructions here.
cd ~/moblin/clutter
git checkout -t origin/clutter-1.0
./autogen.sh
make
sudo make install
cd ~/moblin/clutter-gtk
git checkout -t origin/clutter-gtk-0.10
./autogen.sh
make
sudo make install
cd ~/moblin/clutter-imcontext
./autogen.sh
make
sudo make install
Note that if you want documentation, all three of these accept '--enable-gtk-doc' as a configure parameter. These should all install in /usr/local by default, you should check that this is setup in /etc/ld.so.conf.d, and you may need to run 'sudo ldconfig' after installation.
cd ~/moblin/ccss
git checkout libccss-0.3.1
./autogen.sh --without-rsvg --without-soup --disable-ccss-cairo --disable-ccss-gtk --disable-examples
make
sudo make install
cd ~/moblin/nbtk
./autogen.sh
make
sudo make install
Note about documentation still applies. You can get nicer build output from libccss by specifying '--enable-shave' too (used by Clutter and co by default), and if you're a developer, you may also want '--enable-debug'.
Download this file to your home directory before starting.
cd ~/moblin/mozilla-headless
hg checkout headless
make -f client.mk configure
cd ../mozilla-build
make
sudo mkdir /opt/mozilla-headless
sudo chown $USER:$USER /opt/mozilla-headless
make SKIP_GRE_REGISTRATION=1 install
Now, this is the slightly less straight-forward bit. You'll either need to add a file to /etc/ld.so.conf.d to add '/opt/mozilla-headless/lib/xulrunner-1.9.3a1pre/' and '/opt/mozilla-headless/lib/xulrunner-devel-1.9.3a1pre/' to your default library search path, or you'll need to alter your environment to add them to your $LD_LIBRARY_PATH. I'd recommend the latter, and doing it in your ~/.bashrc, making it easier if something goes wrong.
You'll also need to add '/opt/mozilla-headless/lib/pkgconfig/' to your $PKG_CONFIG_PATH. Again, I'd recommend doing this in your ~/.bashrc. Don't forget to run 'sudo ldconfig' after installation, if necessary.
We're almost there now :) If you've followed all the previous steps correctly, it should all be downhill from here (in a good way).
cd ~/moblin/mozilla-headless-services
./autogen.sh --enable-gnome-proxy
make
sudo make install
cd ~/moblin/clutter-mozembed
./autogen.sh --enable-plugins --enable-im
make
sudo make install
Again, the only slightly non-standard thing here is that mozilla-headless-services is a dbus daemon and you may need to setup your system for dbus service activation to work from the /usr/local prefix. Most distributions do this by default, but if yours doesn't, have a look in /etc/dbus-1. If you can't get that to work, you can run the daemon manually with '/usr/local/libexec/mhs-service'. Don't forget 'sudo ldconfig'!
cd ~/moblin/moblin-web-browser
./autogen.sh --disable-netpanel
make
sudo make install
You should now just be able to run 'moblin-web-browser', although you may want to run 'moblin-web-browser -w' so that it doesn't launch full-screen (and you may also want to alter the .desktop file to do this by default when launching from the applications menu). If you find any bugs that aren't also present in Firefox on Linux, please file them over here (don't forget to check for duplicates first!) Happy surfing :)
After some back-and-forth e-mails between some potential users of ClutterMozEmbed and myself, I tonight implemented the ability to have transparent page backgrounds. All that's needed is to call clutter_mozembed_set_transparent (it's default off as I'd hope that cairo is more performant when using 24-bit rendering...) and for your page to not have any opaque frames (the window background will already be transparent).
Unfortunately, I'm terribly unimaginative, so I couldn't think of a decent demo. Here's what I came up with - this is a demo from chromeexperiments.com (ironic), running transparently over the test-actors demo in Clutter. To add to the irony, it's Clutter rendering the 2d surfaces and Mozilla rendering the 3d part :)
Lot of really long posts about how sexism is bad on p-g-o recently. I think we all get that? If I were in charge, this is how things would go down:
Person 1: If we followed these guidelines, I'd have less trouble explaining to girls what I do.
Person 2: Hey, that remark was a bit sexist.
Person 1: Oh, I didn't mean it to be. I'm sorry, out of my respect for that comment and the community, I'll be more considerate in the future.
Person 2: Word.
[High fives all round]
Here are the slides, code and the transcription of my Clutter animation talk. This is the latest version that I gave earlier today at OSCON, based off of the version I gave at GCDS. Hopefully people will find it of use (note, presentation in OpenOffice format, transcription in plain ASCII text, code in tarballs inside the zip).
In case anyone's at OSCON and, miraculously, follows my blog (likely via aggregation) but doesn't follow my twitter and hasn't already heard it from other more popular blogs, I'm reiterating my GCDS talk about animations using Clutter here at OSCON tomorrow at 10:45, Meeting Room C2. I'll also be doing a chalk talk at the Intel booth, 1:30pm, on the work that went/goes into building the Moblin Web Browser (so if you want to check if your pet complaint(s) from the beta have been fixed (they have), please drop by!)
Note that I've beefed up the talk a little bit since GCDS and added a couple of new demos, some more slides and generally more detail. I under-ran pretty spectacularly at GCDS and I don't think it'd be prudent to rely on having as many questions as there were there, so hopefully I'll gauge time a bit better this time around! I hope to see you there :)
And the slides/code will be online soon, honest!
Dear lazyweb, why is there no iCal for the schedule? Or Google Calendar? Or at least a PDF booklet, or something? I guess this is something I could do myself, but I'm busy/lazy and I figure that someone must have done this already, right? Like previous Guadecs?