Contributing

contibute-cy-logo.png

About

This page explains to members of the CypriotTeam how to contribute to the various Ubuntu sections of development. Contributing to an operating system of such freedom allows the contributors to enjoy their contribution in forthcoming releases, as well as giving the pleasure to others who use the same operating system to enjoy their contribution.
Source: http://ubuntuforums.org/showthread.php?t=896777

Jaunty Jackalope (9.04) will be the next release of everyone's favourite Free operating system, Ubuntu. With the already out the door, now is a good time to recap what we can do to help make Jaunty a quality release.

First Things First

  • Get a Launchpad account if you don't already have one. You'll need it to report and track bugs, do translations in Rosetta, register blueprints, track support requests, and share the karma. The newly updated Launchpad can be an excellent central hub for almost all your contributions to Ubuntu and beyond. Register here.

  • Join the cypriotteam at Launchpad: In order to establish a better cooperation between the ubuntu-cy members that wish to contribute to Launchpad, we advise you to join the cypriotteam. This will also help the maintainers to watch your contribution and mark your noteable performance in some ways of contribution. It's actually really easy, you have to register to Launchpad for an account - once you do that, you can press the "Join this team" button at the page. Currently, there are no other specialised subgroups (translating, bug reporting/triaging, etc).

  • Familiarize yourself with how Ubuntu development works, at least roughly. This will help you contribute more efficiently, and prevent many uncalled for misunderstandings. An excellent place to start is the Ubuntu Development page in the wiki. Even a brief look at the main page will give you a rough idea of how the pieces fit together, and it will help if you go deeper. If the puzzle in your head has missing pieces, don't hesitate to ask questions on how things work. The Ubuntu Open Week is also a good opportunity to dive a bit deeper into Ubuntu.

  • Review the release schedule, to plan ahead when and what you can contribute at this point in the development cycle: https://wiki.ubuntu.com/JauntyReleaseSchedule

  • If you're confused about and/or having too many problems with the development version and don't exactly feel on top of things, don't run it for the time being. The Ubuntu development process is a tough ride, tougher than most distros, due to the cutting edge technology policy and the fixed development duration that's tightly packed with radical changes; if at any point you decide that you can't bear with it, drop it until a more stable phase, a milestone release, or entirely. Jaunty will be a development version until October 2008, and is prone to major breakage at any point. Do not rely on it as your main operating system. If you decide to test it, be aware that you're risking being left without a working operating system, and data loss.

Reporting Bugs

Bug reporting is one of the most accessible, and yet most beneficial ways in which everyone can contribute. It's a good idea to start reporting bugs as early as possible, since towards the later stages, especially past BetaFreeze, focus will most likely shift towards critical bugs only. Whenever you encounter a reproducible malfunction in Jaunty, file a bug report. It's a good idea to start a thread in the development forum before submitting your report, to discuss it with others who may have experienced it, to make sure it's genuine. And it's very important that you do a search for the bug before submitting it; duplicate bugs make life more difficult for everyone. It's practical to keep the URL structure for the source package bug pages (where you can search for bugs in them) in mind:

https://bugs.launchpad.net/ubuntu/+source/<sourcepackagename>

Take a look at the Reporting Bugs page in the wiki to learn more about the procedure. The best practices wiki page also contains some useful information. Remember, how a bug is initially reported can have a huge effect on how it's handled and how quickly it gets fixed.

Finding the right package is important when filing a bug report. This makes sure that the right developers will see your bug.

Advanced users will find the guide to debugging useful. The more information in a bug report, the easier it is for a developer to get to the bottom for it.

Well-documented bug report example

A good bug report must include information such as the following:

  1. The currect operating system and the current release version:
    • lsb_release -a
      
      No LSB modules are available.
      Distributor ID: Ubuntu
      Description:    Ubuntu jaunty (development branch)
      Release:        9.04
      Codename:       jaunty
  2. The version of the program you have been using and discovered a bug (in the following example we assume that the package name gnochm is the package containing the bug):

    • apt-cache policy gnochm
      
      gnochm:
        Installed: 0.9.11-2
        Candidate: 0.9.11-2
        Version table:
       *** 0.9.11-2 0
              500 http://archive.ubuntu.com jaunty/universe Packages
              100 /var/lib/dpkg/status
  3. Simple explanation in one line if that's possible (makes it easier to read). This could also be your subject.

  4. The steps required to reproduce the bug:
    • - I ran the program
      - I selected on the menu File and then Quit
      - The program closed and opened apport for a bug report
  5. Can the bug be reproduced every time you follow the steps? [Yes, every time / Yes, Almost every time / No, just a one-time bug / Yes, randomly / Yes, while doing this... and that... (please report any parallel procedures!)]

    Note:
    lightbulb.png

    One-time bugs without any special problems could possibly be excluded from reporting. If you are not sure, it's recommended to report it. Such bugs, happening only once, are commonly found during package updates of development releases.

  6. You can also report anything else that happened during the abnormal operation, or you can include any extra information that you believe could be connected to the bug. Lastly, you could also refer to another bug report number (link it) if you think it could be (or not) a duplicate of another bug report.

Note:
lightbulb.png

New versions of Launchpad have a link for "me toos", therefore instead of adding a comment "me too", use the "Change" link next to the text "This bug doesn't affect me" found on top of each bug report. It's very important for new users that are inexperienced with bug reports, so that comments ought to be used for information or patches or anything that has to do with the bug itself.

