GUADEC, WebKit and bikes

Published / by mario

I'm going to GUADECIt seems this year GUADEC is going to be pretty close to my place and so I will surely attend, but this time I won’t go by plane but by bike, which since some months ago has become my main vehicle for moving around the beautiful city where I live in: A Coruña.

Also, besides hanging around the venue and trying to help as much as possible as the local I am, I’ll be talking about WebKitGTK+ in the afternoon on Thursday 26th, so feel free to come round the room if you feel curious about the current status of the whole thing and the current plans for the short and medium term, which are mostly focused around WebKit2 and the roadmap we’re already following.

You probably already read some news related to this coming from my mates in the Igalia WebKit team, (like the improvements in Accelerated Compositing or the migration of our handsome browser Epiphany to using WebKit2), yet I will try to deliver an interesting talk to y’all. I just hope I’ll be able to do it (but please forgive me if I don’t).

So that’s it. As usual, just feel free to talk me if you see me around if you want. I’ll basically be around the venue most of the time during GUADEC, and will attend a11y and WebKitGTK+ BoFs on the 30th and 31st, so I’d say it will be pretty easy to find me.

WebKit Watcher 0.2 released

Published / by mario / 2 Comments on WebKit Watcher 0.2 released

Some time ago I wrote a (very!) small android application to scratch an itch I had: being able to easily check the status of WebKit buildbots right from my phone, which turned out to be quite useful in some scenarios.

And no, I’m not the kind of guy that does the “Land Patch / Goes Home” thing, but sometimes you see yourself in the situation of having to leave your workplace before than expected and after having committed certain kind of patches a while ago. And in such a situation WebKit Watcher has proved to be a helpful tool many times, at least to me.

So, what’s new in this 0.2 release? Not many bells and whistles, to be honest, I just scratched a couple of small itches more I felt today, while going back to working as gardener for the WebKitGTK+ port. Basically:

  • Replaced the main view showing only the core bots with a (static) list of the different platforms, so you know can  now check the results for all the bots of a specific platform. Selecting a platform will take you to the typical view showing the results for every build bot associated to it.
  • Added possibility of checking the results for all the bots in a single list view (‘All’ item in the main view), as previously only those “marked” as ‘core bots’ were shown in the application. Now you can check the results of all the 43 bots, in case you want to.
  • Removed unnecessary permission CHANGE_NETWORK_STATE, as I personally hate apps asking me for more permissions than those strictly needed. I’m still wondering why I added that in the first place…

And now, some screenshots that will make your eyes bleed because of the ‘design’ of this app:

  

I told you it was so beautiful!

By the way, you can grab it and install this app through several ways:

Frogr 0.7 released

Published / by mario

As you might already know Flickr has added support for OAuth a while ago, which is meant to be the obvious replacement to the old Flickr auth API that has been available since a long long time ago, which has been used by many applications our there, like frogr. But the important point here for apps using the old auth method is that it won’t be longer available after July 31st, which means they should get updated if they want to keep working as so far.

Frogr 0.7

So, this is the main point of this release: to update the internal implementation of the Flickr REST API in frogr (which, ideally, will be released independently as a library at some point) to use OAuth instead of the old authentication API.

Additionally, in order to make things easier for users of older versions, the application will take care of exchanging the authentication token from the old system to the new ones used by the OAuth API. If you want to know more details about this, check the related API. For the rest of you, you shouldn’t notice anything the first time you run this new release.

Still, some other things were included in this new release that are worth mentioning:

  • Ability to import tags already present in pictures  (e.g. as set by f-spot or shotwell).
  • Allow users deciding, right from frogr and on a picture-by-picture basis, whether to set the geolocation information for pictures when uploading them to Flickr.
  • New tags are added to the auto-completion without having to upload anything first.
  • Allow using a dark version of your theme if available (e.g. Adwaita).
  • Some redesign of the menu bar, thinking of a future migration to GMenu.
  • Added menu accelerators for the most common operations.
  • As usual, bugfixes, cleanups… that kind of stuff.

Also, you can check the announcement mail or the NEWS file if you want for more detail about this new release, as well as the website of the project for additional information, such as knowing about ways of collaborating or how to get frogr installed on your system.

I think that’s it. Enjoy!

Back to FOSDEM

Published / by mario

So it seems I’m going to FOSDEM this year (yay!), together with a bunch of other Igalians who will be attending as well, coming from different places from across the globe (well, mainly from Europe this time).

I know some people will probably disagree with me on this, but for me FOSDEM is one of the greatest events of this kind, and so I’m quite happy to go there this time, specially after not being able to attend last year due to some unexpected (and unavoidable) personal matters.

Opposite to other occasions, this time I’ll be there not only as an attendant but also as an speaker, talking about WebKitGTK+, its status and the roadmap of the project towards WebKit2 (the split process model “flavour” of WebKit), together with my mate Philippe, on Sunday afternoon. Thus, for the first time ever, nobody will be able to accuse me of going there just because of the beer event, which wouldn’t be true anyway.

For the impatient ones, the talk will be mainly about reporting on the work done during the last months in “WebKitGTK+ land“, as well as on the stuff that is already planned for the upcoming releases. Good examples of those would be, for instance, the ongoing effort to add support for Accelerated Compositing, or just the new features related to WebKit2GTK+ such as, of course, the solution for enabling accessibility support there. Ah! And of course, we’ll try to run some demos there too… fingers crossed!

Besides, I’m of course looking forward to meeting some people I haven’t seen for a while now (haven’t attended to the latest Desktop Summit either, due to very good reasons too), so if you see me around and want to chat and/or meet for a while, just let me know. I must look shy, but it’s usually a matter of minutes (seconds?) for my shyness to go away…

