Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

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.

share|improve this question

closed as too broad by Braiam, Eric Carvalho, bain, Wilf, Radu Rădeanu Jul 13 at 12:45

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

    
Which language you know? From that I can provide better answers. –  Manish Sinha Feb 18 '11 at 12:31
2  
    
I am skilled with python,and can code in C,C++.Have experience with pyqt and pygtk bindings. –  Mad-scientist Feb 19 '11 at 10:44
1  
If you know Python, then Quickly might be a piece of cake for you. If you know C/C++ then you can get your hands dirty with Unity –  Manish Sinha Feb 19 '11 at 11:22
add comment

4 Answers 4

up vote 12 down vote accepted

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.

share|improve this answer
2  
Not be forgotten developer.ubuntu.com . –  Gaurav Butola Feb 18 '11 at 13:01
1  
@Gaurav: It is under development. Might take time –  Manish Sinha Feb 18 '11 at 14:45
1  
I've found that the best way to learn is to start doing. Get involved a project that you find interesting (or start your own) and get your feet wet. You'll run into lots of problems, but you'll learn just as much. Good luck! –  Erigami Feb 18 '11 at 17:01
add comment

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.

share|improve this answer
    
I heard about it.But I heard it was extremely difficult to get. –  Mad-scientist Mar 5 '11 at 15:01
    
There's more competition than there used to be, especially for larger projects like Ubuntu or Mozilla. But if you find a smaller project, talk to the developers (and read their wiki!) beforehand to find out what they're looking for, and have a really nice writeup, your chances are decent. You may have to try a few projects; the first one I queried didn't pan out. Having a few patches under your belt also helps, although I guess that's what this question was about. :-) FWIW, I didn't know much more than basic C++ and some data structures going in. –  James Mar 6 '11 at 6:08
    
Where did you,do your Gsoc? –  Mad-scientist Mar 10 '11 at 11:19
    
AbiSource. One of my classmates, the person who encouraged me to get into GSOC, had a project on CMS Made Simple. –  James Mar 10 '11 at 15:39
add comment

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

share|improve this answer
add comment

Well, my answer maybe is useless, but the only I followed: just start reading the unity (and related project like compiz, nux...) sources and try to work on what you're intrested. grep could be also a nice friend when it comes to work on simple modifications.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.