<?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>Hackfest on mariospr.org</title><link>https://mariospr.org/category/hackfest/</link><description>Recent content in Hackfest on mariospr.org</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 23 Dec 2019 23:13:01 +0000</lastBuildDate><atom:link href="https://mariospr.org/category/hackfest/index.xml" rel="self" type="application/rss+xml"/><item><title>End of the year Update: 2019 edition</title><link>https://mariospr.org/2019/12/23/end-of-the-year-update-2019-edition/</link><pubDate>Mon, 23 Dec 2019 23:13:01 +0000</pubDate><guid isPermaLink="false">https://mariospr.org/?p=2770</guid><description>&lt;p&gt;It&amp;rsquo;s the end of December and it seems that yet another year has gone by, so I figured that I&amp;rsquo;d write an EOY update to summarize my main work at &lt;a href="https://www.igalia.com"&gt;Igalia&lt;/a&gt; as part of our &lt;a href="https://www.igalia.com/project/chromium"&gt;Chromium team&lt;/a&gt;, as my humble attempt to make up for the lack of posts in this blog during this year.&lt;/p&gt;
&lt;p&gt;I did quit a few things this year, but for the purpose of this blog post I&amp;rsquo;ll focus on what I consider the most relevant ones: work on the &lt;a href="https://www.chromium.org/servicification"&gt;Servicification&lt;/a&gt; and the &lt;a href="https://docs.google.com/document/d/13XsbaBz7A2H0PZIdFcytHf5-fVOlAfkLlIUKhxKzs44"&gt;Blink Onion Soup&lt;/a&gt; projects, the &lt;a href="https://docs.google.com/document/d/1Jwfbzbe8ozaoilhqj5mAPYbYGpgZCen_XAAAdwmyP1E"&gt;migration to the new Mojo APIs&lt;/a&gt; and the &lt;a href="https://docs.google.com/document/d/1e0qqv3ZGQYskE4XhtuGrYJeThjYXu8xozl7zIlwjSD0"&gt;BrowserInterfaceBroker&lt;/a&gt;, as well as a summary of the conferences I attended, both as a regular attendee and a speaker.&lt;/p&gt;</description><content:encoded><![CDATA[<p>It&rsquo;s the end of December and it seems that yet another year has gone by, so I figured that I&rsquo;d write an EOY update to summarize my main work at <a href="https://www.igalia.com">Igalia</a> as part of our <a href="https://www.igalia.com/project/chromium">Chromium team</a>, as my humble attempt to make up for the lack of posts in this blog during this year.</p>
<p>I did quit a few things this year, but for the purpose of this blog post I&rsquo;ll focus on what I consider the most relevant ones: work on the <a href="https://www.chromium.org/servicification">Servicification</a> and the <a href="https://docs.google.com/document/d/13XsbaBz7A2H0PZIdFcytHf5-fVOlAfkLlIUKhxKzs44">Blink Onion Soup</a> projects, the <a href="https://docs.google.com/document/d/1Jwfbzbe8ozaoilhqj5mAPYbYGpgZCen_XAAAdwmyP1E">migration to the new Mojo APIs</a> and the <a href="https://docs.google.com/document/d/1e0qqv3ZGQYskE4XhtuGrYJeThjYXu8xozl7zIlwjSD0">BrowserInterfaceBroker</a>, as well as a summary of the conferences I attended, both as a regular attendee and a speaker.</p>
<p>But enough of an introduction, let&rsquo;s dive now into the gory details&hellip;</p>
<h2>Servicification: migration to the Identity service</h2>
<a href="/wp-content/uploads/2019/01/chromium-s13n-layers-1.png"><img style="margin: 6px;" src="/wp-content/uploads/2019/12/chromium-s13n-layers_small-1.png" align="right" /></a>As explained in my <a href="/2019/01/29/working-on-the-chromium-servicification-project/">previous post from January</a>, I've started this year working on the <strong><a href="https://www.chromium.org/servicification">Chromium Servicification (s13n) Project</a></strong>. More specifically, I joined my team mates in helping with the migration to the <a href="https://chromium.googlesource.com/chromium/src/+/master/services/identity">Identity service</a> by updating consumers of several classes from the <a href="https://chromium.googlesource.com/chromium/src/+/master/components/signin">sign-in component</a> to ensure they now use the new <a href="https://source.chromium.org/chromium/chromium/src/+/master:components/signin/public/identity_manager/identity_manager.h">IdentityManager</a> API instead of directly accessing those other lower level APIs.
<p>This was important because at some point the <a href="https://chromium.googlesource.com/chromium/src/+/master/services/identity">Identity Service</a> will run in a separate process, and a precondition for that to happen is that all access to sign-in related functionality would have to go through the <a href="https://source.chromium.org/chromium/chromium/src/+/master:components/signin/public/identity_manager/identity_manager.h">IdentityManager</a>, so that other process can communicate with it directly via <a href="https://source.chromium.org/chromium/chromium/src/+/master:services/identity/public/mojom">Mojo interfaces exposed by the Identity service</a>.</p>
<p>I&rsquo;ve already talked long enough in my <a href="/2019/01/29/working-on-the-chromium-servicification-project/">previous post</a>, so please take a look in there if you want to know more details on what that work was exactly about.</p>
<h2>The Blink Onion Soup project</h2>
Interestingly enough, a bit after finishing up working on the <a href="https://chromium.googlesource.com/chromium/src/+/master/services/identity">Identity service</a>, our team dived deep into helping with another <a href="https://www.chromium.org/">Chromium project</a> that shared at least one of the goals of the s13n project: to improve the health of <a href="https://source.chromium.org/chromium/chromium/src">Chromium's massive codebase</a>. The project is code-named <strong>Blink Onion Soup</strong> and its main goal is, as described in the <a href="https://docs.google.com/document/d/13XsbaBz7A2H0PZIdFcytHf5-fVOlAfkLlIUKhxKzs44">original design document from 2015</a>, to <i>“simplify the codebase, empower developers to implement features that run faster, and remove hurdles for developers interfacing with the rest of the Chromium”</i>. There's also a <a href="https://docs.google.com/presentation/d/1Dpj4tpueCdne4MoRh6UOHrFTq3fdfz_yH5QGQInFCl4">nice slide deck from 2016's BlinkOn 6</a> that explains the idea in a more visual way, if you're interested.
<p style="text-align: center;"><a href="https://www.flickr.com/photos/29233640@N07/9585503388"><img src="/wp-content/uploads/2019/12/onionlayers_small.jpg" />
</a><small><a href="https://www.flickr.com/photos/29233640@N07/9585503388"><em>"Layers", by Robert Couse-Baker (CC BY 2.0)</em></a></small></p>
In a nutshell, the <strong>main idea</strong> is to <strong>simplify the codebase by removing/reducing the several layers of located between Chromium and Blink</strong> that were necessary back in the day, before Blink was forked out of WebKit, to support different embedders with their particular needs (e.g. Epiphany, Chromium, Safari...). Those layers made sense back then but these days Blink's only embedder is <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/content/README.md">Chromium's content module</a>, which is the module that Chrome and other Chromium-based browsers embed to leverage Chromium's implementation of the <a href="https://webplatform.github.io/">Web Platform</a>, and also where the <a href="https://www.chromium.org/developers/design-documents/multi-process-architecture">multi-process</a> and <a href="https://www.chromium.org/developers/design-documents/process-models#TOC-Sandboxes-and-plug-ins">sandboxing</a> architecture is implemented.
<p>And in order to implement the <a href="https://www.chromium.org/developers/design-documents/multi-process-architecture">multi-process</a> model, the <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/content/README.md">content module</a> is split in two main parts running in separate processes, which communicate among each other over IPC mechanisms: <a href="https://source.chromium.org/chromium/chromium/src/+/master:content/browser"><code>//content/browser</code></a>, which represents the &ldquo;browser process&rdquo; that you embed in your application via the <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/content/public/README.md">Content API</a>, and <a href="https://source.chromium.org/chromium/chromium/src/+/master:content/renderer"><code>//content/renderer</code></a>, which represents the &ldquo;renderer process&rdquo; that internally runs the web engine&rsquo;s logic, that is, <a href="https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/">Blink</a>.</p>
<p>With this in mind, the <strong>initial version</strong> of the <strong>Blink Onion Soup</strong> project (aka <em><a href="https://docs.google.com/document/d/13XsbaBz7A2H0PZIdFcytHf5-fVOlAfkLlIUKhxKzs44">&ldquo;Onion Soup 1.0&rdquo;</a></em>) project was born about 4 years ago and the folks spearheading this proposal started working on a 3-way plan to implement their vision, which can be summarized as follows:</p>
<ol>
 	<li><strong>Migrate usage of <a href="https://www.chromium.org/developers/design-documents/inter-process-communication">Chromium's legacy IPC</a> to the new IPC</strong> mechanism called <strong><a href="https://chromium.googlesource.com/chromium/src/+/master/mojo/README.md">Mojo</a></strong>.</li>
 	<li><strong>Move</strong> as much <strong>functionality</strong> as possible <strong>from <a href="https://source.chromium.org/chromium/chromium/src/+/master:content/renderer"><code>//content/renderer</code></a></strong> down <strong>into <a href="https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink">Blink</a></strong> itself.</li>
 	<li><strong>Slim down <a href="https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/public/">Blink's public APIs</a> </strong>by removing classes/enums unused outside of <a href="https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink">Blink</a>.</li>
</ol>
Three clear steps, but definitely not easy ones as you can imagine. First of all, if we were to remove levels of indirection between <a href="https://source.chromium.org/chromium/chromium/src/+/master:content/renderer"><code>//content/renderer</code></a> and <a href="https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink">Blink</a> as well as to slim down <a href="https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/public/">Blink's public APIs</a> as much as possible, a precondition for that would be to allow direct communication between the browser process and <a href="https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink">Blink</a> itself, right?
<p>In other words, if you need your browser process to communicate with <a href="https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink">Blink</a> for some specific purpose (e.g. reacting in a visual way to a <a href="https://developers.google.com/web/fundamentals/push-notifications">Push Notification</a>), it would certainly be sub-optimal to have something like this:</p>
<p style="text-align: center;"><a href="/wp-content/uploads/2019/12/blogpost-legacyipc-1.png"><img src="/wp-content/uploads/2019/12/blogpost-legacyipc_small.png" /></a></p>
...and yet that is what would happen if we kept using <a href="https://www.chromium.org/developers/design-documents/inter-process-communication">Chromium's legacy IPC</a> which, unlike <a href="https://chromium.googlesource.com/chromium/src/+/master/mojo/README.md">Mojo</a>, doesn't allow us to communicate with Blink directly from <code><a href="https://source.chromium.org/chromium/chromium/src/+/master:content/browser">//content/browser</a></code>, meaning that we'd need to go first through <code><a href="https://source.chromium.org/chromium/chromium/src/+/master:content/renderer">//content/renderer</a></code> and then navigate through different layers to move between there and Blink itself.
<p>In contrast, using <a href="https://chromium.googlesource.com/chromium/src/+/master/mojo/README.md">Mojo</a> would allow us to have Blink implement those remote services internally and then <a href="https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/public/mojom">publicly declare the relevant Mojo interfaces</a> so that other processes can interact with them without going through extra layers. Thus, doing that <a href="https://chromium.googlesource.com/chromium/src.git/+/master/docs/mojo_ipc_conversion.md">kind of migration</a> would ultimately allow us to end up with something like this:</p>
<p style="text-align: center;"><a href="/wp-content/uploads/2019/12/blogpost-mojoipc.png"><img src="/wp-content/uploads/2019/12/blogpost-mojoipc_small.png" /></a></p>
...which looks nicer indeed, since now it is possible to communicate directly with Blink, where the remote service would be implemented (either in its core or in a module). Besides, it would no longer be necessary to consume Blink's public API from <a href="https://source.chromium.org/chromium/chromium/src/+/master:content/renderer"><code>//content/renderer</code></a>, nor the other way around, enabling us to remove some code.
<p>However, we can&rsquo;t simply ignore some stuff that lives in <a href="https://source.chromium.org/chromium/chromium/src/+/master:content/renderer"><code>//content/renderer</code></a> implementing part of the original logic so, before we can get to the lovely simplification shown above, we would likely need to move some logic from <a href="https://source.chromium.org/chromium/chromium/src/+/master:content/renderer"><code>//content/renderer</code></a> right into <a href="https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink">Blink</a>, which is what the second bullet point of the list above is about. Unfortunately, this is not always possible but, whenever it is an option, the job here would be to figure out what of that logic in <a href="https://source.chromium.org/chromium/chromium/src/+/master:content/renderer"><code>//content/renderer</code></a> is really needed and then figure out how to move it into Blink, likely removing some code along the way.</p>
<p>This particular step is what we commonly call <em>&ldquo;Onion Soup&rsquo;ing <code>//content/renderer/&lt;feature&gt;</code>&rdquo; </em>(not entirely sure &ldquo;Onion Soup&rdquo; is a verb in English, though&hellip;) and this is for instance how things looked before (left) and after (right) Onion Souping a feature I worked on myself: Chromium&rsquo;s implementation of the <a href="https://www.w3.org/TR/push-api/">Push API</a>:</p>
<p style="text-align: center;"><a href="/wp-content/uploads/2019/12/OS-PushMessaging.png"><img src="/wp-content/uploads/2019/12/OS-PushMessaging_small.png" /></a>
<small><em>Onion Soup'ing //content/renderer/push_messaging</em></small></p>
Note how the whole design got quite simplified moving from the left to the right side? Well, that's because some abstract classes declared in Blink's public API and implemented in <a href="https://source.chromium.org/chromium/chromium/src/+/master:content/renderer"><code>//content/renderer</code></a> (e.g. WebPushProvider, WebPushMessagingClient) are no longer needed now that those implementations got moved into Blink (i.e. PushProvider and PushMessagingClient), meaning that we can now finally remove them.
<p>Of course, there were also cases where we found some public APIs in Blink that were not used anywhere, as well as cases where they were only being used inside of Blink itself, perhaps because nobody noticed when that happened at some point in the past due to some other refactoring. In those cases the task was easier, as we would just remove them from the public API, if completely unused, or move them into Blink if still needed there, so that they are no longer exposed to a content module that no longer cares about that.</p>
<p>Now, trying to provide a <strong>high-level overview of what our team <em>&ldquo;Onion Soup&rsquo;ed&rdquo;</em> this year</strong>, I think I can say with confidence that we <strong>migrated</strong> (or helped migrate)<strong> more than 10 different modules</strong> like the one I mentioned above, such as <code>android/</code>, <code>appcache/</code>, <code>media/stream/</code>, <code>media/webrtc</code>, <code>push_messaging/</code> and <code>webdatabase/</code>, among others. You can see the full list with all the modules migrated during the lifetime of this project in the <a href="https://docs.google.com/spreadsheets/d/1VIINt17Dg2cJjPpoJ_HY3HI0uLpidql-1u8pBJtpbGk">spreadsheet tracking the Onion Soup efforts</a>.</p>
<p>In my particular case, I <em>&ldquo;Onion Soup&rsquo;ed&rdquo;</em> the <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=939943">PushMessaging</a>,  <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=933873">WebDatabase</a> and <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=980151">SurroundingText</a> features, which was a fairly complete exercise as it involved working on all the 3 bullet points: <a href="https://chromium.googlesource.com/chromium/src.git/+/master/docs/mojo_ipc_conversion.md">migrating to Mojo</a>, moving logic from <a href="https://source.chromium.org/chromium/chromium/src/+/master:content/renderer"><code>//content/renderer</code></a> to Blink and removing unused classes from Blink&rsquo;s public API.</p>
<p>And <strong>as for slimming down Blink&rsquo;s public API</strong>, I can tell that we helped get to a point where <strong>more than 125 classes/enums were removed</strong> from that <a href="https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/public/">Blink&rsquo;s public APIs</a>, simplifying and reducing the Chromium code- base along the way, as you can check in <a href="https://docs.google.com/spreadsheets/d/1TBzERV4BAd9peJJrxvrVn1tZb-WrPb7iMFiRUqJ6crE">this other spreadsheet that tracked that particular piece of work</a>.</p>
<p>But we&rsquo;re not done yet! While <strong>overall progress for the Onion Soup 1.0 project</strong> is <strong>around 90%</strong> right now, there are still a few more modules that require <em>&ldquo;Onion Soup&rsquo;ing&rdquo;</em>, among which we&rsquo;ll be tackling <a href="https://source.chromium.org/chromium/chromium/src/+/master:content/renderer/media"><code>media/</code></a> (already WIP) and <a href="https://source.chromium.org/chromium/chromium/src/+/master:content/renderer/accessibility"><code>accessibility/</code></a> (starting in 2020), so there&rsquo;s quite some more work to be done on that regard.</p>
<p>Also, there is a newer design document for the so-called <a href="https://docs.google.com/document/d/1lzGeXN4nwnANdFSpVxmJ1TUgb3QBPFCjVxLsFVBlKdE"><strong>Onion Soup 2.0</strong></a> project that contains some tasks that we have been already working on for a while, such as &ldquo;Finish Onion Soup 1.0&rdquo;, &ldquo;Slim down Blink public APIs&rdquo;, &ldquo;Switch Mojo to new syntax&rdquo; and &ldquo;Convert legacy IPC in //content to Mojo&rdquo;, so definitely not done yet. Good news here, though: some of those tasks are already quite advanced already, and in the particular case of the migration to the new Mojo syntax it&rsquo;s nearly done by now, which is precisely what I&rsquo;m talking about next&hellip;</p>
<h2>Migration to the new Mojo APIs and the BrowserInterfaceBroker</h2>
Along with working on <em>"Onion Soup'ing"</em> some features, a big chunk of my time this year went also into this other task from the <a href="https://docs.google.com/document/d/1lzGeXN4nwnANdFSpVxmJ1TUgb3QBPFCjVxLsFVBlKdE"><strong>Onion Soup 2.0</strong></a> project, where I was lucky enough again not to be alone, but accompanied by several of my team mates from <a href="https://www.igalia.com">Igalia</a>'s Chromium team.
<p>This was a massive task where we worked hard to migrate <strong>all of Chromium&rsquo;s codebase</strong> to the new Mojo APIs that were introduced a few months back, with the idea of getting Blink updated first and then having everything else migrated by the end of the year.</p>
<p style="text-align: center;"><a href="/wp-content/uploads/2019/12/MojoMigrationsStats2019.png"><img src="/wp-content/uploads/2019/12/MojoMigrationsStats2019_small.png" /></a>
<small><em>Progress of migrations to the new Mojo syntax: June 1st - Dec 23rd, 2019</em></small></p>
But first things first: you might be wondering what was wrong with the "old" Mojo APIs since, after all, Mojo is the new thing we were migrating to from <a href="https://www.chromium.org/developers/design-documents/inter-process-communication">Chromium's legacy API</a>, right?
<p>Well, as it turns out, the previous APIs had a few problems that were causing some confusion due to not providing the most intuitive type names (e.g. what is an <a href="https://source.chromium.org/chromium/chromium/src/+/master:mojo/public/cpp/bindings/interface_ptr_info.h"><code>InterfacePtrInfo</code></a> anyway?), as well as being quite error-prone since the old types were not as strict as the new ones enforcing certain conditions that should not happen (e.g. trying to bind an already-bound endpoint shouldn&rsquo;t be allowed). In the <a href="https://docs.google.com/document/d/1Jwfbzbe8ozaoilhqj5mAPYbYGpgZCen_XAAAdwmyP1E">Mojo Bindings Conversion Cheatsheet</a> you can find an exhaustive list of cases that needed to be considered, in case you want to know more details about these type of migrations.</p>
<p>Now, as a consequence of this additional complexity, the task wouldn&rsquo;t be as simple as a &ldquo;search &amp; replace&rdquo; operation because, while moving from old to new code, it would often be necessary to fix situations where the old code was working fine just because it was relying on some constraints not being checked. And if you top that up with the fact that there were, literally, <strong>thousands of lines</strong> in the Chromium codebase using the old types, then you&rsquo;ll see why this was a massive task to take on.</p>
<p>Fortunately, after a few months of hard work done by our <a href="https://www.igalia.com/project/chromium">Chromium team</a>, we can proudly say that we have <strong>nearly finished this task</strong>, which involved<strong> more than 1100 patches landed upstream</strong> after combining the patches that migrated the types inside Blink (see <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=978694">bug 978694</a>) with those that tackled the rest of the Chromium repository (see <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=955171">bug 955171</a>).</p>
<p>And by &ldquo;nearly finished&rdquo; I mean an <strong>overall progress of 99.21%</strong> according to the <a href="https://docs.google.com/spreadsheets/d/1khYVrfnN74RSDqqXgCFlG9fI89IKWA9J32Ln_2ZcTaU">Migration to new mojo types spreadsheet</a> where we track this effort, where <strong style="font-size: 1rem;">Blink and //content have been fully migrated</strong>, and <strong>all the other directories</strong>, aggregated together, are at <strong>98.64%</strong>, not bad!</p>
<p>On this regard, I&rsquo;ve been also sending a bi-weekly status report mail to the <a href="https://groups.google.com/a/chromium.org/forum/#!forum/chromium-mojo">chromium-mojo</a> and <a href="https://groups.google.com/a/chromium.org/forum/#!forum/platform-architecture-dev">platform-architecture-dev</a> mailing lists for a while (see the <a href="https://groups.google.com/a/chromium.org/d/msg/chromium-mojo/kSVBn0Y6vQA/CiPtFMqEAgAJ">latest report here</a>), so make sure to subscribe there if you&rsquo;re interested, even though those reports might not last much longer!</p>
<p>Now, back with our feet on the ground, the main roadblock at the moment preventing us from reaching 100% is <a href="https://source.chromium.org/chromium/chromium/src/+/master:components/arc"><code>//components/arc</code></a>, whose migration needs to be agreed with the folks maintaining a copy of <a href="https://source.chromium.org/chromium/chromium/src/+/master:components/arc/mojom">Chromium&rsquo;s ARC mojo files</a> for Android and ChromeOS. This is currently under discussion (<a href="https://groups.google.com/a/chromium.org/d/msg/chromium-mojo/BRK0Xeu7bgQ/LWL2ELAOAwAJ">see chromium-mojo ML</a> and <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=1035484">bug 1035484</a>) and so I&rsquo;m confident it will be something we&rsquo;ll hopefully be able to achieve early next year.</p>
<p>Finally, and still related to this Mojo migrations, my colleague <a href="https://blogs.igalia.com/mshin/">Shin</a> and I took a &ldquo;little detour&rdquo; while working on this migration and focused for a while in the more specific task of <strong><a href="https://docs.google.com/document/d/1e0qqv3ZGQYskE4XhtuGrYJeThjYXu8xozl7zIlwjSD0">migrating uses of Chromium&rsquo;s InterfaceProvider to the new BrowserInterfaceBroker class</a></strong>. And while this was not a task as massive as the other migration, it was also very important because, besides fixing some problems inherent to the old <a href="https://source.chromium.org/chromium/chromium/src/+/master:services/service_manager/public/cpp/interface_provider.h"><code>InterfaceProvider</code></a> API, it also blocked the migration to the new mojo types as <a href="https://source.chromium.org/chromium/chromium/src/+/master:services/service_manager/public/cpp/interface_provider.h"><code>InterfaceProvider</code></a> did usually rely on the old types!</p>
<p style="text-align: center;"><a href="https://docs.google.com/document/d/1e0qqv3ZGQYskE4XhtuGrYJeThjYXu8xozl7zIlwjSD0"><img src="/wp-content/uploads/2019/12/BrowserInterfaceBroker_small.png" /></a>
<a href="https://docs.google.com/document/d/1e0qqv3ZGQYskE4XhtuGrYJeThjYXu8xozl7zIlwjSD0"><small><em>Architecture of the BrowserInterfaceBroker</em></small></a></p>
Good news here as well, though: after having the two of us working on this task for a few weeks, we can proudly say that, today, <strong>we have finished all the 132 migrations</strong> that were needed and are now in the process of doing some after-the-job cleanup operations that will remove even more code from the repository! \o/
<h2>Attendance to conferences</h2>
This year was particularly busy for me in terms of conferences, as I did travel to a few events both as an attendee and a speaker. So, here's a summary about that as well:
<p><img style="margin: 6px;" src="/wp-content/uploads/2019/12/fosdem-2019_small.png" align="right" />As usual, I started the year attending one of my favourite conferences of the year by going to <strong><a href="https://archive.fosdem.org/2019/">FOSDEM 2019</a></strong> in Brussels. And even though I didn&rsquo;t have any talk to present in there, I did enjoy my visit like every year I go there. Being able to meet so many people and being able to attend such an impressive amount of interesting talks over the weekend while having some beers and chocolate is always great!</p>
<p>Next stop was Toronto, Canada, where I attended <strong><a href="https://docs.google.com/document/u/1/d/e/2PACX-1vTgBrqyQ4KCchsymvssri1pN1BkOg3sEqHThqhvFDl9-zl-hLx1S5c8sc5gaZ_VzKEVaYj94H3m1vso/pub">BlinkOn 10</a></strong> on April 9th &amp; 10th. I was honoured to have a chance to <a href="https://speakerdeck.com/mariospr/summary-of-igalias-contributions-to-chromium-in-the-past-year"><strong>present a summary of the contributions that Igalia</strong> <strong>made to the Chromium</strong></a> Open Source project in the 12 months before the event, which was a rewarding experience but also quite an intense one, because it was a lightning talk and I had to go through all the ~10 slides in a bit under 3 minutes! <strong><a href="https://speakerdeck.com/mariospr/summary-of-igalias-contributions-to-chromium-in-the-past-year">Slides are here</a></strong> and there is also a <strong><a href="https://www.youtube.com/watch?v=XZ08w8wIo3I">video of the talk</a>,</strong> in case you want to check how crazy that was.</p>
<p>Took a bit of a rest from conferences over the summer and then attended, also as usual, the <strong><a href="https://webengineshackfest.org/2019/">Web Engines Hackfest</a></strong> that we at <a href="https://www.igalia.com">Igalia</a> have been organising every single year since 2009. Didn&rsquo;t have a presentation this time, but still it was a blast to attend it once again as an Igalian and celebrate the hackfest&rsquo;s 10th anniversary sharing knowledge and experiences with the <a href="https://webengineshackfest.org/2019/#attendees">people who attended this year&rsquo;s edition</a>.</p>
<p><img style="margin: 6px;" src="/wp-content/uploads/2019/12/Chromium_logo_small.png" align="right" />Finally, I attended two conferences in the Bay Area by mid November: first one was the <strong><a href="https://developer.chrome.com/devsummit/">Chrome Dev Summit 2019</a></strong> in San Francisco on Nov 11-12, and the second one was <strong><a href="https://docs.google.com/document/u/2/d/e/2PACX-1vR9u7kNG0X5tkblbkBWc-lGtPj-E5i9eYbsocSeY6fwzg4qwf_Ajw-QPyFCtr-bXiWngmDtLaBJncd6/pub">BlinkOn 11</a></strong> in Sunnyvale on Nov 14-15. It was my first time at the <a href="https://developer.chrome.com/devsummit/">Chrome Dev Summit</a> and I have to say I was fairly impressed by the event, how it was organised and the quality of the talks in there. It was also great for me, as a browsers developer, to see first hand what are the things web developers are more &amp; less excited about, what&rsquo;s coming next&hellip; and to get to meet people I would have never had a chance to meet in other events.</p>
<p>As for <a href="https://docs.google.com/document/u/2/d/e/2PACX-1vR9u7kNG0X5tkblbkBWc-lGtPj-E5i9eYbsocSeY6fwzg4qwf_Ajw-QPyFCtr-bXiWngmDtLaBJncd6/pub">BlinkOn 11</a>, I presented a 30 min <strong><a href="https://speakerdeck.com/mariospr/improving-chromiums-code-health-onion-soup-and-beyond">talk about our work on the Onion Soup project, the Mojo migrations and improving Chromium&rsquo;s code health</a></strong> in general, along with my colleague <a href="https://blogs.igalia.com/tonikitoo">Antonio Gomes</a>. It was basically a &ldquo;extended&rdquo; version of this post where we went not only through the tasks I was personally involved with, but also talked about other tasks that other members of our team worked on during this year, which include way many other things! Feel free to check out the <a href="https://speakerdeck.com/mariospr/improving-chromiums-code-health-onion-soup-and-beyond"><strong>slides here</strong></a>, as well as the <strong><a href="https://youtu.be/0T-ZMW5PiDY">video of the talk</a></strong>.</p>
<h2>Wrapping Up</h2>
As you might have guessed, 2019 has been a pretty exciting and busy year for me work-wise, but the most interesting bit in my opinion is that what I mentioned here was just the tip of the iceberg... many other things happened in the personal side of things, starting with the fact that this was the year that we consolidated our return to Spain after 6 years living abroad, for instance.
<p>Also, and getting back to work-related stuff here again, this year I also became accepted back at <a href="https://www.igalia.com">Igalia</a>&rsquo;s Assembly after having <a href="/2018/08/03/on-moving/">re-joined this amazing company back in September 2018 after a 6-year &ldquo;gap&rdquo; living and working in the UK</a> which, besides being something I was very excited and happy about, also brought some more responsibilities onto my plate, as it&rsquo;s natural.</p>
<p>Last, I can&rsquo;t finish this post without being explicitly grateful for all the people I got to interact with during this year, both at work and outside, which made my life easier and nicer at so many different levels. To all of you,  cheers!</p>
<p>And to everyone else reading this&hellip; happy holidays and happy new year in advance!</p>
]]></content:encoded></item><item><title>Back from GUADEC</title><link>https://mariospr.org/2017/08/04/back-from-guadec/</link><pubDate>Fri, 04 Aug 2017 18:02:55 +0000</pubDate><guid isPermaLink="false">https://mariospr.org/?p=2450</guid><description>&lt;p&gt;After spending a few days in Manchester with other fellow &lt;a href="https://www.gnome.org/"&gt;GNOME&lt;/a&gt; hackers and colleagues from &lt;a href="https://endlessm.com"&gt;Endless&lt;/a&gt;, I&amp;rsquo;m finally back at my place in the &lt;span style="text-decoration: line-through;"&gt;sunny&lt;/span&gt; land of Surrey (England) and I thought it would be nice to write some sort of recap, so here it is:&lt;/p&gt;
&lt;h2&gt;The Conference&lt;/h2&gt;
&lt;a href="https://mariospr.org/2017/08/04/back-from-guadec/img_20170728_095124/" rel="attachment wp-att-2451"&gt;&lt;img class="alignright size-medium wp-image-2451" src="https://mariospr.org/wp-content/uploads/2017/08/IMG_20170728_095124-300x225.jpg" alt="Getting ready for GUADEC" width="300" height="225" /&gt;&lt;/a&gt;I arrived in Manchester on Thursday the 27th just on time to go to the pre-registration event where I met the rest of the gang and had some dinner, and that was already a great start. Let's forget about the fact that I lost my badge even before leaving the place, which has to be some type of record (losing the badge before the conference starts, really?), but all in all it was great to meet old friends, as well as some new faces, that evening already.
&lt;p&gt;Then the 3 core days of &lt;a href="https://2017.guadec.org/"&gt;GUADEC&lt;/a&gt; started. My first impression was that everything (including the accommodation at the university, which was awesome) was very well organized in general, and the venue make it for a perfect place to organize this type of event, so I was already impressed even before things started.&lt;/p&gt;</description><content:encoded><![CDATA[<p>After spending a few days in Manchester with other fellow <a href="https://www.gnome.org/">GNOME</a> hackers and colleagues from <a href="https://endlessm.com">Endless</a>, I&rsquo;m finally back at my place in the <span style="text-decoration: line-through;">sunny</span> land of Surrey (England) and I thought it would be nice to write some sort of recap, so here it is:</p>
<h2>The Conference</h2>
<a href="/2017/08/04/back-from-guadec/img_20170728_095124/" rel="attachment wp-att-2451"><img class="alignright size-medium wp-image-2451" src="/wp-content/uploads/2017/08/IMG_20170728_095124-300x225.jpg" alt="Getting ready for GUADEC" width="300" height="225" /></a>I arrived in Manchester on Thursday the 27th just on time to go to the pre-registration event where I met the rest of the gang and had some dinner, and that was already a great start. Let's forget about the fact that I lost my badge even before leaving the place, which has to be some type of record (losing the badge before the conference starts, really?), but all in all it was great to meet old friends, as well as some new faces, that evening already.
<p>Then the 3 core days of <a href="https://2017.guadec.org/">GUADEC</a> started. My first impression was that everything (including the accommodation at the university, which was awesome) was very well organized in general, and the venue make it for a perfect place to organize this type of event, so I was already impressed even before things started.</p>
<p>I attended many talks and all of them were great, but if I had to pick my 5 favourite ones I think those would be the following ones, in no particular order:</p>
<ul>
 	<li><a href="https://2017.guadec.org/talks-and-events/#abstract-72-the_gnome_way">The GNOME Way, by Allan</a>: A very insightful and inspiring talk, made me think of why we do the things we do, and why it matters. It also kicked an interesting pub conversation with Allan later on and I learned a new word in English ("<a href="http://dictionary.cambridge.org/dictionary/english/principled">principled</a>"), so believe me it was great.</li>
 	<li><a href="https://2017.guadec.org/talks-and-events/#abstract-112-keynote_the_battle_over_our_technology">Keynote: The Battle Over Our Technology, by Karen</a>: I have no words to express how much I enjoyed this talk. Karen was very powerful on stage and the way she shared her experiences and connected them to why Free Software is important did leave a mark.</li>
 	<li><a href="https://2017.guadec.org/talks-and-events/#abstract-63-muttergnomeshell_state_of_the_union">Mutter/gnome-shell state of the union, by Florian and Carlos</a>: As a person who is getting increasingly involved with Endless's fork of GNOME Shell, I found this one particularly interesting. Also, I found it rather funny at points, specially during "the NVIDIA slide".</li>
 	<li><a href="https://2017.guadec.org/talks-and-events/#abstract-15-continuous_past_present_and_future">Continuous: Past, Present, and Future, by Emmanuele</a>: Sometimes I talk to friends and it strikes me how quickly they dismiss things as CI/CD as "boring" or "not interesting", which I couldn't disagree more with. This is very important work and Emmanuele is kicking ass as the <em>build sheriff</em>, so his talk was very interesting to me too. Also, he's got a nice cat.</li>
 	<li><a href="https://2017.guadec.org/talks-and-events/#abstract-60-the_history_of_gnome">The History of GNOME, by Jonathan</a>: Truth to be told, Jonathan already did a rather similar talk internally in Endless a while ago, so it was not entirely new to me, but I enjoyed it a lot too because it brought so many memories to my head: starting with when I started with Linux (RedHat 5.2 + GNOME pre-release!), when I used GNOME 1.x at the University and then moved to GNOME 2.x later on... not to mention the funny anecdotes he mentioned (never imagined the phone ringing while sleeping could be a good thing). Perfectly timed for the 20th anniversary of GNOME indeed!</li>
</ul>
As I said, I attended other talks too and all were great too, so I'd encourage you to check the <a href="https://2017.guadec.org/schedule/">schedule</a> and watch the recordings once they are available online, you won't regret it.
<figure class="wp-caption alignright" style="max-width:300px"><a href="/2017/08/04/back-from-guadec/img_20170730_182714/" rel="attachment wp-att-2454"><img class="wp-image-2454 size-medium" src="/wp-content/uploads/2017/08/IMG_20170730_182714-300x225.jpg" alt="Closing ceremony" width="300" height="225" /></a><figcaption>And the next GUADEC will be in... Almería!</figcaption></figure>
<p>One thing that surprised me this time was that I didn&rsquo;t do as much hacking during the conference as in other occasions. Rather than seeing it as a bad thing, I believe that&rsquo;s a clear indicator of how interesting and engaging the talks were this year, which made it for a perfect return after missing 3 edition (yes, my last GUADEC was in 2013).</p>
<p>All in all it was a wonderful experience, and I can thank and congratulate the local team and the volunteers who run the conference this year well enough, so here&rsquo;s is a picture I took where you can see all the people standing up and clapping during the closing ceremony.</p>
<p>Many thanks and congratulations for all the work done. Seriously.</p>
<h2>The Unconference</h2>
After 3 days of conference, the second part started: "2 days and a bit" (I was leaving on Wednesday morning) of meeting people and hacking in a different <a href="https://2017.guadec.org/unconference/">venue</a>, where we gathered to <a href="https://wiki.gnome.org/GUADEC/2017/Unconference/">work on different topics</a>, plus the occasional <em>high-bandwith</em> meeting in person.
<p><a href="/2017/08/04/back-from-guadec/img_20170801_162454/" rel="attachment wp-att-2455"><img class="alignright size-medium wp-image-2455" src="/wp-content/uploads/2017/08/IMG_20170801_162454-300x225.jpg" alt="GUADEC unconference" width="300" height="225" /></a>As you might expect, my main interest this time was around <a href="https://wiki.gnome.org/Projects/GnomeShell">GNOME Shell</a>, which is my main duty in Endless right now. This means that, besides trying to be present in the relevant BoFs, I&rsquo;ve spent quite some time participating of discussions that gathered both upstream contributors and people from different companies (e.g. Endless, Red Hat, Canonical).</p>
<p>This was extremely helpful and useful for me since, <a href="/2017/07/04/endless-os-3-2-released/">now we have rebased our fork of GNOME Shell 3.22</a>, we&rsquo;re in a much better position to converge and contribute back to upstream in a more reasonable fashion, as well as to collaborate implementing new features that we already have in Endless but that didn&rsquo;t make it to upstream yet.</p>
<p>And talking about those features, I&rsquo;d like to highlight <strong>two things</strong>:</p>
<p><strong>First</strong>, the discussion we held with both developers and designers to talk about the new <strong><a href="https://bugzilla.gnome.org/show_bug.cgi?id=783953">improvements that are being considered for both the window picker and the apps view</a></strong>, where one of the ideas is to improve the apps view by (maybe) adding a new grid of favourite applications that the users could customize, change the order&hellip; and so forth.</p>
<p>According to the designers this proposal was partially inspired by what we have in Endless, so you can imagine I would be quite happy to see such a plan move forward, as we could help with the coding side of things upstream while reducing our diff for future rebases. Thing is, this is a proposal for now so nothing is set in stone yet, but I will definitely be interested in following and participating of the relevant discussions regarding to this.</p>
<p><strong>Second</strong>, as my colleague <a href="https://feaneron.com">Georges</a> already <a href="https://feaneron.com/2017/08/04/guadec-unconferences-2017">vaguely mentioned in his blog post</a>, we had an improvised meeting on Wednesday with one of the designers from Red Hat (<a href="http://jimmac.musichall.cz/">Jakub Steiner</a>), where we discussed about a very particular feature upstream has wanted to have for a while and which Endless implemented downstream: <strong>management of folders using DnD</strong>, right from the apps view.</p>
<p>This is something that Endless has had in its desktop since the beginning of times, but the implementation relied in a downstream-specific version of folders that Endless OS implemented even before folders were available in the upstream GNOME Shell, so contributing that back would have been&hellip; &ldquo;interesting&rdquo;. But fortunately, we have now dropped that custom implementation of folders and embraced the upstream solution during the last rebase to 3.22, and we&rsquo;re in a much better position now to contribute our solution upstream. Once this lands, you should be able to create, modify, remove and use folders without having to open GNOME Software at all, just by dragging and dropping apps on top of other apps and folders, pretty much in a similat fashion compared to how you would do it in a mobile OS these days.</p>
<p>We&rsquo;re still in an early stage for this, though. Our current solution in Endless is based on some assumptions and tools that will simply not be the case upstream, so we will have to work with both the designers and the upstream maintainers to make this happen over the next months. Thus, don&rsquo;t expect anything to land for the next stable release yet, but simply know we&rsquo;ll be working on it  and that should hopefully make it not too far in the future.</p>
<h2>The Rest</h2>
This GUADEC has been a blast for me, and probably the best and my most favourite edition ever among all those I've attended since 2008. Reasons for such a strong statement are diverse, but I think I can mention a few that are clear to me:
<p>From a <strong>personal</strong> point of view, I never felt so engaged and part of the community as this time. I don&rsquo;t know if that has something to do with my recent duties in Endless (e.g. flatpak, GNOME Shell) or with something less &ldquo;tangible&rdquo; but that&rsquo;s the truth. Can&rsquo;t state it well enough.</p>
<p>From the perspective of <strong>Endless</strong>, the fact that 17 of us were there is something to be very excited and happy about, specially considering that I work remotely and only see 4 of my colleagues from the London area on a regular basis (i.e. one day a week). Being able to meet people I don&rsquo;t regularly see as well as some new faces in person is always great, but having them all together &ldquo;under the same ceilings&rdquo; for 6 days was simply outstanding.</p>
<figure class="wp-caption alignright" style="max-width:300px"><a href="/2017/08/04/back-from-guadec/img_20170729_201411/" rel="attachment wp-att-2457"><img class="size-medium wp-image-2457" src="/wp-content/uploads/2017/08/IMG_20170729_201411-300x225.jpg" alt="GNOME 20th anniversary dinner" width="300" height="225" /></a><figcaption>GNOME 20th anniversary dinner</figcaption></figure>
<p>Also, as it happened, <strong>this year was the celebration of the 20th anniversary of the GNOME project</strong> and so the whole thing was quite emotional too. Not to mention that Federico&rsquo;s birthday happened during GUADEC, which was a more than nice&hellip; coincidence? :-) Ah! And we also had an incredible dinner on Saturday to celebrate that, couldn&rsquo;t certainly be a better opportunity for me to attend this conference!</p>
<p>Last, a nearly impossible thing happened: despite of the demanding schedule that an event like this imposes (and I&rsquo;m including our daily visit to the pubs here too), I <strong>managed to go running every single day</strong> between 5km and 10km, which I believe is the first time it happened in my life. I definitely took my running gear with me to other conferences but this time was the only one I took it that seriously, and also the first time that I joined other fellow GNOME runners in the process, which was quite fun as well.</p>
<h2>Final words</h2>
I couldn't finish this extremely long post without a brief note to acknowledge and thank all the many people who made this possible this year: the GNOME Foundation and the amazing group of volunteers who helped organize it, the local team who did an outstanding job at all levels (venue, accomodation, events...), my employer Endless for sponsoring my attendance and, of course, all the people who attended the event and made it such an special GUADEC this year.
<p>Thank you all, and see you next year in Almería!</p>
<figure class="wp-caption aligncenter" style="max-width:300px"><a href="/2016/04/13/chromium-browser-on-xdg-app/banner-down/" rel="attachment wp-att-2146"><img class="size-medium wp-image-2146" src="/wp-content/uploads/2016/04/banner-down-300x75.png" alt="" width="300" height="75" /></a><figcaption>Credit to Georges Stavracas</figcaption></figure>
]]></content:encoded></item><item><title>Cross-compiling WebKit2GTK+ for ARM</title><link>https://mariospr.org/2016/09/30/cross-compiling-webkit2gtk-for-arm/</link><pubDate>Fri, 30 Sep 2016 19:10:56 +0000</pubDate><guid isPermaLink="false">https://mariospr.org/?p=2194</guid><description>&lt;p&gt;I haven&amp;rsquo;t blogged in a while -mostly due to lack of time, as usual- but I thought I&amp;rsquo;d write something today to let the world know about one of the things I&amp;rsquo;ve worked on a bit during this week, while remotely attending the &lt;a href="http://webengineshackfest.org/"&gt;Web Engines Hackfest&lt;/a&gt; from home:&lt;/p&gt;
&lt;p style="text-align: left;"&gt;&lt;strong&gt;Setting up an environment for cross-compiling &lt;a href="https://webkitgtk.org/"&gt;WebKit2GTK+&lt;/a&gt; for ARM&lt;/strong&gt;&lt;/p&gt;
I know this is not new, nor ground-breaking news, but the truth is that I could not find any up-to-date documentation on the topic in a any public forum (the only one I found was this &lt;a href="http://webkit.sed.hu/blog/20100419/webkitgtk-cross-compilation-arm"&gt;pretty old post from the time WebKitGTK+ used autotools&lt;/a&gt;), so I thought I would devote some time to it now, so that I could save more in the future.
&lt;p&gt;Of course, I know for a fact that many people use local recipes to cross-compile WebKit2GTK+ for ARM (or simply build in the target machine, which usually takes a looong time), but those are usually ad-hoc things and hard to reproduce environments locally (or at least hard for me) and, even worse, often bound to downstream projects, so I thought it would be nice to try to have something tested with upstream WebKit2GTK+ and publish it on &lt;a href="https://trac.webkit.org"&gt;trac.webkit.org&lt;/a&gt;,&lt;/p&gt;</description><content:encoded><![CDATA[<p>I haven&rsquo;t blogged in a while -mostly due to lack of time, as usual- but I thought I&rsquo;d write something today to let the world know about one of the things I&rsquo;ve worked on a bit during this week, while remotely attending the <a href="http://webengineshackfest.org/">Web Engines Hackfest</a> from home:</p>
<p style="text-align: left;"><strong>Setting up an environment for cross-compiling <a href="https://webkitgtk.org/">WebKit2GTK+</a> for ARM</strong></p>
I know this is not new, nor ground-breaking news, but the truth is that I could not find any up-to-date documentation on the topic in a any public forum (the only one I found was this <a href="http://webkit.sed.hu/blog/20100419/webkitgtk-cross-compilation-arm">pretty old post from the time WebKitGTK+ used autotools</a>), so I thought I would devote some time to it now, so that I could save more in the future.
<p>Of course, I know for a fact that many people use local recipes to cross-compile WebKit2GTK+ for ARM (or simply build in the target machine, which usually takes a looong time), but those are usually ad-hoc things and hard to reproduce environments locally (or at least hard for me) and, even worse, often bound to downstream projects, so I thought it would be nice to try to have something tested with upstream WebKit2GTK+ and publish it on <a href="https://trac.webkit.org">trac.webkit.org</a>,</p>
<p>So I spent some time working on this with the idea of producing some <a href="https://github.com/mariospr/webkit2gtk-ARM/blob/master/README.md">step-by-step instructions</a> including how to create a reproducible environment from scratch and, after some inefficient flirting with a VM-based approach (which <a href="https://github.com/mariospr/webkit2gtk-ARM/commit/94d035491c3edb0cb96c0300f3910915768edcf7">turned out to be insanely slow</a>), I finally settled on creating a chroot + provisioning it with a simple <a href="https://github.com/mariospr/webkit2gtk-ARM/blob/master/bootstrap.sh">bootstrap scrip</a>t + using a simple <a href="https://cmake.org/cmake/help/v3.6/manual/cmake-toolchains.7.html#cross-compiling-for-linux">CMake Toolchain file</a>, and that worked quite well for me.</p>
<p>In my fast desktop machine I can now get a full build of WebKit2GTK+ 2.14 (or trunk) in less than 1 hour, which is pretty much a productivity bump if you compare it to the approximately 18h that takes if I build it natively in the target ARM device I have :-)</p>
<p>Of course, I&rsquo;ve <a href="https://trac.webkit.org/wiki/BuildingGtk#CrossCompilingforARMdevices">referenced this documentation in trac.webkit.org</a>, but if you want to skip that and go directly to it, I&rsquo;m hosting it in a git repository here: <a href="https://github.com/mariospr/webkit2gtk-ARM">github.com/mariospr/webkit2gtk-ARM</a>.</p>
<p>Note that I&rsquo;m not a CMake expert (nor even close) so the toolchain file is far from perfect, but it definitely does the job with both the 2.12.x and 2.14.x releases as well as with the trunk, so hopefully it will be useful as well for someone else out there.</p>
<p>Last, I want to thanks the <a href="http://www.webengineshackfest.org/#sponsors">organizers of this event</a> for making it possible once again (and congrats to <a href="https://www.igalia.com">Igalia</a>, which <a href="https://www.igalia.com/nc/igalia-247/news/item/igalia-celebrates-our-15th-anniversary/">just turned 15 years old</a>!) as well as to <a href="https://endlessm.com">my employer</a> for supporting me attending the hackfest, even if I could not make it in person this time.</p>
<p><a href="https://endlessm.com/"><img class="aligncenter size-large wp-image-2195" src="/wp-content/uploads/2016/09/Endless_horizontal_2colors-600x92.png" alt="Endless Logo" width="584" height="90" /></a></p>
]]></content:encoded></item><item><title>Chromium Browser on xdg-app</title><link>https://mariospr.org/2016/04/13/chromium-browser-on-xdg-app/</link><pubDate>Wed, 13 Apr 2016 11:17:10 +0000</pubDate><guid isPermaLink="false">https://mariospr.org/?p=2135</guid><description>&lt;p&gt;Last week I had the chance to attend for 3 days the &lt;a href="https://wiki.gnome.org/Hackfests/GnomeSoftware2016"&gt;GNOME Software Hackfest,&lt;/a&gt; organized by &lt;a href="https://blogs.gnome.org/hughsie"&gt;Richard Hughes &lt;/a&gt;and hosted at the brand new &lt;a href="https://www.redhat.com/en/about/office-locations"&gt;Red Hat&amp;rsquo;s London office&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And besides meeting new people and some old friends (which I admit to be one of my favourite aspects about attending these kind of events), and discovering what it&amp;rsquo;s now &lt;a href="http://boroughmarket.org.uk"&gt;my new favourite place for fast-food near London bridge&lt;/a&gt;, I happened to learn quite a few new things while working on my particular personal quest: getting &lt;a href="http://www.chromium.org/Home"&gt;Chromium browser&lt;/a&gt; to run as an &lt;a href="https://wiki.gnome.org/Projects/SandboxedApps"&gt;xdg-app&lt;/a&gt;.&lt;/p&gt;</description><content:encoded><![CDATA[<p>Last week I had the chance to attend for 3 days the <a href="https://wiki.gnome.org/Hackfests/GnomeSoftware2016">GNOME Software Hackfest,</a> organized by <a href="https://blogs.gnome.org/hughsie">Richard Hughes </a>and hosted at the brand new <a href="https://www.redhat.com/en/about/office-locations">Red Hat&rsquo;s London office</a>.</p>
<p>And besides meeting new people and some old friends (which I admit to be one of my favourite aspects about attending these kind of events), and discovering what it&rsquo;s now <a href="http://boroughmarket.org.uk">my new favourite place for fast-food near London bridge</a>, I happened to learn quite a few new things while working on my particular personal quest: getting <a href="http://www.chromium.org/Home">Chromium browser</a> to run as an <a href="https://wiki.gnome.org/Projects/SandboxedApps">xdg-app</a>.</p>
<p>While this might not seem to be an immediate need for <a href="https://www.endlessm.com">Endless</a> right now (we currently ship a Chromium-based browser as part of our <a href="https://ostree.readthedocs.org/en/latest/">OSTree</a> based system), this was definitely something worth exploring as we are now implementing the next version of <a href="https://endlessm.com/press/endless_os_appstore_en/">our App Center </a>(which will be based on <a href="https://wiki.gnome.org/Apps/Software">GNOME Software</a> and <a href="https://wiki.gnome.org/Projects/SandboxedApps">xdg-app</a>). Chromium updates very frequently with fixes and new features, and so being able to update it separately and more quickly than the OS is very valuable.</p>
<p style="text-align: center;"><a href="/wp-content/uploads/2016/04/Endless_OS_Appstore_EN.png"><img src="/wp-content/uploads/2016/04/Endless_OS_Appstore_EN-600x338.png" alt="Endless OS App Center" width="584" height="329" /></a>
Screenshot of Endless OS's current App Center</p>
So, while <a href="http://www.joaquimrocha.com/">Joaquim</a> and <a href="http://ramcq.net">Rob</a> were working on the GNOME Software related bits and discussing aspects related to <a href="https://build.gnome.org">Continuous Integration</a> with the rest of the crowd, I spent some time learning about xdg-app and trying to get Chromium to build that way which, unsurprisingly, was not an easy task.
<p>Fortunately, the <a href="https://wiki.gnome.org/Projects/SandboxedApps">base documentation about xdg-app</a> together with <a href="https://blogs.gnome.org/alexl/2016/02/19/building-an-xdg-app-part-1">Alex Larsson&rsquo;s blog post series</a> about this topic (which I wholeheartedly recommend reading) and some experimentation from my side was enough to get started with the whole thing, and I was quickly on my way to fixing build issues, adding missing deps and the like.</p>
<p>Note that my goal at this time was <strong>not</strong> to get a fully featured Chromium browser running, but to get something running based on the version that we use use in Endless (Chromium 48.0.2564.82), with a couple of things disabled for now (e.g. chromium&rsquo;s own sandbox, udev integration&hellip;) and putting, of course, some holes in the xdg-app configuration so that Chromium can access the system&rsquo;s parts that are needed for it to function (e.g. network, X11, shared memory, pulseaudio&hellip;).</p>
<p>Of course, the long term goal is to close as many of those holes as possible using <a href="https://wiki.gnome.org/Projects/SandboxedApps/Sandbox">Portals</a> instead, as well as not giving up on Chromium&rsquo;s own sandbox right away (some work will be needed here, since <code>setuid</code> binaries are a no-go in xdg-app&rsquo;s world), but for the time being I&rsquo;m pretty satisfied (and kind of surprised, even) that I managed to get the whole beast built and running after 4 days of work since I started :-).</p>
<p>But, as <a href="https://siliconislandblog.wordpress.com/">Alberto</a> usually says&hellip; &ldquo;screencast or it didn&rsquo;t happen!&rdquo;, so I recorded a video yesterday to properly share my excitement with the world. Here you have it:</p>
<p style="text-align: center;"><iframe src="https://www.youtube.com/embed/euwSnOm89hM" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
[<a href="https://www.youtube.com/watch?v=euwSnOm89hM">VIDEO: Chromium Browser running as an xdg-app</a>]</p>
As mentioned above, this is <em>work-in-progress</em> stuff, so please hold your horses and manage your expectations wisely. It's not quite there yet in terms of what I'd like to see, but definitely a step forward in the right direction, and something I hope will be useful not only for us, but for the entire Linux community as a whole. Should you were curious about the current status of the whole thing, feel free to check the relevant files at <a href="https://github.com/mariospr/chromium-browser-xdg-app">its git repository here</a>.
<p>Last, I would like to finish this blog post saying thanks specially to <a href="https://blogs.gnome.org/hughsie">Richard Hughes</a> for organizing this event, as well as the <a href="https://www.gnome.org/foundation/">GNOME Foundation</a> and <a href="http://www.redhat.com/">Red Hat</a> for their support in the development of <a href="https://wiki.gnome.org/Apps/Software">GNOME Software</a> and <a href="https://wiki.gnome.org/Projects/SandboxedApps">xdg-app</a>. Finally, I&rsquo;d also like to thank my employer <a href="https://www.endlessm.com">Endless</a> for supporting me to attend this hackfest. It&rsquo;s been a terrific week indeed&hellip; thank you all!</p>
<img src="https://feaneron.files.wordpress.com/2016/02/banner-down.png?w=810" alt="Credit to Georges Stavracas" align="middle" />
<p style="text-align: center;">Credit to <a href="https://feaneron.com/home/blog">Georges Stavracas</a></p>
]]></content:encoded></item><item><title>Attending the Web Engines Hackfest</title><link>https://mariospr.org/2015/11/26/attending-the-web-engines-hackfest/</link><pubDate>Thu, 26 Nov 2015 13:29:55 +0000</pubDate><guid isPermaLink="false">https://mariospr.org/?p=2082</guid><description>&lt;p&gt;&lt;a href="http://webkitgtk.org/"&gt;&lt;img class=" wp-image-2084 size-large aligncenter" src="https://mariospr.org/wp-content/uploads/2015/11/webkitgtk-hackfest-banner-600x150.jpg" alt="webkitgtk-hackfest-banner" width="584" height="146" /&gt;&lt;/a&gt;It&amp;rsquo;s certainly been a while since &lt;a href="https://mariospr.org/2013/12/13/webkitgtk-hackfest-2013-the-return-of-the-thing/"&gt;I attended this event for the last time&lt;/a&gt;, 2 years ago, when it was a&lt;a href="http://webkitgtk.org/"&gt; WebKitGTK+&lt;/a&gt; only oriented hackfest, so I guess it was a matter of time it happened again&amp;hellip;&lt;/p&gt;
&lt;p&gt;It will be different for me this time, though, as now my main focus won&amp;rsquo;t be on accessibility (yet I&amp;rsquo;m happy to help with that, too), but on fixing a few issues related to the &lt;a href="http://webkitgtk.org/reference/webkit2gtk/stable/index.html"&gt;WebKit2GTK+ API&lt;/a&gt; layer that I found while working on our platform (&lt;a href="https://endlessm.com/developer/#row-1"&gt;Endless OS&lt;/a&gt;), mostly related to its implementation of accelerated compositing.&lt;/p&gt;</description><content:encoded><![CDATA[<p><a href="http://webkitgtk.org/"><img class=" wp-image-2084 size-large aligncenter" src="/wp-content/uploads/2015/11/webkitgtk-hackfest-banner-600x150.jpg" alt="webkitgtk-hackfest-banner" width="584" height="146" /></a>It&rsquo;s certainly been a while since <a href="/2013/12/13/webkitgtk-hackfest-2013-the-return-of-the-thing/">I attended this event for the last time</a>, 2 years ago, when it was a<a href="http://webkitgtk.org/"> WebKitGTK+</a> only oriented hackfest, so I guess it was a matter of time it happened again&hellip;</p>
<p>It will be different for me this time, though, as now my main focus won&rsquo;t be on accessibility (yet I&rsquo;m happy to help with that, too), but on fixing a few issues related to the <a href="http://webkitgtk.org/reference/webkit2gtk/stable/index.html">WebKit2GTK+ API</a> layer that I found while working on our platform (<a href="https://endlessm.com/developer/#row-1">Endless OS</a>), mostly related to its implementation of accelerated compositing.</p>
<p>Besides that, I&rsquo;m particularly curious about seeing how <a href="http://www.webengineshackfest.org/">the hackfest</a> looks like now that it has broaden its scope to include other web engines, and I&rsquo;m also quite happy to know that I&rsquo;ll be visiting my home town and meeting my old colleagues and friends from <a href="http://www.igalia.com/">Igalia</a> for a few days, once again.</p>
<p><a href="http://endlessm.com"><img class="alignright wp-image-1761 size-full" src="/wp-content/uploads/2014/08/endless_mobile_logo_only.png" alt="Endless Mobile logo" width="78" height="39" /></a>Last, I&rsquo;d like to thank <a href="http://endlessm.com/">my employer</a> for sponsoring this trip, as well as <a href="http://www.igalia.com/">Igalia</a> for organizing <a href="http://www.webengineshackfest.org/">this event</a>, one more time.</p>
<p>See you in Coruña!</p>
]]></content:encoded></item><item><title>GStreamer Hackfest 2015</title><link>https://mariospr.org/2015/03/20/gstreamer-hackfest-2015/</link><pubDate>Fri, 20 Mar 2015 20:22:22 +0000</pubDate><guid isPermaLink="false">https://mariospr.org/?p=1827</guid><description>&lt;p&gt;Last weekend I visited my former office to attend the &lt;a title="GStreamer hackfest 2015" href="https://wiki.gnome.org/Hackfests/GstHackfest2015"&gt;GStreamer hackfest 2015&lt;/a&gt;, along with other ~30 hackers from all over the world.&lt;/p&gt;
&lt;p&gt;This was my very first &lt;a title="GStreamer" href="http://gstreamer.freedesktop.org/"&gt;GStreamer&lt;/a&gt; hackfest ever and it was definitely a great experience, although at the beginning I was really not convinced to attend since, after all, why bother attending an event about something I have no clue about?&lt;/p&gt;
&lt;p&gt;But the answer turned out to be easy in the end, once I &lt;strong&gt;actually&lt;/strong&gt; thought a bit about it: it would be a good opportunity both to learn more about the project and to meet people in real life (&lt;a title="Víctor Jaquez's blog" href="https://blogs.igalia.com/vjaquez/"&gt;old&lt;/a&gt; &lt;a title="Alberto Ruiz's blog" href="http://aruiz.synaptia.net/siliconisland/"&gt;friends&lt;/a&gt; included), making the most of it happening 15min away from my house. So, I went there.&lt;/p&gt;</description><content:encoded><![CDATA[<p>Last weekend I visited my former office to attend the <a title="GStreamer hackfest 2015" href="https://wiki.gnome.org/Hackfests/GstHackfest2015">GStreamer hackfest 2015</a>, along with other ~30 hackers from all over the world.</p>
<p>This was my very first <a title="GStreamer" href="http://gstreamer.freedesktop.org/">GStreamer</a> hackfest ever and it was definitely a great experience, although at the beginning I was really not convinced to attend since, after all, why bother attending an event about something I have no clue about?</p>
<p>But the answer turned out to be easy in the end, once I <strong>actually</strong> thought a bit about it: it would be a good opportunity both to learn more about the project and to meet people in real life (<a title="Víctor Jaquez's blog" href="https://blogs.igalia.com/vjaquez/">old</a> <a title="Alberto Ruiz's blog" href="http://aruiz.synaptia.net/siliconisland/">friends</a> included), making the most of it happening 15min away from my house. So, I went there.</p>
<p>And in the end it was a quite productive and useful weekend: I might not be <a title="The Expert" href="https://www.youtube.com/watch?v=BKorP55Aqvg">an expert</a> by now, but at least I broke the barrier of getting started with the project, which is already a good thing.</p>
<p>And even better, I managed to move forward a patch to fix a <a title="PulseAudio bug 87002" href="https://bugs.freedesktop.org/show_bug.cgi?id=87002">bug in PulseAudio</a> I found on last December while fixing an downstream issue as part of <a title="Endless, Inc." href="https://endlessm.com/">my job at Endless</a>. Back then, I did not have the time nor the knowledge to write a proper patch that could really go upstream, so I focused on fixing the problem at hand in our platform. But I always felt the need to sit down and cook a proper patch, and this event proved to be the perfect time and place to do that.</p>
<p>Now, thanks to the hackfest (and to <a title="Arun Raghavan's blog" href="http://arunraghavan.net/">Arun Raghavan</a> in particular, thanks!), I&rsquo;m quite happy to see that<a title="My first patch to PulseAudio" href="http://lists.freedesktop.org/archives/pulseaudio-discuss/2015-March/023420.html"> the right patch might be on its way</a> to be applied upstream. Could not be happier about it! :)</p>
<p style="text-align: center;"><iframe src="https://www.youtube.com/embed/74vZ3ODUo00" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
Last, I'd like to thank to <a title="Samsung's Open Source Group" href="https://twitter.com/SamsungOSG/">Samsung's OSG</a>, and specially to <a title="Luis" href="http://luisbg.blogalia.com/">Luis</a>, for having done a cracking job on making sure that everything would run smoothly from beginning to end. Thanks!
]]></content:encoded></item><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>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>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></channel></rss>