<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Daniel Stone</title>
    <link>https://www.fooishbar.org/</link>
    <description>on Daniel Stone</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 29 Jul 2018 15:39:00 +0000</lastBuildDate>
    
        <atom:link href="https://www.fooishbar.org/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Introducing freedesktop.org GitLab</title>
      <link>https://www.fooishbar.org/blog/gitlab-fdo-introduction/</link>
      <pubDate>Sun, 29 Jul 2018 15:39:00 +0000</pubDate>
      
      <guid>https://www.fooishbar.org/blog/gitlab-fdo-introduction/</guid>
      <description>

&lt;p&gt;This is quite a long post. The executive summary is that freedesktop.org now
hosts &lt;a href=&#34;https://gitlab.freedesktop.org&#34;&gt;an instance of GitLab&lt;/a&gt;, which is
generally available and now our preferred platform for hosting going forward.
We think it offers a vastly better service, and we needed to do it in order to
offer the projects we host the modern workflows they have been asking for.&lt;/p&gt;

&lt;p&gt;In parallel, we&amp;rsquo;re working on making our governance, including policies,
processes and decision making, much more transparent.&lt;/p&gt;

&lt;h2 id=&#34;some-history&#34;&gt;Some history&lt;/h2&gt;

&lt;p&gt;Founded by Havoc Pennington in 2000, freedesktop.org is now old enough to vote.
From the initial development of the cross-desktop XDG specs, to supporting
critical infrastructure such as NetworkManager, and now as the home to
open-source graphics development (the kernel DRM tree, Mesa, Wayland, X.Org, and
more), it&amp;rsquo;s long been a good home to a lot of good work.&lt;/p&gt;

&lt;p&gt;We don&amp;rsquo;t provide day-to-day technical direction or enforce set rules: it&amp;rsquo;s a
very loose collection of projects which we each trust to do their own thing,
some with nothing in common but where they&amp;rsquo;re hosted.&lt;/p&gt;

&lt;p&gt;Unfortunately, that hosting hasn&amp;rsquo;t really grown up a lot since the turn of the
millennium. Our account system was forked (and subsequently heavily hacked) from
Debian&amp;rsquo;s old LDAP-based system in 2004. Everyone needing direct Git commit
access to projects, or the ability to upload to web space, has to &lt;a href=&#34;https://www.freedesktop.org/wiki/AccountRequests&#34;&gt;file a bug in
Bugzilla&lt;/a&gt;, where after a trip
through the project maintainer, eventually an admin will get around to pulling
their SSH and GPG (!) keys and adding an account by hand.&lt;/p&gt;

&lt;p&gt;Similarly, creating or reconfiguring a Git repository also requires manual admin
intervention, where on request one of us will SSH into the Git server and do
whatever is required. Beyond Git and cgit for viewing, we provide Bugzilla for
issue tracking, Mailman and Patchwork for code review and discussion, and
ikiwiki for tracking. For our sins, we also have an FTP server running
somewhere. None of these services are really integrated with each other;
separate accounts and separate sets of permissions are required.&lt;/p&gt;

&lt;p&gt;Maintaining these disparate services is a burden on both admins and projects.
Projects are frequently blocked on admins adding users and changing their SSH
keys, changing Git hooks, adding people to Patchwork, manually applying more
duct tape to the integration between these services, and fixing the duct tape
when it breaks (which is surprisingly often). As a volunteer admin for the
service, doing these kinds of things is not exactly the reason we get out of
bed in the morning; it also consumes so much time treading water that we
haven&amp;rsquo;t been able to enable new features and workflows for the projects we
host.&lt;/p&gt;

&lt;h3 id=&#34;seeking-better-workflows&#34;&gt;Seeking better workflows&lt;/h3&gt;

&lt;p&gt;As of writing, around one third of the non-dormant projects on fd.o have at some
point migrated their development elsewhere; mostly to GitHub. Sometimes this was
because the other sites were a more natural home (e.g. to sibling projects), and
sometimes just because they offered a better workflow (integration between issue
tracking and commits, web-based code review, etc). Other projects which would
have found fd.o a natural home have gone straight to hosting externally, though
they may use some of our services - particularly mailing lists.&lt;/p&gt;

&lt;p&gt;Not everyone wants to make use of these features, and not everyone will. For
example, the kernel might well &lt;a href=&#34;https://lwn.net/Articles/702177/&#34;&gt;never move away from
email&lt;/a&gt; for issue tracking and code review. But
the evidence shows us that many others do want to, and our platform will be a
non-starter for them unless we provide the services they want.&lt;/p&gt;

&lt;p&gt;A bit over  three years ago, I set up an instance of Phabricator at Collabora to
replace our mix of Bugzilla, Redmine, Trac, and JIRA. It was a great fit for how
we worked internally, and upstream seemed like a good fit too; though they were
laser-focused on their usecases, their extremely solid data storage and
processing model made it quite easy to extend, and projects like MediaWiki,
Haskell, LLVM and more were beginning to switch over to use it as their tracker.
I set up an instance on fd.o, and we started to use it for a couple of trial
projects: some issue tracking and code review for Wayland and Weston,
development of PiTiVi, and so on.&lt;/p&gt;

&lt;p&gt;The first point we seriously discussed it more widely was at XDC 2016 in
Helsinki, where Eric Anholt gave a &lt;a href=&#34;https://youtu.be/KIHrjgZJHZA?t=5h08m&#34;&gt;talk about our broken
infrastructure&lt;/a&gt;, cleverly disguised as
something about test suites. It became clear that we had wide interest in and
support for better infrastructure, though with some reservation about particular
workflows. There was quite a bit of hallway discussion afterwards, as Eric and
Adam Jackson in particular tried out Phabricator and gave some really good
feedback on its usability. At that point, it was clear that some fairly major UI
changes were required to make it usable for our needs, especially for drive-by
contributors and new users.&lt;/p&gt;

&lt;p&gt;Last year, GNOME &lt;a href=&#34;https://wiki.gnome.org/Initiatives/DevelopmentInfrastructure&#34;&gt;went through a similar
process&lt;/a&gt;. With
Carlos and some of the other members being more familiar with GitLab, myself and
Emmanuele Bassi made the case for using Phabricator, based on our experiences
with it at Collabora and Endless respectively. At the time, our view was that
whilst GitLab&amp;rsquo;s code review was better, the issue tracking (being much like
GitHub&amp;rsquo;s) would not really scale to our needs. This was mostly based on having
last evaluated GitLab during the 8.x series; whilst the discussions were going
on, GitLab were making giant strides in issue tracking throughout 9.x.&lt;/p&gt;

