LWN.net Logo

Development

The GNOME developer experience hackfest

By Jake Edge
February 7, 2013

For three days just prior to FOSDEM, GNOME contributors gathered in Brussels to discuss and work on the "developer experience". The developer experience hackfest was well attended, attracting people from all over the world. It was also quite productive, judging from various blog postings about the meeting. The headline decision—making JavaScript the preferred language for developing GNOME applications—was certainly noteworthy, but there were other plans made as well.

The JavaScript choice makes sense on a number of levels, but it also has clearly caused a fair amount of disdain to be directed at the GNOME project. Any language chosen would have likely resulted in much the same level of discontent. As Travis Reitter noted in his announcement: "The important thing was that we had to make a decision." That helps in having a single answer to the "how do I develop a GNOME application?" question, which is part of the justification for the move:

  • It allows us to focus when we write developer documentation, fixing bugs in the development environment and the development of tools. This reduces our [maintenance] costs and enables us to be vastly more efficient.
  • It enables code and knowledge sharing to occur, so that people can easily copy and paste code from existing applications, or find information about common problems and challenges.
  • It provide a coherent and easy-to-follow path for new developers.
  • It allows us to include the full GNOME framework within the language itself.

None of the existing supported languages are being deprecated because of the decision; it's really just a matter of focus for the project. While there have been a fair number of complaints heard about the choice, here at LWN and elsewhere, it's not clear how many GNOME contributors are among those disgruntled. On the other hand, some GNOME developers who might seem like candidates for grumbling are on-board with the change. John "J5" Palmieri is a big Python fan who worked on GObject Introspection for that language, but is pleased with the decision:

Day in and day out I work with many computer languages. While I may hold my favorites close to me, I have also come to recognize there are times when even languages I may not be fond of are a better fit for a particular problem space. Like it or not, JavaScript is pervasive and really is the way forward for rapid development in GNOME. It must have been a tense moment when the decision was made but I applaud that a hard decision was made and we can now move forward with a clear vision of delivering a great developer story for the GNOME desktop.

Another interesting discussion took place in the "application distribution and sandboxing" subgroup, as reported by Alexander Larsson. The group considered two different pieces of the application infrastructure puzzle: how to deploy (i.e. create, install, and run) application bundles and how to protect the rest of the user's session from application misbehavior.

For deployment, GNOME is considering having applications declare their library dependencies, in either a coarse or fine-grained manner, and then installing and running them in an environment that guarantees those dependencies regardless of what the system itself is running. That would be done using containers that provide a private view showing the platform dependencies that the application said it requires. As Larsson describes, there are some benefits to that approach:

With this kind of isolation we guarantee two things, first of all there will never be any accidental leaks of dependencies. If your app depends on anything not in the supported platform it will just not run and the developer will immediately notice. Secondly, any incompatible changes in system libraries are handled and the app will still get a copy of the older versions when it runs.

Beyond that, the idea of application isolation can be extended to provide a fully isolated sandbox for untrusted applications. It would require D-Bus routing in the kernel, which is proving to be a hard sell, but "hopefully this will work out this time", Larsson said. There is interest in adding a facility like the Android Intents system to allow sandboxed applications to communicate. Since that kind of communication implies a security domain transition, the group came up with the name "Portals" for this new feature. The discussion continues post-hackfest, he said, "hopefully we can start [to] implement parts of this soon".

The JavaScript decision was also helpful for the documentation subgroup, as Meg Ford and Allan Day reported. Those two, along with several others, started reworking the GNOME developer web site, including adding new tutorials for first-time application developers. Significant redesign of the site with several new features was discussed. Ford described some of those:

We had several new ideas which I think will really improve the resources for coding, including making all of the API documentation available as a single download (perhaps available in the SDK download). Another idea that I thought was particularly good is adding code search to the online API documentation so developers can easily find existing code in git.gnome.org to use as a reference. The idea here is to possibly use the re2 library, which Google open sourced after it shut down Google Code Search.

It would seem that the GNOME project has chosen the direction for its "developer story". That story is an important piece of the puzzle when trying to attract application developers to a platform. One could argue about the choices made, but it is significant (and important as Reitter said) that a choices was made. JavaScript is certainly popular, and many developers are already comfortable using the language. That may prove helpful in attracting some of those developers, but having one place to point when someone asks about developing a GNOME application is likely to be more important still.

