<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>accessibility on mariospr.org</title><link>https://mariospr.org/category/accessibility/</link><description>Recent content in accessibility on mariospr.org</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 13 Dec 2013 20:10:04 +0000</lastBuildDate><atom:link href="https://mariospr.org/category/accessibility/index.xml" rel="self" type="application/rss+xml"/><item><title>WebKitGTK+ Hackfest 2013: The Return of the Thing</title><link>https://mariospr.org/2013/12/13/webkitgtk-hackfest-2013-the-return-of-the-thing/</link><pubDate>Fri, 13 Dec 2013 20:10:04 +0000</pubDate><guid isPermaLink="false">https://mariospr.org/?p=1674</guid><description>&lt;p&gt;&lt;a href="https://mariospr.org/2013/12/13/webkitgtk-hackfest-2013-the-return-of-the-thing/webkitgtk-hackfest-2013/" rel="attachment wp-att-1684"&gt;&lt;img class="alignright size-medium wp-image-1684" alt="The WebKitGTK+ Hackfest 2013" src="https://mariospr.org/wp-content/uploads/2013/12/webkitgtk-hackfest-2013-300x225.png" width="300" height="225" /&gt;&lt;/a&gt;As many other &lt;a title="The WebKitGTK+ project" href="http://webkitgtk.org"&gt;WebKitGTK+ &lt;/a&gt;hackers (30 in total), I flew last Saturday to A Coruña to attend the &lt;a title="The WebKitGTK+ Hackfest 2013" href="https://wiki.gnome.org/Hackfests/WebKitGTK2013"&gt;5th edition of the WebKitGTK+ Hackfest&lt;/a&gt;, hosted once again by &lt;a title="Igalia" href="http://www.igalia.com"&gt;Igalia&lt;/a&gt; at their premises and where people from several different affiliations gathered together to try to give our beloved port a boost.&lt;/p&gt;
&lt;p&gt;As for me, I flew there to work mainly on accessibility related issues, making the most of the fact that both &lt;a title="Joanie's blog" href="http://blog.grain-of-salt.com/"&gt;Joanie&lt;/a&gt; (&lt;a title="Orca screen reader" href="http://live.gnome.org/Orca"&gt;Orca&lt;/a&gt; maintainer) and &lt;a title="API's blog" href="https://blogs.igalia.com/apinheiro/"&gt;Piñeiro&lt;/a&gt; (&lt;a title="ATK" href="https://developer.gnome.org/atk/unstable/"&gt;ATK&lt;/a&gt; maintainer) would be there too, so it should be possible to make things happen faster, specially discussion-wise.&lt;/p&gt;</description><content:encoded><![CDATA[<p><a href="/2013/12/13/webkitgtk-hackfest-2013-the-return-of-the-thing/webkitgtk-hackfest-2013/" rel="attachment wp-att-1684"><img class="alignright size-medium wp-image-1684" alt="The WebKitGTK+ Hackfest 2013" src="/wp-content/uploads/2013/12/webkitgtk-hackfest-2013-300x225.png" width="300" height="225" /></a>As many other <a title="The WebKitGTK+ project" href="http://webkitgtk.org">WebKitGTK+ </a>hackers (30 in total), I flew last Saturday to A Coruña to attend the <a title="The WebKitGTK+ Hackfest 2013" href="https://wiki.gnome.org/Hackfests/WebKitGTK2013">5th edition of the WebKitGTK+ Hackfest</a>, hosted once again by <a title="Igalia" href="http://www.igalia.com">Igalia</a> at their premises and where people from several different affiliations gathered together to try to give our beloved port a boost.</p>
<p>As for me, I flew there to work mainly on accessibility related issues, making the most of the fact that both <a title="Joanie's blog" href="http://blog.grain-of-salt.com/">Joanie</a> (<a title="Orca screen reader" href="http://live.gnome.org/Orca">Orca</a> maintainer) and <a title="API's blog" href="https://blogs.igalia.com/apinheiro/">Piñeiro</a> (<a title="ATK" href="https://developer.gnome.org/atk/unstable/">ATK</a> maintainer) would be there too, so it should be possible to make things happen faster, specially discussion-wise.</p>
<p>And turns out that, even if I feel like I could have achieved more than what I actually did (as usual), I believe we did quite well in the end: we discussed and clarified things that were blocking the mapping of new <a title="WAI-ARIA User Agent Implementation Guide" href="www.w3.org/TR/wai-aria-implementation">WAI-ARIA</a> roles in <a title="The WebKitGTK+ project" href="http://webkitgtk.org">WebKitGTK+</a>, we got rid of a bunch of WebKit1-specific unit tests (<a title="Joanie's blog" href="http://blog.grain-of-salt.com/">Joanie</a> converted them into nice layout tests that will be run by <a title="WebKit2GTK+" href="http://webkitgtk.org/reference/webkit2gtk/unstable/">WebKit2GTK+</a> too), we got a few new roles in <a title="ATK" href="https://developer.gnome.org/atk/unstable/">ATK</a> to be able to better map things from the web world and and we fixed a couple of issues in the way too.</p>
<p>Of course, not everything has been rainbows and unicorns, as it seems that one of the patches I landed broke the inspector for <a title="WebKit2GTK+" href="http://webkitgtk.org/reference/webkit2gtk/unstable/">WebKit2GTK+</a> (sorry <a title="Gustavo's blog" href="http://blog.kov.eti.br/">Gustavo</a>!). Fortunately, that one has been rolled out already and I hope I will be able to get back to it soon (next week?) to provide a better patch for that without causing any problem. Fingers crossed.</p>
<p>In the other hand, my mate Brian Holt joined us for three days too and, despite of being his first time in the hackfest, he got integrated pretty quickly with other hackers, teaming up to collaborate in the big boost that the <em>network process</em> &amp; <em>multiple web processes</em> items have went through during the event. And not only that, he also managed to give a boost to his last patch to provide automatic memory leak detection in <a title="The WebKitGTK+ project" href="http://webkitgtk.org">WebKitGTK+</a>, which I&rsquo;m sure it will be a great tool once it&rsquo;s finished and integrated upstream.</p>
<p>Anyway, if you want more details on those topics, or anything else, please check out the blog posts that <a href="http://www.gnome.org/news/2013/12/webkitgtk-hackfest-underway-in-a-coruna/">other</a> <a href="https://people.gnome.org/~csaavedra/news-2013-12.html">hackers</a> <a href="http://blog.kov.eti.br/2013/12/webkitgtk-hackfest-5-0-2013/">have</a> <a href="http://base-art.net/Articles/124/">been</a> <a href="https://blogs.igalia.com/itoral/2013/12/11/webkitgtk-2013-hackfest-on-the-road-to-webkit2-wayland-support-in-webkitgtk/">posting</a> <a href="https://blogs.igalia.com/carlosgc/2013/12/12/webkitgtk-hackfest-2013-the-network-process/">these</a> <a href="http://kwangyulseo.wordpress.com/2013/12/13/webkitgtk-hackfest-2003/">days</a>, specially <a title="WebKitGTK+ Hackfest 2013, by Carlos Carcia Campos" href="https://blogs.igalia.com/carlosgc/2013/12/12/webkitgtk-hackfest-2013-the-network-process/">Carlos&rsquo;s blog post</a>, which is quite extensive and detailed.</p>
<p><a href="/2013/07/12/im-going-to-guadec/logo/" rel="attachment wp-att-1567"><img class="alignright size-full wp-image-1567" alt="Samsung Logo" src="/wp-content/uploads/2013/07/logo.png" width="106" height="35" /></a>Of course, I would like to thank the main sponsors <a title="Igalia" href="http://www.igalia.com">Igalia</a> and the <a title="The GNOME project" href="http://www.gnome.org">GNOME</a> Foundation for making this thing happen again, and to my employer <a title="Samsung UK" href="http://www.samsung.com/uk">Samsung</a>  for helping as well by paying our trips and accommodation, as well as the snacks and the coffee that helped us stay alive and get fatter during the hackfest.</p>
<p>Last, I would like to mention (in case anyone reading this wondered) that it has indeed felt a bit strange to go the city where I used to live in and stay in a hotel, not to mention going to the office where I used to work in and hang around it as a visitor. However, both my former city and my former colleagues somehow ensured that I felt as &ldquo;at home&rdquo; once again, and so I can&rsquo;t do anything about it but feeling enormously grateful for that.</p>
<p>Thank you all, and see you next year!</p>
]]></content:encoded></item><item><title>Goodbye Pango! Goodbye GAIL!</title><link>https://mariospr.org/2013/09/13/goodbye-pango-goodbye-gail/</link><pubDate>Fri, 13 Sep 2013 17:44:08 +0000</pubDate><guid isPermaLink="false">https://mariospr.org/?p=1603</guid><description>&lt;p&gt;As I mentioned in &lt;a title="&amp;quot;I'm going to GUADEC!&amp;quot; blog post" href="https://mariospr.org/2013/07/12/im-going-to-guadec/"&gt;my previous post before GUADEC&lt;/a&gt;, I&amp;rsquo;ve been putting some effort lately on trying to improve the accessibility layer of &lt;a title="WebKitGTK+" href="http://webkitgtk.org/"&gt;WebKitGTK+&lt;/a&gt;, as part of my work here at &lt;a title="Samsung" href="http://www.samsung.com"&gt;Samsung&lt;/a&gt;, and one of the main things I&amp;rsquo;ve worked on was the removal of the dependency we had on &lt;a title="Pango" href="https://git.gnome.org/browse/pango"&gt;Pango&lt;/a&gt; and &lt;a title="GTK+ Accessibility Implementation Layer" href="https://git.gnome.org/browse/libgail-gnome/"&gt;GAIL&lt;/a&gt; to implement the &lt;a title="AtkText interface" href="https://developer.gnome.org/atk/unstable/AtkText.html"&gt;&lt;em&gt;atk_text_get_text_*_offset()&lt;/em&gt;&lt;/a&gt; family of functions for the different &lt;a title="AtkText boundaries" href="https://developer.gnome.org/atk/unstable/AtkText.html#AtkTextBoundary"&gt;text boundaries&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And finally, I&amp;rsquo;m really happy to say that such a task is complete once and for all, meaning that now those functions should work as well or as bad on &lt;a title="WebKit2GTK+" href="http://webkitgtk.org/reference/webkit2gtk/unstable/index.html"&gt;WebKit2GTK+&lt;/a&gt; as they do in &lt;a title="WebKitGTK+" href="http://webkitgtk.org/"&gt;WebKitGTK+&lt;/a&gt;, so the weird behaviour described &lt;a href="https://bugs.webkit.org/show_bug.cgi?id=73433"&gt;in bug 73433&lt;/a&gt; is no longer an issue. You can check I&amp;rsquo;m not lying by just taking a look to the commit that &lt;a title="Commit: Get rid of Pango/Gail dependencies in accessibility for ATK" href="http://trac.webkit.org/changeset/155520"&gt;removed both all trace of Pango and GAIL in the code&lt;/a&gt;, as well as and the one that &lt;a title="Commit: Remove Gail dependency from build system for GTK3" href="http://trac.webkit.org/changeset/155534"&gt;removed the GAIL dependency from the build system&lt;/a&gt;. And if you want more detail, just feel free to check the whole &lt;a title="Dependency tree in WebKit's bugzilla" href="https://bugs.webkit.org/showdependencytree.cgi?id=119673&amp;amp;hide_resolved=0"&gt;dependency tree in WebKit&amp;rsquo;s bugzilla&lt;/a&gt;.&lt;/p&gt;</description><content:encoded><![CDATA[<p>As I mentioned in <a title="&quot;I'm going to GUADEC!&quot; blog post" href="/2013/07/12/im-going-to-guadec/">my previous post before GUADEC</a>, I&rsquo;ve been putting some effort lately on trying to improve the accessibility layer of <a title="WebKitGTK+" href="http://webkitgtk.org/">WebKitGTK+</a>, as part of my work here at <a title="Samsung" href="http://www.samsung.com">Samsung</a>, and one of the main things I&rsquo;ve worked on was the removal of the dependency we had on <a title="Pango" href="https://git.gnome.org/browse/pango">Pango</a> and <a title="GTK+ Accessibility Implementation Layer" href="https://git.gnome.org/browse/libgail-gnome/">GAIL</a> to implement the <a title="AtkText interface" href="https://developer.gnome.org/atk/unstable/AtkText.html"><em>atk_text_get_text_*_offset()</em></a> family of functions for the different <a title="AtkText boundaries" href="https://developer.gnome.org/atk/unstable/AtkText.html#AtkTextBoundary">text boundaries</a>.</p>
<p>And finally, I&rsquo;m really happy to say that such a task is complete once and for all, meaning that now those functions should work as well or as bad on <a title="WebKit2GTK+" href="http://webkitgtk.org/reference/webkit2gtk/unstable/index.html">WebKit2GTK+</a> as they do in <a title="WebKitGTK+" href="http://webkitgtk.org/">WebKitGTK+</a>, so the weird behaviour described <a href="https://bugs.webkit.org/show_bug.cgi?id=73433">in bug 73433</a> is no longer an issue. You can check I&rsquo;m not lying by just taking a look to the commit that <a title="Commit: Get rid of Pango/Gail dependencies in accessibility for ATK" href="http://trac.webkit.org/changeset/155520">removed both all trace of Pango and GAIL in the code</a>, as well as and the one that <a title="Commit: Remove Gail dependency from build system for GTK3" href="http://trac.webkit.org/changeset/155534">removed the GAIL dependency from the build system</a>. And if you want more detail, just feel free to check the whole <a title="Dependency tree in WebKit's bugzilla" href="https://bugs.webkit.org/showdependencytree.cgi?id=119673&amp;hide_resolved=0">dependency tree in WebKit&rsquo;s bugzilla</a>.</p>
<p>This task has been an interesting challenge for me indeed, and not only because it was one of the biggest accessibility related tasks I&rsquo;ve worked on in <a title="WebKitGTK+" href="http://webkitgtk.org/">WebKitGTK+</a> since late 2012 (so I needed to get my brain trained again on it), but also because reimplementing these functions forced me to dive into <a title="WebKit's text editing layer" href="https://svn.webkit.org/repository/webkit/trunk/Source/WebCore/editing">text editing</a> and <a title="WebKit's accessibility layer" href="https://svn.webkit.org/repository/webkit/trunk/Source/WebCore/accessibility/">accessibility code</a> in <a title="WebCore" href="https://svn.webkit.org/repository/webkit/trunk/Source/WebCore/">WebCore</a> as I never did before. And it&rsquo;s so cool to see how, despite of having to deal eventually with the frustrating feeling of hitting my head against a wall, at the end of the day it all resulted on a nice set of patches that do the work and help advance the state of the <a title="WebKit ATK based accessibility layer" href="https://svn.webkit.org/repository/webkit/trunk/Source/WebCore/accessibility/atk/">ATK based accessibility layer</a> in <a title="WebKitGTK+" href="http://webkitgtk.org/">WebKitGTK+</a> forward.</p>
<p>Anyway, even though that is probably the thing that motivated me to write this blog post, that was not the only thing that I did since <a title="GUADEC" href="http://www.guadec.org/">GUADEC</a> (which has been a blast, by the way):</p>
<p>On the personal side, I&rsquo;ve spent two lovely weeks in <a title="Spain" href="http://en.wikipedia.org/wiki/Spain">Spain</a> on holidays, which was the biggest period of time I&rsquo;ve been outside of the <a title="United Kingdom" href="http://en.wikipedia.org/wiki/United_Kingdom">UK</a> since I arrived here, and had  an amazing time there just <em>&ldquo;doing nothing&rdquo;(tm)</em> but lying around on the beach and seeing the grass grow. And there is not much grass there anywhere, so you can imagine how stressful that life was&hellip; it was great.</p>
<p>In the other hand, on the professional side, I&rsquo;d say that one of the other big things that happened to me lately was that <a title="Announcement about my &quot;upgrade&quot; into WebKit reviewer" href="https://lists.webkit.org/pipermail/webkit-dev/2013-August/025329.html">I finally became accepted as a WebKit reviewer</a>, meaning that now I can not only help <em>breaking the Web</em>, but also authorize others to do it so. And while agree that might be fun in some way, it probably would not be very cool, so forgive me if I try instead to do my best to help get exactly the opposite result: make things work better.</p>
<p>And truth to be told, this &ldquo;upgrade&rdquo; came just with perfect timing, since these days quite some work is being done in the accessibility layer for both the <a title="WebKitGTK+" href="http://webkitgtk.org/">WebKitGTK+</a> and the <a title="WebKitEFL" href="http://trac.webkit.org/wiki/EFLWebKit">WebKitEFL</a> ports thanks also to my mates <a title="Denis Nomiyama contributions to WebKit" href="http://trac.webkit.org/search?q=denis+nomiyama&amp;noquickjump=1&amp;changeset=on">Denis Nomiyama</a>, <a title="Anton Obzhirov contributions to WebKit" href="http://trac.webkit.org/search?q=anton+obzhirov&amp;noquickjump=1&amp;changeset=on">Anton Obzhirov</a>, <a title="Brian Holt contributions to WebKit" href="http://trac.webkit.org/search?q=brian+holt&amp;noquickjump=1&amp;changeset=on">Brian Holt</a> and <a title="Krzysztof Czech contributions to WebKit" href="http://trac.webkit.org/search?q=krzysztof+czech&amp;noquickjump=1&amp;changeset=on">Krzysztof Czech</a> from <a title="Samsung" href="http://www.samsung.com">Samsung</a>, and that work would ideally need to be reviewed by someone familiar with the <a href="http://developer.gnome.org/atk/stable/index.html" rel="nofollow">ATK</a>/<a href="http://www.linuxfoundation.org/collaborate/workgroups/accessibility/atk/at-spi/at-spi_on_d-bus" rel="nofollow">AT-SPI</a> based accessibility stack. And while I&rsquo;m still by far not the most knowledgeable person in the world when it comes to those topics, I believe I might have a fairly well knowledge about it anyway, so I assume (and hope) that my reviews will certainly add value and help with those specific pieces of work.</p>
<p>And as a nice plus, now I can finally &ldquo;return the favour&rdquo; to the only accessibility reviewer <a title="WebKit" href="http://webkit.org/">WebKit</a> had until now (<a title="Chris Fleizach" href="http://chris.fleizach.com/">Chris Fleizach</a>) by helping reviewing his patches as well, in a similar fashion to what he has been tirelessly doing for me for the last 3 years and a half. Yay!</p>
<p>To finish , I&rsquo;d like to get back again to the original topic of this post and say a big &ldquo;thank you&rdquo; to everyone who helped me along the way with the removal of <a title="Pango" href="https://git.gnome.org/browse/pango">Pango</a> and <a title="GTK+ Accessibility Implementation Layer" href="https://git.gnome.org/browse/libgail-gnome/">GAIL</a> from <a title="WebKit ATK based accessibility layer" href="https://svn.webkit.org/repository/webkit/trunk/Source/WebCore/accessibility/atk/">the ATK specific code</a>. Special thanks go to those who spend time performing the code reviews, as it&rsquo;s the case of <a title="Martin Robinson's blog" href="http://abandonedwig.info/">Martin</a>, <a title="Gustavo Noronha" href="http://blog.kov.eti.br/">Gustavo</a> and <a title="Chris Fleizach" href="http://chris.fleizach.com/">Chris</a>. I wouldn&rsquo;t be writing this post otherwise.</p>
<p>Thanks!</p>
]]></content:encoded></item><item><title>I'm going to GUADEC!</title><link>https://mariospr.org/2013/07/12/im-going-to-guadec/</link><pubDate>Fri, 12 Jul 2013 19:06:22 +0000</pubDate><guid isPermaLink="false">https://mariospr.org/?p=1559</guid><description>&lt;p&gt;&lt;a href="https://mariospr.org/2013/07/12/im-going-to-guadec/guadec2013/" rel="attachment wp-att-1560"&gt;&lt;img class="alignright size-full wp-image-1560" alt="I'm attending GUADEC" src="https://mariospr.org/wp-content/uploads/2013/07/guadec2013.png" width="125" height="125" /&gt;&lt;/a&gt;One year again &lt;a title="GUADEC" href="http://www.guadec.org"&gt;GUADEC&lt;/a&gt; is approaching and, also again, I&amp;rsquo;m very happy to say that I&amp;rsquo;ll be there as well this time, even if I have to recognize it was not on my plans for this year, at least not initially.&lt;/p&gt;
&lt;p&gt;And the reason why it was not initially in my plans was mainly because I&amp;rsquo;ve been already through quite &lt;a title="Moving on" href="https://mariospr.org/2012/11/19/moving-on/"&gt;some&lt;/a&gt; &lt;a title="My first week at SERI" href="https://mariospr.org/2013/01/12/my-first-week-at-seri/"&gt;changes&lt;/a&gt; during these past months year, and my family just came over to the &lt;a title="United Kingdom" href="http://en.wikipedia.org/wiki/United_Kingdom"&gt;UK&lt;/a&gt; two months ago. This means that, even I already arrived by the beginning of the year, we just started to settle here as a family a few weeks ago. So in that context, I didn&amp;rsquo;t feel like leaving them alone for one week already now, it definitely would look like a &amp;ldquo;wrong management of priorities&amp;rdquo; to me.&lt;/p&gt;</description><content:encoded><![CDATA[<p><a href="/2013/07/12/im-going-to-guadec/guadec2013/" rel="attachment wp-att-1560"><img class="alignright size-full wp-image-1560" alt="I'm attending GUADEC" src="/wp-content/uploads/2013/07/guadec2013.png" width="125" height="125" /></a>One year again <a title="GUADEC" href="http://www.guadec.org">GUADEC</a> is approaching and, also again, I&rsquo;m very happy to say that I&rsquo;ll be there as well this time, even if I have to recognize it was not on my plans for this year, at least not initially.</p>
<p>And the reason why it was not initially in my plans was mainly because I&rsquo;ve been already through quite <a title="Moving on" href="/2012/11/19/moving-on/">some</a> <a title="My first week at SERI" href="/2013/01/12/my-first-week-at-seri/">changes</a> during these past months year, and my family just came over to the <a title="United Kingdom" href="http://en.wikipedia.org/wiki/United_Kingdom">UK</a> two months ago. This means that, even I already arrived by the beginning of the year, we just started to settle here as a family a few weeks ago. So in that context, I didn&rsquo;t feel like leaving them alone for one week already now, it definitely would look like a &ldquo;wrong management of priorities&rdquo; to me.</p>
<p>However, it turns out that my wife and kids won&rsquo;t be here anyway during the first week of August and, on top of that, <a title="Samsung" href="http://www.samsung.com">Samsung</a> has been so kind to sponsor this trip just based on the simple fact that I&rsquo;m part of the <a title="The GNOME Project" href="http://www.gnome.org">GNOME</a> community. So, I certainly can no longer find a single reason not to go and spend 7 amazing days in <a title="Brno, Czech Republic" href="http://en.wikipedia.org/wiki/Brno">Brno</a>, meeting people that I normally see only in conferences (and this time that group of people will be bigger than ever, since my former mates from <a title="Igalia" href="http://www.igalia.com">Igalia</a> are now also included there), while attending to what it seems to be <a title="GUADEC Schedule" href="https://www.guadec.org/schedule/">a very appealing event</a>.</p>
<p>Also, I will try to make the most of the trip to do some work during the different hackfests and <a title="GUADEC BoFs" href="https://wiki.gnome.org/GUADEC/2013/BOFs">BoFs that are already planned</a>, which special focus in the one about <a title="Computer accessibility" href="http://en.wikipedia.org/wiki/Computer_accessibility">accessibility</a>, of course. As a personal goal, I expect to have the chance to move forward some work I&rsquo;ve been doing lately in the <a title="WebKitGTK+" href="http://www.webkitgtk.org">WebKitGTK+</a> a11y world, such as <a title="[GTK] Metabug: Get rid of Pango/Gail dependencies in accessibility for ATK" href="https://bugs.webkit.org/show_bug.cgi?id=114867">getting rid of the nasty dependency</a> on <a title="Pango" href="https://git.gnome.org/browse/pango">Pango</a>/<a title="GTK+ Accessibility Implementation Layer" href="https://git.gnome.org/browse/libgail-gnome/">Gail</a> we still have there, something I&rsquo;ve been already working on for some time now, and which I expect it will be fixed soon, hopefully before <a title="GUADEC" href="http://www.guadec.org">GUADEC</a>, although time will tell.</p>
<p>Once that it&rsquo;s fixed, <a title="WebKit2GTK+" href="http://webkitgtk.org/reference/webkit2gtk/unstable/index.html">WebKit2GTK+</a> based apps should recover the ability to properly expose text through the <a title="AtkText interface" href="https://developer.gnome.org/atk/unstable/AtkText.html"><em>atk_text_get_text_*_offset()</em></a> family of functions for different <a title="AtkText boundaries" href="https://developer.gnome.org/atk/unstable/AtkText.html#AtkTextBoundary">text boundaries</a>, which means that <em><a href="http://en.wikipedia.org/wiki/Assistive_technology" rel="nofollow">ATs</a></em> (e.g. the <a href="https://live.gnome.org/Orca" rel="nofollow">Orca</a> screen reader)  will be able to properly allow again line-by-line navigation when in caret browsing mode. And, as you can imagine, this is quite a big problem these days, since <a title="WebKit2GTK+" href="http://webkitgtk.org/reference/webkit2gtk/unstable/index.html">WebKit2GTK+</a> that has become the default backend for some core apps such as the <a title="The Epiphany Browser" href="https://projects.gnome.org/epiphany/">Epiphany browser</a> with the <a title="The GNOME Project" href="http://www.gnome.org">GNOME</a> <a title="GNOME 3.8 release notes" href="https://help.gnome.org/misc/release-notes/3.8/">3.8 release</a>, so fixing this is like a high priority now, I&rsquo;d say.</p>
<p><a href="/2013/07/12/im-going-to-guadec/logo/" rel="attachment wp-att-1567"><img class="alignright size-full wp-image-1567" alt="Samsung Logo" src="/wp-content/uploads/2013/07/logo.png" width="106" height="35" /></a>Anyway, I&rsquo;m starting to write too much (as usual) for what it was going to be a short &ldquo;I&rsquo;m going to <a title="GUADEC" href="http://www.guadec.org">GUADEC</a>&rdquo; blog post, so I will stop right now, although not without first thanking <a title="Samsung" href="http://www.samsung.com">Samsung</a> for sponsoring this my first trip to the <a title="Czech Republic" href="http://en.wikipedia.org/wiki/Czech_Republic">Czech Republic</a>.</p>
<p>See you all in three weeks!</p>
]]></content:encoded></item><item><title>WebKit Contributors Meeting 2013</title><link>https://mariospr.org/2013/05/03/webkit-contributors-meeting-2013/</link><pubDate>Fri, 03 May 2013 17:34:00 +0000</pubDate><guid isPermaLink="false">https://mariospr.org/?p=1541</guid><description>&lt;p&gt;It turns out I&amp;rsquo;m writing this post at 6:00 AM in the morning from a hotel instead of doing it at a more reasonable time from my comfy home or a nice cafeteria. That&amp;rsquo;s already quite a new thing by itself, and the reason for that is not that I became crazy or something, but the fact that I&amp;rsquo;m completely jet-lagged in California right now in order to attend my second &lt;a title="WebKit Contributors Meeting" href="http://trac.webkit.org/wiki/May%202013%20Meeting"&gt;WebKit Contributors Meeting&lt;/a&gt; (&lt;a title="Attending the WebKit Contributors Meeting 2011" href="https://mariospr.org/2011/05/05/webkit-contributors-meeting-sockets-plugs/"&gt;my first time was in 2011&lt;/a&gt;), this time as part of the &lt;a title="Samsung UK" href="http://www.samsung.com/uk"&gt;Samsung&lt;/a&gt; team in the UK R&amp;amp;D center, together with my mate &lt;a title="Anton Obzhirov" href="http://uk.linkedin.com/pub/anton-obzhirov/4/256/876"&gt;Anton Obzhirov&lt;/a&gt;.&lt;/p&gt;</description><content:encoded><![CDATA[<p>It turns out I&rsquo;m writing this post at 6:00 AM in the morning from a hotel instead of doing it at a more reasonable time from my comfy home or a nice cafeteria. That&rsquo;s already quite a new thing by itself, and the reason for that is not that I became crazy or something, but the fact that I&rsquo;m completely jet-lagged in California right now in order to attend my second <a title="WebKit Contributors Meeting" href="http://trac.webkit.org/wiki/May%202013%20Meeting">WebKit Contributors Meeting</a> (<a title="Attending the WebKit Contributors Meeting 2011" href="/2011/05/05/webkit-contributors-meeting-sockets-plugs/">my first time was in 2011</a>), this time as part of the <a title="Samsung UK" href="http://www.samsung.com/uk">Samsung</a> team in the UK R&amp;D center, together with my mate <a title="Anton Obzhirov" href="http://uk.linkedin.com/pub/anton-obzhirov/4/256/876">Anton Obzhirov</a>.</p>
<p>With regard to that, it has been a very interesting experience so far where I could meet new people I still haven&rsquo;t had the chance to see in real life yet (e.g. my mates from other <a title="Samsung UK" href="http://www.samsung.com/uk">Samsung</a> R&amp;D centers or some guys from <a href="http://www.apple.com">Apple</a> I didn&rsquo;t have the chance to meet in person before), as well as chat again with some friends and former mates that I haven&rsquo;t seen for a while, such as <a title="Martin's blog" href="http://abandonedwig.info/">Martin</a>, <a title="Xan's blog" href="http://blogs.gnome.org/xan/">Xan</a> and <a title="Philippe's blog" href="http://base-art.net/">Philippe</a> from <a title="Igalia" href="http://www.igalia.com">Igalia</a>, <a title="Byungseon" href="http://www.linkedin.com/profile/view?id=94380850">Byungseon</a> from <a href="http://www.lge.com">LG</a>, <a title="Nayan's blog" href="http://xc0ffee.wordpress.com/">Nayan</a> from <a href="http://www.motorola.com">Motorola</a> or <a title="Gustavo's blog" href="http://blog.kov.eti.br/">Gustavo</a> from <a title="Collabora" href="http://www.collabora.co.uk">Collabora</a> to mention some of them. It&rsquo;s strange, and at the same time wonderful, how easily you can catch up on conversations with people that you barely see once a year (or even less) and mainly in conferences, and definitely one of my favourite parts of attending these kind of events, to be honest.</p>
<p>Also, from a less social point of view, I have to say I found very interesting the sessions I&rsquo;ve attended so far, specially the one about &ldquo;managing the differences between ports&rdquo;, although the one about &ldquo;build systems&rdquo; was quite interesting too. Not sure how far we are yet in the <a href="http://www.webkitgtk.org">WebKitGTK+</a> port from realistically switching to some kind of commonly agreed build system (<a href="http://www.cmake.org">cmake</a>?), but at least it&rsquo;s a good start to agree on the fact that it would be an interesting move and now that some people pushing for it.</p>
<p>My only regret about this first day is that I missed <a title="Dave Hyatt" href="http://en.wikipedia.org/wiki/Dave_Hyatt">Hyatt</a>&rsquo;s talk about pagination due to some health issues I&rsquo;m experimenting while in California, mostly due to the extremely hot and dry weather (anything over 25 Celsius is &ldquo;unbearable hot&rdquo; for me), which is causing me a little bit of cough, sore throat and fever, all well mixed with the jet lag to make it a perfect &ldquo;welcome pack&rdquo; to the meeting. Fortunately, I got some &ldquo;interesting&rdquo; medicines that seem to have relieved a bit the pain and I could attend the rest of the sessions without much trouble, other than some occasional coughing. Not bad.</p>
<p>By the way, for those of you who were not lucky enough to attend the meeting but are anyway interested in the topics being discussed here, make sure you check the <a title="WebKit Contributors Meeting 2013" href="http://trac.webkit.org/wiki/May%202013%20Meeting">main TRAC page for the meeting</a>, where you can also find transcripts for most of the sessions.</p>
<p>As for today, some more sessions will take place as well as a couple of hackathons so I expect it to be very interesting as well. Also I hope I can find some time too to work a bit on my patches to remove the nasty dependency on pango we have in <a href="http://www.webkitgtk.org">WebKitGTK+</a> accessibility code, which is preventing us to have proper caret navigation in <a title="WebKit2GTK+" href="http://webkitgtk.org/reference/webkit2gtk/unstable/index.html">WebKit2GTK+</a> based browsers, as well as to discuss possible ways in which our lab could collaborate more actively upstream. Seems a promising day already!</p>
<p>Last (but not least), and in a completely unrelated and super-off-topic way, I would like to tell the world that I&rsquo;m <strong>extremely happy</strong> for the fact that next week will be the end of my &ldquo;lonely existence in the UK&rdquo;, finally. After 4 months of living away from my family with just some flash trips from Friday to Sunday (every 2 weeks), I&rsquo;m once and for all travelling on Thursday to my home town with a one way plane ticket to do some final arrangements, put everything (family included!) in the car and travel to <a title="Santander" href="http://en.wikipedia.org/wiki/Santander,_Spain">Santander</a>, where we&rsquo;ll be taking a ferry that will take us to the <a title="Portsmouth" href="http://en.wikipedia.org/wiki/Portsmouth">Portsmouth</a> (southern coast of England), from where we will just drive to the UK in order to start our new life, all together again.</p>
<p>It has been quite hard for us to live this way for so long, but I think in the end we managed to handle the situation quite well, and now it seems all our efforts are already paying off because things seem to be finally fitting in the right places: we have a lovely house, we have a place in a nearby public school for my oldest kid to start on September, most of the needed paperwork seems to be done and we already moved all our stuff from Spain (lots of toys!), which is now waiting to be used in our new place.</p>
<p>I really can&rsquo;t wait to live again in the noisy and chaotic atmosphere that two kids can so easily create around them. Even if that means it will probably drive me crazy every now and then and that I won&rsquo;t sleep that well sometimes.</p>
<p>Yes. Even considering that.</p>
]]></content:encoded></item><item><title>Accessibility in [WebKit]GTK+</title><link>https://mariospr.org/2013/02/03/accessibility-in-webkitgtk/</link><pubDate>Sun, 03 Feb 2013 02:26:23 +0000</pubDate><guid isPermaLink="false">https://mariospr.org/?p=1422</guid><description>&lt;p&gt;This past week I&amp;rsquo;ve spent some time explaining to my mates at &lt;a title="SERI UK" href="http://www.linkedin.com/company/samsung-electronics-research-institute"&gt;Samsung&lt;/a&gt; the basics about how accessibility&lt;i&gt; &lt;/i&gt;works and is implemented in &lt;a title="WebKitGTK+" href="http://www.webkitgtk.org"&gt;WebKitGTK+&lt;/a&gt;. I realized, yet again, of how messy and confusing everything can be the first time you encounter these things. After all, &lt;a title="WebKit" href="http://www.webkit.org"&gt;WebKit&lt;/a&gt; is quite a complex project already and &lt;a title="Computer accessibility" href="http://en.wikipedia.org/wiki/Computer_accessibility"&gt;accessibility&lt;/a&gt; is not a simple matter either.&lt;/p&gt;
&lt;p&gt;In order to help them better understand this topic, I wrote a summary to have as reference that explains in my own words which the main pieces of the whole puzzle are, and how they relate to one another. In my experience, it&amp;rsquo;s not always easy to understand the big picture quickly, and I think this kind of documentation can be quite useful for anyone willing to contribute to accessibility in &lt;a title="WebKitGTK+" href="http://www.webkitgtk.org"&gt;WebKitGTK+&lt;/a&gt;. At least it would have been useful for me when I started working on this. I only regret not having written it before, but better late than never, right?&lt;/p&gt;</description><content:encoded><![CDATA[<p>This past week I&rsquo;ve spent some time explaining to my mates at <a title="SERI UK" href="http://www.linkedin.com/company/samsung-electronics-research-institute">Samsung</a> the basics about how accessibility<i> </i>works and is implemented in <a title="WebKitGTK+" href="http://www.webkitgtk.org">WebKitGTK+</a>. I realized, yet again, of how messy and confusing everything can be the first time you encounter these things. After all, <a title="WebKit" href="http://www.webkit.org">WebKit</a> is quite a complex project already and <a title="Computer accessibility" href="http://en.wikipedia.org/wiki/Computer_accessibility">accessibility</a> is not a simple matter either.</p>
<p>In order to help them better understand this topic, I wrote a summary to have as reference that explains in my own words which the main pieces of the whole puzzle are, and how they relate to one another. In my experience, it&rsquo;s not always easy to understand the big picture quickly, and I think this kind of documentation can be quite useful for anyone willing to contribute to accessibility in <a title="WebKitGTK+" href="http://www.webkitgtk.org">WebKitGTK+</a>. At least it would have been useful for me when I started working on this. I only regret not having written it before, but better late than never, right?</p>
<p>So let&rsquo;s begin then. I will start by talking about accessibility-only stuff, which are basically common to any accessible application based in <a title="GTK+" href="http://www.gtk.org">GTK+</a>. Then I will explain the bits specific to <a title="WebKitGTK+" href="http://www.webkitgtk.org">WebKitGTK+</a> and how they fit in the picture.</p>
<h3>Accessibility in GTK+ applications</h3>
The parts, or "actors", involved in any <a title="GTK+" href="http://www.gtk.org">GTK+</a> application from an accessibility point of view are:
<ul>
	<li><strong>Assistive Technologies (<em>ATs</em>)</strong></li>
	<li><strong>AT-SPI (Assistive Technology Service Provider Interface)</strong></li>
	<li><strong>ATK (Accessibility ToolKit)</strong></li>
	<li><strong>ATK &lt;-&gt; AT-SPI bridge</strong></li>
	<li><strong>GTK+</strong></li>
	<li><strong>GTK's Accessibility Implementation</strong></li>
</ul>
<a href="/2013/02/03/accessibility-in-webkitgtk/atk-a11y/" rel="attachment wp-att-1506"><img class="aligncenter size-large wp-image-1506" alt="Accessibility in GTK+ applications" src="/wp-content/uploads/2013/02/atk-a11y-600x290.png" width="584" height="282" /></a>
<p>Now let&rsquo;s describe all those points, one by one:</p>
<p><strong>Assistive Technologies (<em>ATs</em>)</strong>:</p>
<p><em><a href="http://en.wikipedia.org/wiki/Assistive_technology" rel="nofollow">ATs</a> are a</em>pplications whose main purpose is to facilitate access and/or interaction with certain bits of information interesting from an accessibility related point of view, exposed by other applications. This access/interaction can be primarily output based. For instance the <a href="https://live.gnome.org/Orca" rel="nofollow">Orca</a> screen reader is an <em>AT</em> which provides access via text to speech and/or refreshable braille to on-screen information exposed by editors, browsers, mail agents and other applications.</p>
<p>Other <em>ATs</em> are primarily input based, allowing the user to interact with the exposed applications by executing certain actions over them (e.g. clicking on a exposed link), so it&rsquo;s not just about &ldquo;consuming&rdquo; information. Normally, <strong><em>ATs</em></strong> are called the <strong><i>clients</i></strong> and the <strong>applications</strong> exposing information the <strong><i>servers</i></strong>, as in the end it&rsquo;s actually an implementation of a typical client/server architecture.</p>
<p><strong>AT-SPI (Assistive Technology Service Provider Interface)</strong>:<strong>
</strong></p>
<p>Set of interfaces that Assistive Technologies (the <i>clients</i>) understand and use to inspect and interact with the accessible content exposed by applications in Linux environments. At some point, &ldquo;someone&rdquo; has to provide actual <a href="http://www.linuxfoundation.org/collaborate/workgroups/accessibility/atk/at-spi/at-spi_on_d-bus" rel="nofollow">AT-SPI</a> objects (linked together forming a <a href="http://www.linuxfoundation.org/collaborate/workgroups/accessibility/atk/at-spi/at-spi_on_d-bus" rel="nofollow">AT-SPI</a> hierarchy) implementing several of those interfaces (depending of the type of object) so <em>ATs</em> can &ldquo;see them&rdquo;.</p>
<p>This is the job of <a href="http://git.gnome.org/browse/at-spi2-core/tree/registryd" rel="nofollow">the AT-SPI registry</a>, a daemon which takes care of maintaining a hierarchy of <a href="http://www.linuxfoundation.org/collaborate/workgroups/accessibility/atk/at-spi/at-spi_on_d-bus" rel="nofollow">AT-SPI</a> objects for every single accessible application in the system, in a centralized way, so <em>ATs</em> can interact with them. It is worth mentioning that the parent/children relationships in that hierarchy are modelled in terms of <a title="D-Bus" href="http://www.freedesktop.org/wiki/Software/dbus">D-Bus</a>, so different <a href="http://www.linuxfoundation.org/collaborate/workgroups/accessibility/atk/at-spi/at-spi_on_d-bus" rel="nofollow">AT-SPI</a> objects can belong to different processes.</p>
<p><strong>ATK (Accessibility ToolKit)</strong>:</p>
<p>The toolkit used by <a title="GTK+" href="http://www.gtk.org">GTK+</a> applications to expose accessible representations of the toolkit&rsquo;s objects, along with appropriate interfaces, on the side of the applications exposing content (the <i>servers</i>). This representation is an almost a 1:1 match with the objects and interfaces defined by <a href="http://www.linuxfoundation.org/collaborate/workgroups/accessibility/atk/at-spi/at-spi_on_d-bus" rel="nofollow">AT-SPI</a> (that is, <em>almost</em>).</p>
<p>The main difference when it comes to understanding its place in the puzzle is that <a href="http://www.linuxfoundation.org/collaborate/workgroups/accessibility/atk/at-spi/at-spi_on_d-bus" rel="nofollow">AT-SPI</a> is what <i>clients</i> (ATs) understand, and that is not process-bounded (see previous point). <a href="http://developer.gnome.org/atk/stable/index.html" rel="nofollow">ATK</a>, in contrast, is what <i>servers</i> implement to expose accessible information, and it is process-bounded. Thus the parent/children relationships in the <a href="http://developer.gnome.org/atk/stable/index.html" rel="nofollow">ATK</a> hierarchy are modelled by actual references (pointers) between objects living in the same process.</p>
<p><strong>ATK &lt;-&gt; AT-SPI bridge</strong>:</p>
<p>The glue that makes sure there&rsquo;s a mapping between the <a href="http://developer.gnome.org/atk/stable/index.html" rel="nofollow">ATK</a> hierarchy living in the <i>server</i> process and the <a href="http://www.linuxfoundation.org/collaborate/workgroups/accessibility/atk/at-spi/at-spi_on_d-bus" rel="nofollow">AT-SPI</a> hierarchy held by <a href="http://git.gnome.org/browse/at-spi2-core/tree/registryd" rel="nofollow">the AT-SPI registry</a>. Such a bridge is implemented in terms of <a title="D-Bus" href="http://www.freedesktop.org/wiki/Software/dbus">D-Bus</a> too, as it needs to communicate with the registry whenever something needs to be updated there, as well as when the <em>server</em> needs to react to external actions coming from ATs (e.g. perform the default <em>action</em> for an object).</p>
<p><strong> GTK+</strong>:</p>
<p>The widgets toolkit normally used by applications embedding <a title="WebKitGTK+" href="http://www.webkitgtk.org">WebKitGTK+</a>. Explaining what <a title="GTK+" href="http://www.gtk.org">GTK+</a> is beyond the scope of this post, so I will assume you already know what it is.</p>
<p><strong> GTK&rsquo;s Accessibility Implementation</strong>:</p>
<p>Provides <a title="AtkObject" href="http://developer.gnome.org/atk/stable/AtkObject.html">ATK objects</a> implementing different <a href="http://developer.gnome.org/atk/stable/index.html" rel="nofollow">ATK</a> interfaces for every widget from the <a title="GTK+" href="http://www.gtk.org">GTK+</a> library, and uses the <a href="http://git.gnome.org/browse/at-spi2-atk/" rel="nofollow">ATK &lt;-&gt; AT-SPI bridge</a> to communicate with <a href="http://git.gnome.org/browse/at-spi2-core/tree/registryd" rel="nofollow">the AT-SPI registry</a>. This means that if you use standard <a title="GTK+" href="http://www.gtk.org">GTK+</a> widgets only, your application will be accessible out-of-the-box. On the contrary, should you use custom widgets, you&rsquo;ll probably have to write custom <a title="AtkObject" href="http://developer.gnome.org/atk/stable/AtkObject.html">ATK objects</a> implementing the proper <a href="http://developer.gnome.org/atk/stable/index.html" rel="nofollow">ATK</a> interfaces to make them accessible too.</p>
<p>So that&rsquo;s all so far, when it comes to <a title="GTK+" href="http://www.gtk.org">GTK+</a> applications. Check the following diagram for a more detailed look at all these hierarchies for a hypothetical <a title="GTK+" href="http://www.gtk.org">GTK+</a> application exposing information and a screen reader accessing it:</p>
<p><a href="/2013/02/03/accessibility-in-webkitgtk/gtk-a11y/" rel="attachment wp-att-1442"><img class="aligncenter size-large wp-image-1442" alt="Accessibility in GTK+ applications: a specific example" src="/wp-content/uploads/2013/02/gtk-a11y-600x259.png" width="584" height="252" /></a>As you can see, there&rsquo;s an <a href="http://developer.gnome.org/atk/stable/index.html" rel="nofollow">ATK</a> tree matching the <a title="GTK+" href="http://www.gtk.org">GTK+</a> hierarchy, and another <a href="http://www.linuxfoundation.org/collaborate/workgroups/accessibility/atk/at-spi/at-spi_on_d-bus" rel="nofollow">AT-SPI</a> tree matching the <a href="http://developer.gnome.org/atk/stable/index.html" rel="nofollow">ATK</a> one. Finally, the screen reader accesses the information through that <a href="http://www.linuxfoundation.org/collaborate/workgroups/accessibility/atk/at-spi/at-spi_on_d-bus" rel="nofollow">AT-SPI</a> tree, as explained above.</p>
<h3>Accessibility in WebKitGTK+</h3>
Now that we already understand the basics of accessibility in <a title="GTK+" href="http://www.gtk.org">GTK+</a> applications, let's add the bits specifically related to <a title="WebKitGTK+" href="http://www.webkitgtk.org">WebKitGTK+</a>. Namely:
<ul>
	<li><strong>WebCore's Accessibility Objects</strong></li>
	<li><strong>WebKitGTK+ (ATK) wrappers</strong></li>
	<li><strong>WebKit2GTK+ specific details</strong></li>
</ul>
Again, a picture is usually better than just text, so here you have one too:
<p><a href="/2013/02/03/accessibility-in-webkitgtk/wkgtk-a11y/" rel="attachment wp-att-1496"><img class="aligncenter size-large wp-image-1496" alt="Accessibility in WebKitGTK+" src="/wp-content/uploads/2013/02/wkgtk-a11y-600x259.png" width="584" height="252" /></a></p>
<p>In order to clarify it a bit more before explaining each point, let&rsquo;s just say that  you&rsquo;ll have to look in the dashed box named <em><a href="https://svn.webkit.org/repository/webkit/trunk/Source/WebCore" rel="nofollow">WebCore</a> accessibility world</em>, where the hierarchy on the left (red &amp; orange) represent the<a href="https://svn.webkit.org/repository/webkit/trunk/Source/WebCore" rel="nofollow"> </a><a href="https://svn.webkit.org/repository/webkit/trunk/Source/WebCore/accessibility/" rel="nofollow">WebCore Accessibility objects</a>, while the one on the right (the green one) represents the <a href="https://svn.webkit.org/repository/webkit/trunk/Source/WebCore/accessibility/atk/" rel="nofollow">WebKitGTK+ ATK wrappers</a>.</p>
<p>With this in mind, let&rsquo;s examine these three points in more depth:</p>
<p><strong>WebCore Accessibility objects</strong>:</p>
<p>Similar to <a href="http://git.gnome.org/browse/gtk+/tree/gtk/a11y" rel="nofollow">GTK&rsquo;s Accessibility Implementation</a>, <a href="https://svn.webkit.org/repository/webkit/trunk/Source/WebCore" rel="nofollow">WebCore</a>&rsquo;s accessibility objects are the implementation of an independent hierarchy exposing accessibility related information for objects present in a web page. As the mission of accessibility in <a title="WebKit" href="http://www.webkit.org">WebKit</a> is to expose information to users that are normally being rendered in the screen (as well as some other information that might be hidden to regular users), there is a tight relationship between this hierarchy and other ones in <a title="WebKit" href="http://www.webkit.org">WebKit</a>, such as the <a href="https://svn.webkit.org/repository/webkit/trunk/Source/WebCore/dom/">DOM tree</a> and the <a href="https://svn.webkit.org/repository/webkit/trunk/Source/WebCore/rendering/">Render Objects tree</a>.</p>
<p>This layer is meant to be platform-agnostic, so you won&rsquo;t find much <a title="WebKitGTK+" href="http://www.webkitgtk.org">WebKitGTK+</a> specific stuff here. Instead, you will find the implementation of the accessibility related specifications published by the <a title="World Wide Web Consortium" href="http://www.w3.org/">W3C</a>&lsquo;s <a title="Web Accessibility Initiative" href="http://www.w3.org/WAI/">Web Accessibility Initiative (WAI)</a>, such as <a title="WAI-ARIA" href="http://www.w3.org/WAI/intro/aria.php">WAI-ARIA</a>.</p>
<p><strong>WebKitGTK+ ATK wrappers</strong>:</p>
<p>An <a href="http://developer.gnome.org/atk/stable/index.html" rel="nofollow">ATK</a>-based implementation of an accessibility hierarchy where every <a title="AtkObject" href="http://developer.gnome.org/atk/stable/AtkObject.html">ATK object</a> will take care of wrapping the proper accessibility object from <a href="https://svn.webkit.org/repository/webkit/trunk/Source/WebCore" rel="nofollow">WebCore</a>, as well as implementing the proper <a href="http://developer.gnome.org/atk/stable/index.html" rel="nofollow">ATK</a> interfaces depending on the situation (e.g. the role of the <a title="WebCore Accessibility Object" href="https://svn.webkit.org/repository/webkit/trunk/Source/WebCore/accessibility/AccessibilityObject.h">WebCore accessibility object</a>, some properties coming from the associated <a href="https://svn.webkit.org/repository/webkit/trunk/Source/WebCore/rendering/">Render Object</a>&hellip;).</p>
<p>The <a href="http://developer.gnome.org/atk/stable/index.html" rel="nofollow">ATK</a> hierarchy created here is connected with the <a href="http://developer.gnome.org/atk/stable/index.html" rel="nofollow">ATK</a> hierarchy from the embedding application (normally a <a title="GTK+" href="http://www.gtk.org">GTK+</a> app) by setting the root <a title="AtkObject" href="http://developer.gnome.org/atk/stable/AtkObject.html">ATK object</a> in this tree (normally representing <a title="The DOM" href="http://www.w3.org/DOM/">DOM</a>&rsquo;s root element) as the child of the leaf <a title="AtkObject" href="http://developer.gnome.org/atk/stable/AtkObject.html">ATK object</a> in the tree coming from the embedding application (normally the <a href="http://developer.gnome.org/gtk3/stable/GtkWidget.html">GtkWidget</a> containing the <a href="https://svn.webkit.org/repository/webkit/trunk/Source/WebKit/gtk/webkit/webkitwebview.h">WebView</a>).</p>
<p>As is the case with any other regular <a title="GTK+" href="http://www.gtk.org">GTK+</a> application, this <a href="http://developer.gnome.org/atk/stable/index.html" rel="nofollow">ATK</a> hierarchy will finally be seen by <em>ATs</em> thanks to the translation that the <a href="http://git.gnome.org/browse/at-spi2-atk/" rel="nofollow">ATK &lt;-&gt; AT-SPI bridge</a> will do for us, making the whole <a href="http://developer.gnome.org/atk/stable/index.html" rel="nofollow">ATK</a> tree from the <a title="WebKitGTK+" href="http://www.webkitgtk.org">WebKitGTK+</a> based application (from the top level <a title="GTK+" href="http://www.gtk.org">GTK+</a> window down to the deepest accessibility object inside <a href="https://svn.webkit.org/repository/webkit/trunk/Source/WebCore" rel="nofollow">WebCore</a>) available to <a href="http://git.gnome.org/browse/at-spi2-core/tree/registryd" rel="nofollow">the AT-SPI registry</a> by means of <a title="D-Bus" href="http://www.freedesktop.org/wiki/Software/dbus">D-Bus</a>.</p>
<p><strong>WebKit2GTK+ specific details</strong>:</p>
<p>I already talked about this <a title="Accessibility support in WebKit2GTK+" href="/2012/01/27/accessibility-support-in-webkit2gtk/">in</a> <a title="WebKitGTK+ Hackfest: WK2, a11y and Ephiphany’s ad blocker extension" href="/2011/12/06/webkitgtk-hackfest-wk2-a11y-and-ephiphanys-ad-blocker/">previous</a> <a title="Orca and WebKit2GTK+: initial results" href="/2011/11/11/orca-and-webkit2gtk-initial-results/">posts</a>, so I will focus here just on commenting the main difference compared to the generic case for <a title="WebKitGTK+" href="http://www.webkitgtk.org">WebKitGTK+</a> described earlier (see previous diagram above):</p>
<p><a title="WebKit2GTK+" href="http://webkitgtk.org/reference/webkit2gtk/unstable/index.html">WebKit2GTK+</a> implements a split-process model, where the  high level API belongs to one process (the <a href="https://svn.webkit.org/repository/webkit/trunk/Source/WebKit2/UIProcess/"><em>UI process</em></a>) while the core logic of the web engine lives in another one (the <a href="https://svn.webkit.org/repository/webkit/trunk/Source/WebKit2/WebProcess/"><em>Web process</em></a>).</p>
<p>From an accessibility point of view, this means that the full hierarchy of <a title="AtkObject" href="http://developer.gnome.org/atk/stable/AtkObject.html">ATK objects</a> we had before is also split in two parts: some accessibility objects are now in the <a href="https://svn.webkit.org/repository/webkit/trunk/Source/WebKit2/UIProcess/"><em>UI process</em></a> and the rest of them will be in the <a href="https://svn.webkit.org/repository/webkit/trunk/Source/WebKit2/WebProcess/"><em>Web process</em></a>.</p>
<p>To be more specific, we&rsquo;ll find the following objects in each process:</p>
<ul>
	<li><strong><em>UI Process</em></strong>: basically, the <a title="AtkObject" href="http://developer.gnome.org/atk/stable/AtkObject.html">ATK object</a> associated with the <a href="http://developer.gnome.org/gtk3/stable/GtkWidget.html">GtkWidget</a> provided by <a title="WebKitGTK+" href="http://www.webkitgtk.org">WebKitGTK+</a>, that is, the <a href="https://svn.webkit.org/repository/webkit/trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h">WebView</a>.</li>
	<li><strong><em>Web Process</em></strong>: the whole hierarchy of <a title="AtkObject" href="http://developer.gnome.org/atk/stable/AtkObject.html">ATK objects</a> wrapping the accessibility objects from <a href="https://svn.webkit.org/repository/webkit/trunk/Source/WebCore" rel="nofollow">WebCore</a>.</li>
</ul>
As <a title="Blog post: WebKit Contributors Meeting, sockets &amp; plugs" href="/2011/05/05/webkit-contributors-meeting-sockets-plugs/">I explained previously</a>, these two <a href="http://developer.gnome.org/atk/stable/index.html" rel="nofollow">ATK</a> hierarchies will be seen as a single accessibility hierarchy by <em>ATs</em> thanks to the "magic" of <a title="AtkPlug" href="http://developer.gnome.org/atk/stable/atk-AtkPlug.html">AtkPlug</a> and <a title="AtkSocket" href="http://developer.gnome.org/atk/stable/atk-AtkSocket.html">AtkSocket</a> classes, which takes care of exposing everything together in a single <a href="http://www.linuxfoundation.org/collaborate/workgroups/accessibility/atk/at-spi/at-spi_on_d-bus" rel="nofollow">AT-SPI</a> tree. And remember that such a tree is modelled by means of <a title="D-Bus" href="http://www.freedesktop.org/wiki/Software/dbus">D-Bus</a>, so it does not matter that things are actually in different processes.
<p>Thus, since <em>ATs</em> just<em> </em> understand <a href="http://www.linuxfoundation.org/collaborate/workgroups/accessibility/atk/at-spi/at-spi_on_d-bus" rel="nofollow">AT-SPI</a>, they will see The Right Thing (tm) as in the previous case where we have one single process. See the following diagram for a more visual explanation of this:</p>
<p><a href="/2013/02/03/accessibility-in-webkitgtk/wk2gtk-a11y/" rel="attachment wp-att-1447"><img class="aligncenter size-large wp-image-1447" alt="Accessibility in WebKit2GTK+" src="/wp-content/uploads/2013/02/wk2gtk-a11y-600x335.png" width="584" height="326" /></a></p>
<h3>Wrapping up</h3>
So that's it. At the end the post turned out to be longer than what I was expecting, as my initial idea was to publish the stuff I wrote internally at <a title="SERI UK" href="http://www.linkedin.com/company/samsung-electronics-research-institute">Samsung</a> this week, but ended up extending it quite a lot!
<p>At least I hope this will be helpful for anyone willing to contribute to accessibility, either in <a title="WebKitGTK+" href="http://www.webkitgtk.org">WebKitGTK+</a> or in a more general way.</p>
<p>After all, most of the stuff I talked about here applies to  every accesible <a title="GTK+" href="http://www.gtk.org">GTK+</a> application: <a href="http://en.wikipedia.org/wiki/Assistive_technology" rel="nofollow">Assistive Technologies (<em>ATs</em>)</a>, <a href="http://www.linuxfoundation.org/collaborate/workgroups/accessibility/atk/at-spi/at-spi_on_d-bus" rel="nofollow">AT-SPI</a>, <a href="http://developer.gnome.org/atk/stable/index.html" rel="nofollow">ATK</a>, the <a href="http://git.gnome.org/browse/at-spi2-atk/" rel="nofollow">ATK &lt;-&gt; AT-SPI bridge</a>&hellip;</p>
<p>Last, I would like to thanks <a title="Joanmarie Diggs's blog" href="http://blog.grain-of-salt.com/">Joanmarie Diggs</a> from <a title="Igalia" href="http://www.igalia.com">Igalia</a> for her help with this blog post. One certainly feels more confident writing a long article like this one about a very specific topic when you have one of the most experienced persons on the matter reviewing it!</p>
]]></content:encoded></item><item><title>GUADEC, WebKit and bikes</title><link>https://mariospr.org/2012/07/20/guadec-webkit-and-bikes/</link><pubDate>Fri, 20 Jul 2012 19:24:30 +0000</pubDate><guid isPermaLink="false">https://mariospr.org/?p=796</guid><description>&lt;p&gt;&lt;a href="http://www.guadec.org"&gt;&lt;img class="alignright" src="https://mariospr.org/wp-content/uploads/2012/07/guadec2012-logo.png" alt="I'm going to GUADEC" width="125" height="125" /&gt;&lt;/a&gt;It seems this year &lt;a title="GUADEC" href="http://www.guadec.org"&gt;GUADEC&lt;/a&gt; is going to be pretty close to my place and so I will surely attend, but this time I won&amp;rsquo;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: &lt;a title="A Coruña" href="http://en.wikipedia.org/wiki/A_Coru%C3%B1a"&gt;A Coruña&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Also, besides hanging around the venue and trying to help as much as possible as the local I am, I&amp;rsquo;ll be talking about &lt;a title="WebKitGTK+" href="http://www.webkitgtk.org"&gt;WebKitGTK+&lt;/a&gt; in the &lt;a title="WebKitGTK+: current status and roadmap" href="https://www.gpul.org/indico/contributionDisplay.py?contribId=32&amp;amp;confId=0"&gt;afternoon on Thursday 26th&lt;/a&gt;, 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 &lt;a title="WebKit2" href="http://trac.webkit.org/wiki/WebKit2"&gt;WebKit2&lt;/a&gt; and the &lt;a title="Roadmap to WebKit2GTK+" href="http://trac.webkit.org/wiki/WebKitGTK/WebKit2Roadmap"&gt;roadmap&lt;/a&gt; we&amp;rsquo;re already following.&lt;/p&gt;</description><content:encoded><![CDATA[<p><a href="http://www.guadec.org"><img class="alignright" src="/wp-content/uploads/2012/07/guadec2012-logo.png" alt="I'm going to GUADEC" width="125" height="125" /></a>It seems this year <a title="GUADEC" href="http://www.guadec.org">GUADEC</a> is going to be pretty close to my place and so I will surely attend, but this time I won&rsquo;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 title="A Coruña" href="http://en.wikipedia.org/wiki/A_Coru%C3%B1a">A Coruña</a>.</p>
<p>Also, besides hanging around the venue and trying to help as much as possible as the local I am, I&rsquo;ll be talking about <a title="WebKitGTK+" href="http://www.webkitgtk.org">WebKitGTK+</a> in the <a title="WebKitGTK+: current status and roadmap" href="https://www.gpul.org/indico/contributionDisplay.py?contribId=32&amp;confId=0">afternoon on Thursday 26th</a>, 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 <a title="WebKit2" href="http://trac.webkit.org/wiki/WebKit2">WebKit2</a> and the <a title="Roadmap to WebKit2GTK+" href="http://trac.webkit.org/wiki/WebKitGTK/WebKit2Roadmap">roadmap</a> we&rsquo;re already following.</p>
<p>You probably already read some news related to this coming from my mates in the <a title="Igalia" href="http://www.igalia.com">Igalia</a> <a title="WebKit" href="http://www.webkit.org">WebKit</a> team, (like the improvements in <a title="Accelerated compositing update" href="http://blog.abandonedwig.info/2012/07/accelerated-compositing-update.html">Accelerated Compositing</a> or the <a title="Epiphany and WebKit2" href="https://blogs.igalia.com/carlosgc/2012/07/02/epiphany-and-webkit2/">migration of our handsome browser Epiphany to using WebKit2</a>), yet I will try to deliver an interesting talk to y&rsquo;all. I just hope I&rsquo;ll be able to do it (but please forgive me if I don&rsquo;t).</p>
<p>So that&rsquo;s it. As usual, just feel free to talk me if you see me around if you want. I&rsquo;ll basically be around the venue most of the time during <a title="GUADEC" href="http://www.guadec.org">GUADEC</a>, and will attend <a title="BoFs in GUADEC 2012" href="https://live.gnome.org/GUADEC/2012/BOFs">a11y and WebKitGTK+ BoFs</a> on the 30th and 31st, so I&rsquo;d say it will be pretty easy to find me.</p>
]]></content:encoded></item><item><title>Back to FOSDEM</title><link>https://mariospr.org/2012/02/01/back-to-fosdem/</link><pubDate>Wed, 01 Feb 2012 03:19:23 +0000</pubDate><guid isPermaLink="false">https://mariospr.org/?p=705</guid><description>&lt;p&gt;So it seems I&amp;rsquo;m going to &lt;a title="FOSDEM 2012" href="http://fosdem.org"&gt;FOSDEM&lt;/a&gt; this year (yay!), together with a bunch of other &lt;a title="Igalia" href="http://www.igalia.com"&gt;Igalians&lt;/a&gt; who will be attending as well, coming from different places from across the globe (well, mainly from &lt;a title="Old Europe" href="http://en.wikipedia.org/wiki/Old_Europe_(archaeology)"&gt;Europe&lt;/a&gt; this time).&lt;/p&gt;
&lt;p&gt;I know some people will probably disagree with me on this, but for me &lt;a title="FOSDEM 2012" href="http://fosdem.org"&gt;FOSDEM&lt;/a&gt; is one of the greatest events of this kind, and so I&amp;rsquo;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.&lt;/p&gt;</description><content:encoded><![CDATA[<p>So it seems I&rsquo;m going to <a title="FOSDEM 2012" href="http://fosdem.org">FOSDEM</a> this year (yay!), together with a bunch of other <a title="Igalia" href="http://www.igalia.com">Igalians</a> who will be attending as well, coming from different places from across the globe (well, mainly from <a title="Old Europe" href="http://en.wikipedia.org/wiki/Old_Europe_(archaeology)">Europe</a> this time).</p>
<p>I know some people will probably disagree with me on this, but for me <a title="FOSDEM 2012" href="http://fosdem.org">FOSDEM</a> is one of the greatest events of this kind, and so I&rsquo;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.</p>
<p>Opposite to other occasions, this time I&rsquo;ll be there not only as an attendant but also as an speaker, talking about <a title="WebKitGTK+ status and roadmap to WebKit2" href="http://fosdem.org/2012/schedule/event/webkit2"><em>WebKitGTK+, its status and the roadmap of the project towards WebKit2</em></a> (the split process model &ldquo;flavour&rdquo; of <a title="WebKit" href="http://www.webkit.org">WebKit</a>), together with my mate <a title="Philippe Normand's blog" href="http://base-art.net/">Philippe</a>, on Sunday afternoon. Thus, for the first time ever, nobody will be able to accuse me of going there just because of the <a title="FOSDEM Beer Event" href="http://fosdem.org/2012/beerevent">beer event</a>, which wouldn&rsquo;t be true anyway.</p>
<p>For the impatient ones, the talk will be mainly about reporting on the work done during the last months in &ldquo;<em><a title="WebKitGTK+" href="http://www.webkitgtk.org">WebKitGTK+</a> land</em>&rdquo;, as well as on the <em>stuff</em> that is already planned for the upcoming releases. Good examples of those would be, for instance, the ongoing effort to add support for <a title="WebKitGTK+ hackfest wrapup: accelerated compositing " href="http://blog.abandonedwig.info/2011/12/webkitgtk-hackfest-wrapup-accelerated.html">Accelerated Compositing</a>, or just the new features related to <a title="WebKit2GTK+ preliminary API reference" href="http://webkitgtk.org/reference/webkit2gtk/unstable/index.html">WebKit2GTK+</a> such as, of course, the <a title="Accessibility support in WebKit2GTK+" href="/2012/01/27/accessibility-support-in-webkit2gtk/">solution for enabling accessibility support there</a>. Ah! And of course, we&rsquo;ll try to run some demos there too&hellip; fingers crossed!</p>
<p>Besides, I&rsquo;m of course looking forward to meeting some people I haven&rsquo;t seen for a while now (haven&rsquo;t attended to the latest <a title="Desktop Summit" href="http://desktopsummit.org/">Desktop Summit</a> either, due to <a title="The family keeps growing" href="/2011/01/09/the-family-keeps-growing/">very good reasons</a> 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&rsquo;s usually a matter of minutes (seconds?) for my shyness to go away&hellip;</p>
<p>So that&rsquo;s it. Just a final line to say &ldquo;thanks&rdquo; to <a title="Igalia" href="http://www.igalia.com">my company</a> for fully sponsoring this thing.</p>
<p>See you in <a title="Brussels" href="http://en.wikipedia.org/wiki/Brussels">Brussels</a>!</p>
]]></content:encoded></item><item><title>Accessibility support in WebKit2GTK+</title><link>https://mariospr.org/2012/01/27/accessibility-support-in-webkit2gtk/</link><pubDate>Fri, 27 Jan 2012 16:06:34 +0000</pubDate><guid isPermaLink="false">https://mariospr.org/?p=684</guid><description>&lt;p&gt;As &lt;a title="API's blog" href="https://blogs.igalia.com/apinheiro"&gt;Piñeiro&lt;/a&gt; already mentioned &lt;a title="Do you want to hear some news about GNOME and accessibility?" href="https://blogs.igalia.com/apinheiro/2011/12/23/do-you-want-to-hear-some-news-about-gnome-and-accessibility/"&gt;in&lt;/a&gt; &lt;a title="ATK/AT-SPI2 Hackfest 2012: Day 1" href="https://blogs.igalia.com/apinheiro/2012/01/19/atkat-spi2-hackfest-2012-day-1"&gt;some&lt;/a&gt; &lt;a title="ATK/AT-SPI2 Hackfest 2012: Days 2,3,4,5" href="https://blogs.igalia.com/apinheiro/2012/01/24/atkat-spi2-hackfest-2012-days-2345"&gt;posts&lt;/a&gt;, last week a bunch of hackers attended the &lt;a title="ATK/AT-SPI Hackfest 2012" href="https://live.gnome.org/Accessibility/Hackfests/ATK2012"&gt;ATK/AT-SPI Hackfest 2012&lt;/a&gt; here at the &lt;a title="Igalia" href="http://www.igalia.com"&gt;Igalia&lt;/a&gt; offices, in the lovely city of &lt;a title="Coruña" href="http://en.wikipedia.org/wiki/A_Coru%C3%B1a"&gt;Coruña&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As the guy working on accessibility support for &lt;a title="WebKitGTK+" href="http://www.webkitgtk.org"&gt;WebKitGTK+&lt;/a&gt;, I attended the hackfest to join some other great people representing different projects, such as &lt;a title="Alex Surkov's blog" href="http://asurkov.blogspot.com/"&gt;Mozilla&lt;/a&gt;, &lt;a title="Joanmarie Diggs's blog" href="http://blog.grain-of-salt.com/"&gt;Orca&lt;/a&gt;, &lt;a title="Mike Gorse's blog" href="http://lightvortex.livejournal.com/"&gt;AT-SPI&lt;/a&gt;, &lt;a title="API's blog" href="https://blogs.igalia.com/apinheiro"&gt;ATK&lt;/a&gt;, &lt;a title="Benjamin Otte's blog" href="http://blogs.gnome.org/otte/"&gt;GTK+&lt;/a&gt; and &lt;a title="Frederik Gladhorn's blog" href="http://blogs.fsfe.org/gladhorn/"&gt;Qt&lt;/a&gt;. So, apart from helping with some &amp;ldquo;local&amp;rdquo; organizational details of the hackfest and taking &lt;a title="Pictures of the ATK/AT-SPI Hackfest 2012" href="http://www.flickr.com/photos/mariosp/sets/72157628951274383/"&gt;some pictures&lt;/a&gt;, I spent some time hacking in &lt;a title="WebKitGTK+" href="http://www.webkitgtk.org"&gt;WebKitGTK+&lt;/a&gt;&amp;rsquo;s accessibility code and participating in some discussions.&lt;/p&gt;</description><content:encoded><![CDATA[<p>As <a title="API's blog" href="https://blogs.igalia.com/apinheiro">Piñeiro</a> already mentioned <a title="Do you want to hear some news about GNOME and accessibility?" href="https://blogs.igalia.com/apinheiro/2011/12/23/do-you-want-to-hear-some-news-about-gnome-and-accessibility/">in</a> <a title="ATK/AT-SPI2 Hackfest 2012: Day 1" href="https://blogs.igalia.com/apinheiro/2012/01/19/atkat-spi2-hackfest-2012-day-1">some</a> <a title="ATK/AT-SPI2 Hackfest 2012: Days 2,3,4,5" href="https://blogs.igalia.com/apinheiro/2012/01/24/atkat-spi2-hackfest-2012-days-2345">posts</a>, last week a bunch of hackers attended the <a title="ATK/AT-SPI Hackfest 2012" href="https://live.gnome.org/Accessibility/Hackfests/ATK2012">ATK/AT-SPI Hackfest 2012</a> here at the <a title="Igalia" href="http://www.igalia.com">Igalia</a> offices, in the lovely city of <a title="Coruña" href="http://en.wikipedia.org/wiki/A_Coru%C3%B1a">Coruña</a>.</p>
<p>As the guy working on accessibility support for <a title="WebKitGTK+" href="http://www.webkitgtk.org">WebKitGTK+</a>, I attended the hackfest to join some other great people representing different projects, such as <a title="Alex Surkov's blog" href="http://asurkov.blogspot.com/">Mozilla</a>, <a title="Joanmarie Diggs's blog" href="http://blog.grain-of-salt.com/">Orca</a>, <a title="Mike Gorse's blog" href="http://lightvortex.livejournal.com/">AT-SPI</a>, <a title="API's blog" href="https://blogs.igalia.com/apinheiro">ATK</a>, <a title="Benjamin Otte's blog" href="http://blogs.gnome.org/otte/">GTK+</a> and <a title="Frederik Gladhorn's blog" href="http://blogs.fsfe.org/gladhorn/">Qt</a>. So, apart from helping with some &ldquo;local&rdquo; organizational details of the hackfest and taking <a title="Pictures of the ATK/AT-SPI Hackfest 2012" href="http://www.flickr.com/photos/mariosp/sets/72157628951274383/">some pictures</a>, I spent some time hacking in <a title="WebKitGTK+" href="http://www.webkitgtk.org">WebKitGTK+</a>&rsquo;s accessibility code and participating in some discussions.</p>
<p>And from that dedication I managed to achieve some interesting things too, being my favorite ones a <a title="WebKitGTK's a11y code in WebCore" href="http://svn.webkit.org/repository/webkit/trunk/Source/WebCore/accessibility/gtk/">big refactoring of the a11y code in WebCore</a> (so it&rsquo;s now better organized and hence more readable and easy to hack on) and pushing my <a title="Patch for enabling a11y support in WebKit2GTK+" href="http://trac.webkit.org/changeset/105503">patch for enabling accessibility support in WebKit2GTK+</a>, after going through a meticulous process of review (see <a title="WebKit bug: [GTK] Expose accessibility hierarchy in WebKit2 to ATK/AT-SPI based ATs" href="https://bugs.webkit.org/show_bug.cgi?id=72589">the related WK bug</a>), which started with the patch I wrote and attached back when attending to the <a title="WebKitGTK+ Hackfest 2011" href="https://live.gnome.org/Hackfests/WebKitGTK2011">WebKitGTK+ hackfest</a>, as I mentioned in <a title="Blog post: WebKitGTK+ Hackfest: WK2, a11y and Ephiphany’s ad blocker extension" href="/2011/12/06/webkitgtk-hackfest-wk2-a11y-and-ephiphanys-ad-blocker/">my previous entry in this blog</a>.</p>
<p>Yeah, I know that some weeks have already passed since then and so perhaps you&rsquo;re thinking this could have been done faster&hellip; but I&rsquo;ve spent some weeks on holidays in <a title="Barcelona" href="http://en.wikipedia.org/wiki/Barcelona">Barcelona</a> in December (<a title="Pictures or my last holidays in Barcelona" href="http://www.flickr.com/photos/mariosp/sets/72157628502724051">pictures here</a>!) and so I wouldn&rsquo;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&rsquo;m quite satisfied and happy anyway just by being able to announce this at this moment. Hope you share my joy :-)</p>
<p>So, what does this mean from the point of view of accessibility in <a title="The GNOME project" href="http://www.gnome.org">GNOME</a>? Well, that&rsquo;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 <a title="WebKitGTK+" href="http://www.webkitgtk.org">WebKitGTK+</a>, and this is definitely a good thing. Of course, I&rsquo;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 &ldquo;yet another thing less&rdquo; preventing us from pushing for upgrading some applications to switch to WebKit2GTK+, such as <a title="Devhelp" href="http://live.gnome.org/devhelp">devhelp</a> (some ongoing work already done, as <a title="Blog post: Porting devhelp to WebKit2" href="https://blogs.igalia.com/carlosgc/2012/01/26/porting-devhelp-to-webkit2/">my mate Carlos announced yesterday</a>), <a href="http://projects.gnome.org/yelp/">yelp</a>, <a href="http://liferea.sourceforge.net/">liferea</a>&hellip; and the mighty <a title="Epiphany browser" href="http://projects.gnome.org/epiphany/">Epiphany browser</a>, which is <a title="Blog post: Epiphany marches on" href="http://blogs.gnome.org/xan/2012/01/17/epiphany-marches-on/">rocking more and more ech day</a> that goes by.</p>
<p>Last, I&rsquo;d like to share with you an screenshot showing this new stuff, but as I am a little bit tired of always using <a title="Minibrowser" href="https://blogs.igalia.com/carlosgc/2011/11/04/webkit2-gtk-minibrowser-ported-to-gtk-api/">Minibrowser</a> (that small browser we use for testing <a title="WebKit2" href="http://trac.webkit.org/wiki/WebKit2">WebKit2</a>), so I decided to try instead that new branch Carlos recently pushed for <a title="Devhelp" href="http://live.gnome.org/devhelp">devhelp</a>, so you could check that what I mentioned before is actually true.</p>
<p>So here you have it (along with a couple of additions done with <a title="Gimp" href="http://www.gimp.org/">Gimp</a>):</p>
<p><a href="/wp-content/uploads/2012/01/20120127-devhelp-wk2-a11y.png"><img src="/wp-content/uploads/2012/01/20120127-devhelp-wk2-a11y-thumb.png" alt="" width="500" height="312" /></a></p>
<p>As you can see, <a title="Devhelp" href="http://live.gnome.org/devhelp">devhelp</a> is running and <a title="Accerciser" href="http://live.gnome.org/Accerciser">Accerciser</a> is showing the full hierarchy of accessible objects associated to the application, starting in the <em>UI process</em> (<a title="Benjamin Otte's blog" href="http://blogs.gnome.org/otte/">GTK+</a> <em>world</em>) and continuing in the <em>Web process</em>, where all the accessible objects from the <a title="WebKitGTK+" href="http://www.webkitgtk.org">WebKitGTK+</a> world are being exposed. As <a title="Blog post: WebKit Contributors Meeting, sockets &amp; plugs" href="/2011/05/05/webkit-contributors-meeting-sockets-plugs/">I explained in a previous post</a>, the magic making possible the connection between the two process is done by means of the <a title="AtkSocket documentation" href="http://developer.gnome.org/atk/unstable/atk-AtkSocket.html"><em>AtkSocket</em></a> and the <a title="AtkPlug" href="http://developer.gnome.org/atk/unstable/atk-AtkPlug.html"><em>AtkPlug</em></a> classes, also represented in the screenshot attached above.</p>
<p>So, that&rsquo;s it.</p>
]]></content:encoded></item><item><title>WebKitGTK+ Hackfest: WK2, a11y and Ephiphany's ad blocker extension</title><link>https://mariospr.org/2011/12/06/webkitgtk-hackfest-wk2-a11y-and-ephiphanys-ad-blocker/</link><pubDate>Tue, 06 Dec 2011 00:01:06 +0000</pubDate><guid isPermaLink="false">https://mariospr.org/?p=607</guid><description>&lt;p&gt;&lt;a title="WebKitGTK+ Hackfest: Day 2" href="http://www.hadess.net/2011/12/webkitgtk-hackfest-day-2.html"&gt;Some&lt;/a&gt; &lt;a title="WebKitGTK+ Hackfest: Day 3" href="http://www.hadess.net/2011/12/webkitgtk-hackfest-day-3.html"&gt;posts&lt;/a&gt; &lt;a title="WebKitGTK+ Hackfest: Day 4" href="http://www.hadess.net/2011/12/webkitgtk-hackfest-day-4.html"&gt;have&lt;/a&gt; &lt;a title="WebKitGTK+ Hackfest: Day 5" href="http://www.hadess.net/2011/12/webkitgtk-hackfest-day-5.html"&gt;been&lt;/a&gt; &lt;a title="Announcing the WebKitGTK+ hackfest 2011" href="https://blogs.igalia.com/juanjo/2011/11/17/announcing-the-webkitgtk-hackfest-2011/"&gt;already&lt;/a&gt; &lt;a title="Open web apps and device APIs" href="https://blogs.igalia.com/juanjo/2011/12/03/open-web-apps-and-device-apis/"&gt;published&lt;/a&gt; &lt;a title="A new design for Epiphany: Web" href="http://blogs.gnome.org/xan/2011/12/04/a-new-design-for-epiphany-web/"&gt;about&lt;/a&gt; &lt;a title="webkittens! lexical scoping is in danger!" href="http://wingolog.org/archives/2011/12/02/webkittens-lexical-scoping-is-in-danger"&gt;this&lt;/a&gt; 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 &lt;a title="Igalia" href="http://www.igalia.com"&gt;Igalia&lt;/a&gt; office in &lt;a title="A Coruña" href="http://en.wikipedia.org/wiki/A_Coru%C3%B1a"&gt;Coruña&lt;/a&gt; for the &lt;a title="WebKitGTK+ Hackfest 2011" href="https://live.gnome.org/Hackfests/WebKitGTK2011"&gt;third edition of the WebKitGTK+ hackfest&lt;/a&gt; , and a lot of work has been done, as &lt;a title="Juanjo's blog" href="https://blogs.igalia.com/juanjo"&gt;Juanjo&lt;/a&gt; has already summarized in &lt;a title="WebKitGTK+ hackfest wrap up" href="https://blogs.igalia.com/juanjo/2011/12/04/webkitgtk-hackfest-wrap-up/"&gt;his &amp;ldquo;WebKitGTK+ hackfest wrap up&amp;rdquo; post&lt;/a&gt;.&lt;/p&gt;</description><content:encoded><![CDATA[<p><a title="WebKitGTK+ Hackfest: Day 2" href="http://www.hadess.net/2011/12/webkitgtk-hackfest-day-2.html">Some</a> <a title="WebKitGTK+ Hackfest: Day 3" href="http://www.hadess.net/2011/12/webkitgtk-hackfest-day-3.html">posts</a> <a title="WebKitGTK+ Hackfest: Day 4" href="http://www.hadess.net/2011/12/webkitgtk-hackfest-day-4.html">have</a> <a title="WebKitGTK+ Hackfest: Day 5" href="http://www.hadess.net/2011/12/webkitgtk-hackfest-day-5.html">been</a> <a title="Announcing the WebKitGTK+ hackfest 2011" href="https://blogs.igalia.com/juanjo/2011/11/17/announcing-the-webkitgtk-hackfest-2011/">already</a> <a title="Open web apps and device APIs" href="https://blogs.igalia.com/juanjo/2011/12/03/open-web-apps-and-device-apis/">published</a> <a title="A new design for Epiphany: Web" href="http://blogs.gnome.org/xan/2011/12/04/a-new-design-for-epiphany-web/">about</a> <a title="webkittens! lexical scoping is in danger!" href="http://wingolog.org/archives/2011/12/02/webkittens-lexical-scoping-is-in-danger">this</a> 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 <a title="Igalia" href="http://www.igalia.com">Igalia</a> office in <a title="A Coruña" href="http://en.wikipedia.org/wiki/A_Coru%C3%B1a">Coruña</a> for the <a title="WebKitGTK+ Hackfest 2011" href="https://live.gnome.org/Hackfests/WebKitGTK2011">third edition of the WebKitGTK+ hackfest</a> , and a lot of work has been done, as <a title="Juanjo's blog" href="https://blogs.igalia.com/juanjo">Juanjo</a> has already summarized in <a title="WebKitGTK+ hackfest wrap up" href="https://blogs.igalia.com/juanjo/2011/12/04/webkitgtk-hackfest-wrap-up/">his &ldquo;WebKitGTK+ hackfest wrap up&rdquo; post</a>.</p>
<p><a title="WebKitGTK+ 2011 Hackfest by mariosp, on Flickr" href="http://www.flickr.com/photos/mariosp/6429995845/"><img src="https://farm8.staticflickr.com/7143/6429995845_975e314fff.jpg" alt="WebKitGTK+ 2011 Hackfest" width="500" height="333" /></a></p>
<p>So, as everything has been already said from a more general perspective, I&rsquo;d like to write my very personal wrap up here, focused on the tasks that I&rsquo;ve been working on, which can be summarized in three:</p>
<ul>
	<li>Enabling accessibility support in <a title="WebKit2" href="http://trac.webkit.org/wiki/WebKit2">WebKit2GTK+</a>.</li>
	<li>Rewrite of the Ad Blocker extension for <a title="Epiphany browser" href="http://www.gnome.org/projects/epiphany">Epiphany</a>.</li>
	<li>Bug fixing in <a title="WebKitGTK+" href="http://www.webkitgtk.org/">WebKitGTK+</a>'s accessibility related code.</li>
