A few months ego I purchased Nokia N800 device and since then I'm itching to write some code for it. I know that some of the application I'm running are written in Python and that there is a Mono port for the Maemo platform as well.

Basically what I'm asking is:

  • Is there a recommended development language for Maemo platform?
  • What development tools exist?
  • I can use Windows or Linux as my primery development machine - which recommended? why?
+7  A: 

The Hildon framework is made up of GTK+ extensions, so the language is C. You can use C++ wrappers (maemomm) too. Or you can go with pymaemo for building apps with Python, which to me is much easier than C or C++. I've also seen an attempt at a ruby port, but have not followed up with that project recently.

For the development environment, there is "scratchbox", which gives you a sandbox for compiling and running your app. Here's a link on how to set up a scratchbox development environment. (It sure took me a long time to get everything setup.)

You'll have to use Linux as your development machine because your Nokia N800 is really a mini Linux computer.

If you want to have an IDE experience, try the ESbox plugin for Eclipse.

Have fun hacking!!!

scratchbox link throws 404
Arnis L.
i've been thinking vala, since it seems to be well-positioned as a higher level 'native language' than c for gtk programming
Martin DeMello
+1  A: 

For extra on-the-go fun, you can get the linux gcc and make tools running on the tablet itself and do your programming and compiling on the device. For any help with this sort of stuff the Maemo Talk forums are fantastic.

+3  A: 

I've just found two tutorials on

Dror Helper
+1  A: 

There's a Scratchbox Virtual Appliance for Maemo development (I'm not sure if the link is the right one) but that's how I started hacking. It took forever for me to figure out how to set up scratchbox by myself.

Peter Turner
+9  A: 

I highly suggest that you try C++ and QT.

QT is already well supported for Diablo and Fremantle, and the next release of Maemo (Harmattan) should be based on QT.

Learning QT will be much much easier than GTK+, coding will be faster and more fun, your application can be compiled in various platforms and you can even develop and debug in Windows, then simply run a qmake && make in a scratchbox environment.

Take a look at this tutorial: Getting started wit QT for Maemo

You still need a Linux box to compile your code for a Maemo device. If you are using windows, you can setup ubuntu (or kubuntu) in a VirtualBox machine.

Maemo SDk + along with Scratchbox 2 is a better alternative than Maemo SDk & Scratchbox.

Personnally, I'm using QT creator in Windows, kubuntu 9.04 in VirtualBox, and I've never been happier. When I started, I tried the "official" approach : Ubuntu, GTK+, C language and scratchbox 1. ... that was painful.

For maemo4 (Nokia N8x0), it is better to use the offcial SDK with scratchbox 1, there are some unresolved bugs with MaemoSDK+. For maemo5, Nokia SDK is a no-brainer
+1  A: 

Ruby for Maemo is being hosted at

I've not yet tried it myself.

I should give it a try - I even heard about running Rails on a Maemo device
Dror Helper
+1  A: 

Nokia has been working hard to provide tools and documentation for developers. I would say one of the best places to start is at Forum Nokia:

The next stop for developing for Maemo is of course Maemo's headquarters:

These two links are to portals where you'll have to drill down for further info, but they are pretty good starting points. Now to answer your questions directly:

  • I suppose the two 'recommended' languages are C and python. While these are well supported, they are not the only choices as you have seen from previous answers. In addition to those languages, perl is on the device, though it is not in the same state as it is on debian.

  • The chief development tool is the SDK. It allows you to test the environment and compile software for the device. You can also use Eclipse for which there are plugins.

  • It is recommended that you use linux as a development machine, but you can run it in a virtual machine on Windows. While I prefer my OS to be 100% free and therefor choose debian, Nokia is working hard to make a better development environment for Windows. So rest assured that Nokia does not necessarily share my bias! :-)


I have to echo Karatchov's response.

The 2 recommended approaches currently are:

  • Python + PyGtk

  • C++ & Qt

Using anything else, you set yourself up for some pain (unless you are a Gtk+ veteran - since you are asking this question, I assume you are not). C++ & Qt is the future of Maemo anyway, and Qt works well on "old" platforms such as Diablo.

As a debugger, I recommend you pick up (compile) "cgdb". The plain old gdb can be a bit too spartan.

Generally, you should develop your application as a "normal" Qt application using Qt Creator, and occasionally test it in scratchbox.