LWN.net Logo

Ubuntu's new App Developer site

October 12, 2011

This article was contributed by Nathan Willis

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.

Chapter two

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 detailed FAQ 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.


(Log in to post comments)

Ubuntu's new App Developer site

Posted Oct 25, 2011 19:44 UTC (Tue) by oak (guest, #2786) [Link]

Any idea why the "Featured apps" listed on "developer.ubuntu.com" front page don't have any links to further information on those apps?

> I noticed that GNOME recently added a similar architecture diagram to its developer site (and went one better by making it clickable)

It would be nice if those clickable links would also lead somewhere. The ones on boxes at bottom & right either don't go anywhere or are broken.

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