So that’s it. Just a final line to say “thanks” to my company for fully sponsoring this thing.

See you in Brussels!

Accessibility support in WebKit2GTK+

Published / by mario / 1 Comment on Accessibility support in WebKit2GTK+

As Piñeiro already mentioned in some posts, last week a bunch of hackers attended the ATK/AT-SPI Hackfest 2012 here at the Igalia offices, in the lovely city of Coruña.

As the guy working on accessibility support for WebKitGTK+, I attended the hackfest to join some other great people representing different projects, such as Mozilla, Orca, AT-SPI, ATK, GTK+ and Qt. So, apart from helping with some “local” organizational details of the hackfest and taking some pictures, I spent some time hacking in WebKitGTK+‘s accessibility code and participating in some discussions.

And from that dedication I managed to achieve some interesting things too, being my favorite ones a big refactoring of the a11y code in WebCore (so it’s now better organized and hence more readable and easy to hack on) and pushing my patch for enabling accessibility support in WebKit2GTK+, after going through a meticulous process of review (see the related WK bug), which started with the patch I wrote and attached back when attending to the WebKitGTK+ hackfest, as I mentioned in my previous entry in this blog.

Yeah, I know that some weeks have already passed since then and so perhaps you’re thinking this could have been done faster… but I’ve spent some weeks on holidays in Barcelona in December (pictures here!) and so I wouldn’t have much time before January to devote to this task. However, the patch got integrated faster than what I would expect when I proposed the first version of it, so I’m quite satisfied and happy anyway just by being able to announce this at this moment. Hope you share my joy :-)

So, what does this mean from the point of view of accessibility in GNOME? Well, that’s an easy question to answer: from now on, every browser that uses WebKit2GTK+ will be as much accessible as those using the previous version of WebKitGTK+, and this is definitely a good thing. Of course, I’m certain there will be bugs in this specific part that will need fixing (as it always happens), but for the time being this achievement means “yet another thing less” preventing us from pushing for upgrading some applications to switch to WebKit2GTK+, such as devhelp (some ongoing work already done, as my mate Carlos announced yesterday), yelpliferea… and the mighty Epiphany browser, which is rocking more and more ech day that goes by.

Last, I’d like to share with you an screenshot showing this new stuff, but as I am a little bit tired of always using Minibrowser (that small browser we use for testing WebKit2), so I decided to try instead that new branch Carlos recently pushed for devhelp, so you could check that what I mentioned before is actually true.

So here you have it (along with a couple of additions done with Gimp):

As you can see, devhelp is running and Accerciser is showing the full hierarchy of accessible objects associated to the application, starting in the UI process (GTK+ world) and continuing in the Web process, where all the accessible objects from the WebKitGTK+ world are being exposed. As I explained in a previous post, the magic making possible the connection between the two process is done by means of the AtkSocket and the AtkPlug classes, also represented in the screenshot attached above.

So, that’s it.

WebKitGTK+ Hackfest: WK2, a11y and Ephiphany’s ad blocker extension

Published / by mario

Some posts have been already published about this during the last days, but just in case you missed them I will mention it here again: Last week, a bunch of hackers gathered together in the Igalia office in Coruña for the third edition of the WebKitGTK+ hackfest , and a lot of work has been done, as Juanjo has already summarized in his “WebKitGTK+ hackfest wrap up” post.

WebKitGTK+ 2011 Hackfest

So, as everything has been already said from a more general perspective, I’d like to write my very personal wrap up here, focused on the tasks that I’ve been working on, which can be summarized in three:

  • Enabling accessibility support in WebKit2GTK+.
  • Rewrite of the Ad Blocker extension for Epiphany.
  • Bug fixing in WebKitGTK+‘s accessibility related code.

Enabling accessibility support in WebKit2GTK+

This has been, by far, the task I devoted most of the time to during the hackfest, mainly focused on writing a ‘feature complete’ patch that could be applied upstream, and thus that could be reviewed in first place. But, what do I mean by “a ‘feature complete’ patch”? Well, perhaps you are already aware of the initial results already got in the WebKit2GTK+ a11y realm, but those results were obtained with a patch still in a very early state and, among other things, lacking a very important requirement for getting it accepted upstream: tests.

Fortunately, I can now proudly say that I managed to find a good way to write those tests (specially tricky due to the multiprocess architecture of WebKit2) and that there shouldn’t be any problem either with getting them work properly in the buildbots, which was something I was quite concerned about by the begining of the week, to be honest.

Besides the tests, the other obvious problem was that such a patch was not widely tested yet with the Orca screen reader (I use Accerciser for development purposes most of the time), and that would for sure unveil issues that would need fixing before being really able to propose a patch for reviewing, and so that was the other aspect where I put the spotlight during this week.

And regarding to this, I have to say that Joanmarie Diggs was working tirelessly by testing Orca with my WebKit2GTK+ a11y patch, reporting bugs, and helping me a lot to prioritize the tasks that would need to be done. From all those, I mainly worked this week in the following ones:

  • Emitting the AtkDocument’s signals (‘load-complete’, ‘load-stopped’ and ‘reload’), which was working only in WebKitGTK+ but not in WebKit2GTK+. See the bug report and the patch (still pending on review) for this issue in bug 73750. Also, I reported and worked for a while in another bug related to this, which is now already fixed upstream (see bug 73746). Yay!
  • Ensure that the accessibility hierarchy doesn’t break when (re)loading, which was causing that Orca stopped speaking unless it “manually” drilled down the full a11y hierarchy after the (re)load. I finally fixed that issue yesterday and integrated it in the patch for enabling a11y support in WebKit2GTK+, now already attached and pending on review along with bug 72589.