&lt;p&gt;With GitLab coming up to par on issue tracking, both Emmanuele and I ended up
fully supporting GNOME&amp;rsquo;s decision to base their infrastructure on GitLab. The UI
changes required to Phabricator were not really tractable for the resources we
had, &lt;a href=&#34;https://secure.phabricator.com/T5000&#34;&gt;the code review was and will always be fundamentally
unsuitable&lt;/a&gt; being based around the
Subversion-like model of reviewing large branches in one go, and upstream were
also beginning to move to a much more closed community model.&lt;/p&gt;

&lt;h2 id=&#34;gitlab-freedesktop-org&#34;&gt;gitlab.freedesktop.org&lt;/h2&gt;

&lt;p&gt;By contrast, one of the things which really impressed us about GitLab was how
openly they worked, and how open they were to collaboration. Early on in GNOME&amp;rsquo;s
journey to GitLab, they &lt;a href=&#34;https://about.gitlab.com/2017/11/01/gitlab-switches-to-dco-license/&#34;&gt;dropped their old
CLA&lt;/a&gt; to
replace it with a &lt;a href=&#34;https://developercertificate.org/&#34;&gt;DCO&lt;/a&gt;, and Eliran Mesika
from GitLab&amp;rsquo;s partnership team came to GUADEC to listen and understand how GNOME
worked and what they needed from GitLab. Unfortunately this was too early in the
process for us, but Robert McQueen later introduced us, and Eliran and I started
talking about how they could help freedesktop.org.&lt;/p&gt;

&lt;p&gt;One of our bigger issues was infrastructure. Not only were our services getting
long in the tooth, but so were the machines they ran on. In order to stand up a
large new service, we&amp;rsquo;d need new physical machines, but a fleet of new machines
was beyond the admin time we had. It also didn&amp;rsquo;t solve issues such as everyone&amp;rsquo;s
favourite: half of Europe can&amp;rsquo;t route to fd.o for half an hour most mornings due
to obscure network issues with our host we&amp;rsquo;ve had no success diagnosing or
fixing.&lt;/p&gt;

&lt;p&gt;GitLab Inc. listened to our predicament and suggested a solution to help us:
that they would sponsor our hosting on Google Cloud Platform for an initial
period to get us on our feet. This involves us running the completely
open-source GitLab Community Edition on infrastructure we control ourselves,
whilst freeing us from having to worry about failing and full disks or creaking
networks. (As with GNOME, we politely declined the offer of a license to the
pay-for GitLab Enterprise Edition; we wanted to be fully in control of our
infrastructure, and on a level playing field with the rest of the open-source
community.)&lt;/p&gt;

&lt;p&gt;They have also offered us support, from helping a cloud idiot understand how to
deploy and maintain services on Kubernetes, to taking the time to listen and
understand our workflows and improve GitLab for our uses. Much of the fruit of
this is already visible in GitLab through feedback from us and GNOME, though
there is always more to come. In particular, one area we&amp;rsquo;re looking at is
integration with mailing lists and placing tags in commit messages, so
developers used to mail-based workflows can continue to consume the firehose
through email, rather than being required to use the web UI for everything.&lt;/p&gt;

&lt;p&gt;Last Christmas, we gave ourselves the present of standing up
&lt;a href=&#34;https://gitlab.freedesktop.org&#34;&gt;gitlab.freedesktop.org&lt;/a&gt; on GCP, and set about
gradually making it usable and maintainable for our projects. Our first hosted
project was &lt;a href=&#34;https://panfrost.freedesktop.org&#34;&gt;Panfrost&lt;/a&gt;, who were running on
either non-free services or non-collaborative hosted services. We wanted to help
them out by getting them on to fd.o, but they didn&amp;rsquo;t want to use the services we
had at the time, and we didn&amp;rsquo;t want to add new projects to those services
anyway.&lt;/p&gt;

&lt;p&gt;Over time, as we stabilised the deployment and fleshed out the feature set, we
added a few smaller projects, who understood the experimental nature and gave us
space to make some mistakes, have some down time, and helped us smooth out the
rough edges. Some of the blocker here was migrating bugs: though we reused
&lt;a href=&#34;https://gitlab.gnome.org/World/bztogl&#34;&gt;GNOME&amp;rsquo;s bztogl script&lt;/a&gt;, we needed some
adjustments for our different setups, as well as various bugfixes.&lt;/p&gt;

&lt;p&gt;Not long ago, we migrated &lt;a href=&#34;https://gitlab.freedesktop.org/mesa&#34;&gt;Mesa&amp;rsquo;s repository
hosting&lt;/a&gt; as well as
&lt;a href=&#34;https://gitlab.freedesktop.org/wayland/wayland/&#34;&gt;Wayland&lt;/a&gt; and
&lt;a href=&#34;https://gitlab.freedesktop.org/wayland/weston/&#34;&gt;Weston&lt;/a&gt; for both repository
tracking and issue tracking which are our biggest projects to date.&lt;/p&gt;

&lt;h2 id=&#34;what-we-offer-to-projects&#34;&gt;What we offer to projects&lt;/h2&gt;

&lt;p&gt;With GitLab, we offer everything you would expect from
&lt;a href=&#34;https://gitlab.com&#34;&gt;gitlab.com&lt;/a&gt; (their hosted offering), or everything you
would expect from GitHub with the usual external services such as Travis CI.
This includes issue tracking integrated with repository management (close issues
by pushing), merge requests with online review and merge, a &lt;a href=&#34;https://about.gitlab.com/features/gitlab-ci-cd/&#34;&gt;comprehensive CI
suite&lt;/a&gt; with shared runners
available to all, custom sites built with whatever toolchain you like, external
web hooks to integrate with other services, and a well-documented stable API
which allows you to use external clients like &lt;a href=&#34;https://gitlab.com/zaquestion/lab&#34;&gt;git
lab&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In theory, we&amp;rsquo;ve always provided most of the above services. Most of these - if
you ignore the lack of integration between them - were more or less fine for
projects running their own standalone infrastructure. But they didn&amp;rsquo;t scale to
something like fd.o, where we have a very disparate family of projects sharing
little in common, least of all common infrastructure and practices. For example,
we did have a Jenkins deployment for a while, but it became very clear very
early that this &lt;a href=&#34;https://lists.freedesktop.org/archives/mesa-dev/2018-May/195700.html&#34;&gt;did not scale out to
fd.o&lt;/a&gt;: it
was impossible for us to empower projects to run their own CI without fatally
compromising security.&lt;/p&gt;

&lt;p&gt;Anyone familiar with the long wait for an admin to add an account or change an
SSH key will be relieved to hear that this is no longer. Anyone can make an
account on our GitLab instance using an email address and password, or with
trusted external identity providers (currently Google, gitlab.com, GitHub, or
Twitter) rather than having another username and password. We delegate
permission management to project owners: if you want to give someone commit
rights to your project, go right ahead. No need to wait for us.&lt;/p&gt;

