Ubuntu And The Opportunistic Programmer

Today I wanted to talk a little about how Ubuntu and its underlying platform comprised of many upstream components is opening up tremendous possibilities for the opportunistic programmer.

I am by definition an opportunistic programmer, and many Open Source folks are too. As an example, I bought an Amazon Kindle and wanted a simple GUI front-end for it. I had an itch and wanted to scratch it, so I wrote a little tool and shared it with the community. In the past I have also written tools to combine slides and audio from a talk into a Flash presentation, a front-end for an iRiver audio player and other things. Whether these tools, a game, a front-end for posting blog entries, a place to browse restaurants, a guitar tuner, or anything else, opportunistic programmers tend to write small tools that satisfy their needs and share them. This is one of the many reasons I love free software: opportunistic programmers are enabled.

In Ubuntu we ship a collection of upstream technologies and frameworks that offer a phenomenal platform for application development. These include tools to build rich graphical desktop applications and support for managing devices, networking, complex multimedia creation/playback/streaming, scalable vector graphics, accessibility, translations and more. An awesome platform, yes, and do you know what makes it even more awesome? The whole shebang can be utilized using the simple, elegant and extensible high-level Python language.

Even with the power and glory that is Python, it was still at best a faff and at worst a nightmare to get up and running. Not only is the programmer faced with the obvious need to learn the platform, but they are faced with all the other fluff such as managing builds, version control, packaging, coordinating contributions, applying appropriate licensing and more. Many moons ago when I started to learn the platform, it felt like all the bits were there, but that some magic was needed to know how they all connected together.

Fortunately, this is an area which is continuing to get easier and easier. Not only are upstream GNOME, PyGTK, GStreamer, Cairo, Glade etc making the platform much easier to work with, but in the Ubuntu project we are really keen to get opportunistic programmers up and running ASAP. One of the areas that this has manifested itself is in Quickly; a tool that makes getting a new desktop Python application up and running really easily.

Quickly provides a devilishly simple means to generate an app, edit the code, change Glade files, commit to a Launchpad project, make releases and package and release your application. It was created by Rick Spencer and Didier Roche. Quickly is a great way to harness this phenomenal development platform built right into Ubuntu. Didier, being the absolutely rockstar that he is, wrote a series of tutorials about how to get started with Quickly here:

While Quickly is incredible in providing a great means of getting you up and running with this platform, there are many other tools which make writing any kind of application you want to easier. This includes collaborating on your projects in Launchpad, using bug tracking, managing specifications, hosting code and merging in contributions, working on translations, and providing a place to publish your releases to Ubuntu.

Not only does the up-coming Ubuntu 9.10 Karmic Koala, released on Thu 29th October 2009 bring this rich platform, as well as Quickly, but it also bring the new Ubuntu Software Center which provides a refreshed means of browsing and installing applications. My hope is that we will continue to leverage this rock-solid platform and be able to have opportunistic programmers everywhere be able to get their apps in front of Ubuntu users, in much the same way the iPhone and Android Market Place does so.

