Developing for Ubuntu
Thanks for taking interest. Just some few clarifications. There is nothing such as an Ubuntu software (I know you didn't mean it). All the Ubuntu specific changes can be made available in other distros too. Their packagers have to package it.
Alpha 2 crashing
Natty is still under development and there is still a Xorg transistion under progress. I would recommend you to start working on stable releases. Use
Maverick (10.10) for your development work. This way you will spend more time developing applications rather than encountering alpha bugs.
If you want to contribute to
Unity, then surely you need to run Natty Alphas.
If you want to develop for Unity, then you need to get Natty and checkout the source code.
bzr branch lp:unity
There is a file in the checkout branch for explaining what it's dependencies are and how you can get it to build.
If you want to get your code into unity maintree, you need to sign
Canonical Contributer Agreement You don't need to sign it everytime you submit your code. Once it enough
Unity Bitesize bugs
The best way to get involved is to fix small bugs in Unity. Jorge Castro keeps posting a list of Bitesize rockstars regularly. Here is a list of bitesize bugs , you might want to talk to
Jorge Castro (jcastro on IRC on channels #omg!ubuntu! etc - he also hangs out in Ask Ubuntu chat) before starting if you need extra help.
Here is a documentation for Getting Involved in Unity Development
Development on Ubuntu
As Burli pointed out,
Quickly is a great tool for developing. It takes care of many things. Using it on Ubuntu is very easy as it integrates with ubuntu development platforms like Launchpad, PPA etc
QUickly handles the boilerplate code and provides you with templates. Like one is for packaging. As per LWN article
Released template is ubuntu-project, which automates working
with Ubuntu-compatible code (using Bazaar for version control,
Debian packaging, and Launchpad.net Personal Package Archives (PPA)
You can also read about it on this Ars Technica article from Ryan Paul
Language of Choice
Python is the most famous choice of development as I can see. I might be wrong since many also like to develop on Gtk/C or Boost/C++.
There are also other languages like Vala using which you can have native applications but have a higher level language.
If you know
C#, you can use it for creating applications using Gtk# for UI.