Comments (1 posted)

Brief items

Quotes of the week

While this change is "obviously correct", every programmer has also had the experience of spending hours trying to find a bug, only to discover it was an invisible one-character typo. Thus every programmer should also know that "obviously correct" and "correct" are not quite the same.
Matt Mackall

What we do to deprecate functionality in X is we break it accidentally, we wait three or four years, see if we've gotten any bug reports—if we've gotten any bug reports we may actually go fix it; if we've gotten no bug reports we silently delete the feature.
— Keith Packard, at LCA 2013, shortly before suggesting that the kernel adopt the same approach.

If you are an upstream of a software that uses autoconf - Please run autoreconf against autotools-dev 20120210.1 or later, and make a release of your software.

Aarch64 porters will be grateful as updated software trickles down to distributions.

Riku Voipio

Comments (23 posted)

KDE 4.10 Release of Plasma Workspaces, Applications and Development Platform

The KDE Community has announced the 4.10 releases of KDE Plasma Workspaces, Applications and Development Platform. "This release combines the latest technologies along with many improvements to bring users the premier collection of Free Software for home and professional use."

Full Story (comments: none)

Barman 1.2.0 released

Barman, the Backup and Recovery Manager for PostgreSQL, version 1.2.0 has been released. This release introduces "automated support for retention policies based on redundancy of periodical backups or recovery window." Such policies are "integrated by a safety mechanism that allows administrators to specify a minimum number of periodical backups that must exist at any time for a server."

Full Story (comments: none)

Topaz: a new Ruby implementation

The Topaz project, which is creating a new Ruby implementation done in RPython, has announced its existence. "Because Topaz builds on RPython, and thus much of the fantastic work of the PyPy developers, it comes out of the box with a high performance garbage collector, and a state of the art JIT (just-in-time) compiler. What does this mean? Out of the box Topaz is extremely fast."

Comments (13 posted)

MySQL Community Server 5.6.10 available

Version 5.6.10 of the MySQL database server has been released. Despite the x.x.10 version number, this is the first stable release of the 5.6 series to officially be declared "general availability" (GA). The set of changes included is extensive; the project has a full changelog available on its site.

Full Story (comments: none)

Firefox 18.0.2

Firefox 18.0.2 has been released. See the release notes for details.

Comments (3 posted)

Krita 2.6 released

Version 2.6 of Krita, the KDE-flavored painting and natural-media simulation application, has been released. This version includes improvements to OpenRaster support, Photoshop (.PSD) file export, and new support for the OpenColorIO color-management system used in some professional video workflows.

Full Story (comments: none)

Newsletters and articles

Development newsletters from the past week

Comments (none posted)

Reitter: Answering the question: "How do I develop an app for GNOME?"

Travis Reitter reports that the GNOME project has settled on JavaScript as the primary language for application development. "It's critical that everyone understands this decision as a plan to elevate the language, bindings, tools, and documentation to a level of quality we have not yet achieved. It is not a decision to abandon any other language bindings. We will continue to distribute other bindings and documentation as we do now and compatibility for the other languages will continue to be developed as they are today by the developers involved with those modules."

Comments (159 posted)

Sourcefabric: Open source search with Solr leads Newscoop development

Sourcefabric, creator of open source journalism applications such as the Airtime radio station management system, has released a newsletter that rounds up recent developments in its software frameworks. This edition includes the addition of Apache Solr searching in the Newscoop CMS and Booktype's appearance at the Tools of Change conference.

Full Story (comments: none)

Firefox and Chrome have a chat

According to blog postings from both the Chrome and Mozilla projects, the Chrome and Firefox browsers have achieved an interoperability milestone: it is possible to run video calls directly between the two browsers with WebRTC, using no intervening server. "RTCPeerConnection (also known simply as PeerConnection or PC) interoperability means that developers can now create Firefox WebRTC applications that make direct audio/video calls to Chrome WebRTC applications without having to install a third-party plugin. Because the functionality is now baked into the browser, users can avoid problems with first-time installs and buggy plugins, and developers can deploy their apps much more easily and universally."

Comments (6 posted)

Page editor: Nathan Willis
Next page: Announcements>>

Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds