Compiz, Nux and Unity 7, the 3 main programs of the official Ubuntu Desktop Environment are written in C++. Their source code is stored in bazaar (bzr) repositories on Launchpad (http://launchpad.net). Nux uses an autotools based build system, whereas Unity and Compiz use cmake.
An Ubuntu DE developer needs:
- some C++ skills
- a bazaar and launchpad account (and ssh keys)
- cmake and automake tools installed
Bazaar is a version control system we use for compiz, nux and unity. (Online documentation: http://doc.bazaar.canonical.com/bzr.2.6/en/user-guide/index.html). You can install it by running:
# apt-get install bzr
and you only have to modify the file: ~/.bazaar/bazaar.conf to use it:
[DEFAULT] email = Name Surname <email@example.com>
Launchpad is a web-based repository hosting service that offers the distributed control and source code management functionality of bazaar. You can create a launchpad account by following these instructions: https://help.launchpad.net/YourAccount/NewAccount
After you create it don’t forget to modify further the ~/.bazaar/bazaar.conf file to become:
[DEFAULT] email = Name Surname <firstname.lastname@example.org> launchpad_username = yourlaunchpadusername
In order to perform push and pull requests quickly you need to set up the ssh authentication:
After you followed the instructions above you can check your settings running:
$ bzr branch lp:compiz
You should see a prompt asking for your ssh key passphrase. Type it, press enter and see if the source code has been downloaded successfully.
Push code in bzr/launchpad is easy. After you apply and test your changes you can commit them by running:
$ bzr commit
Then you can push the commited changes to launchpad for review. You cannot push directly in compiz, nux and unity repositories. The process we follow to submit our changes is to 1- create a personal branch like that:
$ bzr push lp:~yourusername/compiz/compiz.some-relevant-name
and then 2- go to launchpad create a merge proposal, 3- wait for the review by other authenticated developers, 4- fix any issues they point out (if any) and then 5- your branch will be approved and merged to the main branch. After that it is sure that the next compiz release will contain your changes! Relevant instructions for the code review process can be found here: https://help.launchpad.net/Code/Review.
So, create a bzr/launchpad account, install the automake/autoconf and cmake (Documentation pages: https://www.gnu.org/software/automake/ and http://www.cmake.org/), open your favourite editor and start coding :)
More instructions on how to build the full Ubuntu desktop will follow in Part 4! :-)
Need more help?
Official Compiz Documentation: http://wiki.compiz.org/
CMake Documentation: http://www.cmake.org/
General Compiz Tutorials: https://ufuntu.wordpress.com/category/compiz-introduction-and-demo/
Compiz Plugin Tutorial: http://smspillaz.ucc.asn.au/unity/compiz_arch/writing.odt
OpenGL Reference: https://www.opengl.org/sdk/docs/man2/
X.Org Foundation: http://www.x.org/wiki/
Bzr help: http://bazaar.canonical.com/en/
Launchpad help: https://help.launchpad.net/
Contact a developer directly or ask your questions:
- IRC freenode: you can join #ubuntu-desktop and ask for help in real-time (https://webchat.freenode.net/ <- for live webchat). Ask directly in the channel, there’s always someone available to help you (if you like to ping me: my nickname is hikiko).
- E-mail: you can e-mail the compiz and unity developers from launchpad (or e-mail me directly in this e-mail: email@example.com)
- You can fill a bug report on Launchpad (https://launchpad.net/compiz) or ask a question through it.
- You can search the ubuntu wiki or ask your question in ubuntu forums.
Good luck! :-)