What are the conceptual and technical differences between "Apps" and packages?

I'm a bit confused by the recent announcement (http://developer.ubuntu.com/2011/09/announcing-the-ubuntu-app-developer-site/) of the new "App" developer site. I've fallen out of Ubuntu development and now only follow news stories to gauge the direction of the OS, and hadn't realized this was coming down the pipe. Perhaps someone from the community could clear this up for me.

I'm very familiar with Ubuntu, Linux, programming, and packaging, but I'm not sure what the conceptual and technical differences are between an Ubuntu app and a Debian package. I've looked a bit into the developer community documentation, but haven't found a straight answer. Can an Ubuntu app be considered a specially configured package that supports Ubuntu's app framework? And how flexible is that? Could I, for example, write an application in Qt and still wrap it in an app?

(As an aside, I'm a little concerned Ubuntu is headed in this direction. I understand that Ubuntu should explore supporting multiple avenues of application development and distribution to stay relevant. But for a engineering user such as myself, this feels like cruft. These remarks are ignorant though. I shouldn't form a solid opinion until I know what's going on.)


An Ubuntu "app" is just an application, just like GIMP, Firefox, or whatever.

They're still Debian packages, we just provide a tool called Quickly that gets people going with PyGTK and make it easy to package and submit to the software center.

You can still write your application in Qt, package it, and submit it to the Software Center, we just are trying to simplify connecting developers like you to make shipping your software to end users easier.


Well, an application is provided as a package, but not all packages are applications. One or more fonts can be provided as packages, for instance. In other words, there is a conceptual difference between a package and an application, but no difference between an application and a package.

Yes, you can develop applications in any language and using any framework you like. Quickly provides a very easy starting point and the main recommendation is using Python and GTK, but there are also templates for Ruby, and other languages and templates for web development instead of desktop applications. Quickly is specifically designed not to limit the developers choice in languages, and (hopefully obviously) there is no lock-in to Ubuntu. You can also provide your own templates, if you application supports plugins, for instance. What Quickly does, is to relieve you of writing boring boilerplate code.

To publish applications using the MyApps portal, there are a few requirements, like your application must use XDG_USER_DIRS for its data and configs, it must be installable to /opt, etc. Other than that, there are no requirements. You can write your app in Java, Python, C*, Gambas or anything else that's supported and using any GUI toolkit you feel like. This makes sense as a primary goal of modern versions of Ubuntu is to unite Qt, GTK and others in order to provide a better user experience.

I hope this clarifies a little bit and that you're less worried about the direction Ubuntu is evolving. :)