ECMAScript 5

General 2 Comments

After the discussion on the Seed proposal thread about what flavor of JavaScript should GNOME as a project use, I made a point of figuring out what’s the current status on the ECMAScript standarization saga.

This is old news by now, but some of you might not know that the ECMA committe responsible for JavaScript decided last year to pretty much do a full reset and try to move forward step by step instead of doing everything and the kitchen sink in one go; that is, instead of the ES4 revolution we would have the ES3.1 spring cleanup. Well, 9 months later and, ironies of life, the next standard will be called ES5 instead of ES3.1 (although it’s still an incremental improvement), and the final draft is already available (PDF).

So, what’s in it? These google slides do a pretty good job at introducing the changes, but I’ll try to do a warp-speed summary here:

  • A new ’strict mode’ to ease robust and defensive programming. You can look up the details in the slides, but a single feature would have been worth it for me back in my litl days: failed assignments throw an exception in strict mode.
  • Function.prototype.bind to fix one of the first WTF moments one has when learning JavaScript: closures do not capture ‘this’.
  • Higher order array methods: map, every, some, filter, reduce… all are there.
  • Built-in JSON implementation.
  • getter/setter properties, plus syntax for fine grained control of properties access.

From my limited experience with JavaScript I think this fixes some obvious issues in the language, while others are in the backburner for future revisions (lexical scope, const, destructuring assignment, …), so I’d say things are looking pretty good.

Of course, the bigger issue is: should we require the JavaScript in GNOME to follow ECMA standards (ES3 now, ES5 and following in the future) in order to be able to use any compliant implementation, or should module owners be allowed to use vendor-specific extensions if they think it’s in their benefit to do so? I guess that’s up for debate, but it seems to me that we live in too interesting times to paint ourselves in a corner with a given implementation at this point.

Two releases for the price of one

General, webkit 5 Comments

I didn’t blog about the 1.1.5 release (although Gustavo did, much better than I do as usual), so now that 1.1.6 is out I’ll make a 2×1 post with the highlights.

  • gtk-doc support was integrated into the build system. There’s still a few rough edges, but hopefully it won’t be too long now before the full API documentation is available at, say, library.gnome.org.
  • l10n support. All text in warnings, dialogs and GObject properties is marked for translation using gettext, and everybody is welcome to contribute new translations!
  • A full-fledged printing API using GTK+’s GtkPrintOperation.
  • Spellchecking support through Enchant.
  • Error reporting. A new signal, WebKitWebView::load-error will be emitted when there’s an error during the page load. You can do nothing, and a default error page will be shown, or handle the signal yourself and show some customized error UI.
  • Caret browsing mode has been added. It still has some bugs and missing features (notably, interaction with forms is kind of shaky), but I think it’s quite on par with the support in Gecko at this point and not bad for the first stepping stone.
  • After the a11y hackfest and the great help from Willie and Joanmarie, a lot of improvements to the ATK support have landed. There’s a lot to cover here, but same as with caret mode we’ll keep improving with each release.
  • And as usual, lots of small bugfixes all over the place.

That’s quite a lot of stuff don’t you think? I think we are making great progress, with contributions from the whole team, so let’s keep rocking!

WebKitGTK+ a11y (virtual) hackfest

General, webkit 1 Comment

Interested in WebKitGTK+, a11y or both? This Thursday (April 9th 2009), from 14:00 UTC onwards, we’ll hold a virtual a11y hackfest on #webkit-gtk at irc.freenode.net. Willie Walker from Sun will join us, and we’ll try to move forward and set up a plan to fix this last blocker in the WebKitGTK+ integration into GNOME saga. See you there!

WebKitGTK+ 1.1.4

General, webkit 10 Comments

So, another two weeks, another release. I suppose nobody would have noticed, but we are releasing on Mondays instead of Sundays because we figured it was better to have reviewers around for the inevitable last minute commits. This time we helped Darin to fix a nasty regression on IRC which would have been a shame to ship with, so yeah, it happened again.

The big visible things on this release are preliminary support for the HTML5 media tags (it works, I saw the Transformers trailer with it!), and a new signal, WebKitWebView::new-window-policy-decision-requested, which gives us the means to properly handle, at last, links with target=_blank (already available in Epiphany trunk). As usual there’s a bunch of bugfixes and other improvements, the complete NEWS file is:

