One of the best ways to contribute to Ubuntu, for those who have the ability, it through development. Developers can contribute patches to fix bugs, implement features, or bring entirely new projects to Ubuntu. Whether you contribute to a core piece of Ubuntu, or independent projects that target Ubuntu, you will be contributing to the wider ecosystem and and all those who use Ubuntu.
There are many areas in the Ubuntu project where developers can contribute, as well as many different languages in which to do so.
Core - From the kernel to the userland, Ubuntu is build on a solid foundation of tools and services that are shared by most Linux distros. Contributions at this level will benefit not only Ubuntu and its flavors, but many other Linux users as well.
Cloud - Ubuntu is one of the most popular platforms for cloud development, providing the best options available today. You can contribute here at both the platform level, as well as the services level by contributing to Juju or writing your own charms.
Unity - The common shell on both the desktop and mobile devices, Unity provides a consistent interface to Ubuntu users and is central to our convergence story. Contributing to Unity and it's components is a great way to make an impact on Ubuntu users.
Apps - Every platform needs a great collection of apps to make it shine, and Ubuntu brings in some of the best apps from across the open source world, and is developing new ones using the new Ubuntu SDK. Whether it's an upstream or a Core App, your contribution here can make a user's experience on Ubuntu better every day.
Web - There's more to Ubuntu than what ships in the distro, our community and infrastructure depends on a large collection of websites to help manage our projects and teams. If you are a web developer there are plenty of ways you can contribute to Ubuntu, we're always on the look out for ways to improve and enhance our online presence.
The knowledge and tools you need to contribute towards the development of Ubuntu will vary depending on the area and specific project you want to work on. In general it's a good idea to become familiar with the Ubuntu DistributedDevelopment process. There is also a guide to the typical contribution process listed on the Core Apps page that is applicable to almost any project in Ubuntu. Finally, make sure that you have the necessary knowledge of the language and technology used in a project in order to correctly contribute to it.
If you want to participate in or organize development activities for your Jam, it's a good idea to bring a copy of the code with you. You can't always guarantee that you will have reliable internet access at your venue, and you wouldn't want to cut your contribution activities short because you don't have the code. Keeping a local bazaar or git repository on your laptop or, better still, on a USB drive, will let you and your team contribute even without internet access.
Finally, bit some specific bugs or features that you want to target, and work on those first. It's often difficult for a new contribute to decide what they want to work on, and having a list of specific tasks will make it easier for them to get started. It doesn't have to be a long list, if you end up completing them all you can always choose some more.
Ubuntu Server / Cloud
Ubuntu Phone / Tablet