Talks, Papers, and Articles
This is a collection of my conference talks, and papers. Under "Details" you'll find links to slides, PDF copies of papers, and in a few cases, videos of the talks. Included here are a couple of longer web articles I've put up on this site. See my blog for more online writing.
2015 –AllThingsOpen2017 Flock2017 OpenWest2017 DevConf2017
The traditional model of a GNOME desktop is tightly tied to the traditional model of a Linux distribution: many packages that are individually installed onto the users system; some are low-level system services, some are core desktop components, and some are applications. While in some ways very flexible, this model is also fragile: the continuing correct operation of the system depends on a complex dance of installation and upgrades of thousands of packages. Systems based on free software components, from OLPC, to ChromeOS, to Android have moved away from this model, but are no longer recognizable as a Linux distribution.
Upcoming releases of Fedora Workstation will offer an alternate installation method where the operating system is distributed as an ostree image and atomically upgraded as a whole, while applications are installed on top as xdg-app bundles. The intent is to provide an experience that is much more robust than the traditional package-based installation, while providing additional flexibility in installing applications. Applications will no longer be strictly bound to the Fedora package set, making it easy for third parties to provide applications that work across multiple distributions and distribution versions. The talk will go over the underlying technologies and discuss how they interact with a traditional distribution ecosystem, and with the evolving ecosystem of xdg-app. There will also be discussion of how users, such as developers, need to work differently on such a system, and how we can best enable that.Flock 2016 What's Fedora's alternative to vi httpd.conf? https://youtu.be/R1Na7oqEFdQ
The most traditional way to do server development on a Linux workstation is to treat your workstation like a server: install the dependencies, put your code in a system directory, and edit the web server config. The idea of an ostree-based workstation with a fixed system image would make this impossible: a workstation doesn't have the web server or development dependencies installed systemwide, but it's not the best way to do things for many other reasons: the project may need versions of dependencies that are newer or older than what your workstation has, different projects may have conflicting dependencies, its hard to go from development to deployment, and so forth. There are no shortage of options for alternate ways to develop: Docker, Vagrant, Python's virtualenv, and many more, each with lots of subvariants. But with all these options out there, how do we guide users to ways that work well, and that let them leverage the Fedora ecosystem? And how do we provide integration with standard Workstation components like the terminal, GNOME Boxes, and with IDEs to make the experience truly slick and compelling?
2010 – 2014GUADEC 2014 https://2014.guadec.org/continuous-integration-performance-testing-on-actual-hardware/ GUADEC 2013 Wayland panel discussion GUADEC 2012 https://www.gpul.org/indico/contributionDisplay.py?contribId=40&confId=0 Desktop Summit 2011 GNOME Shell Version π Red Hat Summit 2011
Over the last year, a large amount of work has been done on GNOME Shell, the key new component of the GNOME 3 user experience. Major changes have been made to the user interface, new features have been added, and it has generally progressed rapidly toward being a compelling choice for everyday use.
This talk will describe the work done in the last year, including a tour of new features and user interface changes. It will discuss how GNOME Shell fits in with the rest of GNOME 3, remaining work needing to be done for GNOME 3 on GNOME Shell itself and in integration with other components, and provide a look at how development on GNOME Shell is expected to proceed beyond the initial GNOME 3 release.
2005 – 2009
The GNOME Shell is a major component proposed for GNOME 3.0. It takes over the window management and application launching roles and provides an intuitive unified experience as the user navigates between tasks and documents.
The talk is a general interest introduction to the GNOME Shell - it does not presuppose prior experience programming to the GNOME platform. The talk will start with a description of the design ideas and challenges behind GNOME Shell, and move on to a tour of the shell user interface.
A high-level overview will given of the technology choices behind the shell and the architecture of the shell, with particular emphasis on how they allow rapid prototyping and sophisticated effects with small amounts of code.
The talk will conclude with a look at future work on the shell as we get closer to GNOME 3.0 and how the user interface and technology of the shell can be integrated more deeply with the rest of GNOME.
Instead of editing local files, desktop components and applications now frequently display dynamically changing data retrieved from the internet. The GNOME Online Desktop Data Model provides a complete solution for distributing data and change notifications from the online.gnome.org server and other internet sources to a daemon running in the user’s desktop, and from there to individual applications.
The basic innovation of the data model is that a request for data is implicitly a request for future notification of changes to that data. This talk describes why this concept both fits the needs of the Online Desktop user interface and allows for an efficient client-server protocol. Also covered are accessing the data model from your application, and extending the data model to include new types of data.
GTK+-2.8 introduces Cairo, much advancing the rendering capabilities available to GTK+ applications. This talk covers using Cairo and other new capabilities in GTK+-2.8 to enhance the rendering of widgets and applications using techniques such as vector graphics, alpha transparency and animation. Audience members are discussed to put screenshots and source code of their application or widget on the web and send a link to Owen Taylor for live discussion of enhancing the rendering.
2000 – 2004
Currently, GNOME has several rendering backends. GDK has drawing code based on the almost 20 year old Xlib APIs. Some parts of GNOME,such as GnomeCanvas render using using libart. gnome-print is yet another rendering API. This mish-mash of rendering technology means that operations that should be simple, such as printing internationalized text in a PangoLayout are hard or impossible.The Cairo library provides a convenient, simple API in front of a sophisticated rendering model with capabilities similar to those in the PDF-1.4 or SVG rendering models. This provides the possibility of a comprehensive solution providing both high-quality display on the screen and printing in a single API. But how will it integrate with Pango, GDK, GTK+, gnome-print and the rest of GNOME? This talk provides a roadmap to how a migration to Cairo could work and how it integrates with existing GNOME technologies.
Open source development methologies have been used successfully for many different types of software, and are just as applicable to the task of rendering internationalized text. In particular, in the area of text rendering, an open-source approach provides the opportunity for local organizations and governments to actively contribute to development of support for scripts with smaller user communities, rather than simply waiting for for the software vendor to provide such support. The Pango project provides a highly modular framework for internationalized text layout and rendering, with the ability to incrementally add support for both new scripts for new new font technologies and rendering systems.
This tutorial covers the essential concepts needed to become an effective programmer with GTK+ user interface toolkit.
Topics covered include -
- The basics of the GObject system: inheritance, signals, and properties.
- The principles of GTK+ window management
- Laying out a GUI using Glade
- How to organize a GTK+ program
- Creating lists displays using GtkTreeView
Attendees are expected to have a familiarity with C. No prior experience in GTK+ or GNOME programming is needed.
This talk was a brief tutorial that introduced GTK+ programming and coverered some important concepts that new GTK+ programmers frequently have problems with, and some useful strategic hints.
The 2.0 development cycle was, by far, the largest step in GTK+ development ever; the size of the code more than doubled to over 600,000 lines, significant contributions were made by dozens of individuals adding major new functionality such as completely new text and tree widgets and much expanded internationalization support. With a more ambitious development cycle, considerations of design, process and communication became more important.
By looking at how tools such as bugzilla and mailing lists were used in development, how design decisions were made, and how scheduling was done and worked out in practice, we can extract both successful practices can be used in other projects, and improvements that need to be made for future GTK+ development cycles.
Advancing the user experience on the open-source desktop depends upon creating standards for applications to interact with each other and the desktop environment so that applications created with different toolkits operate correctly with any desktop. The XSETTINGS protocol provides a simple example of some of the techniques and considerations that come into play for such standards. It provides a mechanism for all applications running on a desktop to have access to a common set of settings for such user-configurable parameters as double-click time and background color.
Pango is a library for laying out and displaying internationalized text. It handles almost every writing system in the world, and can work on top of multiple different display systems - including traditional X fonts, or client-side OpenType fonts. Pango is used for all text handling in the soon- to-be-released version 2.0 of the commonly used GTK+ widget toolkit.