I would love to encourage you all to run through the Quickly tutorial above and blog and share about your experience. If you make a cool new app, do let me know!

  • TGM

    I’m just praying for a full quickly IDE now… :)

  • http://blog.jakubrusinek.pl/ Livio

    Glade is being killed by GNOME and you’re resurrecting it. It’s wrong and stupid…

  • http://tecnocode.co.uk/ Philip Withnall

    I think you’re confusing Glade and libglade. Glade is the GUI editing tool, which has been updated to work with GtkBuilder, and is in no way deprecated. libglade is the old UI creation library, which is now deprecated.

  • http://blog.mahboy.com Isaiah Heyer

    Where did you get the idea that Glade is being killed by Gnome?

  • http://www.becomeyourfursona.com/ Jared Spurbeck

    I’ve heard that the Software Center is supposed to emulate the App Store, and that’s something I’m worried about.

    The App Store burned spectacularly bright there at the beginning, by letting people sell closed-source apps easily. But rather than encourage people to grow thriving projects with community backing, it encouraged people to make disposable apps quickly and then go on to work on the next. There was a lot of unnecessary duplication of effort, and very limited support for any given app since the programmer was already working on the next.

    That strikes me as being the opposite of what we should be trying to encourage here, and I’d like to know how we’re planning to get around that.

  • http://technomancy.us Phil

    Speaking of opportunistic programmers, I think the inclusion of CouchDB in Karmic will be a huge leap forward for enabling opportunistic hacks in the web arena. It’s great to see things like this come together.

  • jono

    I agree with your concerns. I think we need to be building a culture of thriving application development, but really encouraging people to collaborate on those applications too. I think we can do this. With other app stores they have built themselves on the shareware model and are not as dyed-in-the-wool Open Source as Ubuntu, so I think we can push this in the right direction.

  • anon

    I was trying to hack on quickly to add new templates a while back.

    One thing is – all the features like tight designer/editor integration, quick adding of dialogs, source control checkins, deployments into tarballs and other formats, bzr integration is available in MonoDevelop.

    This would be extremely beneficial for autotools based projects.

  • http://boycottnovell.com/2009/10/20/nikto-2-1-0-released/ Links 20/10/2009: Nikto 2.1.0 Released, Parsix GNU/Linux 3.0 Reviewed | Boycott Novell

    [...] Ubuntu And The Opportunistic Programmer Not only does the up-coming Ubuntu 9.10 Karmic Koala, released on Thu 29th October 2009 bring this rich platform, as well as Quickly, but it also bring the new Ubuntu Software Center which provides a refreshed means of browsing and installing applications. My hope is that we will continue to leverage this rock-solid platform and be able to have opportunistic programmers everywhere be able to get their apps in front of Ubuntu users, in much the same way the iPhone and Android Market Place does so. [...]

  • http://dylanmccall.blogspot.com Dylan McCall

    With that in mind, it would be interesting to see Software Center provide more community-oriented stuff, like a link to the project behind a package on Launchpad. (“Contribute to $project” or some such).

    Thanks for the post, Jono. You’ve inspired me to play with Quickly again. I’ve been writing down a lot of ideas for quick little apps so this could be fun!

  • http://blog.sheepeatingtaz.co.uk sheepeatingtaz

    Does anyone have any recommendations for tutorials for python/glade(GtkBuilder)? Everything I find on google seems outdated, or using a completely different methodology to the one used by quickly? I also posted a bit more detail on this here http://blog.sheepeatingtaz.co.uk/2009/10/24/programming-desktop-apps-python-and-glade/

  • http://facebook.com/anton.sukhonosenko zoreslav

    Speaking of IDE, it’s almost around the corner. For now, I use gedit ‘external tools’ to bind Quickly commands to shortcuts. For example, F5 is ‘quickly run’ and F4 is ‘quickly glade’. That’s totally awesome, you should try it. Go to Tools/Manage external tools, then hit ‘add’ button below, and fill command and shortcut key into input fields on the right.

  • http://www.jonobacon.org/2009/12/10/lernid-0-3-brings-the-rock-and-roll/ Lernid 0.3 Brings The Rock And Roll | jonobacon@home

    [...] Also, Lernid is built using the Quickly framework, and if it were not for this awesome tool, I doubt I would have ever started hacking on Lernid. If you have ideas for cool desktop applications and have an affinity with Python, you should give it a whirl. More information about Quickly and links to the always wonderful Didier Roche’s tutorial is here. [...]

  • http://full-linux.com/jono-bacon-lernid-0-3-brings-the-rock-and-roll/ Jono Bacon: Lernid 0.3 Brings The Rock And Roll | Full-Linux.com

    [...] Also, Lernid is built using the Quickly framework, and if it were not for this awesome tool, I doubt I would have ever started hacking on Lernid. If you have ideas for cool desktop applications and have an affinity with Python, you should give it a whirl. More information about Quickly and links to the always wonderful Didier Roche’s tutorial is here. [...]

  • http://www.jonobacon.org/2010/01/30/connecting-the-opportunistic-dots/ Connecting The Opportunistic Dots | jonobacon@home

    [...] I have talked about extensively recently has been my passion to see opportunistic developers served well [...]

  • Rob

    For an ide have you tried wing? It’s a python ide, writen in python and using gtk+ and includes support for bazzar and others.

    (http://www.wingware.com/)

    It’s not free (as in speech), but it can be free (as in beer) if you are working on an open source project.