So, the conclusion of this part would be that we have now a patch in WebKit’s bugzilla (see bug 72589) that, once it’s approved, would enable accessibility in WebKit2GTK+ once and for all. Of course, this will probably take some time before it gets accepted upstream, but it’s yet another nice milestone in my opinion, and I personally hope it would happen on time for GNOME 3.4. Time will tell, though.

Rewrite of the Ad Blocker extension for Epiphany

This was another thing I’ve been randomly working on since some time ago (whenever “spare” time permitted), and that I was able to advance quite a lot right after coming back from the parental leave I enjoyed on September (did I say my second child was born on August the 30th?). However, the patch was not finished by any means, and some issues kindly pointed by Xan in bugzilla needed fixing before being able to say aloud something like “hey, the new ad blocker is now in town!”.

Thus, we thought it would be good to devote some time during the hackfest to try to close this task too, so we did: Xan reviewed the new version of the patch (addressing the issues he previously pointed out), I made some last changes based on that new feedback from him and we finally pushed it to the repository, replacing the old ad blocker extension with this new one, which is based in Midori‘s ad blocker and so is compatible with Adblock Plus filters, which work very well IMHO.

So, this basically means that the new ad blocker extension will be present from Epiphany 3.4 on. Check out the related bug in GNOME‘s bugzilla: bug 660154

Bug fixing in WebKitGTK+’s accessibility related code

Besides working in the WebKit2GTK+ a11y realm and on finishing the new ad blocker extension, I’ve also spent some time (although not as much as I would have wanted) fixing regressions in WebKitGTK+‘s a11y code as reported by Joanie (basically bug 72804 and bug 72830).

Compared to the other two points, this has been of course a pretty small contribution, but worth doing anyway since they were very important for Orca to work properly with WebKitGTK+ based browsers (special mention to bug 72830 here).

Conclusion

From the work-related point of view, I’d say this hackfest has been highly productive in general, as we achieved many goals which, as Juanjo pointed out in his wrap up post, “were not mainly about fixing critical and blocker bugs and implementing basic missing features, but about more ambitious and challenging” ones. As for me, I’m pretty happy with the results I got, specially with the WK2 a11y patch, which has now a much better shape, and so I hope we can integrate it soon upstream.

And from a more personal point of view, I’d like to say I had a great time (again!) this year in the hackfest, and not only because of the achiements got, but also because I had quite a lot of fun as well, because I met new people and because I felt, more than ever, part of a community and a project which I love.

To finish, I’d just like to mention that I’ve been taking some pictures during the hackfest, which you can check out in this photo set in flickr (pictures uploaded with Frogr, of course!). Nayan has also taken some pictures as well, check them out here.

WebKitGTK+ 2011 Hackfest (The End)

Of course, thanks a lot to the sponsors that made this possible: Collabora, Motorola, Igalia and the always awesome GNOME Foundation. I hope we’ll be able to repeat it next year, since this hackfest it’s only getting more and more awesome every time it happens.

Orca and WebKit2GTK+: initial results

Published / by mario

Last May, I wrote about some initial tests I did back then with AtkSocket and AtkPlug, just to learn a bit about that API that allows connecting accessibility trees in different processes, thanks to the magic of the ATK bridge. I did that in order to prepare for the work that would probably be needed when adding accessibility support in WebKit2GTK+, so browsers using the new version of this web engine could be at least as much accessible as those using the single-process WebKitGTK+ library. Looking back, I think that the effort has definitely payed off…

However, because of one reason or another (and not necessarily work-related), I was not able to devote much time to keep working on this until some weeks ago, but fortunately I’m now again working on this as my primary task in Igalia, as part of our WebKit team, so I expect to have some nice results soon, hopefully also in the form of integrated patches upstream.

And talking about results, I can’t avoid sharing the following at this very same moment, which is actually the trigger that made me write this post: today I was able to make Orca read, for the very first time, web content rendered through WebKit2GTK’s MiniBrowser, which has been not an easy task since the multiprocess architecture of WebKit2 made it a little bit challenging, to say the least.

Of  course there’s still much to do in this regard, so do not think of the current status of the task as it was nearly finished or anything… but still I thought it was a nice milestone to share with the world, and what a better way to do it than using a video for that. After all, Orca‘s main job is about speaking, right?. So here it is:

Orca and WebKit2GTK+: initial results (in Vimeo)

By the way, I’d like to make the most of this post by saying I’m really proud and happy to have Joanmarie Diggs aboard in Igalia for a few weeks now, who contributed a lot to making possible that I was writing this post today. Thanks , Joanie!

Frogr 0.6.1 (bugfixing) release

Published / by mario / 3 Comments on Frogr 0.6.1 (bugfixing) release

Shit happens in many ways, and sometimes that means you release an application with some bugs you just can’t stand and need to roll out a bugfixing release as soon as possible. Does this sound familiar to you? :)

So that’s why this new release of frogr, just one week after the 0.6 version had been published, has arrived, taking care exclusively of fixing the following problems, as stated in the NEWS file:

  • Fix memory leaks, the most important one happening in the editing details dialog.
  • Problems using combo boxes with versions of GTK prior to 2.24.
  • Fixed problems authorizing frogr on the MacOSX version.

From those above, patches for some them were already included in the debian packages from frogr’s Ubuntu PPA and in the package for the Mac, but the most important ones -the leaks- were not, so that’s why I decided to roll this new version out.

So that’s all, if you were already an user of frogr, go and grab it through the usual ways.

Frogr 0.6 released

Published / by mario / 8 Comments on Frogr 0.6 released

After some changes here and there frogr 0.6 is finally out.

Frogr 0.6 running in GNOME 3

