Where to start studying for developing ubuntu? [closed]

Hi am Computer Science student currently in college and very interested in developing open source software especially ubuntu.Is there a one stop go-to place for reading about developing ubuntu.

For example I scoured through the official tutorial and documentation of Python and I was good to go.I could write useful applications. Is there any equivalent for Ubuntu or unity? I tried downloading the alpha 2,put kept crashing every 5 minute. I was told in IRC,it was due to some Xorg stack change.

Now I cant even look at new Unity,let alone help develop it.

Any help or guidance appreciated.


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 Natty or Unity, then surely you need to run Natty Alphas.

Unity Development

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) 
for releases).

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.


This is sort of related, and I debated whether to post it.

One of the easiest ways for a student to get into open source development (and see code you wrote show up in Ubuntu) is to get involved in Google Summer of Code. Adding a new feature to an existing piece of software is an experience you won't get in school, but it will change the way you look at programming. Student participants are paired a mentor from an open source project who will help them get started and can help them with the difficult bits.

Plus, you get paid and it looks nice on your resume. It's great experience. I strongly recommend checking it out.


A good starting point might be the Ubuntu Wiki. Especially for Unity take a look at the Ayatana Project

https://wiki.ubuntu.com/Ayatana

[EDIT] If you like Python also take a look at Quickly

https://wiki.ubuntu.com/Quickly

This is a Project Management system with some special features like packaging and distributing the sourcecode on launchpad.net, which is also a good place to look for informations