</ul>
<h3>Enabling accessibility support in WebKit2GTK+</h3>
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 <a title="Orca and WebKit2GTK+: initial results" href="/2011/11/11/orca-and-webkit2gtk-initial-results/">initial results already got in the WebKit2GTK+ a11y realm</a>, 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: <strong>tests</strong>.
<p>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 <a title="WebKit2" href="http://trac.webkit.org/wiki/WebKit2">WebKit2</a>) and that there shouldn&rsquo;t be any problem either with getting them work properly in the <a title="WebKit's build bots" href="http://build.webkit.org">buildbots</a>, which was something I was quite concerned about by the begining of the week, to be honest.</p>
<p>Besides the tests, the other obvious problem was that such a patch was not widely tested yet with the <a title="Orca screen reader" href="http://live.gnome.org/Orca">Orca screen reader</a> (I use <a title="Accerciser" href="https://live.gnome.org/Accerciser">Accerciser</a> 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.</p>
<p>And regarding to this, I have to say that<a title="Joanmarie Diggs's blog" href="http://blog.grain-of-salt.com/"> Joanmarie Diggs</a> was working tirelessly by testing <a title="Orca screen reader" href="http://live.gnome.org/Orca">Orca</a> 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:</p>
<ul>
	<li><strong>Emitting the AtkDocument's signals</strong> ('load-complete', 'load-stopped' and 'reload'), which was working only in <a title="WebKitGTK+" href="http://www.webkitgtk.org/">WebKitGTK+</a> but not in WebKit2GTK+. See the bug report and the patch (still pending on review) for this issue in <a title="Move emissions of AtkDocument signals down to WebCore" href="https://bugs.webkit.org/show_bug.cgi?id=73750">bug 73750</a>. Also, I reported and worked for a while in another bug related to this, which is now already fixed upstream (see <a title="WebKit Bug 73746" href="https://bugs.webkit.org/show_bug.cgi?id=73746">bug 73746</a>). Yay!</li>
	<li><strong>Ensure that the accessibility hierarchy doesn't break when (re)loading</strong>, which was causing that <a title="Orca screen reader" href="http://live.gnome.org/Orca">Orca</a> 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 <a title="Bug 72589" href="https://bugs.webkit.org/show_bug.cgi?id=72589">bug 72589</a>.</li>
</ul>
So, the conclusion of this part would be that we have now a patch in <a title="WebKit bugzilla" href="http://bugs.webkit.org">WebKit's bugzilla</a> (see <a title="Bug 72589" href="https://bugs.webkit.org/show_bug.cgi?id=72589">bug 72589</a>) 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 <a title="The GNOME project" href="http://www.gnome.org">GNOME</a> 3.4. Time will tell, though.
<h3>Rewrite of the Ad Blocker extension for Epiphany</h3>
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 <a title="Xan's blog" href="http://blogs.gnome.org/xan">Xan</a> in <a href="https://bugzilla.gnome.org/show_bug.cgi?id=660154">bugzilla</a> needed fixing before being able to say aloud something like "hey, the new ad blocker is now in town!".
<p>Thus, we thought it would be good to devote some time during the hackfest to try to close this task too, so we did: <a title="Xan's blog" href="http://blogs.gnome.org/xan">Xan</a> 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 <a title="Midori browser" href="http://www.twotoasts.de/index.php?/pages/midori_summary.html">Midori</a>&rsquo;s ad blocker and so is compatible with <a title="Adblock Plus" href="http://adblockplus.org">Adblock Plus</a> filt﻿ers, which work very well IMHO.</p>
<p>So, this basically means that the new ad blocker extension will be present from <a title="Epiphany browser" href="http://www.gnome.org/projects/epiphany">Epiphany</a> 3.4 on. Check out the related bug in <a title="The GNOME project" href="http://www.gnome.org">GNOME</a>&rsquo;s bugzilla: <a href="https://bugzilla.gnome.org/show_bug.cgi?id=660154">bug 660154</a></p>
<h3>Bug fixing in WebKitGTK+'s accessibility related code</h3>
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 <a title="WebKitGTK+" href="http://www.webkitgtk.org/">WebKitGTK+</a>'s a11y code as reported by <a title="Joanmarie Diggs's blog" href="http://blog.grain-of-salt.com/">Joanie</a> (basically <a href="https://bugs.webkit.org/show_bug.cgi?id=72804">bug 72804</a> and <a href="https://bugs.webkit.org/show_bug.cgi?id=72830">bug 72830</a>).
<p>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 <a title="Orca screen reader" href="http://live.gnome.org/Orca">Orca</a> to work properly with <a title="WebKitGTK+" href="http://www.webkitgtk.org/">WebKitGTK+</a> based browsers (special mention to <a href="https://bugs.webkit.org/show_bug.cgi?id=72830">bug 72830</a> here).</p>
<h3>Conclusion</h3>
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 <a title="Juanjo's wrap up" href="https://blogs.igalia.com/juanjo/2011/12/04/webkitgtk-hackfest-wrap-up/">Juanjo pointed out in his wrap up post</a>, "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.
<p>And from a more personal point of view, I&rsquo;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.</p>
<p>To finish, I&rsquo;d just like to mention that I&rsquo;ve been taking some pictures during the hackfest, which you can check out in this <a title="WebKitGTK+ 2011 Hackfest, by me" href="http://www.flickr.com/photos/mariosp/sets/72157628217381055/">photo set in flickr</a> (pictures uploaded with <a title="Frogr site at live.gnome.org" href="live.gnome.org/Frogr">Frogr</a>, of course!). <a title="Nayan's twitter profile" href="https://twitter.com/#!/xc0ffee">Nayan</a> has also taken some pictures as well, <a title="WebKit Gtk Hackfest 2011, by Nayan" href="http://www.flickr.com/photos/59474880@N00/sets/72157628245413107/">check them out here</a>.</p>
<p><a title="WebKitGTK+ 2011 Hackfest (The End) by mariosp, on Flickr" href="http://www.flickr.com/photos/mariosp/6461606065/"><img src="https://farm8.staticflickr.com/7141/6461606065_fb0f0bbf76.jpg" alt="WebKitGTK+ 2011 Hackfest (The End)" width="500" height="333" /></a></p>
<p>Of course, thanks a lot to the sponsors that made this possible: <a title="Collabora" href="http://www.collabora.co.uk/">Collabora</a>, <a title="Motorola" href="http://www.motorola.com">Motorola</a>, <a title="Igalia" href="http://www.igalia.com">Igalia</a> and the always awesome <a title="The GNOME Foundation" href="http://foundation.gnome.org/">GNOME Foundation</a>. I hope we&rsquo;ll be able to repeat it next year, since this hackfest it&rsquo;s only getting more and more awesome every time it happens.</p>
]]></content:encoded></item><item><title>Orca and WebKit2GTK+: initial results</title><link>https://mariospr.org/2011/11/11/orca-and-webkit2gtk-initial-results/</link><pubDate>Fri, 11 Nov 2011 23:38:29 +0000</pubDate><guid isPermaLink="false">https://mariospr.org/?p=562</guid><description>&lt;p&gt;Last May, &lt;a title="WebKit Contributors Meeting, sockets &amp;amp; plugs" href="https://mariospr.org/2011/05/05/webkit-contributors-meeting-sockets-plugs/"&gt;I wrote about some initial tests I did back then&lt;/a&gt; with &lt;a title="AtkSocket" href="http://developer.gnome.org/atk/stable/atk-AtkSocket.html"&gt;AtkSocket&lt;/a&gt; and &lt;a title="AtkPlug" href="http://developer.gnome.org/atk/stable/atk-AtkPlug.html"&gt;AtkPlug&lt;/a&gt;, just to learn a bit about that API that allows connecting accessibility trees in different processes, thanks to the magic of the &lt;a title="AT-SPI2 ATK bridge" href="http://git.gnome.org/browse/at-spi2-atk"&gt;ATK bridge&lt;/a&gt;. 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 &lt;a title="WebKitGTK+" href="http://webkitgtk.org/"&gt;WebKitGTK+&lt;/a&gt; library. Looking back, I think that the effort has definitely payed off&amp;hellip;&lt;/p&gt;</description><content:encoded><![CDATA[<p>Last May, <a title="WebKit Contributors Meeting, sockets &amp; plugs" href="/2011/05/05/webkit-contributors-meeting-sockets-plugs/">I wrote about some initial tests I did back then</a> with <a title="AtkSocket" href="http://developer.gnome.org/atk/stable/atk-AtkSocket.html">AtkSocket</a> and <a title="AtkPlug" href="http://developer.gnome.org/atk/stable/atk-AtkPlug.html">AtkPlug</a>, just to learn a bit about that API that allows connecting accessibility trees in different processes, thanks to the magic of the <a title="AT-SPI2 ATK bridge" href="http://git.gnome.org/browse/at-spi2-atk">ATK bridge</a>. 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 <a title="WebKitGTK+" href="http://webkitgtk.org/">WebKitGTK+</a> library. Looking back, I think that the effort has definitely payed off&hellip;</p>
<p>However, because of one reason or another (<a title="The family keeps growing" href="/2011/01/09/the-family-keeps-growing/">and not necessarily work-related</a>), I was not able to devote much time to keep working on this until some weeks ago, but fortunately I&rsquo;m now again working on this as my primary task in <a title="Igalia" href="http://www.igalia.com">Igalia</a>, as part of our <a title="Igalia's WebKit team" href="http://www.igalia.com/nc/work/project/item/webkitgtk/">WebKit team</a>, so I expect to have some nice results soon, hopefully also in the form of integrated patches upstream.</p>
<p>And talking about results, I can&rsquo;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 <a title="ORCA" href="http://live.gnome.org/Orca">Orca</a> read, for the very first time, web content rendered through <a title="WebKit2 MiniBrowser for the GTK+ port running!" href="https://blogs.igalia.com/alex/2011/04/08/webkit2-minibrowser-for-the-gtk-port-running/">WebKit2GTK&rsquo;s MiniBrowser</a>, which has been not an easy task since the <a title="WebKit2" href="http://trac.webkit.org/wiki/WebKit2">multiprocess architecture of WebKit2</a> made it a little bit challenging, to say the least.</p>
<p>Of  course there&rsquo;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&hellip; 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, <a title="ORCA" href="http://live.gnome.org/Orca">Orca</a>&rsquo;s main job is about speaking, right?. So here it is:</p>
<p style="text-align: center;"><a href="http://vimeo.com/31969760"><strong>Orca and WebKit2GTK+: initial results </strong><em>(in Vimeo)</em></a></p>
By the way, I'd like to make the most of this post by saying I'm really proud and happy to have <a title="Joanmarie Diggs" href="http://blog.grain-of-salt.com/">Joanmarie Diggs</a> aboard in <a title="Igalia" href="http://www.igalia.com">Igalia</a> for a few weeks now, who contributed <strong>a lot</strong> to making possible that I was writing this post today. Thanks , Joanie!
]]></content:encoded></item></channel></rss>