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!