&lt;p&gt;We also support such incredible leading-edge security features as two-factor
TOTP authentication for your account, Recaptcha to protect against spammers, and
ways of deleting spam which don&amp;rsquo;t involve an admin sighing into a SQL console
for half an hour, trying to not accidentally delete all the content.&lt;/p&gt;

&lt;p&gt;Having an integrated CI system allows our projects to run test pipelines on
merge requests, giving people fast feedback about any required changes without
human intervention, and making sure distcheck works all the time, rather than
just the week before release. We can capture and store logs, binaries and more
as artifacts.&lt;/p&gt;

&lt;p&gt;The same powerful system is also the engine for GitLab Pages: you can use static
site generators like Jekyll and Hugo, or have a &lt;a href=&#34;https://xkbcommon.org&#34;&gt;very spartan, hand-written
site&lt;/a&gt; but also host auto-generated documentation. The
choice is yours: running everything in (largely) isolated containers means that
you can again do whatever you like with your own sites, without having to ask
admins to set up some duct-taped triggers from Git repositories, then ask them
to fix it when they&amp;rsquo;ve upgraded Python and everything has mysteriously stopped
working.&lt;/p&gt;

&lt;h2 id=&#34;migration-to-gitlab-and-legacy-services&#34;&gt;Migration to GitLab, and legacy services&lt;/h2&gt;

&lt;p&gt;Now that we have a decent and battle-tested service to offer, we can look to
what this means for our other services.&lt;/p&gt;

&lt;p&gt;Phabricator will be decommissioned immediately; a read-only archive will be
taken of public issues and code reviews and maintained as static pages forever,
and a database dump will also be kept. But we do not plan to bring this service
back, as all the projects using it have already migrated away from it.&lt;/p&gt;

&lt;p&gt;Similarly, Jenkins has already been decommissioned and deactivated some time
ago.&lt;/p&gt;

&lt;p&gt;Whilst we are encouraging projects to migrate their issue tracking away from
Bugzilla and helping those who do, we realise a lot of projects have built their
workflows around Bugzilla. We will continue to maintain our Bugzilla
installation and support existing projects with its use, though we are not
offering Bugzilla to new projects anymore, and over the long term would like to
see Bugzilla eventually retired.&lt;/p&gt;

&lt;p&gt;Patchwork (already currently maintained by Intel for their KMS and Mesa work) is
in the same boat, complicated by the fact that the kernel might never move away
from patches carved into stone tablets.&lt;/p&gt;

&lt;p&gt;Hopefully it goes without saying that our mailing lists are going to be
long-lived, even if better issue tracking and code review does mean they&amp;rsquo;re a
little less-trafficked than before.&lt;/p&gt;

&lt;p&gt;Perhaps most importantly, we have anongit and cgit. anongit is not provided
by GitLab, as they rightly prefer to serve repositories over https. Given
that, for all existing projects we are maintaining anongit.fd.o as a
read-only mirror of GitLab; there are far too many distributions, build
scripts, and users out there with anongit URIs to discontinue the service.
Over time we will encourage these downstreams to move to HTTPS to lessen the
pressure, but this will continue to live for quite some time. Having cgit
live alongside anongit is fairly painless, so we will keep it running whilst
it isn&amp;rsquo;t a burden.&lt;/p&gt;

&lt;p&gt;Lastly, annarchy.fd.o (aka people.fd.o) is currently offered as a
general-purpose shell host. People use this to manage their Git repositories
on people.fd.o and their files publicly served there. Since it is also the
primary web host for most projects, both people and scripts use it to deploy
files to sites. Some people use it for random personal file storage, to run
various scripts and even as a personal IRC host. We are trying to transition
these people away from using annarchy for this, as it is difficult for us
to provide totally arbitrary resources to everyone who has at one point had
an account with one of our member projects. Running a source of lots of IRC
traffic is also a good way to make yourself deeply unpopular with many hosts.&lt;/p&gt;

&lt;h2 id=&#34;migrating-your-projects&#34;&gt;Migrating your projects&lt;/h2&gt;

&lt;p&gt;After being iterated and fleshed out, we are happy to offer to migrate all the
projects. For each project, we will ask you to &lt;a href=&#34;https://gitlab.freedesktop.org/freedesktop/freedesktop/issues/new/&#34;&gt;file an
issue&lt;/a&gt;
using the migration template. This gives you a checklist with all the
information we need to migrate your GitLab repositories, as well as your
existing Bugzilla bugs.&lt;/p&gt;

&lt;p&gt;Every user with a freedesktop.org SSH account already has an account created
for them on GitLab, with access to the same groups. In order to recover
access to the migrated accounts, you can request a password-reset link by
entering the email address you signed up with into the &amp;lsquo;forgotten password&amp;rsquo;
box on the GitLab front page.&lt;/p&gt;

&lt;p&gt;More information is available on the &lt;a href=&#34;https://gitlab.freedesktop.org/freedesktop/freedesktop/wikis/home&#34;&gt;freedesktop GitLab
wiki&lt;/a&gt;,
and of course the admins are happy to help if you have any problems with this.
The usual failure mode is that your email address has changed since you signed
up: we&amp;rsquo;ve had one user who needed it changed as they were still using a Yahoo!
mail address.&lt;/p&gt;

&lt;h2 id=&#34;governance-and-process&#34;&gt;Governance and process&lt;/h2&gt;

&lt;p&gt;Away from technical issues, we&amp;rsquo;re also looking to inject a lot more transparency
into our processes. For instance, why do we &lt;a href=&#34;https://dri.freedesktop.org/docs/dim/repositories.html&#34;&gt;host kernel graphics
development&lt;/a&gt;, but &lt;a href=&#34;https://bugs.freedesktop.org/show_bug.cgi?id=106821&#34;&gt;not
new filesystems&lt;/a&gt;? What do
we look for (both good and bad), and why is that? What is freedesktop.org even
for, and who is it serving?&lt;/p&gt;

&lt;p&gt;This has just been folk knowledge for some time; passed on by oral legend over
IRC as verbal errata to out-of-date wiki pages. Just as with technical
issues, this is not healthy for anyone: it&amp;rsquo;s more difficult for people to
get involved and give us the help we so clearly need, it&amp;rsquo;s more difficult for
our community to find out what they can expect from us and how we can help them,
and it&amp;rsquo;s impossible for anyone to measure how good a job we&amp;rsquo;re actually doing.&lt;/p&gt;

&lt;p&gt;One of the reasons we haven&amp;rsquo;t done a great job at this is because just keeping
the Rube Goldberg machine of our infrastructure running exhausts basically all
the time we have to deal with fd.o. The time we spend changing someone&amp;rsquo;s SSH
keys by hand, or debugging a Git &lt;code&gt;post-receive&lt;/code&gt; hook, is time we&amp;rsquo;re not spending
on the care and feeding of our community.&lt;/p&gt;

