FOSDEM 2010

I'll be there.

MxPathBar

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 :)


Download video

Gaming Highs of 2009

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:

  • PixelJunk Eden:
  • I'm not sure when I bought this game, quite likely in 2008, but only last month did I get the 50th spectra (and I haven't really even touched the add-on pack yet). The art style and unique gameplay in this title are totally entrancing, and there's an amazing amount of playability there, especially given the price. This is the sort of thing that you miss out on by not having a PS3.
  • House of the Dead: Overkill:
  • Sega doing what Sega do best, even if it wasn't actually developed in-house. If you only bought one Wii game this year (and who would blame you?), this should've been it. Clearly heavily influenced by Planet Terror, this game oozes style, humour and various other unpleasant liquids. Just about the perfect length for a light-gun game, I'd go as far as to say that this is the best shooter Sega have ever published.
  • Uncharted 2:
  • Worth a mention - it does nothing new, but everything it does, it cranks up to 11. Some of the set-pieces are truly breathtaking, and it manages to keep up a good pace for the entire game; a massive improvement on the first. Like watching a blockbuster movie.
  • Batman: Arkham Asylum:
  • Who'd have thought, a movie-licensed game that's actually good enough to legitimately be nominated for several game-of-the-year awards? I also love Batman (in a platonic sense), so this was a no-brainer for me. Easily the best use of the Unreal engine so far too, far outclassing Epic's own Gears of War 2.
  • Killzone 2:
  • This would be worth a mention solely for the amazing technological achievement for me, but it also happened to be a great game too. All FPS games feel primitive after getting used to the feeling of weight and the excellent cover system implemented in this game. Like Uncharted 2, it doesn't do anything new that's very significant (except, arguably, the aforementioned cover system), but what it does, it does with style. After the disappointment that was Motorstorm, it was doubly surprising to see a game that actually surpassed its target render.
  • Assassin's Creed 2:
  • Anyone that played the first could see that there was a good game in there somewhere, marred by inane repetition and lack of direction. So, way to go Ubisoft Montreal for finding it! A much longer campaign than the first, a much more developed combat system, some good tweaks to the free-running system and some great new challenges make this the game the first was promising. I preferred the storyline in the first and I think this one jumped the shark a bit (anyone that's completed it will know what I'm talking about...), but it was still entertaining. This time round, the story took a back seat to the gameplay, and overall, the game benefited from it.
  • Ratchet and Clank: A Crack in Time:
  • This is mostly a sympathy mention really, but it's such a shame this game was overlooked. I've disliked almost every other game in the series too, so this came as quite a surprise for me. Some fantastic voice-acting (easily on par with Uncharted 2), some innovative puzzling, very solid core gameplay mechanics and impressive graphics. If this had been released earlier, it would've done so much better. As it is, it's still very much worth picking up.
  • Borderlands:
  • Worth a mention for being the first game to successfully bring Neverwinter Nights/Diablo-style gameplay to the consoles. Not to mention successfully pairing classic western RPG gameplay with FPS gameplay (though Fallout 3 beat it to the punch on this, even if it doesn't do it as well). Probably not worth playing as much as a single-player game, but really excels in multiplayer.

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.

Moblin Web Browser in Moblin 2.1

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.

Building Moblin Web Browser 2: Electric Boogaloo

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.

Some notes

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).

Step 1

Checking out the source

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.

Step 2

Building Clutter

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.

Step 3

Building Nbtk

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'.

Step 4

Building Mozilla

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.

Step 5

Building ClutterMozEmbed

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'!

Step 6

Building Moblin Web Browser

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 :)

Neat new ClutterMozEmbed feature

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 :)


Click to play

How things would go down if I were in charge

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]

Clutter animations talk

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).

OSCON '09 Talk

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!

GCDS 2009 Query

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?