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
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)
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, 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)
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)
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 has been released. See the
release
notes for details.
Comments (3 posted)
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
Comments (none posted)
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, 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)
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>>