&lt;p&gt;We&amp;rsquo;ve spent the past couple of years paying down our technical debt, and the
community equivalent thereof. Our infrastructure is much less error-prone than
it was: we&amp;rsquo;ve gone from fighting fires to being able to prepare the new GitLab
infrastructure and spend time shepherding projects through it. Now that we have
a fair few projects on GitLab and they&amp;rsquo;ve been able to serve themselves, we&amp;rsquo;ve
been able to take some time for community issues.&lt;/p&gt;

&lt;p&gt;Writing down our processes is &lt;a href=&#34;https://gitlab.freedesktop.org/freedesktop/freedesktop/issues/37&#34;&gt;still a work in
progress&lt;/a&gt;, but
something we&amp;rsquo;ve made a little more headway on is governance. Currently fd.o&amp;rsquo;s
governance is myself, &lt;a href=&#34;https://keithp.com&#34;&gt;Keith&lt;/a&gt; and &lt;a href=&#34;https://err.no&#34;&gt;Tollef&lt;/a&gt;
discussing things and coming to some kind of conclusion. Sometimes that&amp;rsquo;s in
recorded public fora, sometimes over email with searchable archives, sometimes
just over IRC message or verbally with no public record of what happened.&lt;/p&gt;

&lt;p&gt;Given that there&amp;rsquo;s a huge overlap between our mission and that of the &lt;a href=&#34;https://foundation.x.org&#34;&gt;X.Org
Foundation&lt;/a&gt; (which is a lot more than just X11!), one
idea we&amp;rsquo;re exploring is to bring fd.o under the Foundation&amp;rsquo;s oversight, with
clear responsibility, accountability, and delegated roles. The combination of
the two should give our community much more insight into what we&amp;rsquo;re doing and
why - as well as, crucially, the chance to influence it.&lt;/p&gt;

&lt;p&gt;Of course, this is all conditional on fd.o speaking to our member projects, and
the Foundation speaking to its individual members, and getting wide agreement.
There will be a lot of tuning required - not least, the Foundation&amp;rsquo;s bylaws
would need a change which needs a formal vote from the membership - but this at
least seems like a promising avenue.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>pl111: the most satisfying driver submission</title>
      <link>https://www.fooishbar.org/blog/pl111-best-review/</link>
      <pubDate>Tue, 11 Apr 2017 12:03:00 +0100</pubDate>
      
      <guid>https://www.fooishbar.org/blog/pl111-best-review/</guid>
      <description>&lt;p&gt;The pl111 driver might be the most satisfying driver submission yet. Not because I&amp;rsquo;m desperate to see it in tree; I don&amp;rsquo;t actually have that hardware. Not because it&amp;rsquo;s bringing really exciting new capabilities. But, from &lt;a href=&#34;https://anholt.livejournal.com&#34;&gt;Eric&amp;rsquo;s&lt;/a&gt; &lt;a href=&#34;https://lists.freedesktop.org/archives/dri-devel/2017-April/138714.html&#34;&gt;v5 submission&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;v2: Nearly complete rewrite by anholt, cutting &lt;sup&gt;2&lt;/sup&gt;&amp;frasl;&lt;sub&gt;3&lt;/sub&gt; of the code thanks
    to DRM core&amp;rsquo;s excellent new helpers.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and a &lt;a href=&#34;https://lists.freedesktop.org/archives/dri-devel/2017-April/138768.html&#34;&gt;follow-up review&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I must say the driver is &lt;em&gt;really&lt;/em&gt; slim and readable with all the new
helpers from DRM, good job all who refactored the DRM support
for simple framebuffer systems.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The DRM community really has come a long, long, way. Great to see it so thriving and healthy that people are actively dusting off ancient drivers which never got merged, deleting most of them in the process, and getting them in just because the process works so well.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>freedesktop.org CoC</title>
      <link>https://www.fooishbar.org/blog/fdo-contributor-covenant/</link>
      <pubDate>Mon, 10 Apr 2017 21:00:00 +0100</pubDate>
      
      <guid>https://www.fooishbar.org/blog/fdo-contributor-covenant/</guid>
      <description>

&lt;p&gt;On Friday, after consulting with the other freedesktop.org admins, I pushed a change to the freedesktop.org wiki, adding a &lt;a href=&#34;https://www.freedesktop.org/wiki/CodeOfConduct&#34;&gt;Code of Conduct&lt;/a&gt;, based on the widely-used &lt;a href=&#34;http://www.contributor-covenant.org&#34;&gt;Contributor Covenant&lt;/a&gt;. In doing this, we join pretty much every other large open source project on the planet, with the exception of the &lt;a href=&#34;https://www.kernel.org/doc/html/latest/process/code-of-conflict.html&#34;&gt;Linux kernel&lt;/a&gt;, a magnificent anti-pattern. From this point on, all projects hosted on freedesktop.org are subject to this CoC.&lt;/p&gt;

&lt;h2 id=&#34;why-so-broad&#34;&gt;why so broad?&lt;/h2&gt;

&lt;p&gt;fd.o is a notoriously loose collective of communities, who largely run their own affairs. However, freedesktop.org as a project is responsible for the content on our site: mailing list archives, bug tracking systems, website, etc. We&amp;rsquo;ve already had to intervene to remove legally problematic content from our hosting platforms; ultimately, it is our responsibility.&lt;/p&gt;

&lt;p&gt;The culture of our member projects reflect on us as a wider organisation, and the problems of abusive and bullying behaviour weren&amp;rsquo;t solving themselves. In some specific cases we looked at, we were told directly by senior figures in the project that the lack of a defined fd.o-wide CoC made it harder for them to enforce it themselves.&lt;/p&gt;

&lt;p&gt;In the end, the only course of action was completely clear: that we take the same approach to unacceptable behaviour as we do to legally-unacceptable content. Enforcing it across the platform gives everyone complete clarity of what&amp;rsquo;s required (i.e. behaving like reasonable human beings).&lt;/p&gt;

&lt;h2 id=&#34;but-the-honeytrap-bad-code&#34;&gt;but the honeytrap / bad code&lt;/h2&gt;

&lt;p&gt;The notion that codes of conduct are used as a kind of submarine device to saddle communities with terrible code, and run completely excellent people out of the community for literally no reason, has been thoroughly debunked over the years that codes of conduct have been implemented. I don&amp;rsquo;t plan to give these arguments any time at all.&lt;/p&gt;

&lt;h2 id=&#34;what-now&#34;&gt;what now?&lt;/h2&gt;