Besides the usual bugfixing work, the main new features on this release are:

  • Integration with the GNOME general proxy settings (optional).
  • Open pictures in the default image viewer  from the details dialog and the main view.
  • Allow users to specify the license to be set for the pictures.
  • A new User Manual, under “Help > Contents”.
  • Some UI improvements.

As usual, you can get frogr through different ways: you can grab the source code from its git repository or via the xz and bzip2 tarballs, specific packages for Fedora or for Ubuntu (ranging from Karmic to Oneiric) and even a version for MacOSX, if you dare to use it.

By the way, at the moment frogr is already being packaged in some distros (see this) and others might follow, so perhaps it could be that you already were able to install it by just using your favorite package manager with the standard repos. Otherwise, it might be just a matter of time, I guess…

For more information about the project and also how to contribute, check out its web site.

Last, but not least, I’d like to make an special mention here to the awesome Quinn Dombrowski, who very well could be the “most passionate frogr user I’ve ever known” and who was kind enough to design, handcraft and send -from Chicago to Spain- a stuffed frogr mascot plus a beautiful vest for my son (which design comes also with its own incredible story), as a sign of gratitude for writing this tiny app. I’m still shocked about it, see what I’m talking about:

Frogr mascot Onfim vest

If you want to see more pictures you can check my set in flickr, although I warn you these two ones taken by the artist are way better than mine :-)

Seriously Quinn… and yet once again: Thank you!

Frogr 0.5 released

Published / by mario / 6 Comments on Frogr 0.5 released

Now announcing that the new release of frogr is finally out.

This time, I’m afraid you won’t find huge changes in the application, but a bunch of small improvements instead, in the way of subtle -yet handy- new features, bug fixes and new and uptaded translations mainly. Still, I can mention some of the new small features that I specially like, since I use it a lot:

  • Uploading pictures stored in remote machines via well-known protocols like smb, ssh, ftp… well anything supported by GVFS, basically.
  • Sort pictures in the interface by title and date taken (and keep the pictures sorted as you add more pictures!).
  • Allow disabling tags autocompletion (seems to slow frogr down when you have thousands of tags).
  • Tooltips with basic info about the pictures in the icon view (title, size, date taken).
  • Show the total amount of data to be uploaded in the status bar.
  • Allow filling the details for pictures right from the photoset details, when creating a new one.
  • Correct picture orientation in the icon view, if needed (rotation).
  • Support both for Gtk+2 and Gtk+3 (now this is the default toolkit for building).
  • Support for generating MacOSX packages, thanks to the GTK-OSX project.
  • As usual, several other bug fixes, improvements and nitpicky stuff.

As usual, you can get it through different ways:

[Update 31/05/2011]: If you have already installed frogr 0.5 for Ubuntu from my PPA or from the pre-compiled packages, please do upgrade to the latest version of the Ubuntu packages as soon as possible, as available in my PPA. If you already have the PPA configured in your system, you can upgrade just frogr by simply doing this:

sudo apt-get update && sudo install frogr

There was a problem with the generation of the previous version of the packages for Ubuntu (files being installed under /tmp/frogr, instead of /usr/share) and all of them are broken and need to be updated. Sorry for the hassle.

If you want to contribute, remember you can do it by proposing ideas, translatingcodingdiscussing or filing and/or fixing bugs.

Also if you want to see frogr packaged for your favourite distro and can help with that (maybe you’re a packager or know better than me the required steps for that), that would be awesome. At the moment only Debian has packaged it so far that I know of (thanks Berto!), but I would love to see it also in other distros (specially in Fedora, which is what I currently use) so more people can use it without having to use either the Frogr PPA or the homegrown packages I usually prepare with each release.

For more information, just check out its web site. Here you have a screenshot of how frogr 0.5 looks in the awesome GNOME 3 in my Fedora box:

Frogr 0.5 running in GNOME 3

An unexpected e-mail

Published / by mario

Today, while at the ATK/AT-SPI hackfest, I received a mail in my INBOX from a well known guy from the GNOME community stating just the following:

Don't know if you read Hackers news, but this one is pretty nice:
http://news.ycombinator.com/item?id=2532790
--
Regards

So I followed the link and I found a nice thread titled “Love in GIT” where people were commenting about something which remind me of one of the last commits I did in frogr, which became my favourite one so far in the project, by the way.

But the big surprise for me came when I realized that the thread was actually about the commit I innocently made last week, when I realized that the so-much-important THANKS file was outdated since almost one year ago, right when I got married, so I decided to update it. Then I understood that there was actually a good reason for the thread to remind me of that change… Yes, I know, sometimes I’m “a little bit too slow” :-)

So I’d just like to publicly say thanks to the misterious-but-well-known-hacker that sent me the e-mail for making me draw a big smile on my face, and to the people commenting in that thread for the so nice (and funny… “make babies”??) messages posted in there.

Thanks!

Update [2011/05/12]: Now it seems the whole thing hit LWN… hilarious!

WebKit Contributors Meeting, sockets & plugs

Published / by mario / 1 Comment on WebKit Contributors Meeting, sockets & plugs

Last week some of the members of the Igalia WebKit team,  attended to the second edition of the WebKit Contributors Meeting in Cupertino, California, in order to gather round with other WebKit contributors to discuss and work around our favorite web engine, away from IRC and with a more personal and “human” touch.

WebKit Contributors Meeting '11 - group photo

As for me, it was the first time I attended this unconference and I have to say it was a great experience overall, even if accessibility (the field I usually work on through the GTK port of WebKit) was not precisely a hot topic there. But in the other hand, I managed to put some faces to people I just knew from IRC, attended to several interesting discussions and sessions, did some actual work ™ and met Chris Fleizach, the guy from Apple involved in accessibility for the Mac port, who attended the meeting on Tuesday morning and discussed with me some interesting topics, mainly about the implementation of the accessibility support in the Mac port of WebKit2.

