WebKitGTK+ 1.1.1

After a few months of hard work I’m happy to announce, on behalf of the WebKitGTK+ team, a new release of WebKitGTK+:

http://cafe.minaslivre.org/webkit/webkit-1.1.1.tar.gz

md5sum: d3a5d7233beab310e9d3e5568fae49a1

We are storing the tarballs in a host kindly donated by Gustavo while we work on an official homepage for the project, which hopefully will be done sooner than later. We also plan to release more often from now on, with the next release coming right in time for GNOME 2.26.

The NEWS file for this release, check the documentation for all the details:

================
WebKitGTK+ 1.1.1
================

What’s new in WebKitGTK+ 1.1.1?

– ABI compatibility with 1.0.3 was broken, so you will need to
recompile your application against 1.1.1
– Support for the CURL backend was dropped, libsoup is the only HTTP
backend now.
– webkit_get_default_session, to get the SoupSession used internally
by WebKit.
– ‘create-web-view’ signal, emitted when the creation of a new
window is requested.
– ‘navigation-policy-decision-requested’ signal, emitted when a
navigation to another page is requested.
– ‘mime-type-policy-decision-requested’ signal, emitted each time
WebKit is about to show a URI with a given MIME type.
– Support for the Web Inspector
(see http://webkit.org/blog/197/web-inspector-redesign/)
– HTTP authentication support, with optional gnome-keyring storage.
– New load functions: webkit_web_view_open, webkit_web_view_load_uri
and webkit_web_view_load_request. The old
webkit_web_view_load_string and webkit_web_view_load_html_string
are now deprecated.
– webkit_web_view_reload_bypass_cache
– webkit_web_view_{get,set}_custom_encoding, to override the
encoding of the current page.
– Improved stability and lots of bugfixes.

Posted in General, webkit | Tagged | 20 Comments

Science fiction online

One of the economic and cultural developments I’m more pleased to see happening is that of artists putting some or all of their work online, with the plan or hope of attracting followers and being able to capitalize on them in the future in one way or another. It’s not like giving away free samples is a revolutionary idea, but in an era of adamant (and, IMHO, misguided) defense of “intellectual property” by some sectors it’s certainly refreshing to see some people embracing the wave rather than fighting it.

I’ve always enjoyed science fiction, so in this post I’ll list some great stuff that I’ve found around in the past:

  • Accelerando: by Charles Stross. Follows the story of a dysfunctional family through the coming of a sort of Singularity. I downloaded it in my N810 and read it in a couple of days, and although the pace seems a bit uneven in some places it’s for sure a great journey full of interesting ideas (Matryoshka brains! Turing oracles!). If you like it make sure to buy Glasshouse,  a delightful novel by the same author where the action happens in the same universe.
  • The Metamorphosis of Prime Intellect: by Roger Williams. A post-Singularity novel (by now it might seem I’m kind of obsessed with the topic. Not really. Or rather, I’m obsessed with many other things) that deals masterfully with a classic thought experiment: what does it mean to be human in a world where all your wishes can be fulfilled without pain or struggle? A real page-turner, and it seems a sequel might be published some day. We can only hope.
  • Greg Egan: the left-side of the brain companion to Philip K. Dick. Some of his novels will bend your brain, and some of the ideas he elaborates have literally changed the way I see the world. His homepage is full of technical notes for his work and a collection of free stories, which are a perfect way to get hooked and decide to buy his books (if you want suggestions, my personal favorites are Permutation City and Diaspora).
  • Down and Out in the Magic Kingdom, Eastern Standard Tribe, …: Cory Doctorow might be the most famous science fiction writer publishing some of his works under free licenses, but I must admit I haven’t yet read any of them. Rumour has it they are pretty good, but if you don’t like them you can have your money back.

Well, that’s it. There’s probably more, but I can’t think of any more off the top of my head. If you know of other great stuff published online by its authors please tell us in a comment!

Posted in General | 11 Comments

See no long time

It’s been a while since the last time I blogged. I won’t promise to do it more often from now on though, that way I might save myself from the Ghost of the Internet’s Clichés.

Some of you already know that I quit litl last year, but most of you probably don’t. I left in excellent terms with them, and I still think that what my old colleagues are doing there has the potential to be something, only that now I get to wait and wonder when they’ll release it like everyone else. Fortunately some of the things that we were working on are already public, like gjs, so nobody can say litl is a black hole anymore :).