&lt;p&gt;The &lt;a href=&#34;https://lists.freedesktop.org/mailman/listinfo/conduct&#34;&gt;conduct mailing list&lt;/a&gt; now exists, for confidential reports of any CoC violations. This is currently only manned by fd.o admins. We have, however, been in touch with some of the larger member projects, inviting them to help deal with conduct enforcement in their own projects. This process will take time, but if you&amp;rsquo;re interested in doing this for your project, please get in touch.&lt;/p&gt;

&lt;p&gt;And hopefully, people continue to build healthy communities producing excellent code.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>linux.conf.au CfP closing fast!</title>
      <link>https://www.fooishbar.org/blog/linux-conf-au-cfp-closing-fast/</link>
      <pubDate>Wed, 03 Jul 2013 12:00:00 +0000</pubDate>
      
      <guid>https://www.fooishbar.org/blog/linux-conf-au-cfp-closing-fast/</guid>
      <description>&lt;p&gt;Everyone’s favourite Australasian open source conference, linux.conf.au, is unsurprisingly back for 2014. This time, it’s in Perth, where it’s relentlessly hot and sunny all year; I’m told the beaches are nice too. A nice break from Europe and north America in January, then. Or wherever you happen to be from the 6th—11th January.&lt;/p&gt;

&lt;p&gt;But you can’t make a great conference without great talks, which is where you come in. The Call for Papers is closing this Saturday, the 6th of July. So please, do come and submit your talks about graphics, window systems, input, media, dmabuf, some cool little hack you’ve been working on, whatever. We had a great slate of talks this year, and would love to see them even better next year.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Weston on Raspberry Pi</title>
      <link>https://www.fooishbar.org/blog/wayland-on-raspberry-pi/</link>
      <pubDate>Thu, 23 May 2013 12:00:00 +0000</pubDate>
      
      <guid>https://www.fooishbar.org/blog/wayland-on-raspberry-pi/</guid>
      <description>

&lt;p&gt;One of the platforms we’ve been working on for a while at Collabora is the &lt;a href=&#34;https://www.raspberrypi.org&#34;&gt;Raspberry Pi&lt;/a&gt;. Obviously the $25 pricepoint makes it hugely appealing to a lot of people — including free software developers who up until now have managed to avoid the &lt;del&gt;agony&lt;/del&gt;joy we experience on a daily basis working on embedded and mobile platforms — but there are a couple of aspects which speak specifically to us as a company.&lt;/p&gt;

&lt;p&gt;Firstly, we did quite a bit of work on &lt;a href=&#34;http://one.laptop.org&#34;&gt;OLPC&lt;/a&gt; through the years, which had a similar, very laudable, educational mission encouraging not just deep computer literacy in children, but also open source involvement. The Raspberry Pi has broadly the same aims, a very education-friendly pricepoint, and has seen huge success.&lt;/p&gt;

&lt;p&gt;Less loftily, it’s a great example of a number of architectures we’ve been quietly working on for quite some time, where hugely powerful special-purpose (i.e. not OpenGL ES) graphics hardware goes nearly unused, in favour of heavily loading the less powerful CPU, or pushing everything through GL.&lt;/p&gt;


&lt;div style=&#34;position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden;&#34;&gt;
  &lt;iframe src=&#34;//www.youtube.com/embed/Ux-WCpNvRFM&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%;&#34; allowfullscreen frameborder=&#34;0&#34; title=&#34;YouTube Video&#34;&gt;&lt;/iframe&gt;
 &lt;/div&gt;


&lt;h2 id=&#34;background-etc&#34;&gt;background etc&lt;/h2&gt;

&lt;p&gt;The Raspberry Pi has a Broadcom BCM2385 SoC in it, containing an extremely beefy (roughly set-top-box-grade) video, media and graphics processor called the VideoCore (somewhat akin to a display controller, GPU and DSP hybrid), and a … somewhat less beefy general-purpose ARMv6&lt;sup class=&#34;footnote-ref&#34; id=&#34;fnref:0&#34;&gt;&lt;a href=&#34;#fn:0&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; CPU. The ARM side does everything you’d expect, whereas the VideoCore is a multi-functional beast, acting as the GPU for OpenGL ES, the display engine for outputs/overlays/etc, and also any general-purpose processing (e.g. accelerated JPEG decode).&lt;/p&gt;

&lt;p&gt;In terms of how this looks from the ARM, the VideoCore exposes its display functionality through DispManX, an API for display control similar, in capability at least, to KMS. The DispManX exposes a number of output displays, each of which can have a number of planes (sometimes called overlays or sprites) which can each be in different colourspaces (think: video), scaled, alpha-blended, or variously stacked. No surprise there, as this is how most GPUs and display controllers look everywhere: from your phone, to your desktop, to your set-top box.&lt;/p&gt;

&lt;p&gt;A recurring theme for us is how to properly use and expose these overlays. There’s a huge benefit in doing so over using GL: not only are they a lot faster, but they also have hugely better quality when doing colourspace conversion and scaling, and extra filters for much better image quality&lt;sup class=&#34;footnote-ref&#34; id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;. There’s also a pretty strong power argument to be made; at one stage, measuring on a phone, we found a 20% runtime difference — from 4 hours to a bit over 5 — when watching videos using the overlay, compared to pumping them through GL ES. And that was without the zerocopy support we enjoy nowadays!&lt;/p&gt;

&lt;p&gt;The X Video extension (Xv) exposes overlays in a very limiting and frustrating way, meaning they’re only really suitable for video, and even then aren’t capable of zerocopy.  DRI2 video support was proposed to fix this, but so far TI’s OMAP is the only real deployment of this, and client support is very patchy.&lt;/p&gt;

&lt;p&gt;Even then, this is only applicable to video. Under the X11 model, effectively the only way to do compositing is for an external process to render the entire screen as a single image, then pass that image to the X server to display. This is fine for GL, since that’s exactly what it’s built for, but it means you’re never going to get to use all your lovely 2D compositing hardware. Either that, or you do offload compositing inside the X server: something very difficult which almost no-one does, not only because it means no compositing. And no compositing means that your desktop is all &lt;a href=&#34;https://www.fooishbar.org/blog/first-post/&#34;&gt;back to 1995&lt;/a&gt;, with those attractive flickering backgrounds and jittery resizes. :(&lt;/p&gt;

&lt;h2 id=&#34;i-thought-this-was-about-rpi&#34;&gt;i thought this was about rpi … ?&lt;/h2&gt;

&lt;p&gt;We’ve been working with the Raspberry Pi Foundation since last year, when we first brought up Weston on Raspberry Pi. At that stage, Weston was still very heavily GLES-based, but was able to opportunistically pull individual surfaces out into overlays if the conditions were right. This worked, and was all well and good, but was an awkward abuse of Weston’s internal model, and made RPi look rather unlike any other backend.&lt;/p&gt;