For those of you that are not up to date with what WebKit2 means and what’s the current state of the whole thing, I’d recommend you to take a look to the WebKit2 wiki, although I can already advance you that one of the main features (if not the main one) of WebKit2 is the new multi-process architecture, which will go bundled right along with the engine, instead of doing the split in the final application, like Google Chrome does now with WebKit1 (see the wiki for more details, and some nice diagrams too, like the following one).

WebKit2 multi-process architecture

The problem however, from the accessibility point of view, is how to expose such a new architecture to Assistive Technologies (ATs) while, at the same time, having those ATs seeing just one process (the UI process), regardless of the different processes that would be running on each of the tabs (the Web proceses). In other words, how to “hide” to the ATs that they are extracting accessibility related information from a multi-process based browser, so they still keep the illusion of having only one application exposing accessibility objects, as it used to be so far.

Talking to Chris about how they implemented this in the Mac port, he told me they basically needed to make up a way to transparently connect the UI process and the Web Process, so navigation between the root accessibility object in the Web Process and the “leaf” accessibility object in the UI process were done in a seamless way, through a mechanism that would basically allow bidirectional communication in the same way it used to be when there was just one process running. This makes a lot of sense, if you ask me, since you “just” (saying it as if it were not a complex task, even though it actually is) add this mechanism to WebKit2 accessibility code and you’ll automagically get your ATs working as they used to work, without any other changes needed from their side.

However, when it comes to ATK/AT-SPI, which is what we currently use in GNOME to expose accessible objects from applications to ATs, it looks like such a mechanism (or something pretty similar) is already available by means of the AtkSocket and the AtkPlug classes, both subclasses of AtkObject, which basically act as a bridge that allows to connect two AtkObject‘s so the children of one of those (the Plug) are exposed as children of the other one (the Socket), no matter they’re in the same process or in different ones. And this, unless I’m missing something, is exactly what we’d need in WebKit2, probably along with some other things and tweaks that I just can’t think of at this moment. But at least is definitely a very good start point, IMHO.

But… how to communicate those sockets and plugs if they are in different processes? You might be wondering… Well, if you are using the D-Bus implementation of AT-SPI, also known as AT-SPI2, the needed bits for that (the implementation for the atk_socket_embed() and atk_plug_get_id() functions) are already implemented by the ATK bridge (at-spi2-atk), so the only thing you’ll need to do is to provide the remaining implementation of the AtkSocket and AtkPlug classes, register those new AtkObject‘s as the right accessible objects for your widgets (or whatever your “normal” objects are) and to use the ID that at-spi2-atk provides for the AtkPlug object to connect from the AtkSocket object… and you’re done.

However, I have to say that the documentation I’ve found so far about AtkSocket and AtkPlug is not precisely very detailed, so I basically ended up looking directly at the code and trying to write myself a small example to better understand things. And at this point, I asked in the #a11y channel in GIMPNet and it was Mike Gorse who kindly handed me out a nice tarball with an example they had written in C#, which was exactly what I was looking for. Yay! Thanks, Mike!

However, I’d be more interested in a plain C, GObject based, implementation of that example which would serve me both to better understand how it works and to use it as the base for further tests in WebKitGTK, so I went ahead and wrote it, and this is how the results look now, as seen through Accerciser‘s eyes:

AtkSocket / AtkPlug example in action

As you can see, there are two processes running, ta-socket and ta-plug, and in ta-socket we have an AtkObject named “The Socket” which is exposing, as his only child, the whole subtree present in the other process ta-plug, starting in another AtkObject named “The Plug”… which is exactly, although of course at a much smaller dimension, what I think we would like to see happening in the accessibility tree of any WebKitGTK based application in the future, once that WebKit2 is mature enough to replace WebKit1.

Obviously, this shouldn’t be taken as a “we’re done with WebKitGTK/WebKit2 when it comes to a11y” comment or the like. Actually this is just the beginning of the whole thing… But I think, or at least I would like to think, that is at least a good start point :-).

And before you shoot… “yes”, I’m already planning to help improve the ATK documentation in this regard with the knowledge I acquired while working on this examples, even perhaps next week during the ATK/AT-SPI hackfest (it’s actually one of the proposed tasks) I’ll be attending here in Coruña, at the Igalia offices.

By the way, feel free to grab the source for this example from its git respository at gitorious:

git clone http://git.gitorious.org/atksocket-atkplug-example/mainline.git

Visita a las “Xornadas Libres” del GPUL

Published / by mario / 2 Comments on Visita a las “Xornadas Libres” del GPUL

Gracias a la gente del GPUL, que me hicieron un hueco en la apretada (e interesante!) agenda de las “Xornadas Libres” de este año, hoy por la tarde he dado una charla en la Facultad de Informática de A Coruña acerca de git, uno de los sistemas de control de versiones más populares y más usados hoy en día.

Personalmente, tengo que reconocer que me cuesta ocultar mi pasión por esta herramienta, la cual tengo la suerte de poder disfrutar usando a diario, pero  espero que esa pasión no haya empañado la charla y que los asistentes, que aguantaron estoicamente el chaparrón de información hiper-concentrada que solté durante poco más de una hora, hayan extraído algo útil y positivo de la misma :-)

La charla fue básicamente una versión “evolucionada y extendida” de la charla que dí el pasado mes de Julio en la GUADEC-ES 2010, pero esta vez con un énfasis especial en explicar en más detalle algunas partes, así como de explicar/mencionar algunas cosas nuevas, lo cual hizo todavía más complicado que pudiese acabar en tiempo, pero bueno… al menos espero no haberme pasado demasiado.