The most important reason to quit was a desire to spend some time working on some things that had been floating around my mind for a while. They involve Lisp and the fantastic Web technologies, are still in progress and I might have more to say about that in the future (although it’s probably a bit off-topic for the Planet).

Anyway, another thing I’ve been trying to do is to spend more time with Epiphany/WebKit. I’m pretty happy with the progress we have done in the past few months (thanks to all, you know who you are), major pieces are already in or being actively worked on (deep libsoup integration, downloads, http auth, gobject/c dom bindings, a11y, …) and our current hope is to have it ready for general use in time for GNOME 2.28. I’ll make another post soon talking about this a bit more in depth.

Which leads me to the last, but my no means least, point. Since this monday I’ve joined Igalia, part-time, to work on upstream WebKit and Epiphany. I’m quite excited with this great opportunity, not only because I’ve long admired Igalians and the way they work, but also because I’m really looking forward to spend my time trying to improve GNOME‘s platform, where a solid GTK+ port of WebKit could be an important player.

Happy Hacking, and hopefully it won’t be another 8 months before I post again. Ouch, here comes the Ghost of the Clichés…

PS: This should be my first entry on Planet Igalia, hi guys!

Posted in General | 5 Comments

History Meme

Dr. Vollmer's Cut:

$ history | awk ‘{a[$2]++}END{for(i in a){print a[i] ” ” i}}’ | sort -rn | head
1 emacs

Posted in General | 3 Comments

Joining LiTL

Let’s play by the rules:

Who? Havoc and some other guys. And myself. And some other people without a blog (hello jobi).

What? I’m joining LiTL.

Where? Ye Olde London Town.

When? Next week, actually.

Why? To do The Right Thing. Or maybe it was the other way around? For the details you’ll have to wait, but I hope it’ll be worth it; or better yet, you could join the company 🙂

P.S: ¡Feliz Día!

Posted in General | Tagged , , | 5 Comments

Epiphany ♥ WebKit

When I said a few weeks ago that an important announcement would be made about the future of Epiphany some people told me it was really obvious what was coming. Seeing the reaction of some to the now public announcement, it seems there’s still some room for disbelief. Maybe the date didn’t help too much, but hey, the whole point of April the 1st is to make you doubt. If all the news are obviously false it’s not really that much fun.

So, yes:

  • Starting from now Epiphany trunk is WebKit only, and we’ll slowly get rid of the abstraction layer.
  • We aim to release an usable browser for 2.24, but if we can’t make it the 2.22 branch will be released instead. The 2.22 branch will be maintained as long as it’s needed.
  • We have started (thanks Diego!) a TODO list for the WebKit backend. I’ll try to work more on this in the coming days.
  • Help, as usual, is welcome!

I should have blogged about this before, but I spent the whole week abroad working on some world domination stuff. Should blog about that soon too… (guys, nudge nudge, wake up).

Posted in General | 10 Comments

Leaving Nokia

I’ll be leaving Nokia by the end of next. It’s been a sometimes fun, sometimes strange ride, but it’s time to move on to new and bigger (or maybe not so big?) challenges.

Long live to the three-letter toolkit team! (fer, mdk, tko, luc, xan).

 Update:  Now, that’s a coincidence

Posted in General | Tagged , | 4 Comments

Advancements in GTK+-flavored Web Engines

Already back from the Berlin GTK+ Hackfest (managed to not blog even once from there, a bit lame). All the awesomeness that happened has been covered by our fantastic hackers, so I’ll focus an what happened in the ”Web Room”, where hacking on webkit/gtk+ and epiphany with tko, alp and chpe went on all week long.

We did some great advancements that week: we landed the pango font backend, the soup http backend, more progress on the plugin patch (first time I personally see youtube working on webkit/gtk), plans for glib-based unicode management, better windows support for the GTK+ port, a long nice chat with Company about native flash integration with swfdec… we also had some long discusions about the future of Epiphany, and an announcement will be made soon 🙂

By the end of the week I decided to get started with the cookies support for the soup backend. When I had a working parser (based on code from the old gtk-webcore, really nice) I decided to contact Dan Winship to talk about my plans. As it usually happens, he already had most of the work done, which he kindly published on a branch (see the bug). Around this point I got hit by libc ‘happenings‘ in Ubuntu, and I spent most of the remaining hackfest time restoring my laptop.