&lt;p&gt;Fast forward to a couple of months ago, and Weston had come a long way along the road towards 1.1. A pretty vital piece for us was the renderer infrastructure: whereas Weston previously only had pluggable backends controlling the final display output backend (think: KMS, fbdev, RDP), it now gained a similar split for the renderers.&lt;/p&gt;

&lt;p&gt;The original split was between the original GLES renderer and a purely-software Pixman renderer (which was still capable of everything the GLES renderer was!), but it was also a perfect fit for DispManX. So, the first thing Pekka did, and the base of all our work since, was to split the RPi backend into a backend and a renderer, allowing us to guarantee that we’d never fall back to GLES. This lets us feed the entire set of windows into the hardware, complete with stacking order, alpha blending, and 2D transforms, and have the VideoCore take care of everything, all fully synchronised and tear-free. Without using GL!&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://ppaalanen.blogspot.fi/2013/05/weston-on-raspberry-pi-accelerated.html&#34;&gt;Pekka’s blog&lt;/a&gt; has more of the gory details on both the Weston internals, and how DispManX works.&lt;/p&gt;

&lt;h2 id=&#34;shiny-demos&#34;&gt;shiny demos&lt;/h2&gt;

&lt;p&gt;Seemingly no-one can talk about open source graphics without getting all misty-eyed over wobbly windows; what good is straight tech with nothing to show for it? So, while Pekka worked on the renderer, Louis-Francis and myself knocked up a couple of demos to show off what we could do with 2D compositing alone.&lt;/p&gt;

&lt;p&gt;The first, and most compelling, demo is in our &lt;a href=&#34;http://www.collabora.com/services/case-studies/raspberrypi/&#34;&gt;case study&lt;/a&gt;, in which Louis-Francis drags some windows around under both X11 and Weston for the camera. X11 struggles badly, whereas Weston with its VideoCore backend keeps up like a champ.&lt;/p&gt;

&lt;p&gt;Louis-Francis then added an optional fade layer, where all the background windows were dimmed, complete with a nice fading animation between foreground and background. This is done internally with one or two solid-colour surfaces, with varying alpha.&lt;/p&gt;

&lt;p&gt;Last but not least, I added a reimplementation of GNOME3’s window overview mode. It is a little on the rudimentary side, and does certainly suffer from not having an established layout/packing framework to use, but does work, and I think provides a pretty good demonstration of the kinds of smooth and fluid animations that are totally possible without ever touching GLES. And the best part is that windows zoom around, scaled and alpha-blended, at 60fps, whereas X11 struggles to get to 10fps just moving an unscaled, opaque, window. Yeesh.&lt;/p&gt;

&lt;p&gt;And then some of the details were just that: details. Pekka add a new background scaling mode which preserves aspect ratio, Louis-Francis and Pekka worked to make sure the memory usage was always as low as humanly possible, including an optional mode where we trade strict visual correctness for performance and memory usage, we fixed some bugs in the XWayland emulation, and some bugfixes.&lt;/p&gt;

&lt;h2 id=&#34;sounds-great-how-do-i-get-it&#34;&gt;sounds great; how do i get it?&lt;/h2&gt;

&lt;p&gt;The source is already winging its way upstream; currently, the renderer has been merged, but some of the effects are still oustanding. In the meantime, you can clone Pekka’s repository:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ git clone git://git.collabora.co.uk/git/user/pq/weston
$ cd weston
$ git checkout origin/raspberrypi-dispmanx-wip
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Or we’ve also got Raspbian packages, based on the stable 1.0.x rather than unreleased git:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# echo deb http://raspberrypi.collabora.com wheezy rpi &amp;gt;&amp;gt; /etc/apt/sources.list
# apt-get update
# apt-get install weston
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&#34;tl-dr&#34;&gt;tl;dr&lt;/h2&gt;

&lt;p&gt;A lot of hardware — particularly in the media/embedded/mobile space — ships with hugely powerful special-purpose graphics hardware, aside from the usual OpenGL ES. Up until now, this special-purpose hardware has gone unused, but for equally special-purpose hacks. The work we’ve done with Weston and Raspberry Pi, using only its dedicated 2D compositing hardware, is a fantastic example of what we can do with Wayland and these kinds of platforms in general, without using GL ES.&lt;/p&gt;

&lt;h2 id=&#34;now-convince-your-boss&#34;&gt;now convince your boss&lt;/h2&gt;

&lt;p&gt;Would you love us to shut up and take your money, but just need that little bit extra to persuade those humourless lot up in purchasing? Fear not: we have an &lt;a href=&#34;http://www.collabora.com/services/case-studies/raspberrypi/&#34;&gt;entire case study&lt;/a&gt; for the work we’ve done on the Raspberry Pi, as well as a &lt;a href=&#34;http://www.collabora.com/projects/graphics/&#34;&gt;general graphics page&lt;/a&gt;. Raspberry Pi have a &lt;a href=&#34;http://www.raspberrypi.org/archives/4053&#34;&gt;writeup&lt;/a&gt; themselves too. Or maybe you’re more impressed (ha) by &lt;a href=&#34;http://www.collabora.com/press/2013/05/collabora-brings-wayland-and-x11-graphics-performance-to-raspberry-pi.html&#34;&gt;press releases&lt;/a&gt;? Either way, our &lt;a href=&#34;mailto:sales@collabora.com&#34;&gt;trained operators&lt;/a&gt; are standing by to take your call.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34;&gt;

&lt;hr /&gt;

&lt;ol&gt;
&lt;li id=&#34;fn:0&#34;&gt;ARMv6 is the sixth iteration of the ARM architecture; the chip family is ARM11, which was the generation immediately pre-Cortex. Various ARM11s were used in, e.g., the Nokia N810, the iPhone 3G, and the Nintendo 3DS. If you’re confused by the ARM nomenclature, Wikipedia has a &lt;a href=&#34;http://en.wikipedia.org/wiki/List_of_ARM_microprocessor_cores&#34;&gt;really good table&lt;/a&gt;.
 &lt;a class=&#34;footnote-return&#34; href=&#34;#fnref:0&#34;&gt;&lt;sup&gt;[return]&lt;/sup&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li id=&#34;fn:1&#34;&gt;Fun side note: if you want zero-copy video through GL, thanks to the unbelievably harsh wording of GL_OES_EGL_image_external, then you’re only allowed to use linear or nearest filtering. Not even bilinear, and definitely nothing near what overlays can do.
 &lt;a class=&#34;footnote-return&#34; href=&#34;#fnref:1&#34;&gt;&lt;sup&gt;[return]&lt;/sup&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>xkbcommon: what is it?</title>
      <link>https://www.fooishbar.org/blog/xkbcommon-intro/</link>
      <pubDate>Tue, 09 Apr 2013 12:00:00 +0000</pubDate>
      
      <guid>https://www.fooishbar.org/blog/xkbcommon-intro/</guid>
      <description>

