GNOME development updates from GUADEC
A project as large as GNOME consists of enough constituent parts that it can be a challenge just to keep up with the latest developments of the various applications, libraries, and infrastructure efforts. GUADEC 2014 in Strasbourg provided a number of opportunities to get up speed on the various moving pieces. Of course, it is impossible to catch everything at a multi-track event, but there were still quite a few updates worth mentioning.
Infrastructure and new work
Owen Taylor presented a walk-through of his new continuous-integration (CI) tool, GNOME Continuous, which periodically builds the entire GNOME collection and runs a set of user-defined tests against it. One of the major differences between GNOME Continuous and other free-software CI frameworks, however, is that GNOME Continuous runs on actual real-world hardware, rather than in cloud-based virtual machines.
Testing on genuine, physical machines is important, Taylor said, because virtual machines almost always have other processes running at the same time (thus obscuring performance numbers) and hypervisors cache I/O operations (thus making I/O statistics less meaningful). Additionally, GNOME is most concerned with catching regressions and performance problems on commodity-class desktop hardware; server hardware is too different in specific features like GPUs and hard drives to offer useful measurements.
GNOME Continuous relies on a master "controller" machine that watches for Git commits. After each commit, it performs a build and stores the build in a compact OSTree image. Tests are triggered for every build: the controller is connected on the LAN to some number of test machines that are configured for network boot. When awakened by the controller, each machine downloads the new build to its local disk, reboots, and runs its test suite.
The system is flexible enough for home users to set it up on their own networks. Right now, Taylor is running it on his own work machines. Interested parties can see the latest progress at build.gnome.org or dig into the collected statistics for the test suite at perf.gnome.org. So far, the implemented tests measure the time from boot to the desktop, the time to draw (initially) and to redraw GNOME Shell's overview screen, the time to draw and redraw the application picker, and the time to start GEdit.
Another project-wide effort with potentially far-reaching implications is the GNOME usability testing being conducted by Jim Hall, in concert with Allan Day and other members of the GNOME Design Team. Hall gave the first keynote at GUADEC, a session that began with some biographical details about Hall himself—such as the fact that he is the original creator of the now 20-year-old FreeDOS project. Having spent many years in IT and free software, his current foray in usability testing is a relatively new interest he started pursuing in part-time graduate studies.
So far, Hall has conducted formal usability tests in-person with volunteers representing a range of experience levels with general desktop computers (none, however, were already familiar with GNOME Shell). He tested Nautilus and GNOME's default Software, Web, and Notes applications. His findings revealed several unexpected difficulties, such as confusion over the meaning of GNOME application launchers' right-click menus, the layout of GNOME Software, bookmarks in Nautilus, and the fact that some application settings (such as GEdit's fonts) were altered through the desktop-wide preferences.
Hall and the GNOME Design Team said they plan to continue usability testing on an ongoing basis. The challenges will include scaling the process up so that it can incorporate users from many more locales and integrating tests with the GNOME development cycle—to, hopefully, catch important issues before they are released.
Alberto Ruiz presented Fleet Commander, a new utility for system administrators to oversee large deployments of GNOME desktops, particularly in "enterprise" environments. Fleet Commander lets administrators define a set of user profiles that are stored in a central location and applied to "targets" at login time. "Targets" can be individual users, user groups, or hosts, so that the administrator can set up different profiles per-person, by job or team, or by facility.
Currently a profile consist of a set of GNOME session settings; any setting that the administrator assigns will be unalterable by the user. There are, in theory, pluggable backends to the framework so that profiles can be distributed in different ways. Right now, though, LDAP is the only method implemented—a fact that Ruiz attributed to the primary use case for Fleet Commander being large-scale "enterprise" deployments of Red Hat Enterprise Linux.
There is a web-based interface for defining profiles, which Ruiz demonstrated. It runs a separate GNOME session within the browser; the administrator merely has to change any session settings to their desired state. A daemon in the background watches for the corresponding alterations to GSettings and records them as the profile. The eventual plan is to include more than just GNOME's own desktop settings in profiles, adding web browser settings, LibreOffice preferences, online accounts, software repositories, and more.
Updates to core libraries
Tim Müller and Sebastian Dröge gave a talk about recent updates in the GStreamer multimedia framework, which is used extensively by GNOME and GTK+ applications. In the past year there have been two stable GStreamer releases, they said, and work has already begun on the next cycle, which will become GStreamer 1.6. A lot of the recent effort has gone into OpenGL integration; the OpenGL plugins (which used to be maintained in a separate tree) have been merged into the trunk. Developers can now write video effects in OpenGL shaders, plus take advantage of hardware acceleration for filtering, scaling, and overlaying video streams.
Another major revision has been the API for probing and discovering the available multimedia devices. In the past, the "horrible API that everyone hated" required applications to already know specifics about the operating system (such as ALSA and PulseAudio configuration) to probe for devices, and there was no mechanism for sending notifications to applications when a device changed. All of that has been fixed with the new GstDeviceMonitor API, through which an application just needs to request a class of device (e.g., camera), and a ready-to-use GstElement will be handed back in return.
Hardware support has also improved, they said, including support for hardware video encoders and progress on supporting depth-of-field information from devices like the Kinect. The current development work is pushing forward on improving GStreamer's WebRTC support, support for stereoscopic video (i.e., 3D television), and support for Blu-Ray discs—although the speakers openly asked the audience if Blu-Ray was even worth supporting, considering that physical media account for a dwindling portion of the multimedia that people consume on their computers.
Christian Hergert presented a session about GNOME Object Mapper (GOM), the GNOME platform's bridge between GObject and SQL databases. GOM is designed to be a lightweight library with which applications can store and query objects in a database; at the moment only SQLite is supported as a backend, but others (like GVariant) are in the works. GOM is primarily designed to store "relationship" properties that connect GObjects to other GObjects, rather than arbitrary databases. As such, it provides a number of shortcuts for common tasks, such as simple searching akin to SQL WHERE selectors through "filters," automatic schema generation, and "resource groups" (which, he said, are lazy collections).
But a more full-featured command layer is accessible below the surface as well. Applications can send direct SQLite statements to the storage layer. Still in the works is transaction support, which Hergert said needs careful thought to design a clear API, and GObject introspection. But, he said, the prospect of GObject introspection in GOM is an enticing one, since it opens up the door to cross-language applications.
Zeeshan Ali presented an update on GNOME's geolocation and mapping libraries. GeoClue, the central library, has undergone some minor revisions since 2013, such as the addition of new data sources for use in determining the computer's location. It can now use Maxmind's GeoIP service to map IP address blocks to locations, and has recently added support for the Mozilla Location Service and for estimating location based on cell-tower information from Modem Manager. There are also new privacy features, such as a "do not tell applications my location" system preference. Ali said he would like to add a per-application setting in the future, but that is difficult right now since D-Bus requests can not yet be securely authenticated. More GNOME applications are using GeoClue now, often for subtle features like changing the time zone automatically.
There has been considerable progress in other geolocation areas, too. Perhaps the biggest change is to geocode-glib, the library responsible for geocoding—that is, taking in a street address and returning its corresponding latitude/longitude (or, for reverse geocoding, vice-versa). Previously, the library relied on a geocoding API service from Yahoo, but all of the functionality has now been ported to the Nominatim service from OpenStreetMap. GNOME's Maps application has seen considerable progress, with the addition of keybindings for map zooming, a new point-of-interest search feature, and route planning through the free-software service GraphHopper.
David King delivered an update on the Cheese webcam application. Although it looks simple, he said, Cheese is tied into a number of complex subsystems like Video4Linux2 and GStreamer. The UI of the application has remained more-or-less unchanged over the years: it shows a preview window, buttons for taking still and video shots, and a special-effects toolkit.
But people are expecting more from Cheese than they have in the past, such as integration with GNOME Photos and the user avatar selector. Consequently, a lot of work has recently gone into the libcheese library, but this sort of integration work can expose security vulnerabilities. For example, Jon McCann discovered a bug in which a user logging out of GNOME while Cheese was recording video would leave the recording process active, so it could silently record subsequent user sessions.
The solution would seem to be sandboxing the application, King said, but this is tricky because Cheese needs access to raw device nodes in order to capture video. The correct solution might be to pull video access out and put it into "yet another D-Bus service," he said, although this approach has its own obstacles. The most obvious challenge is that D-Bus does not have sufficient bandwidth to stream video between applications, although kdbus and memfds may solve that problem.
King ended the talk by asking for input about such a desktop video service: would it useful to others and, if so, what should it include? He jokingly referred to the idea as "PulseVideo" but emphasized that it would be not the final name if such a D-Bus video service is implemented. He is currently gathering use cases; the existing ones are obvious but, he said, "there could be some weird thing out there that needs to control ten webcams and apply OpenGL effects to all of them."
Lightning strikes twice
As always, GUADEC featured several lightning-talk sessions with even more development updates. The project's interns (both from Google Summer of Code and the Outreach Program for Women) filled out one such session, while another was devoted to lightning talks from everyone else.
Naturally, it is difficult to pick out highlights. All of the interns have been focused on intense projects of their own, due to the time-limited nature of the internship programs. The general lightning talks included several other types of presentations (anecdotes, humor, motivational speeches, etc), in addition to straight-up development reports.
Among the efforts discussed in said talks that are worth watching, however, Stef Walter introduced Cockpit, an interface for managing Linux servers and remote machines of various types, including Docker containers. Adrien Plazas pointed out the difficulties of integrating games with the rest of GNOME's application-management tools—since many games are distributed not as packages with .desktop files, but as bundles to be installed in a game engine, ROM images, and so forth.
The interns presented recent work enhancing Evince (adding support for free-form text annotations to PDF documents), Boxes (adding support for saving snapshots of virtual machines), Banshee (adding support for audio fingerprinting with AcoustID), and Evolution (adding support for locating and fetching X.509 certificates for S/MIME messages). There were also two new applications on display: one for working with e-books (both downloading them from online stores and reading them) and one for OpenPGP key-signing.
Like any free-software conference, updates about the progress of GNOME and GTK+ development efforts is far from being the only valuable aspect to GUADEC. But, in GNOME as in any development community, it still constitutes the primary subject for discussion—and this edition of GUADEC indicates that the pace of development is as rapid as ever.
[The author would like to thank the GNOME Foundation for travel assistance to attend GUADEC 2014.]
| Index entries for this article | |
|---|---|
| Conference | GUADEC/2014 |
