WebKit on the new Raspberry Pi 2

Today the Raspberry Pi Foundation announced a new model of the Raspberry Pi!
While the new Raspberry Pi looks almost identical to the previous one, it’s much more powerful (and with four cores instead of one) and costs just $35.

Here at Collabora we have worked together with the Raspberry Pi Foundation on optimising WebKit for the first Raspberry Pi, achieving a good browsing experience (notwithstanding hardware limitations) with smooth 720 videos, good responsivity, etc.
Despite this work, a lot of web sites are just incredibly heavy and don’t run too well on the RPi1, so the extra CPU power is very useful. Just look at this video to see the difference in performances between the two Pis.

Comparison between the RPi1 and RPi2 (mp4 video file)

Our optimised WebKit-based web browser (i.e. GNOME Web, AKA Epiphany) is already available in Raspbian images, so you will get this out of the box.

A web browser for the Raspberry Pi

As I previously mentioned, Collabora has been working with the Raspberry Pi Foundation on various projects including a web browser optimised for the Raspberry Pi.
Since the first beta release we have made huge improvements; now the browser is more responsive, it’s faster, and videos work much better (the first beta could play 640×360 videos at 0.5fps, now we can play 25fps 1280×720 videos smoothly). Some web sites are still a bit slow (if they are heavy on the JavaScript side), but there’s not much we can do for web sites that, even on my laptop with an Intel Core i7, use 100% of one of the cores for more than ten seconds!

The browser is based on Gnome Web (Epiphany) using WebKit 1 (i.e. the non-multi-process version of WebKit).

Our main achievements are:

  • More responsive UI and scrolling, even under heavy load (like when loading a page)
  • Progressive tiled rendering for smoother scrolling (as mobile browsers do)
  • Startup is three times faster
  • Avoid useless image format conversions
  • Better YouTube support, including on-demand load of embedded YouTube videos to make page load much faster
  • Hardware decoding of videos (through gst-omx)
  • Hardware scaling of videos (again, through gst-omx)
  • Reduction of the number of memory copies to play videos
  • Faster fullscreen playback using dispmanx directly (a bit buggy at the moment, we are working on it)
  • Memory and CPU friendly tab management
  • JavaScript JIT fixes for ARMv6
  • Disk image cache (decoded images are kept in memory mapped files in a cache, saving CPU)
  • Memory pressure handler support

The Raspberry Pi web browser (mp4 video file)

To install the browser, just update your Raspbian and install the “epiphany-browser” package:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install epiphany-browser

Thanks to all the people at Collabora that, at some point or another, helped on this project: Julien Isorce, Emanuele Aina, ChangSeok Oh, Tomeu Vizoso, Pekka Paalanen, André Moreira Magalhaes, Derek Foreman, Gustavo Noronha, Danilo Cesar, Emilio Pozuelo Monfort and Jonny Lamb (I hope I haven’t forgotten anybody!).
Also thanks to the Raspberry Pi Foundation, and in particular to Eben Upton, for their commitment to making browsing on the Pi better, and to Ben Avison for his work on optimising pixman and libav for ARMv6.

Update: people have reported a few bugs since the release, in particular a problem with Raspbian configured to use 24-bit or 32-bit mode for graphics. We should be able to fix this in a week or so.
Another problem is that Vimeo videos stopped working. This seems to be due to a change made by Vimeo that broke playback also on other browsers and on Android.

WebKit GTK on iRex Digital Readers

When I joined Collabora last year I started to work on porting WebKit GTK to a device produced by iRex technologies based on the GNOME mobile stack and with an electonic paper display. My task was to make WebKit usable for the browser that they want to ship with the next version (with Wi-Fi connectivity) of their device, this meant adding missing features, fixing various bugs and adapting WebKit to work well with this kind of devices.

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

At FOSDEM I willl give a talk on what I did and I will have with me a DR 1000S, so you can play with it (I suspect that most people will follow the talk only because of the nice toy ;))

iRex DR 1000S
An iRex Digital Reader 1000S

Maemo Summit

In a few days I will go to the first Maemo Summit in Berlin where I will give a talk explaining how Telepathy works, how the different components interact and how to use tubes for arbitrary data transfer, useful for instance for playing games with chat contacts or to view a contact’s desktop using VNC. So, if you are in Berlin, don’t miss my talk on Saturday at 15:30! Also, don’t miss Pierre-Luc Beaudoin‘s talk on WebKit at 16:30!

My slides are almost ready (I will post them here after the summit) but I still have some OO.o-related problems, does anybody know how I can transform a linked image to an embedded one in Impress?
I find it’s quite annoying that when you drag an image to a presentation it’s linked and not embedded, is there an option to change the default behaviour?

Back from GUADEC[1]

Doesn’t this look like the GUADEC t-shirt?

GUADEC was great and talks turned out to be more interesting than what I was expecting after all the decadence discussions, this is also proved by the fact that I managed to stay awake during all the talks despite having a party every day :). Being in an awesome city with wonderful food[2] helped a lot for the final result, this is why I’m so happy that Gran Canaria was chosen for the next GUADEC.

In Istanbul I finally met other people working on WebKit or on related projects and had a chance to discuss with them about the future development of WebKit. While meetings on IRC are useful and allow you to talk with people from everywhere, real life meetings give you a much more efficient channel of communication: how about a hackfest for people working on WebKit, FireFox and desktop programs using them?

[1] Actually I came back to Cambridge ten days ago but, as usual, I fail at writing blog posts at the right moment, I wanted to write this on Sunday but my flight was moved to Monday and then real life started again. [Insert here other childish excuses for being so lazy]
[2] I’m already experimenting some Turkish recipes, Collabora people in Cambridge should expect a Turkish dinner really soon.

Beta version of Flash 10

Today Adobe released a beta version of Flash 10, from the realease notes:

“Ubuntu OS Support — Flash Player 10 now supports Ubuntu, one of the most popular flavors of Linux.”

  1. “Ubuntu OS”? :)
  2. Previous versions of Flash already work on Ubuntu
  3. How can you say that you support a .deb-based distro if you only release a .tar.gz and a .rpm?

The bad news is that it crashes both WebKit GTK and QtWebKit. This is a perfect example of why I don’t like closed source software, it isn’t because of political reasons but because interoperability with it is hard: you don’t have any simple way to understand what it’s wrong and it’s impossible to fix it.

Plugin support for WebKit GTK / Qt

A picture is worth a thousand words:

YouTube video in WebKit GTK
Flash plugin in the WebKit GTK demo application

YouTube video in QtWebKit
Flash plugin in the WebKit Qt demo application

Since a few hours ago both WebKit GTK and Qt support plugins! Thanks to everyone who worked on this, in particular to Rodney Dawes (who wrote the original patch in the past months) and to Marc Ordinas i Llopis (who maintained the patch and worked on the Qt port, and who recently joined us at Collabora). A thank you also to Alp Toker and Simon Hausmann who reviewed the patch.

Update: See also Marc’s blog for details.