GNOME 3.4 is around the corner, and with it a new version of its little web browser that could. This is for sure one of the most action packed releases in a long time, so let’s do a recap of the last 6 months of development.
The most obvious change at first glance is the refreshed UI, which was already covered in some detail in this blog post. Thanks to the hard work of the GNOME Design Team, the GNOME platform hackers and the Epiphany team we’ve got ourselves a completely new toolbar layout with elegant widgets (I particularly like the linked-style back/forward buttons), support for the new Shell application menu, the demise of our menubar and the debut of our ‘super-menu’ holding the less frequently used page specific actions. Not only the browser works better than ever, it now looks better than ever too.
We have been talking about rewriting our history backend for many years now; to give just one example, as far back as 2007 we already had a Summer of Code project to try to fix some of its shortcomings, which were many. The old backend served us well for almost a decade, but it was showing its age: a difficult to understand legacy codebase, a bus factor of 1 and poorly scalable architecture that made storing more than a couple of weeks of browsing history a titanic task. Last year a crack team at Igalia was put together to fix this once and for all. Enter the new age:
- Drop our XML based storage in favor of good ol’ SQLite. Many options were considered other than SQLite, and we could yet again change how things are done internally in the short term, but for the first step we decided to settle on a simple, trusted and performing technology.
- Never block the UI. All actual history accesses are done in a special service thread which communicates its results when they are ready to the user interface. This way things will remain responsive and snappy, no matter how complex your queries are or how full to the brim your history is of non-stop reddit browsing.
- Test it! User data is the most important thing the application handles, and losing your browsing history is the modern day lobotomy. Our new backend is thoroughly tested through unit tests, so your data is in good hands with us.
Thanks to the new backend we can now provide infinite history storage and instantaneous non-blocking search both in the URL entry and the history window, both long awaited features. Other than that, for 3.4 we tried to keep the UI as it was: one thing at a time. For 3.6, though, now that the we are beautiful on the inside, expect some surprises in how you interact with your history data.
As with every release, on time, we ship with the all new WebKitGTK+ 1.8. As usual there are way too many thing to list and they deserves their own blog post, but you can look forward to: the debut of the WebKit2 API (still experimental but with some modules already using it, like devhelp), WebGL, Accelerated Compositing, HTML5 History API, support for the last version of WebSockets, WebAudio, a rewritten favicon database class and loads and loads of bugfixes and improvements.
Less is more
A constant thought in my mind as a module maintainer is to focus our efforts in delivering the best experience we can given our available resources. I believe as a project, both GNOME and Epiphany, we are now facing the difficult choices successful software must go through at some point: stop trying to be everything for everybody, decide what you want to do and for whom, and try to do that really well.
Our new ongoing redesign is a great step in that direction, and I’m glad that we are finally focusing on what I think really matters. I believe 3.4 is our best release ever, with both cool new features and fixes for old major deficiencies, and things will only get better from here. And, a favorite pet peeve of mine, we did all that while massively cleaning up our codebase to make it cleaner and more hackable, a task without much glamour but a big payoff. Our last release, ignoring translations, icons and help files, comes with 214 modified files, 14,959 insertions and 24,341 deletions. For those keeping the score at home, that’s almost 10,000 lines less of code to maintain, read, patch and load!
Thanks to all the GNOME contributors that made possible this release, but a special thanks must go to Igalia for its continued support for Epiphany. We are not only the best WebKit consultancy around, but we are also putting our money where our mouth is by supporting web technologies in GNOME through its browser and beyond.
Work on 3.6 is already underway, so expect a lot more from your favorite webkittens 6 months from now. Until then, you can follow us on IRC, our mailing list, identi.ca, twitter, facebook or our new project page (wow!). Happy hacking!