Anyway, already on lovely Finnish soil and while waiting for a movie in a nice cafeteria near Kamppi I fixed some bugs in the libsoup code for cookies, massaged some APIs and added enough glue in WebKit to get this going:

I Has Cookies

When we finish and commit this and get authentication going (integrated with GNOME Keyring of course!) I think I’ll switch to it as main browser; brave souls from all over are of course welcome to do the same so we can find and fix as many bugs as possible before 2.24. Exciting times ahead!

Posted in General | Tagged , , , , | 5 Comments

The Facts in the Case of Mr. Epifanio Navegared

It’s been almost 5 months since the last time I blogged about Epiphany. Attentive followers may have noticed that there hasn’t been any Epiphany releases in the 2.21.x cycle so far; why? I’m glad you ask!

First, the GtkMozEmbed situation was a bit chaotic, and we were not really sure if we’d manage to have trunk in release quality levels by 2.22. Thankfully it seems the embed code will travel in time a bit, which will allow us to not take any drastic meassure. With that sorted out it seems likely know that Epiphany 2.22 will simply support both Gecko 1.8 and 1.9 through the archane but well known art known as “massive #ifdef mess from Hell”.

Second: WebKit! A lot has happened since July:

  • The embed code went through a massive refactoring: after quite a few late night hacking sessions, tens of thousands of lines of code touched, the final demise of EphyTab and other events, now it’s much easier to implement in a sane way more complete backends for the browser. As a result of this, many previously missing features of the WebKit port started to work with no need of new APIs on the engine side.
  • The Epiphany team has grown a few more wizards: thanks to Cosimo, Cyril, Jan and all the others who have recently helped with code, translations or support.
  • WebKit/GTK+ itself is progressing at an astonishing pace: there is a great team, patches and features flow every day, and the Apple engineers are extremely helpful and supportive. There’s always something to do, so come to and -gtk on FreeNode an join the party. Go WebKit/GTK+ team!

So: 2.21.4 will be released this weekend. Get it, test it, the WebKit backend works now much better than the code we shipped in 2.20.x. 2.22 will be released, as always, to the day; Mozila backend will be as awesome as usual and hopefully WebKit’s will be more or less dogfood-quality by then. But, 2.24? Man. 2.24 is going to be so awesome Jeff Waugh has promised he will personally go to your house and recite “Dónde están mis pantalones” in 25 languages when you download it. Honest.

Posted in General | 5 Comments

The Cyclomatic Horror From Outer Space

I don’t really remember how we got there, but a couple of days ago at the office we ended up talking about the complexity of the codebase we have to deal with. Tommi mentioned the McCabe cyclomatic complexity, “which may be considered a broad measure of soundness and confidence for a program“. According to the Wikipedia article it “directly measures the number of linearly independent paths through a program’s source code“. And there’s this little table, with some pre-defined thresholds:

Cyclomatic
Complexity
Risk
Evaluation
1-10 a simple program, without much
risk
11-20 more complex, moderate risk
21-50 complex, high risk program
greater than 50 untestable program (very high
risk)

Well, fair enough. You always have to be a little skeptic about this kind of data, but it might give you some insights about a codebase. So “apt-get install pmccabe”, a tool to “calculate McCabe cyclomatic complexity or non-commented line counts for C and C++ programs“. The man page says:

The obvious application of pmccabe is illustrated by the following which gives a list of the “top ten” most complex functions:

pmccabe *.c | sort -nr | head -10

Sounds like fun! Let’s run it on the gtk/ directory in gtk+… (drum rolls):

Cyclomatic complexity Lines of code Function name
119 337 gtk_notebook_calculate_tabs_allocation
119 744 gtk_tree_view_bin_expose
89 467 gtk_tree_view_column_cell_process_action
88 545 update_node (in gtkuimanager.c)
68 404 gtk_tree_view_button_press
68 381 gtk_toolbar_size_allocate
64 218 gtk_im_context_simple_filter_keypress
64 230 gtk_tree_view_key_press
59 243 gtk_menu_handle_scrolling
58 175 gtk_clist_motion

Some of the functions are way past the threshold for intractability (and all of them surpass it), and GtkTreeView has 4 of the 10 most complex functions in gtk according to McCabe. I suppose you can extract many lessons from here, but I’ll only give one humble suggestion: we need regression testing for gtk, and we need it yesterday, as it seems that no human being can hack on some parts of gtk without breaking something 🙂

Posted in General | 6 Comments