Compiz Introduction and Demo Part 3/5: Development, Tools and Support

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 <username@domain.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 <username@domain.com>
 launchpad_username = yourlaunchpadusername

In order to perform push and pull requests quickly you need to set up the ssh authentication:

https://help.launchpad.net/YourAccount/CreatingAnSSHKeyPair

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?

Online Documentation:

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:

  1. 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).
  2. E-mail: you can e-mail the compiz and unity developers from launchpad (or e-mail me directly in this e-mail: elenimaria.stea@canonical.com)
  3. You can fill a bug report on Launchpad (https://launchpad.net/compiz) or ask a question through it.
  4. You can search the ubuntu wiki or ask your question in ubuntu forums.

Good luck! :-)

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s