================
WebKitGTK+ 1.1.4
================

What’s new in WebKitGTK+ 1.1.4?

- WebKitWebView gained uri and title properties, deprecating the
usage of the title-changed signal.
- Basic functionality for HTML5 media tags has been achieved; there
are many unimplented methods, and rough edges still, though.
- Font rendering received quite some love, with layouting, and
memory handling fixes, and at least one less crash.
- A new signal, new-window-policy-decision-requested, has been added
to WebKitWebView, that makes it possible for the application to
correctly decide what to do when new windows are requested.
- A bug that made tooltips for consecutive links not update their
location was fixed.
- Several improvements were made to the HTTP backend, including
making it more robust when talking to servers which send bad
Content-Type headers.
- WebKitWebView now uses the GtkBinding system to handle key events,
which means that the user is now able to customize the keys used
for various operations, and that many subtle bugs have been fixed.

Good news, everyone

General, webkit 16 Comments

Update: in good old brown paper-bag bug tradition we messed up the soversion calculation in 1.1.2, so please use the new and improved 1.1.3. Sorry for the trouble :)

As promised, just before GNOME 2.26, two new releases.

First, WebKitGTK+ 1.1.2, now from our brand new website (created by Christian Dywan, kindly hosted by Igalia). It brings two weeks of  improvements, this is the NEWS file:

- Added support for downloads: a new signal, ‘download-requested’,
will be emitted by WebKit when a download is requested. On top of
that, the download process has been encapsulated in a new object,
WebKitDownload, which allows the user to control it or to start
new downloads from the client side.
- Added webkit_web_view_get_encoding to get the automatic encoding
of the current page.
- Added GObject properties for ‘encoding’ and ‘custom-encoding’.
- Added ‘javascript-profiling-enabled’ property to the WebInspector,
which allows to enable and disable the profiling functionality.
- Added API to create and add history items to WebKit’s history.
- Improved debugging support with WEBKIT_DEBUG environment
variable. Most of the settings will only give useful output for
debug builds, but WEBKIT_DEBUG=Network will log all HTTP traffic
form libsoup to console. See WebCore/platform/gtk/LoggingGtk.cpp
for all the options available.
- Lots of bugfixes.

Get it in our download page!

One last thing about WebKitGTK+: we plan to release one *unstable* 1.1.x version every two weeks until GNOME 2.28, where we’ll release a new stable 1.2.0 version (basically, we follow GNOME/Kernel versioning system). As in GTK+, the stability of newly introduced API during the development cycle is not guaranteed; we won’t break it willy-nilly, but we’ll do it if we feel we have to in order to get the best possible API.

Second, the first Epiphany release of the WebKit era: Epiphany 2.27.0. This is the first unstable release of the 2.27.x cycle, and the goal is to get as many people as possible testing it to have a solid 2.28.

What’s in it?

We have some new pretty eye candy, like the new progress-in-entry (thanks to the GTK+ guys for the functionality and to Benjamin Berg for the emergency theming fix!):

progress-in-entry1

We suppor the WebKit WebInspector, with similar functionality to the Firefox Firebug extension:

inspector

We are also fixing “historical” bugs, like an option to force all windows to be opened in a tab (gconf key /apps/epiphany/general/open_new_windows_in_tab), or storing all auth data in gnome-keyring (already working for HTTP auth if you pass –enable-gnomekeyring to WebKitGTK+, storing auth data from forms is still missing).

We have done a lot since those early snapshots that were shipped with 2.22.x and 2.24.x (until we removed them because people thought that was the state-of-the-art webkit backend, which has always been in trunk and has never been released until now), and the browser is well into ‘dogfoodable’ territory, so I encourage everyone interested to give this a try and report all issues.

Thanks to all the contributors to WebKit and all the other modules we use, it’s a pleasure to be one little cog in the machine :)

WebKitGTK+ 1.1.1

General, webkit 20 Comments

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.

Science fiction online

General 11 Comments

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!

See no long time

General 5 Comments

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!

History Meme

General 3 Comments

Dr. Vollmer’s Cut:

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

Joining LiTL

General 5 Comments

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!

« Previous Entries