<?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>Meetings and conferences on mariospr.org</title><link>https://mariospr.org/category/meetings-and-conferences/</link><description>Recent content in Meetings and conferences on mariospr.org</description><generator>Hugo</generator><language>en</language><lastBuildDate>Thu, 22 Jul 2021 14:16:49 +0000</lastBuildDate><atom:link href="https://mariospr.org/category/meetings-and-conferences/index.xml" rel="self" type="application/rss+xml"/><item><title>Igalia and the Chromium project</title><link>https://mariospr.org/2021/07/22/igalia-and-the-chromium-project/</link><pubDate>Thu, 22 Jul 2021 14:16:49 +0000</pubDate><guid isPermaLink="false">https://mariospr.org/?p=3159</guid><description>&lt;p&gt;A couple of months ago I had the pleasure of speaking at the &lt;em&gt;&lt;a href="https://conf.researchr.org/home/icse-2021"&gt;43rd International Conference on Software Engineering&lt;/a&gt;&lt;/em&gt; (aka &lt;em&gt;ICSE 2021&lt;/em&gt;), in the context of its &lt;a href="https://conf.researchr.org/track/icse-2021/icse-2021-spanish-industry-case-studies"&gt;&amp;ldquo;Spanish Industry Case Studies&amp;rdquo; track&lt;/a&gt;. We were invited to give a high level overview of the &lt;a href="https://www.chromium.org"&gt;Chromium&lt;/a&gt; project and how &lt;a href="https://www.igalia.com"&gt;Igalia&lt;/a&gt; contributes to it upstream.&lt;/p&gt;
&lt;p&gt;This was an unusual chance to speak at a forum other than the usual conferences I attend to, so I welcomed this as a double opportunity to explain the project to people less familiar with &lt;a href="https://www.chromium.org"&gt;Chromium&lt;/a&gt; than those attending events such as &lt;a href="https://www.chromium.org/events/blinkon-14"&gt;BlinkOn&lt;/a&gt; or the &lt;a href="https://webengineshackfest.org/2021/"&gt;Web Engines Hackfest&lt;/a&gt;, as well as to spread some awareness on our work in there.&lt;/p&gt;</description><content:encoded><![CDATA[<p>A couple of months ago I had the pleasure of speaking at the <em><a href="https://conf.researchr.org/home/icse-2021">43rd International Conference on Software Engineering</a></em> (aka <em>ICSE 2021</em>), in the context of its <a href="https://conf.researchr.org/track/icse-2021/icse-2021-spanish-industry-case-studies">&ldquo;Spanish Industry Case Studies&rdquo; track</a>. We were invited to give a high level overview of the <a href="https://www.chromium.org">Chromium</a> project and how <a href="https://www.igalia.com">Igalia</a> contributes to it upstream.</p>
<p>This was an unusual chance to speak at a forum other than the usual conferences I attend to, so I welcomed this as a double opportunity to explain the project to people less familiar with <a href="https://www.chromium.org">Chromium</a> than those attending events such as <a href="https://www.chromium.org/events/blinkon-14">BlinkOn</a> or the <a href="https://webengineshackfest.org/2021/">Web Engines Hackfest</a>, as well as to spread some awareness on our work in there.</p>
<p>Contributing to <a href="https://www.chromium.org">Chromium</a> is something we&rsquo;ve been doing for quite a few years already, but I think it&rsquo;s fair to say that in the past 2-3 years we have intensified our contributions to the project even more and diversified the areas that we contribute to, something I&rsquo;ve tried to reflect in this talk in no more than 25 minutes (quite a challenge!). Actually, it&rsquo;s precisely because of this amount of contributions that we&rsquo;re currently<span style="font-size: 1rem;"> the 2nd biggest non-Google contributor to the project in number of commits, and among the Top 5 contributors by team size (see a </span><a style="font-size: 1rem;" href="https://docs.google.com/presentation/d/1WxwbecNNXp_5v0yUDR3EolXR5m86siHj4_QWgPnJ7lU/edit#slide=id.gd3ed2042b9_4_142">highlight on this from BlinkOn 14&rsquo;s keynote</a><span style="font-size: 1rem;">). For a small consultancy company such as <a href="https://www.igalia.com">ours</a>, it&rsquo;s certainly something to feel proud of.</span></p>
<p>With all this in mind, I organized the talk into 2 main parts: First a general introduction to the <a href="https://www.chromium.org">Chromium</a> project and then a summary of the main <em>upstream</em> work that we at <a href="https://www.igalia.com">Igalia</a> have contributed recently to it. I focused on the past year and a half, since that seemed like a good balance that allowed me to highlight the most important bits without adding too much  information. And from what I can tell based on the feedback received so far, it seems the end result has been helpful and useful for some people without prior knowledge to understand things such as the differences between Chromium and Chrome, what ChromiumOS is and how our work on several different fronts (e.g. <em>CSS</em>, <em>Accessibility</em>, <em>Ozone/X11/Wayland</em>, <em>MathML</em>, <em>Interoperability</em>&hellip;) fits into the picture.</p>
<p>Obviously, the more technically inclined you are, and the more you know about the project, the more you&rsquo;ll understand the different bits of information condensed into this talk, but my main point here is that you shouldn&rsquo;t need any of that to be able to follow it, or at least that was my intention (but please let me know in the comments if you have any feedback). Here you have it:</p>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
			<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Q5IU9QeGNa8?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"></iframe>
		</div>

<p>You can <a href="https://www.youtube.com/watch?v=Q5IU9QeGNa8">watch the talk online</a> (24:05 min) on <a href="https://www.youtube.com/channel/UCIpArN21nIT2lvZX-nkjP7A">our YouTube channel</a>, as well as grab the <a href="https://speakerdeck.com/mariospr/contributions-to-an-open-source-project-igalia-and-the-chromium-project">original slide deck as a PDF</a> in case you also want it for references, or to check the many links I included with pointers for further information and also for reference to the different sources used.</p>
<p>Last, I don&rsquo;t want to finish this post without thanking once again to the organizers for the invitation and for runing the event, and in particular to <a href="https://twitter.com/davilagrau">Andrés-Leonardo Martínez-Ortiz</a> and <a href="https://twitter.com/javierprovecho">Javier Provecho</a> for taking care of the specific details involved with the <a href="https://conf.researchr.org/track/icse-2021/icse-2021-spanish-industry-case-studies">&ldquo;Spanish Industry Case Studies&rdquo; track</a>.</p>
<p>Thank you all</p>
]]></content:encoded></item><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>Going to FOSDEM!</title><link>https://mariospr.org/2017/02/02/going-to-fosdem/</link><pubDate>Thu, 02 Feb 2017 22:05:26 +0000</pubDate><guid isPermaLink="false">https://mariospr.org/?p=2249</guid><description>&lt;p&gt;It&amp;rsquo;s been two years since the &lt;a href="https://mariospr.org/2015/01/08/frogr-0-11-released/"&gt;last time&lt;/a&gt; I went to &lt;a href="https://fosdem.org"&gt;FOSDEM&lt;/a&gt;, but it seems that this year I&amp;rsquo;m going to be there again and, after having traveled to Brussels a few times already by plane and train, this year I&amp;rsquo;m going by car!: from home to the &lt;a href="https://www.eurotunnel.com/build/"&gt;Euro tunnel&lt;/a&gt; and then all the way up to Brussels. Let&amp;rsquo;s see how it goes.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://fosdem.org/2017/"&gt;&lt;img class="aligncenter" src="https://fosdem.org/2017/support/promote/wide.png" alt="FOSDEM 2017" width="468" height="60" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As for the conference, I don&amp;rsquo;t have any particular plan other than going to some keynotes and probably spending most of my time in the &lt;a href="https://fosdem.org/2017/schedule/track/distributions/"&gt;Distributions&lt;/a&gt; and the &lt;a href="https://fosdem.org/2017/schedule/track/desktops/"&gt;Desktops&lt;/a&gt; devrooms. Well, and of course &lt;a href="https://wiki.gnome.org/Events/FOSDEM/2017"&gt;joining other GNOME people&lt;/a&gt; at &lt;a href="http://www.alabecasse.com/en/info.html"&gt;A La Bécasse&lt;/a&gt;, on Saturday night.&lt;/p&gt;</description><content:encoded><![CDATA[<p>It&rsquo;s been two years since the <a href="/2015/01/08/frogr-0-11-released/">last time</a> I went to <a href="https://fosdem.org">FOSDEM</a>, but it seems that this year I&rsquo;m going to be there again and, after having traveled to Brussels a few times already by plane and train, this year I&rsquo;m going by car!: from home to the <a href="https://www.eurotunnel.com/build/">Euro tunnel</a> and then all the way up to Brussels. Let&rsquo;s see how it goes.</p>
<p><a href="https://fosdem.org/2017/"><img class="aligncenter" src="https://fosdem.org/2017/support/promote/wide.png" alt="FOSDEM 2017" width="468" height="60" /></a></p>
<p>As for the conference, I don&rsquo;t have any particular plan other than going to some keynotes and probably spending most of my time in the <a href="https://fosdem.org/2017/schedule/track/distributions/">Distributions</a> and the <a href="https://fosdem.org/2017/schedule/track/desktops/">Desktops</a> devrooms. Well, and of course <a href="https://wiki.gnome.org/Events/FOSDEM/2017">joining other GNOME people</a> at <a href="http://www.alabecasse.com/en/info.html">A La Bécasse</a>, on Saturday night.</p>
<p>As you might expect, I will have my <a href="https://endlessos.com/">Endless</a> laptop with me while in the conference, so feel free to come and say &ldquo;hi&rdquo; in case you&rsquo;re curious or want to talk about that if you see me around.</p>
<p>At the moment, I&rsquo;m mainly focused on developing and improving our <a href="http://flatpak.org/">flatpak</a> story, how we deliver apps to our users via this wonderful piece of technology and how the overall user experience ends up being, so I&rsquo;d be more than happy to chat/hack around this topic and/or about how we integrate <a href="http://flatpak.org/">flatpak</a> in <a href="https://endlessos.com/">EndlessOS</a>, the challenges we found, the solutions we implemented&hellip; and so forth.</p>
<p>That said, <a href="http://flatpak.org/">flatpak</a> is one of my many development hats in <a href="https://endlessos.com/">Endless</a>, so be sure I&rsquo;m open to talk about many other things, including not work-related ones, of course.</p>
<p>Now, if you excuse me, I have a bag to prepare, an English car to &ldquo;adapt&rdquo; for the journey ahead and, more importantly, quite some hours to sleep. Tomorrow it will be a long day, but it will be worth it.</p>
<p>See you at <a href="https://fosdem.org">FOSDEM</a>!</p>
]]></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>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>I'm going to GUADEC!</title><link>https://mariospr.org/2013/07/12/im-going-to-guadec/</link><pubDate>Fri, 12 Jul 2013 19:06:22 +0000</pubDate><guid isPermaLink="false">https://mariospr.org/?p=1559</guid><description>&lt;p&gt;&lt;a href="https://mariospr.org/2013/07/12/im-going-to-guadec/guadec2013/" rel="attachment wp-att-1560"&gt;&lt;img class="alignright size-full wp-image-1560" alt="I'm attending GUADEC" src="https://mariospr.org/wp-content/uploads/2013/07/guadec2013.png" width="125" height="125" /&gt;&lt;/a&gt;One year again &lt;a title="GUADEC" href="http://www.guadec.org"&gt;GUADEC&lt;/a&gt; is approaching and, also again, I&amp;rsquo;m very happy to say that I&amp;rsquo;ll be there as well this time, even if I have to recognize it was not on my plans for this year, at least not initially.&lt;/p&gt;
&lt;p&gt;And the reason why it was not initially in my plans was mainly because I&amp;rsquo;ve been already through quite &lt;a title="Moving on" href="https://mariospr.org/2012/11/19/moving-on/"&gt;some&lt;/a&gt; &lt;a title="My first week at SERI" href="https://mariospr.org/2013/01/12/my-first-week-at-seri/"&gt;changes&lt;/a&gt; during these past months year, and my family just came over to the &lt;a title="United Kingdom" href="http://en.wikipedia.org/wiki/United_Kingdom"&gt;UK&lt;/a&gt; two months ago. This means that, even I already arrived by the beginning of the year, we just started to settle here as a family a few weeks ago. So in that context, I didn&amp;rsquo;t feel like leaving them alone for one week already now, it definitely would look like a &amp;ldquo;wrong management of priorities&amp;rdquo; to me.&lt;/p&gt;</description><content:encoded><![CDATA[<p><a href="/2013/07/12/im-going-to-guadec/guadec2013/" rel="attachment wp-att-1560"><img class="alignright size-full wp-image-1560" alt="I'm attending GUADEC" src="/wp-content/uploads/2013/07/guadec2013.png" width="125" height="125" /></a>One year again <a title="GUADEC" href="http://www.guadec.org">GUADEC</a> is approaching and, also again, I&rsquo;m very happy to say that I&rsquo;ll be there as well this time, even if I have to recognize it was not on my plans for this year, at least not initially.</p>
<p>And the reason why it was not initially in my plans was mainly because I&rsquo;ve been already through quite <a title="Moving on" href="/2012/11/19/moving-on/">some</a> <a title="My first week at SERI" href="/2013/01/12/my-first-week-at-seri/">changes</a> during these past months year, and my family just came over to the <a title="United Kingdom" href="http://en.wikipedia.org/wiki/United_Kingdom">UK</a> two months ago. This means that, even I already arrived by the beginning of the year, we just started to settle here as a family a few weeks ago. So in that context, I didn&rsquo;t feel like leaving them alone for one week already now, it definitely would look like a &ldquo;wrong management of priorities&rdquo; to me.</p>
<p>However, it turns out that my wife and kids won&rsquo;t be here anyway during the first week of August and, on top of that, <a title="Samsung" href="http://www.samsung.com">Samsung</a> has been so kind to sponsor this trip just based on the simple fact that I&rsquo;m part of the <a title="The GNOME Project" href="http://www.gnome.org">GNOME</a> community. So, I certainly can no longer find a single reason not to go and spend 7 amazing days in <a title="Brno, Czech Republic" href="http://en.wikipedia.org/wiki/Brno">Brno</a>, meeting people that I normally see only in conferences (and this time that group of people will be bigger than ever, since my former mates from <a title="Igalia" href="http://www.igalia.com">Igalia</a> are now also included there), while attending to what it seems to be <a title="GUADEC Schedule" href="https://www.guadec.org/schedule/">a very appealing event</a>.</p>
<p>Also, I will try to make the most of the trip to do some work during the different hackfests and <a title="GUADEC BoFs" href="https://wiki.gnome.org/GUADEC/2013/BOFs">BoFs that are already planned</a>, which special focus in the one about <a title="Computer accessibility" href="http://en.wikipedia.org/wiki/Computer_accessibility">accessibility</a>, of course. As a personal goal, I expect to have the chance to move forward some work I&rsquo;ve been doing lately in the <a title="WebKitGTK+" href="http://www.webkitgtk.org">WebKitGTK+</a> a11y world, such as <a title="[GTK] Metabug: Get rid of Pango/Gail dependencies in accessibility for ATK" href="https://bugs.webkit.org/show_bug.cgi?id=114867">getting rid of the nasty dependency</a> on <a title="Pango" href="https://git.gnome.org/browse/pango">Pango</a>/<a title="GTK+ Accessibility Implementation Layer" href="https://git.gnome.org/browse/libgail-gnome/">Gail</a> we still have there, something I&rsquo;ve been already working on for some time now, and which I expect it will be fixed soon, hopefully before <a title="GUADEC" href="http://www.guadec.org">GUADEC</a>, although time will tell.</p>
<p>Once that it&rsquo;s fixed, <a title="WebKit2GTK+" href="http://webkitgtk.org/reference/webkit2gtk/unstable/index.html">WebKit2GTK+</a> based apps should recover the ability to properly expose text through the <a title="AtkText interface" href="https://developer.gnome.org/atk/unstable/AtkText.html"><em>atk_text_get_text_*_offset()</em></a> family of functions for different <a title="AtkText boundaries" href="https://developer.gnome.org/atk/unstable/AtkText.html#AtkTextBoundary">text boundaries</a>, which means that <em><a href="http://en.wikipedia.org/wiki/Assistive_technology" rel="nofollow">ATs</a></em> (e.g. the <a href="https://live.gnome.org/Orca" rel="nofollow">Orca</a> screen reader)  will be able to properly allow again line-by-line navigation when in caret browsing mode. And, as you can imagine, this is quite a big problem these days, since <a title="WebKit2GTK+" href="http://webkitgtk.org/reference/webkit2gtk/unstable/index.html">WebKit2GTK+</a> that has become the default backend for some core apps such as the <a title="The Epiphany Browser" href="https://projects.gnome.org/epiphany/">Epiphany browser</a> with the <a title="The GNOME Project" href="http://www.gnome.org">GNOME</a> <a title="GNOME 3.8 release notes" href="https://help.gnome.org/misc/release-notes/3.8/">3.8 release</a>, so fixing this is like a high priority now, I&rsquo;d say.</p>
<p><a href="/2013/07/12/im-going-to-guadec/logo/" rel="attachment wp-att-1567"><img class="alignright size-full wp-image-1567" alt="Samsung Logo" src="/wp-content/uploads/2013/07/logo.png" width="106" height="35" /></a>Anyway, I&rsquo;m starting to write too much (as usual) for what it was going to be a short &ldquo;I&rsquo;m going to <a title="GUADEC" href="http://www.guadec.org">GUADEC</a>&rdquo; blog post, so I will stop right now, although not without first thanking <a title="Samsung" href="http://www.samsung.com">Samsung</a> for sponsoring this my first trip to the <a title="Czech Republic" href="http://en.wikipedia.org/wiki/Czech_Republic">Czech Republic</a>.</p>
<p>See you all in three weeks!</p>
]]></content:encoded></item><item><title>WebKit Contributors Meeting 2013</title><link>https://mariospr.org/2013/05/03/webkit-contributors-meeting-2013/</link><pubDate>Fri, 03 May 2013 17:34:00 +0000</pubDate><guid isPermaLink="false">https://mariospr.org/?p=1541</guid><description>&lt;p&gt;It turns out I&amp;rsquo;m writing this post at 6:00 AM in the morning from a hotel instead of doing it at a more reasonable time from my comfy home or a nice cafeteria. That&amp;rsquo;s already quite a new thing by itself, and the reason for that is not that I became crazy or something, but the fact that I&amp;rsquo;m completely jet-lagged in California right now in order to attend my second &lt;a title="WebKit Contributors Meeting" href="http://trac.webkit.org/wiki/May%202013%20Meeting"&gt;WebKit Contributors Meeting&lt;/a&gt; (&lt;a title="Attending the WebKit Contributors Meeting 2011" href="https://mariospr.org/2011/05/05/webkit-contributors-meeting-sockets-plugs/"&gt;my first time was in 2011&lt;/a&gt;), this time as part of the &lt;a title="Samsung UK" href="http://www.samsung.com/uk"&gt;Samsung&lt;/a&gt; team in the UK R&amp;amp;D center, together with my mate &lt;a title="Anton Obzhirov" href="http://uk.linkedin.com/pub/anton-obzhirov/4/256/876"&gt;Anton Obzhirov&lt;/a&gt;.&lt;/p&gt;</description><content:encoded><![CDATA[<p>It turns out I&rsquo;m writing this post at 6:00 AM in the morning from a hotel instead of doing it at a more reasonable time from my comfy home or a nice cafeteria. That&rsquo;s already quite a new thing by itself, and the reason for that is not that I became crazy or something, but the fact that I&rsquo;m completely jet-lagged in California right now in order to attend my second <a title="WebKit Contributors Meeting" href="http://trac.webkit.org/wiki/May%202013%20Meeting">WebKit Contributors Meeting</a> (<a title="Attending the WebKit Contributors Meeting 2011" href="/2011/05/05/webkit-contributors-meeting-sockets-plugs/">my first time was in 2011</a>), this time as part of the <a title="Samsung UK" href="http://www.samsung.com/uk">Samsung</a> team in the UK R&amp;D center, together with my mate <a title="Anton Obzhirov" href="http://uk.linkedin.com/pub/anton-obzhirov/4/256/876">Anton Obzhirov</a>.</p>
<p>With regard to that, it has been a very interesting experience so far where I could meet new people I still haven&rsquo;t had the chance to see in real life yet (e.g. my mates from other <a title="Samsung UK" href="http://www.samsung.com/uk">Samsung</a> R&amp;D centers or some guys from <a href="http://www.apple.com">Apple</a> I didn&rsquo;t have the chance to meet in person before), as well as chat again with some friends and former mates that I haven&rsquo;t seen for a while, such as <a title="Martin's blog" href="http://abandonedwig.info/">Martin</a>, <a title="Xan's blog" href="http://blogs.gnome.org/xan/">Xan</a> and <a title="Philippe's blog" href="http://base-art.net/">Philippe</a> from <a title="Igalia" href="http://www.igalia.com">Igalia</a>, <a title="Byungseon" href="http://www.linkedin.com/profile/view?id=94380850">Byungseon</a> from <a href="http://www.lge.com">LG</a>, <a title="Nayan's blog" href="http://xc0ffee.wordpress.com/">Nayan</a> from <a href="http://www.motorola.com">Motorola</a> or <a title="Gustavo's blog" href="http://blog.kov.eti.br/">Gustavo</a> from <a title="Collabora" href="http://www.collabora.co.uk">Collabora</a> to mention some of them. It&rsquo;s strange, and at the same time wonderful, how easily you can catch up on conversations with people that you barely see once a year (or even less) and mainly in conferences, and definitely one of my favourite parts of attending these kind of events, to be honest.</p>
<p>Also, from a less social point of view, I have to say I found very interesting the sessions I&rsquo;ve attended so far, specially the one about &ldquo;managing the differences between ports&rdquo;, although the one about &ldquo;build systems&rdquo; was quite interesting too. Not sure how far we are yet in the <a href="http://www.webkitgtk.org">WebKitGTK+</a> port from realistically switching to some kind of commonly agreed build system (<a href="http://www.cmake.org">cmake</a>?), but at least it&rsquo;s a good start to agree on the fact that it would be an interesting move and now that some people pushing for it.</p>
<p>My only regret about this first day is that I missed <a title="Dave Hyatt" href="http://en.wikipedia.org/wiki/Dave_Hyatt">Hyatt</a>&rsquo;s talk about pagination due to some health issues I&rsquo;m experimenting while in California, mostly due to the extremely hot and dry weather (anything over 25 Celsius is &ldquo;unbearable hot&rdquo; for me), which is causing me a little bit of cough, sore throat and fever, all well mixed with the jet lag to make it a perfect &ldquo;welcome pack&rdquo; to the meeting. Fortunately, I got some &ldquo;interesting&rdquo; medicines that seem to have relieved a bit the pain and I could attend the rest of the sessions without much trouble, other than some occasional coughing. Not bad.</p>
<p>By the way, for those of you who were not lucky enough to attend the meeting but are anyway interested in the topics being discussed here, make sure you check the <a title="WebKit Contributors Meeting 2013" href="http://trac.webkit.org/wiki/May%202013%20Meeting">main TRAC page for the meeting</a>, where you can also find transcripts for most of the sessions.</p>
<p>As for today, some more sessions will take place as well as a couple of hackathons so I expect it to be very interesting as well. Also I hope I can find some time too to work a bit on my patches to remove the nasty dependency on pango we have in <a href="http://www.webkitgtk.org">WebKitGTK+</a> accessibility code, which is preventing us to have proper caret navigation in <a title="WebKit2GTK+" href="http://webkitgtk.org/reference/webkit2gtk/unstable/index.html">WebKit2GTK+</a> based browsers, as well as to discuss possible ways in which our lab could collaborate more actively upstream. Seems a promising day already!</p>
<p>Last (but not least), and in a completely unrelated and super-off-topic way, I would like to tell the world that I&rsquo;m <strong>extremely happy</strong> for the fact that next week will be the end of my &ldquo;lonely existence in the UK&rdquo;, finally. After 4 months of living away from my family with just some flash trips from Friday to Sunday (every 2 weeks), I&rsquo;m once and for all travelling on Thursday to my home town with a one way plane ticket to do some final arrangements, put everything (family included!) in the car and travel to <a title="Santander" href="http://en.wikipedia.org/wiki/Santander,_Spain">Santander</a>, where we&rsquo;ll be taking a ferry that will take us to the <a title="Portsmouth" href="http://en.wikipedia.org/wiki/Portsmouth">Portsmouth</a> (southern coast of England), from where we will just drive to the UK in order to start our new life, all together again.</p>
<p>It has been quite hard for us to live this way for so long, but I think in the end we managed to handle the situation quite well, and now it seems all our efforts are already paying off because things seem to be finally fitting in the right places: we have a lovely house, we have a place in a nearby public school for my oldest kid to start on September, most of the needed paperwork seems to be done and we already moved all our stuff from Spain (lots of toys!), which is now waiting to be used in our new place.</p>
<p>I really can&rsquo;t wait to live again in the noisy and chaotic atmosphere that two kids can so easily create around them. Even if that means it will probably drive me crazy every now and then and that I won&rsquo;t sleep that well sometimes.</p>
<p>Yes. Even considering that.</p>
]]></content:encoded></item></channel></rss>