Por último, para los que no hayan asistido, así como para los que hayan asistido pero no se hayan enterado de nada por mi forma un tanto apurada de dar la charla, aquí están las slides de la misma en formato PDF (en castellano).

Frogr 0.4 is out!

Published / by mario / 1 Comment on Frogr 0.4 is out!

As I said some days ago, in theory I should be releasing Frogr 0.4 this weekend while at FOSDEM, after a 2-week period of feature and string freeze to work on stabilization and bugfixing tasks only. Well, bad news (mainly for myself) is that I did not make it to FOSDEM at the end, due to unavoidable personal matters, but good news is that I’m finally making the release anyway today :-)

So Frogr 0.4 is now out and kicking since a couple of hours ago, featuring the following list of changes, as summarized today in the announcement mail:

  • Fixed capitalization problems (Philip Withnall).
  • Use Unicode ellipsis instead of three dots (Philip Withnall).
  • Allow compiling with gtk 3.0 by passing –with-gtk=3.0.
  • Raised minimum version required of GTK+ from 2.12 up to 2.14.
  • Removed dependency from libgnome.
  • Added new man page (Alberto Garcia).
  • Fixed slow startup. No longer wait for albums to be loaded.
  • New settings dialog to pre-set some values.
  • Support for HTTP proxies, through libsoup’s API.
  • Renamed “Albums” to “Sets”.
  • Support for creating new sets right from frogr.
  • Allow adding pictures to group pools, not just to user albums.
  • Allow changing sorting order in ‘add to album/group’ dialogs.
  • Support for seamlessly handling multiple accounts.
  • Auto-completion in ‘tags’ entries.
  • Allow setting ‘content type’ and ‘safety level’.
  • Allow setting pictures to ‘show up on global search results’.
  • Remove pictures from UI as soon as they get uploaded.
  • Better reporting progress to the users for time consuming operations.
  • Allow specifying a list of pictures to be loaded from command line.
  • Register frogr as image mime types handler, so it’s possible to load pictures on it from other applications (e.g. nautilus or eog).
  • Improved keyboard usability by adding mnemonics, making text views not to accept tab and enabling the menu key in the icon view.
  • Nine new translations (see TRANSLATORS file for details).
  • As usual, lots of bugfixes and several minor improvements.

From a more practical point of view, let’s just say that Frogr 0.4 is the first “serious” release, in the way that it should provide a fairly good amount of features for the average Flickr users to feel comfortable using it for their typical use cases. Nevertheless, development won’t stop here so don’t hesitate to contribute with the project if you feel like doing it, either by proposing ideas, translating, coding, discussing or even by filing or fixing bugs.

As usual, you can get it through different ways:

Hope you like this tiny little application. For more information, just check out its web site.

Ah! And as everybody loves screenshots (tm), here you have one composition of several of them  so you can realize how it looks now in my desktop:

Frogr 0.4 screenshots

Some updates on frogr 0.4 and myself

Published / by mario / 3 Comments on Some updates on frogr 0.4 and myself

Too many things have happened to me during the last weeks (some good and some bad, as usual), but I still have found some time to continue improving frogr towards the 0.4 release, which I hope it’s gonna be, at least thinking of my very particular use cases, a very complete and functional release. Still, the UI won’t be great (I’d really need help with this), I know that… but I said “complete and functional”, right? I do not remember having mentioned “beautiful”, “eye candy”, or the like… that’s a matter, though, I’ll probably consider for following releases, but not for now.

The point of this post is that I declared yesterday the official start of the feature & string freeze phase for frogr, which basically means that what you can find in the NEWS file is exactly what you’ll find in the next release (which should happen in 2-3 weeks time), and that the awesome people in the GNOME translations teams can now work on adding new translations, or just updating the ones already present in the Damnes Lies platform, without having to worry about the strings changing again before the release.

Another thing I’d like to publicly say here and now, and which you might have already noticed from the previous paragraph, is that this release is gonna be the first one after having moved frogr to the GNOME infrastructure, which basically means that its previous site and mailing lists at Google Code, as well as the old repository at gitorious, are now deprecated in favour of live.gnome.org, GNOME’s bugzilla and GNOME’s git repository. And this, at least in my very personal opinion, is really great news for frogr, and I’m really happy about it.

Other than that, but related, last week I’ve finally decided to apply for the GNOME Foundation, and got accepted, which was also great news for me, since it was something already in the back of my mind for some time, and I guess I just needed a ‘trigger’ for daring to apply for it… and moving frogr to GNOME, together with all the a11y related work I’ve been doing during the past months in WebKitGTK+, as part of the WebKit team at Igalia, were actually good ‘triggers’ for that.

So a big ‘thank you’ to all who helped making all that possible, specially to Claudio Saavedra for encouraging for doing this moves, and to Christer Edwards, who kindly attended all my continuous requests to perform all the related tasks in record time.

By the way, as Claudio and some other workmates, I’ll be attending to FOSDEM once again this year thanks to the support from Igalia, where I’m starting to have a hard time sometimes to explain that the Beer Event has nothing to do with me willing to go every year :-).

Anyway, apart from hanging around the venue, I’ll also be giving a talk about a11y in WebKitGTK+ in the accessibility devroom on Sunday, so that makes another pretty good reason for me to go this year. So, you see? It’s not only about beer!

Update [05/02/2011]: At the end, and due to unexpected and very important personal matters, I was finally not able to attend FOSDEM. Hopefully I’ll be able to go next year, but as for now I’d like to wish all the attendants of the 2011 edition have a great time there and enjoy this awesome meeting, which is one of my favorite ones every year.

The family keeps growing

Published / by mario / 12 Comments on The family keeps growing

The Family

