Operational Dynamics
Search
Procedures for Change   |   Systems Review   |   Research & Open Source   |   About Us   |   Talks & Papers

This was first given as a tutorial at linux.conf.au, Australia's premier Open Source conference, 18 Jan 07.

See below for the abstract for this tutorial

You can view the slides online here.

The source code we wrote live during the presentation is also here online or in a tarball.

See also:

Opening GTK to Java programmers

How Open Source will affect Students' and their role in its future

The fundamental structural problem in Open Source

Inside | Outside

Deploying Open Source in the Enterprise

Building a national Linux organization

Configuring Java on Linux

Practical tutorial on how to contribute to Open Source

Home - Reference - Conference Presentations and Tutorials - Writing Really Rad GTK and GNOME Applications in C, Python, or Java


Solving the Fundamental Structural Problem of the Free Software movement

Abstract

GNOME is the best desktop on the planet, so everyone wants to write applications for it!

Writing GTK programs to work on Linux and other Unix operating systems is actually much easier than common perception would have you believe. The basic concepts involved are fairly straight forward, but the GNOME universe is an extensive one and figuring out where to start can be a bit daunting.

Actually what's involved is:

  • Having a development environment and getting all the necessary prerequisite pieces installed
  • Knowing how GUI programs work
  • Figuring out a way to build the code you've written
  • Learning how to test and debug your software

So we'll go through all this with our audience. Somewhat unexpectedly, we will cover three different programming environments. We will show how its done in C because that's what so many of the existing GNOME programs are written in. The whole problem with C, however is that GNOME programs written in it are verbose and arcane, and without prior Glib/GTK/GNOME programming experience very difficult to debug. The good news is you don't have to work in C if you don't want to. So as a contrast, we'll also present GTK in two other languages: Python and Java.

People justifiably laud Python for the ability to rapidly prototype and implement programs. The same extends into writing GUI programs. Once they understand the underlying GTK concepts, anyone with a basic understanding of Python can quickly have a GUI interface to their script or application.

At the other end of the spectrum is Java. Until now the free desktop world hasn't had too much to do with Java, but huge numbers of computer professionals have experience in Java and they too can do rapid application development of GTK and GNOME applications if they wish. There are powerful tools for writing and debugging applications available; even hard nosed experienced hackers will be surprised to see the impressive level of productivity that can arise when these are brought to bear - and the result are fast, tight applications that are "native" GNOME programs, not some lookalike.

GNOME is about more than just writing software. It's about writing rocking software that is:

  • highly intuitive and has a well thought out interface focused on usabilty,
  • follows a consistent style so it meshes well with other GNOME applications,
  • is able to be translated so that people all over the world can use it, and most importantly,
  • has that irresistible bling factor that makes all your friends jealous.

Without overwhelming our audience, we'll give a basic overview of what's involved in each of these. We'll quickly run through the landscape of GNOME libraries (just so we can get people focused on the few that will be immediately important), Finally, throughout the tutorial we'll demo lots of examples and to plenty of hands on coding right there.

This tutorial will not try to cover everything, but rather will give people a solid head start down the road of making their own amazing contributions to GNOME.

Contents copyright © 2002-2008 Operational Dynamics Consulting, Pty Ltd unless otherwise noted. If you wish to use material found herein, see attribution policy for details.