&lt;p&gt;So, in my &lt;a href=&#34;https://www.fooishbar.org/blog/first-post/&#34;&gt;earlier post&lt;/a&gt;, I mentioned that I’d been working on a library called &lt;a href=&#34;https://xkbcommon.org&#34;&gt;xkbcommon&lt;/a&gt;. Since it’s got a massively misleading name (and renaming hasn’t been totally ruled out yet …), it’s probably worth an introductory post.&lt;/p&gt;

&lt;p&gt;tl;dr: It loads XKB keymaps and can manage tricky things like modifier state for you.&lt;/p&gt;

&lt;h2 id=&#34;tell-me-more&#34;&gt;tell me more!&lt;/h2&gt;

&lt;p&gt;At its core, xkbcommon is nothing to do, as you might think, with X11. It’s about two things: parsing and loading keymaps, and managing their ongoing state. State, in terms of keyboards, is the usual suspects — modifiers (e.g. Shift, Alt), multiple layouts (mostly for multiple languages), and LEDs. In general, you only want one person keeping a canonical copy of the state, and distributing it to its clients, as both the X server and Wayland do today. xkbcommon allows for this mode of operation, and is indeed how all current Wayland clients handle keyboard input.&lt;/p&gt;

&lt;p&gt;One notable thing xkbcommon isn’t, is an input method. Anything more complex than ‘I press one key and get a symbol’, such as phonetic compound composition for CJK/Thai/etc (where you type out a word, which, when completed, becomes much fewer characters on screen) or menu-based selections as common in both Arabic and Mandarin (where you type out the beginnings of a word, and are then offered a selection of choices to complete), or even just the seemingly-straightforward compose key (e.g. right Alt + o + / → ø), are implemented internally to the toolkit, and don’t really use xkbcommon at all. Supporting the two (key-based vs. string-based) methods in the same protocol seems straightforward, but quickly becomes hugely unwieldy if you ever need to do anything weird like, say, process shortcuts. Anyway, if you want to find out more about input methods on Wayland, Michael Hasselmann has a very nice &lt;a href=&#34;http://mikhas.posterous.com/maliit-status-update&#34;&gt;update about Maalit and ibus&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This makes life rather more simple for the keyboard-based protocols: all we have to do is tell xkbcommon every time someone presses (or releases) a key, and ask it which symbols resulted from that.&lt;/p&gt;

&lt;p&gt;There are two methods of operation. The self-contained approach, suitable if you’re writing programs which back directly on to a terminal and have absolute full control over the entire keyboard, is used by most of our tests, such as &lt;a href=&#34;https://github.com/xkbcommon/libxkbcommon/blob/master/test/interactive.c&#34;&gt;interactive.c&lt;/a&gt;, which is a reasonably summary of how to implement one of these clients. Here, the same client manages the entire state, and never needs to deal with any external entities.&lt;/p&gt;

&lt;p&gt;However, the most common method of operation is the one used by Wayland and X11, where a central server manages the state and informs the clients. Under this model, the clients never update the state implicitly through &lt;code&gt;xkb_state_update_key()&lt;/code&gt;; they only ever use &lt;code&gt;xkb_state_update_mask()&lt;/code&gt; in response to its master sending it a new and complete copy of the state.&lt;/p&gt;

&lt;h2 id=&#34;ok-so-how-do-i-use-it&#34;&gt;ok — so how do I use it?&lt;/h2&gt;

&lt;p&gt;Firstly, create a context:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ctx = xkb_context_new(0);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;which will be the base for all your xkbcommon operations. Secondly, we need to compile a keymap. If you have a named keymap you want to compile from (e.g. the user has specified ‘Icelandic Dvorak with Caps Lock mapped to Ctrl’), use:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;keymap = xkb_keymap_new_from_names(ctx, rules, model, layout, variant, options);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;On Linux, the rules and model are almost always ‘evdev’. Layout is usually the ISO two-character country (not language!) code, variant is specific to the layout, and options are global. In this case, we would use:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;keymap = xkb_keymap_new_from_names(ctx, &amp;quot;evdev&amp;quot;, &amp;quot;evdev&amp;quot;, &amp;quot;is&amp;quot;, &amp;quot;dvorak&amp;quot;, &amp;quot;ctrl:nocaps&amp;quot;);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A keymap is a static and immutable ruleset describing the translation between key events and the resulting output (e.g. if d is pressed while shift is held down, then output D). On top of the keymap, for every keyboard we use, we generate a new state object:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;state = xkb_state_new(keymap);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;which will track things like which keys are currently held down. Every time a key is pressed or released, we first get the symbols it produces:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sym = xkb_state_key_get_one_sym(state, keycode);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;which returns a key symbol (listed in xkbcommon-keysyms.h, and identical to the X11 keysyms; &lt;code&gt;xkb_keysym_to_utf8()&lt;/code&gt; may be used to translate this to a string)  generated by that keypress. For example, pressing the B key on Icelandic Dvorak with AltGr held down would return &lt;code&gt;XKB_KEY_ssharp&lt;/code&gt; (i.e. ß). After we have got the symbol to be used, we then update the state object with the keypress. It is &lt;em&gt;crucial&lt;/em&gt; the order of these two operations is not reversed! Anyhow, we update the state object like so for sole-control programs:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;changed = xkb_state_update_key(state, keycode, XKB_KEY_DOWN);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;or thusly for clients who get their master state from an external program, e.g. Wayland compositor:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;changed = xkb_state_update_mask(state, mods_down, mods_latched, mods_locked, ...);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and we have now completed our key processing. Hurrah!&lt;/p&gt;

&lt;p&gt;Note that you do not need any special cases anywhere: xkbcommon takes care of the mechanics of handling special keys under the hood for you. The one case where you need extended functionality is shortcut processing (e.g. capture Ctrl+P), but that’s a story for another day.&lt;/p&gt;

&lt;h2 id=&#34;shouldn-t-all-this-be-in-the-documentation&#34;&gt;shouldn’t all this be in the documentation?&lt;/h2&gt;

&lt;p&gt;… yeah.&lt;/p&gt;

&lt;p&gt;PS: Funny story: I was planning to explain in this footnote how I’d just picked Icelandic Dvorak for a laugh and no-one would make a layout that ridiculous. But no, it actually exists …&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Been a while</title>
      <link>https://www.fooishbar.org/blog/first-post/</link>
      <pubDate>Sat, 06 Apr 2013 12:00:00 +0000</pubDate>
      
      <guid>https://www.fooishbar.org/blog/first-post/</guid>
      <description>

&lt;h2 id=&#34;hi&#34;&gt;hi&lt;/h2&gt;