Quick after-Christmas post to tell the world, now that is not a secret anymore [*],  that Isa, Sergio and me are currently expecting a new member to “arrive” in the family by next summer,  still no idea whether it would be a boy or a girl, but whatever it will be, we’re already happier than ever, suspiciously in a similar situation than almost two years ago, when I told the world about the arrival of Sergio, our first son.

Well… to be honest I couldn’t hide my preference for a girl if you ask me, just in order to get “the perfect couple”, but regardless of that I’m sure I’m gonna be the happiest man in the world. Yes, once again… and this time it’s not just speculation, I already have 2 years of “experience in the field” supporting this assertion, so take it seriously.

So that’s it, won’t write much more because I don’t want to look boring or the like talking about this kind of personal stuff in this blog, but what the hell… it’s the only one I have and I couldn’t avoid using it to share this publicly.

I think that’s all for now, and sorry for the very-likely-too-personal stuff in my blog.

Happy new year!

[*] You know… even in the era of Internet it kind of makes sense to me to tell these kind of news to some people first before broadcasting them to the world.

Frogr 0.3 released (hello, flicksoup!)

Published / by mario / 10 Comments on Frogr 0.3 released (hello, flicksoup!)

After more than one year without writing almost anything related to my other pet project “frogr“, I finally found some time, motivation and energy to put all the loose parts I already had more or less in place together and evolve them towards what finally made a new release of this -yet another- GNOME flickr uploader.

That way, I finally released frogr 0.3 two days ago (see the announcement here), featuring the following changes:

  • Replaced flickcurl (synchronous, libcurl based) with flicksoup (asynchronous, libsoup based) as the backend library for dealing with the Flickr API.
  • Improved authentication process and made it more “seamless”, so the application is more aware now of the potential issues that might happen, reporting them to the user if needed (e.g. asking the user to re-authorize the app).
  • Better error handling and reporting, not only about the authorization process but about everything about the user-flickr interaction, which made it way more user-friendly (e.g. quota limit exceeded, host unreachable, process cancelled by the user…).
  • Added support to allow cancelling uploads (no more closing the application if forgotten to do something before pressing ‘Upload’!).
  • Added support to allow setting pictures to be added to albums after the upload process. So far, only adding to already existing albums is available, but for the next release allowing the user to create albums on the fly is also planned.
  • Menubar redesigned, so no options get hidden in the contextual menu (did you know there was one?).
  • Updated translations… errr… well… updated THE only translation we have so far (es_ES). Doesn’t it make you feel like tranlating frogr to your beautiful language? C’mon, it’s a really small file with just a bunch of strings!.
  • Simplified code both in frogr and flicksoup, which should ease a lot future enhancements in next releases of frogr, as former design was blocking quite a lot of things until I changed it once and for all.
  • Lots of bugfixes and several minor improvements.

From the point of view of the end user, perhaps it’s a bit strange to even mention the flickcurl/flicksoup change in the list of features above, but I couldn’t help it since that was the biggest change since 0.2 and what I consider the most important one, since it allowed (or just helped a lot, as you wish) that the rest of points actually happened in the way I thought it would be the right one: through a GNOME-ish library which would allow implementing asynchronous operations without the need of using threads (thanks to the mainloop and implementing the methods using the GIO’s GAsync functions), as well as properly reporting errors through GErrors, as it’s commonly done in these kind of applications.

I must say flickcurl is still a great C library which currently implements 99% of the remote flickr API, but for this project I found it too complicated and limited for the kind of things I’d like to do in frogr, which was leading me in many ocassions to work things around in many ways that wouldn’t be necessary if it was a GObject library based in libsoup, instead of a C library based in libcurl. And that’s why I decided to start its implementation, back in February 2010. Unfortunately, the library is not mature enough yet to be separately released, so for the time being I’m just developing it along with frogr, so I can at least release the application, and keeping the intention of release it separately at some point in the future. Still, you can grab the latest code from its own repository if you want to use it separately, where I regularly dump all the changes I do to it through frogr. But I must warn you, it just implements a few functions so far, those strictly needed by frogr, so don’t expect a complete libsoup based version of flickcurl yet, which is far more mature and full of features than this one.

[UPDATE 03/06/2011]: Today I removed the flicksoup repository from gitorious since the truth is that at the moment is not an independently maintained library and what I was doing at the end was (i)regularly dumping files from frogr repo to the flicksoup one. And this, apart from being tedious and usually out-of-sync, was also an issue from the point of view of some distros (like Fedora) when it comes to package frogr, so I decided to go ahead and remove it for the time being. Hopefully in the future flicksoup will be released as an independent library, but as for now it is just part of frogr (although I will keep the whole picture in mind when developing changes for flicksoup inside of frogr). More details in this bug

As usual, you can grab frogr through different ways:

So far, there are only a few of pre-compiled 32-bit packages for ubuntu and fedora in there (those I generated myself, basically), but hopefully this manual effort could stop being needed at some point in the short terms thanks to the efforts of my mate at Igalia Alberto García, who kindly already packaged for debian and asked for its inclusion in the project. Thanks, Berto!

WebKitGTK+ hackfest 2010

Published / by mario / 8 Comments on WebKitGTK+ hackfest 2010

After the daily reports written by Diego in his blog, few more things can be told about the WebKitGTK+ hackfest hosted at the Igalia offices last week, but I’d like to comment anyway some impressions from my personal point of view, if you don’t mind reading them.

First of all, this was the second time I attended to this hackfest (I “kind of” attended last year hackfest as well) but now things were pretty different for me, basically because one year ago I was not part of the Igalia WebKit team yet, hence my contributions in the hackfest were pretty small (see my post back then for more details). However, this time I attended full-time to the event and I must say I’m really proud of the work I’ve been doing right there, which I hope will eventually lead to the resolution of this WebKit metabug, which was about fixing bugs blocking ORCA support from WebKitGTK based applications.