Triaging Bugs

If you have enough dedication to helping with bugs to go a step beyond reporting, this is where you're needed.

Triaging bugs consists of the following: 1. Responding to new bugs as they are filed 2. Searching for duplicates in the bug tracking system 3. Sending bugs to their upstream authors, when applicable 4. Cross-referencing bugs from other distributions 5. Classifying bugs by package 6. Prioritizing bugs 7. Expiring old bugs

Since new bugs never stop coming, there are never enough bug triagers. It's an excellent way to help out that's much appreciated, and it will teach you a lot about how Ubuntu works. Anyone can help triage bugs, but you might also want to join the Bug Squad. After you've triaged bugs for a while, you can become a member of the Bug Control team, where you'll be allowed to change "Importance" and "Milestone" values of existing bugs.

When triaging, it's important to understand bug statuses. For instance, confirming a bug means moving the status from new to confirmed, not simply say its confirmed in a comment in the bug.

And regardless of whether you've worked on bugs before or not, don't miss the Hug Day!

Note:
lightbulb.png

New versions of Launchpad have a link for "me toos", therefore instead of adding a comment "me too", use the "Change" link next to the text "This bug doesn't affect me" found on top of each bug report. It's very important for new users that are inexperienced with bug reports, so that comments ought to be used for information or patches or anything that has to do with the bug itself.

Testing ISO Images

The ISO Testing Team tests daily ISO builds that lead to milestone CD images before the milestones are officially out, making sure they work as intended. To join the team and help out, follow the instuctions on the team's wiki page, and apply to join the team on Launchpad.

Submitting Ideas For New Features

Ubuntu Brainstorm is the best place for users to suggest new ideas and see what others are talking about.

At the start of each development period, a developer summit is held, where plans for the upcoming release are evaluated. The summit for Intrepid was held in Prague from 19th to 23rd May 2008. It's never too early to start thinking about next time. So if you have any ideas that you strongly feel should be realized in Hardy/Intrepid + 1 (Jaunty Jackalope), you should start thinking about how to make them a reality.

Some ideas can be quickly implemented, while others can require a great deal of discussion or development work. Even a seemingly simple idea can be complex to implement if it affects other aspects of the system. Changes to the default look or behavior of the base system are always controversial and may cause extensive discussions.

A minor change can often be described in a bug report. The issue may actually be a bug (a fault in existing software). A simple change can be expressed as a 'wishlist' bug. For more complex changes we need to write a 'blueprint'. Blueprints (a.k.a. "specs") are documents suitable for developers to study and act upon. These should usually only be written by developers actively working on realizing the idea.

Take a look at the list of existing specs for Ubuntu first. If you can write concise, workable specs yourself, go ahead and submit them. If you can't, taking a look at some well written and accepted specs, or the self-referential SpecSpec may help.

A lot of the ideas submitted so far either already have corresponding specs (some being worked on), or have already been proposed in another form by others, so please do a Brainstorm search, a spec search, and a forum search to see if what you're proposing has already been proposed by someone else, or is already being worked on.

Doing Translations

Ubuntu puts a special emphasis on the right and ability of all its users to comfortably use Free software in their native languages, so translations have their special place. If you're fluent with a second language beside English, your contribution to translations in Rosetta, Launchpad's translation module, will be valuable. With Rosetta's web interface, you can translate as much as you want, at any time, in any package.

Make sure you're familiar with the software you translate, for your translations to have as much sensitivity on wording context as possible. The freedom of multiple translators to non-linearly edit translations at will can bring problems with it as well, such as consistency; it's a good idea to keep in touch with your fellow translators in your language's translation team in Launchpad and/or the upstream contacts for the software you're translating to tackle such possible difficulties.

Submitting Code

Why not? The Ubuntu core developers and MOTU almost always have their hands full, and may occasionally need a hand with certain issues. You may also want to have a go at becoming a MOTU hopeful, and eventually, a MOTU; check their wiki page for details. There will also be lots of specs floating around that no core developers or MOTU will be able to work on; you can try your hand at realizing them.

Doing Design

If you do graphics design, you can get involved in one of the Ubuntu-related artwork projects. Start here.

Writing Documentation

If you can write good documentation, you can work with the Documentation Team, or by yourself on the community documentation.

(This guide is a refresh of 23meg's great Contributing To Gutsy guide. Please add any additional information that you think is important for people to know about in the comments. Thanks!)

Some further topics:

Linking upstream bugs to existing Ubuntu bugs is an important way to help get bugs fixed.

This blog post by an Ubuntu dev explains why, and this wiki page shows you how.

5-A-Day

The idea with 5-A-Day is simple - everyone in the Ubuntu community works to tend to at least five bugs every day, and to make it fun, we have produced some tools and rankings to make those 5 bugs count.

See the 5-A-Day wiki page for all the info!

Harvest

Ubuntu dev Daniel Holbach has created a tool to help find and fix the so-called "low hanging fruit," bugs that should be easy to fix that might be lost among the thousands of bugs in Launchpad. He explains it here.

Check it out. It's a great place for future MOTUs and aspiring developers to start.


CypriotTeam CategoryContributing

CypriotTeam/Contributing (last edited 2009-02-03 21:34:12 by medigeek)