&lt;p&gt;Yeesh, it really has been a while, hasn’t it.&lt;/p&gt;

&lt;p&gt;Last time we spoke, I was working on X11, and my blog was being served off a FreeBSD 4.3 machine (obviously named ‘amnesiac’), from the datacentre of an ISP who had long since forgotten which ex-employee’s Pentium II was sitting in that rack. Unfortunately I didn’t back it up, and no longer even have a copy of the RSS feed to import. Looking over the Wayback Machine copy though, I don’t think we’re missing much by losing that one. So here we are with WordPress, having blatantly ripped off &lt;a href=&#34;http://lucasr.org/2013/01/25/new-design/&#34;&gt;Lucas’s theme&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Shortly after that machine died — early in 2012 — I finished up my last proper X11 project for a customer, went back to Australia for linux.conf.au and a holiday, and came back to start working on Wayland’s input subsystem (including xkbcommon, on which more in a future post). Working on Wayland has been really refreshing; not only did it feel like time for a change after nine years of working on X11, but diminishing returns meant that we were increasingly spending enormous amounts of time on X11 to achieve very marginal results.&lt;/p&gt;

&lt;p&gt;The last major thing I did there was work with Chase Douglas (ex-Canonical) and Peter Hutterer (Red Hat) — though sadly due to timing, we almost entirely worked in relay, rather than together — on the XI2.3 multitouch protocol and implementation. I was quite proud to see it eventually make its way upstream, but having subsequently both tried to explain to others how it all hangs together, and watched Peter continue to fix corner-case after corner-case in its interactions with other parts of X11 input, it really solidified my view that X11 is a dead end for any new development.&lt;/p&gt;

&lt;h2 id=&#34;stop-whining-and-get-on-with-it&#34;&gt;stop whining and get on with it&lt;/h2&gt;

&lt;p&gt;A couple of months ago, in Canberra for &lt;a href=&#34;http://lca2013.linux.org.au/&#34;&gt;linux.conf.au 2013&lt;/a&gt;, I gave a presentation about that very realisation.  Originally I thought of giving a kind of dispassionate comparison and explanation of the two, but it ended up becoming a fairly linear narrative of where X began, where it is now, and how Wayland organically developed from this. It’s a fairly well-worn line that Wayland is in many ways the culmination of the last ten years of X.Org development, but it really is true.&lt;/p&gt;


&lt;div style=&#34;position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden;&#34;&gt;
  &lt;iframe src=&#34;//www.youtube.com/embed/GWQh_DmDLKQ&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%;&#34; allowfullscreen frameborder=&#34;0&#34; title=&#34;YouTube Video&#34;&gt;&lt;/iframe&gt;
 &lt;/div&gt;


&lt;p&gt;Part of that has not just been shedding the X11 cruft and getting the opportunity to start over ­­— though, given the state of the X11 protocol and its 28 common extensions, plus its codebase, that’s really no bad thing — but some radically different design decisions, down to the real fundamentals of the interfaces. Giving compositors a lot more context opens up a huge amount of possibilities for us (beginning with actually being able to activate a screensaver while a pop-up menu’s active …), and I’m really excited about the kinds of things we can do.&lt;/p&gt;

&lt;p&gt;It’s been really interesting to see Wayland grow and develop into a fully-fledged window system. At Collabora, we’ve had &lt;a href=&#34;http://ppaalanen.blogspot.co.uk/&#34;&gt;Pekka&lt;/a&gt;, Louis-Francis, &lt;a href=&#34;http://fredinfinite23.wordpress.com/&#34;&gt;Fred&lt;/a&gt; and others working on Wayland support across the board: compositors, client toolkits/apps, and hardware enablement too. After the groundwork we’ve been doing, a lot of it is really starting to come to fruition and hopefully we’ll have some more shiny demos soon. Along the way, I managed to fulfill one of my goals I set a while ago, which was to get out of the bubble of only ever working on the server (since X clients were so uniformly unpleasant), and work throughout the stack. Over the past few months, I’ve been able to work on GStreamer, WebKit, Clutter, COGL, Mesa, and other EGL/GLES stacks, which has been really interesting.&lt;/p&gt;

&lt;h2 id=&#34;where-next&#34;&gt;where next?&lt;/h2&gt;

&lt;p&gt;With GTK+, Qt and Clutter all shipping Wayland support in their stable releases, the next big thing for me personally is watching the &lt;a href=&#34;https://live.gnome.org/Wayland&#34;&gt;GNOME port&lt;/a&gt; progress. We’ve got a stable and solid core protocol and library now, but there are definitely some gaps to be filled in by having a real desktop environment ported, and certainly around input we’ve got a lot of things to support (e.g. touchpad support on par with xf86-input-synaptics, better mouse acceleration, support for synchronising keyboard repeat rates between clients, tablets, etc). But it’s quite exciting to see what people will be able to make of our work so far.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>About me</title>
      <link>https://www.fooishbar.org/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://www.fooishbar.org/about/</guid>
      <description>&lt;p&gt;An Australian living in London, I work as the graphics lead at the open-source consultancy &lt;a href=&#34;https://www.collabora.com&#34;&gt;Collabora&lt;/a&gt;. During my 10 years with Collabora, I&amp;rsquo;ve worked with clients such as ARM, Intel, Google, &lt;a href=&#34;https://www.fooishbar.org/blog/wayland-on-raspberry-pi/&#34;&gt;Raspberry Pi&lt;/a&gt;, Zodiac Inflight Innovations, and many more. Before Collabora, I worked on Maemo/MeeGo at Nokia, on Ubuntu at Canonical, and at LinuxFund and Trinity College, University of Melbourne.&lt;/p&gt;

&lt;p&gt;I focus on the Linux and open-source graphics stack, including Wayland and the associated plumbing both sides of it: kernel modesettting, EGL and GBM, the Vulkan WSI, GStreamer, Chromium&amp;rsquo;s Exosphere, etc. I believe strongly in having better infrastructure, and have spent time working on build systems, CI, issue trackers, and more; as part of this, I am one of the team who runs &lt;a href=&#34;https://www.freedesktop.org&#34;&gt;freedesktop.org&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In a past life, I worked on X.Org and XFree86 for quite a few years, but &lt;a href=&#34;https://youtu.be/GWQh_DmDLKQ&#34;&gt;not anymore&lt;/a&gt;; I&amp;rsquo;ve also previously worked on Debian, Ubuntu, KDE, and other open-source projects.&lt;/p&gt;

&lt;p&gt;Email: &lt;a href=&#34;daniel@fooishbar.org&#34;&gt;daniel@fooishbar.org&lt;/a&gt; or &lt;a href=&#34;daniels@collabora.com&#34;&gt;daniels@collabora.com&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