But fortunately, the work I’ve been doing during the last week was just a pretty small and humble contribution compared to all the work that has been done by the rest of the people attending to the hackfest, like fixing GTK3 and GObject Introspection issues, fully integrating in libsoup all the new cache stuff written for WebKitGTK (which eventually lead to removing the equivalent code from WebKitGTK, as my mate Sergio told some weeks ago, as soon as some bots upgrade to the latest version of libsoup), adding support for profiling in JavascriptCore, implementing some missing and advanced features into the DumRenderTree (aka DRT, the so beloved tool for writing functional tests), fixing spell-checking support… and bugfixing in general (as well as, most likely, lots of other things I’m failing to recall right now). You can read Diego’s blog for more details on those.

Other than that, there was also time for working in Epiphany were some notorious fixes and improvements also happened. Those I can remember right now are the new error pages for epiphany, the implementation of a certificates viewer and new font preferences, getting rid of GConf in epiphany-extensions and general bugfixing tasks. As you can easily understand, as the devoted and committed Epiphany user that I am, I’m pretty excited with these improvements as well. Not needed to say anything about this patch committed at the beginning of the hackfest, I guess, in my opinion this is one of those cases where a picture is clearly worth a thousand words:-)

hackfest mooded epiphany

So, as you can see it was a quite productive week after all here in Coruña!

Last but not least, I’d like to specially thank The GNOME Foundation for sponsoring the event, as well as Igalia and Collabora for helping make this possible once again. Hope we can repeat it next year, and that more people will join the event to help making WebKitGTK an even better web engine for the GNOME platform.

See pictures of the hackfest here:

Watching the WebKit buildbots from your Android phone

Published / by mario / 7 Comments on Watching the WebKit buildbots from your Android phone

WebKit Watcher screenshotThis is a short post just to let the world know about my last pet-project, which I managed to name, after several hours struggling, WebKit Watcher.

WebKit Watchers is a really simple and minimalistic application that allows you to easily monitorize the status of the WebKit buildbots as you would do it through build.webkit.org, but from your Android powered device.

It currently works as follows:

  • Supports watching the core builders only (as in this url)
  • Browse extra details about a builder/build/SVN commit through the browser
  • Requires manual refreshing (this is actually a feature to save battery :P)
  • Provides an ugly logo (could be uglier, though)

As I said, a really simple application that I wrote as part of my weekly hackfest time here at Igalia to satisfy my curiosity about trying out the Android SDK now I got a new phone while, at the same time, scratching an itch I had.

Next steps for following versions would probably go through adding some kind of support for periodical checks and notifications when some buildbots are red, adding support for non-core builders (while allowing the user to filter them out anyway, in case he/she wouldn’t be interested in those), and things like that…

By the way, I’m open to suggestions (and patches too), after all it was licensed as a Free Software project you can grab through several ways:

That’s all so far. Hope some of you will fint it useful too.

Wrapping up the GNOME a11y hackfest

Published / by mario / 1 Comment on Wrapping up the GNOME a11y hackfest

As I told in my previous post, I’ve spent the last week in Seville attending the GNOME Accessibility Hackfest, which was an amazing experience to me, so I guess now it’s time to talk about some (mostly personal and subjective) conclusions.

First of all, let’s repeat this was the first time I attended an a11y related hackfest, and from that point of view the experience was even better and more rewarding than what I’d expected. Meeting other a11y developers in real life and putting faces to them, along with being able to check the real needs that people demand from assistive technologies was an awesome experience, and way richer than just having a list of bugs in need of getting fixed.

Up to this point, I can say that one of the best things I extracted from the hackfest is that I’ve learned, with real-life living examples, why implementing certain kind of stuff in the WebKitGTK port is so important for people with diverse kind of impairements, and even learned to prioritize and value different a11y related issues so I could make the most of my work to be more effective when helping, with my humble 2 cents in my daily work, to make the next release of GNOME a good one also from the point of view of accessibility. Obviously, there’s still a long road ahead to keep learning and improving, but I think this is a good achievement anyway, if you ask me.

Other than that, together with Joanmarie Diggs, we managed to move some important things forward related to the integration of WebKitGTK based applications and the ORCA screen reader, so now the “ORCA experience” with the web is clearly better compared to how it was some months ago (or at least that’s what Joanmarie says, and I trust her). In this regard, I feel specially proud of the advancements we’ve been doing with the implementation of the AtkHypertext/AtkHyperlink related stuff, which makes the experience of “screen reading” a web page way better and more complete than how it would be without that feature. And I mention this stuff here, because that’s precisely what I’ve been working on most of the time during the hackfest and  because, even though it’s still a provisional patch pending on some final tweaks to be proposed for review, I hope it will be soon integrated in WebKitGTK…. (you know, ‘hope’ is a so beautiful word… but I feel somehow confident with this stuff, “let’s hope I’m right” :-)).

So, as you can see I have reasons to be very happy about the results of the hackfest, even if we all were somehow jinxed because one reason or another, and the overall result of all this stuff is that I clearly felt a boost in my motivation to keep working on this stuff and to keep helping to improve the overall status of the accessibility from my beloved WebKit world… which is not that bad, IMHO.

My birthday cake coming from the GNOME a11y team, by Juanje OjedaLast but not least, I have to say there was room as well for having a lot of fun (“All work and no play makes Jack a dull boy”) with my mates from the GNOME accessibility team, who even had prepared a surprise for me in the shape of a cake to celebrate my birthday (see the picture below, by Juanje Ojeda).

Thank you guys! It was a really really nice experience! Let’s repeat it soon in the future… but as for now, let’s get back to work!