Ubuntu launched its renovated developer portal at the end of September, consolidating a number of application development tools and documentation resources under one banner: developer.ubuntu.com. The new site still merges a few discrete tasks — such as searching for applications (an end-user activity), developing and distributing applications (a developer activity, naturally), and writing third-party tutorials (a non-developer contributor activity) — but it presents a cleaner, global view of the application development process, particularly for those new to the community.
The announcement (which was written by Ubuntu translations coordinator
David Planella) describes the site as the "central point of reference
for any topics related to application development. [
] a site that
should grow organically to provide the tools, share the knowledge and act
as the springboard to foster app proliferation and developer community
growth." The layout splits the content into four parts: "Get
Started," "Resources," "Publish," and "Community" — although the main
page also includes several unrelated items, such as a rotating menu of free
software and commercial applications that users can find in the Ubuntu
Software Center (USC), which is the distribution's new name for its built-in application directory and one-click installer.
The prominence of USC should help clarify exactly who the site is for: this App Developer portal is a resource for people writing third-party applications that they wish to offer to Ubuntu users. It is not, by and large, aimed at people who are interested in learning how to contribute to the distribution itself, or to get their application into one of the official Ubuntu repositories. Ubuntu has run smaller initiatives for independent application developers in the past, including tools such as the templating system Quickly and the GUI revision control utility Ground Control. The App Developer site represents a consolidation of these earlier efforts, with a heavy dose of documentation linked in for good measure.
The nickel tour
Much of the documentation content on the App Developer site consists of links to upstream "official" sources, which can seem a bit confusing when the official source is a page hosted at a different ubuntu.com subdomain. The layout, however, does a good job of splitting up a wide range of topics and organizing them coherently. The "Get Started" section introduces the development environments recommended for writing Ubuntu-compatible applications. Quickly (and with it, PyGTK) comes first, but there are separate sections for Qt Creator, Eclipse, and MonoDevelop. At the moment, the non-Quickly IDEs are sparse in their documentation, relying on external links, but there are some on-site resources, so perhaps the library will expand over time. There also seems to be an unspoken emphasis on developing GUI applications, which is perhaps to be expected for a desktop-oriented distribution.
The "Resources" section is much larger; it encompasses documentation for the current Ubuntu architecture, plus language references (ranging from C to QML to Vala), help for project maintenance tasks (such as hosting and packaging), and tutorials. By volume alone, this is probably the most useful portion of the site. Some of the material is little more than links to projects' external home pages, but even then, the mere act of categorizing and listing the official sites is helpful. After all, above the Linux kernel and low-level toolkits, it may not be obvious to a third-party developer how the various distributions differ from one another. The Resources section lays out precisely what APIs and toolkits ship with (presumably the current version of) Ubuntu, including widespread offerings like OpenGL and D-Bus, but Ubuntu's original projects as well: Application Indicators, the Unity shell, uTouch, etc.
The project maintenance tools section focuses on two of Ubuntu's
official choices, Launchpad and Bazaar, which is to be expected, but also
includes a variety of other tools created elsewhere, such as Glade and Qt
Designer. The thinnest content section is tutorials, which consists of
just three original resources right now (four if you count the Quickly
tutorial), although the project is soliciting for new submissions in
multiple spots around the site. There are a few places where the various
categories appear to overlap with each other (for example, the Ubuntu
Developer Stack and Ubuntu Platform view repeat a lot of information). On
the whole, though, it does not take long to navigate to anything, and there
do not seem to be any large pieces overlooked. There are some APIs and
frameworks that clearly need more information, for example there does not seem to be any Xine framework documentation on the site, but then again there does not seem to be any Xine documentation anywhere else to which one could link. Even the "official" hacker's guide describes itself as "a pretty free-form document containing a loose collection of articles describing various aspects of xine's internals."
"Publish" is the most specialized section, because it focuses on the
process of getting an application reviewed and approved for distribution
through USC. Within Ubuntu, USC presents a categorized application
directory to users in a GUI installer and is meant to provide a simpler
interface to searching for and installing distribution-supplied
applications than a full-featured Apt front-end. It is also meant to handle
the installation and removal of one-off .deb packages. The USC
service provides a way for third-party developers to get their work into
the USC application, while keeping it distinct from the official Ubuntu project
repositories. As outlined on the site, the process involves registering an
account (which is subsequently accessible via the "My Apps" tab on the App
Developer site), uploading
installable packages and metadata, and (if desired), setting a price. Many
of the for-pay offerings seem to be cross-platform games, although not all.
All of the submissions are reviewed by an Applications Review Board. The
Ubuntu wiki outlines the review process in
greater detail, and the board itself will be maintaining a public mailing list and holding open meetings.
Finally, the "Community" section of the site links together a set of development community resources, including lists, IRC channels, and blogs, plus information on application developer events, and an invitation to join the Applications Review Board. Notably, this section of the site is for the application developer community, not the broader Ubuntu user or contributor communities. As such, it does not deal with users' questions, installation or help topics, or many of the other Ubuntu project lists and IRC outlets.
As of press time, a few short weeks after its initial launch, there are
areas of the App Developer site that need fleshing-out, but the effort has
done an excellent job of building a tightly-focused resource for
independent software developers — a task that could easily succumb to
feature-creep. For example, although I would like to see the site offer
more support resources for non-coding tasks like translation, that subject is already covered in Launchpad. As is, the App Developer site defers to existing documentation, and adding in a discussion of translation tools would duplicate information. Similarly, many community-based translation efforts are coordinated by Ubuntu's LoCos. While linking the "Community" section of the App Developer site directly to those groups might put them in touch, it would also begin to blur the line between developing an independent application and working on the Ubuntu distribution itself.
In its present, streamlined form, the site reaches out to an audience
for whom — as far as I am aware — the other large distributions
are not building resources. Fedora's only developer documentation is geared
towards becoming a contributor to the distribution; there are tidbits that
would be helpful to independent application developers, but they are
scattered across the project's massive wiki. OpenSUSE comes closer, as it discusses the setup of private projects (particularly in the context of using the Open Build Service), but it is still primarily aimed at distribution collaborators. This is not to suggest that providing contributor portals is bad, it is simply a different group. As the Ubuntu site shows, there are a number of paths that new developers may be on: some may not have extensive experience developing for (or even using) desktop Linux, others may be new to development altogether. Even the simple architecture block diagram provided on the platform overview page helps orient a new developer.
I noticed that GNOME recently added a similar architecture diagram to its
developer site (and went one better by making it clickable); KDE's is much
wordier, but it, too is reaching out to
developers unfamiliar with its stack. As David Nelson recently argued
on the Document Foundation mailing list, global design documentation is
essential to making a free platform complete: "I would like to put it
to you that no software source code is truly open until it has been
rendered as understandable as possible to as many people as
possible." One of the many reasons that is true is because it
lowers the barrier to entry — even if the newcomer is working on a
stand-alone application, not contributing to the project core.
Planella described the App Developer site as part of the distribution's ongoing effort at
"making Ubuntu a target for app developers." Of course,
Canonical does use USC's ability to offer paid applications as one of its
revenue sources — the company charges developers a 20 percent cut of
the revenue collected for paid application sales. That is cheaper than the
30 percent cut charged by both Apple and Amazon (not including the annual
fee both of those companies charge to join their developer programs). A
explains the commercial application process in more detail. For free
applications, the primary benefits of distributing a package through USC
(rather than, say, a PPA) are the discoverability of USC's application
directory and its simplified installation.
But the site is not geared solely towards getting more applications into
USC. The Canonical Design Team's blog
post about the launch emphasized more of the community-oriented
features, which is presumably of greater interest to those writing open
source applications. Whether a visitor is writing open or closed
applications, the bulk of the site consists of informational resources.
I hope that the site does continue to "grow organically" as Planella
suggested, with much-needed tutorials, but also encompassing more tools.
Naturally, Launchpad is the best fit for developers looking to deliver
typical applications on Ubuntu desktops (if for nothing else than the
single sign-on and simplicity of personal package archives), but a strong
argument could be made that the App Developer site ought to include
resources for Gitorious or GitHub as well, and perhaps explore server-side
applications. I would not venture to suggest how best the site can attract
high-quality tutorial-writers, but I suspect that inserting "send in your
tutorial" banners on the pages will not be sufficient on its own.
Ultimately, then, the App Developer site is a good model for other
distributions and large projects to look toward with an eye on how they can
tailor the idea to their target developers.
to post comments)