UbuntuDevelopment

Differences between revisions 161 and 164 (spanning 3 versions)
Revision 161 as of 2008-07-07 12:39:40
Size: 15639
Editor: 82-69-40-219
Comment: link formatting
Revision 164 as of 2008-09-22 11:27:35
Size: 15831
Editor: 82-69-40-219
Comment: Ubuntu Policy Manual
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
[[Include(UbuntuDevelopment/Header/Menu)]] <<Include(UbuntuDevelopment/Header/Menu)>>
Line 5: Line 5:
||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Contents'''[[BR]][[TableOfContents]]|| ||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;"><<TableOfContents>>||
Line 7: Line 7:
[[Anchor(Overview)]] <<Anchor(Overview)>>
Line 10: Line 10:
Ubuntu is developed by a team of UbuntuDevelopers. There are two types of UbuntuDevelopers: [http://launchpad.net/~ubuntu-core-dev core developers] and [http://launchpad.net/~motu MOTU]. Ubuntu is developed by a team of UbuntuDevelopers. There are two types of UbuntuDevelopers: [[http://launchpad.net/~ubuntu-core-dev|core developers]] and [[http://launchpad.net/~motu|MOTU]].
Line 13: Line 13:
Ubuntu is based on [http://www.debian.org/ Debian], sharing many of its packages, tools and techniques with that project. Differences between Ubuntu and Debian are described in UbuntuForDebianDevelopers. Ubuntu is based on [[http://www.debian.org/|Debian]], sharing many of its packages, tools and techniques with that project. Differences between Ubuntu and Debian are described in UbuntuForDebianDevelopers.
Line 15: Line 15:
Ubuntu is [:/ReleaseProcess:periodically released] according to a set schedule. Ubuntu is [[/ReleaseProcess|periodically released]] according to a set schedule.
Line 21: Line 21:
[[Anchor(OtherDevelopers)]] <<Anchor(OtherDevelopers)>>
Line 26: Line 26:
[[Anchor(StartingPoints)]] <<Anchor(StartingPoints)>>
Line 31: Line 31:
The [:MOTU] team, in addition to their development activities, provide information and guidance for new and prospective Ubuntu developers. If you're newly interested in Ubuntu development and looking for answers, introduce yourself and listen in! The [[MOTU]] team, in addition to their development activities, provide information and guidance for new and prospective Ubuntu developers. If you're newly interested in Ubuntu development and looking for answers, introduce yourself and listen in!
Line 33: Line 33:
If you're looking for tasks which need doing, many of those are tracked in the bug tracking system. The BugSquad maintains several lists of them at ["Bugs/Tags"]. If you're looking for tasks which need doing, many of those are tracked in the bug tracking system. The BugSquad maintains several lists of them at [[Bugs/Tags]].
Line 37: Line 37:
To submit patches for review or to help reviewing patches, please refer to [:/CodeReviews:the Code Review process]. To submit patches for review or to help reviewing patches, please refer to [[/CodeReviews|the Code Review process]].
Line 42: Line 42:
[[Anchor(Communication)]] <<Anchor(Communication)>>
Line 45: Line 45:
Email discussion among Ubuntu developers takes place on the [http://lists.ubuntu.com/mailman/listinfo/ubuntu-devel ubuntu-devel mailing list], which is moderated (excepting registered Ubuntu developers). The [http://lists.ubuntu.com/mailman/listinfo/ubuntu-devel-discuss ubuntu-devel-discuss mailing list] is available for open discussion about Ubuntu development. All UbuntuDevelopers should subscribe to the [http://lists.ubuntu.com/mailman/listinfo/ubuntu-devel-announce ubuntu-devel-announce mailing list], where important development events are announced. [https://lists.ubuntu.com/mailman/listinfo/ Various other mailing lists] are available, some of which focus on specific areas of development. Email discussion among Ubuntu developers takes place on the [[http://lists.ubuntu.com/mailman/listinfo/ubuntu-devel|ubuntu-devel mailing list]], which is moderated (excepting registered Ubuntu developers). The [[http://lists.ubuntu.com/mailman/listinfo/ubuntu-devel-discuss|ubuntu-devel-discuss mailing list]] is available for open discussion about Ubuntu development. All UbuntuDevelopers should subscribe to the [[http://lists.ubuntu.com/mailman/listinfo/ubuntu-devel-announce|ubuntu-devel-announce mailing list]], where important development events are announced. [[https://lists.ubuntu.com/mailman/listinfo/|Various other mailing lists]] are available, some of which focus on specific areas of development.
Line 49: Line 49:
[:/PackageArchive#Notification:Automated notifications of development activity] are also useful for keeping up with what other developers are working on. [[/PackageArchive#Notification|Automated notifications of development activity]] are also useful for keeping up with what other developers are working on.
Line 53: Line 53:
[[Anchor(Bugs)]] <<Anchor(Bugs)>>
Line 56: Line 56:
[http://bugs.launchpad.net/ubuntu Ubuntu bug reports] are tracked in Launchpad. HelpingWithBugs contains information about how they are handled. [[http://bugs.launchpad.net/ubuntu|Ubuntu bug reports]] are tracked in Launchpad. HelpingWithBugs contains information about how they are handled.
Line 61: Line 61:
Members of the Bug Squad can be found on the `#ubuntu-bugs` channel on the FreeNode IRC network. There is also the [https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugsquad ubuntu-bugsquad mailing list] for general discussion regarding bugs and bug triaging. Members of the Bug Squad can be found on the `#ubuntu-bugs` channel on the FreeNode IRC network. There is also the [[https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugsquad|ubuntu-bugsquad mailing list]] for general discussion regarding bugs and bug triaging.
Line 63: Line 63:
[[Anchor(RCBugs)]] <<Anchor(RCBugs)>>
Line 66: Line 66:
["RCBugTargetting"] documents the intended use of the various facilities of the bug tracking system to track release-critical bugs. [[RCBugTargetting]] documents the intended use of the various facilities of the bug tracking system to track release-critical bugs.
Line 68: Line 68:
 * [https://bugs.launchpad.net/ubuntu/+bugs?field.searchtext=&orderby=-importance&search=Search&field.status%3Alist=Unconfirmed&field.status%3Alist=Needs+Info&field.status%3Alist=Confirmed&field.status%3Alist=In+Progress&field.status%3Alist=Fix+Committed&field.importance%3Alist=Critical&assignee_option=any&field.assignee=&field.bug_reporter=&field.bug_contact=&field.milestone%3Alist=200&field.component=1&field.component=2&field.component-empty-marker=1&field.status_upstream=&field.status_upstream-empty-marker=1&field.omit_dupes.used=&field.omit_dupes=on&field.has_patch.used=&field.tag=&field.has_cve.used=&field.has_no_package.used= Showstopper bugs] Critical and milestoned to the relevant release. Those bugs will hold up the release if not fixed.
 * [https://bugs.launchpad.net/ubuntu/+bugs?field.searchtext=&orderby=-importance&search=Search&field.status%3Alist=Unconfirmed&field.status%3Alist=Needs+Info&field.status%3Alist=Confirmed&field.status%3Alist=In+Progress&field.status%3Alist=Fix+Committed&field.importance%3Alist=High&field.importance%3Alist=Critical&assignee_option=any&field.assignee=&field.bug_reporter=&field.bug_contact=&field.milestone%3Alist=200&field.component=1&field.component=2&field.component-empty-marker=1&field.status_upstream=&field.status_upstream-empty-marker=1&field.omit_dupes.used=&field.omit_dupes=on&field.has_patch.used=&field.tag=&field.has_cve.used=&field.has_no_package.used= Release-critical bugs] Critical and high importance bugs milestoned to the relevant release. Those bugs need to be fixed or worked around/documented before the release.
 * [[https://bugs.launchpad.net/ubuntu/+bugs?field.searchtext=&orderby=-importance&search=Search&field.status%3Alist=Unconfirmed&field.status%3Alist=Needs+Info&field.status%3Alist=Confirmed&field.status%3Alist=In+Progress&field.status%3Alist=Fix+Committed&field.importance%3Alist=Critical&assignee_option=any&field.assignee=&field.bug_reporter=&field.bug_contact=&field.milestone%3Alist=200&field.component=1&field.component=2&field.component-empty-marker=1&field.status_upstream=&field.status_upstream-empty-marker=1&field.omit_dupes.used=&field.omit_dupes=on&field.has_patch.used=&field.tag=&field.has_cve.used=&field.has_no_package.used=|Showstopper bugs]] Critical and milestoned to the relevant release. Those bugs will hold up the release if not fixed.
 * [[https://bugs.launchpad.net/ubuntu/+bugs?field.searchtext=&orderby=-importance&search=Search&field.status%3Alist=Unconfirmed&field.status%3Alist=Needs+Info&field.status%3Alist=Confirmed&field.status%3Alist=In+Progress&field.status%3Alist=Fix+Committed&field.importance%3Alist=High&field.importance%3Alist=Critical&assignee_option=any&field.assignee=&field.bug_reporter=&field.bug_contact=&field.milestone%3Alist=200&field.component=1&field.component=2&field.component-empty-marker=1&field.status_upstream=&field.status_upstream-empty-marker=1&field.omit_dupes.used=&field.omit_dupes=on&field.has_patch.used=&field.tag=&field.has_cve.used=&field.has_no_package.used=|Release-critical bugs]] Critical and high importance bugs milestoned to the relevant release. Those bugs need to be fixed or worked around/documented before the release.
Line 73: Line 73:
[[Anchor(ReleaseProcess)]] <<Anchor(ReleaseProcess)>>
Line 76: Line 76:
Ubuntu does time-based releases. The [:UbuntuDevelopment/ReleaseProcess:Release Process] section covers all the release management steps such as beginning a new release, planning it, merging with upstream, feature development, stabilization and freezes, milestone, finalization and stable releases. Ubuntu does time-based releases. The [[UbuntuDevelopment/ReleaseProcess|Release Process]] section covers all the release management steps such as beginning a new release, planning it, merging with upstream, feature development, stabilization and freezes, milestone, finalization and stable releases.
Line 78: Line 78:
[[Anchor(Packaging)]] <<Anchor(Packaging)>>
Line 81: Line 81:
If you're interested in packaging work, but don't have much experience yet, you should read [:MOTU/GettingStarted:this] to get involved in the ["MOTU"] team. If you're interested in packaging work, but don't have much experience yet, you should read [[MOTU/GettingStarted|this]] to get involved in the [[MOTU]] team.
Line 85: Line 85:
[[Anchor(DebianPackages)]] <<Anchor(DebianPackages)>>
Line 91: Line 91:
 * All Ubuntu developers should be familiar with the [http://www.debian.org/doc/maint-guide/ Debian New Maintainer Guide] and the [http://www.debian.org/doc/debian-policy/ Debian Policy Manual]; though be aware that there are many differences (technical, social and procedural) between Ubuntu and Debian of which they must also be aware.
 * [:PackagingGuide:The Ubuntu Packaging Guide]
 * [http://women.debian.org/wiki/English/PackagingTutorial A packaging tutorial] is available from the Debian Women project, as is [http://women.debian.org/wiki/English/MaintainerScripts an explanation of maintainer scripts] and [http://women.debian.org/wiki/English/AdvancedBuildingTips further help with building packages].
 * Ma
ny packages use tools to help manage multiple patches. [:PackagingGuide/PatchSystems:Patching Ubuntu packages] explains how to work with them.
  * The [https://perso.duckcorp.org/duck/cdbs-doc/cdbs-doc.xhtml
CDBS Manual] explains how to work with packages using the CDBS packaging scripts, one example of a patch system (and more)
 * Packaging shared libraries is a delicate task, and getting it wrong can cause upgrade headaches for users. The [http://www.netfort.gr.jp/~dancer/column/libpkg-guide/libpkg-guide.html Debian Library Packaging Guide] can be useful in avoiding some of the common traps.
 * All Ubuntu developers should be familiar with the [[http://people.ubuntu.com/~cjwatson/ubuntu-policy/policy.html/|Ubuntu Policy Manual]] (derived from the [[http://www.debian.org/doc/debian-policy/|Debian Policy Manual]]).
 * All Ubuntu developers should be familiar with the [[http://www.debian.org/doc/maint-guide/|Debian
New Maintainer Guide]]; though be aware that there are many differences (technical, social and procedural) between Ubuntu and Debian of which they must also be aware.
 * [[PackagingGuide|The Ubuntu Packaging Guide]]
 * [[http
://women.debian.org/wiki/English/PackagingTutorial|A packaging tutorial]] is available from the Debian Women project, as is [[http://women.debian.org/wiki/English/MaintainerScripts|an explanation of maintainer scripts]] and [[http://women.debian.org/wiki/English/AdvancedBuildingTips|further help with building packages]].
 * Many packages use tools to help manage multiple patches. [[PackagingGuide/PatchSystems|Patching Ubuntu packages]] explains how to work with them.
  * The [[https
://perso.duckcorp.org/duck/cdbs-doc/cdbs-doc.xhtml|CDBS Manual]] explains how to work with packages using the CDBS packaging scripts, one example of a patch system (and more)
 * Packaging shared libraries is a delicate task, and getting it wrong can cause upgrade headaches for users. The [[http://www.netfort.gr.jp/~dancer/column/libpkg-guide/libpkg-guide.html|Debian Library Packaging Guide]] can be useful in avoiding some of the common traps.
Line 100: Line 101:
 * [https://lists.ubuntu.com/archives/ubuntu-motu/2006-February/000443.html how to write watch files] for sourceforge.net hosted projects  * [[https://lists.ubuntu.com/archives/ubuntu-motu/2006-February/000443.html|how to write watch files]] for sourceforge.net hosted projects
Line 102: Line 103:
[[Anchor(UbuntuPackages)]] <<Anchor(UbuntuPackages)>>
Line 116: Line 117:
 * Always be aware of the release schedule and any applicable [:/ReleaseProcess#Freezes:freezes]. The cooperation of all developers is needed in order to ensure a successful release!  * Always be aware of the release schedule and any applicable [[/ReleaseProcess#Freezes|freezes]]. The cooperation of all developers is needed in order to ensure a successful release!
Line 118: Line 119:
 * For merging a Ubuntu package with a newer Debian version, see ["/Merging"]  * For merging a Ubuntu package with a newer Debian version, see [[/Merging]]
Line 120: Line 121:
[[Anchor(Bazaar)]] <<Anchor(Bazaar)>>
Line 123: Line 124:
Bazaar, an open source revision control system and Canonical sponsored project, is the preferred revision control system in Ubuntu. Many Ubuntu packages are [:BzrMaintainerHowto:maintained in Bazaar], which makes it easy for other developers to [:BzrContributorHowto:contribute changes to them], which can be easily merged by the maintainer. Bazaar, an open source revision control system and Canonical sponsored project, is the preferred revision control system in Ubuntu. Many Ubuntu packages are [[BzrMaintainerHowto|maintained in Bazaar]], which makes it easy for other developers to [[BzrContributorHowto|contribute changes to them]], which can be easily merged by the maintainer.
Line 125: Line 126:
Note that, as a practical matter, many packages are not yet maintained in Bazaar, but in other revision control systems or none on a case-by-case basis. Where no revision control system is used, the history of uploads recorded in [https://launchpad.net/ubuntu/+search Launchpad] may be useful. Note that, as a practical matter, many packages are not yet maintained in Bazaar, but in other revision control systems or none on a case-by-case basis. Where no revision control system is used, the history of uploads recorded in [[https://launchpad.net/ubuntu/+search|Launchpad]] may be useful.
Line 127: Line 128:
[[Anchor(Derivatives)]] <<Anchor(Derivatives)>>
Line 132: Line 133:
 * [:KubuntuPackagingGuide]  * [[KubuntuPackagingGuide]]
Line 134: Line 135:
[[Anchor(Building)]] <<Anchor(Building)>>
Line 139: Line 140:
 * You may want to build them in a [:DebootstrapChroot] or in [:PbuilderHowto:pbuilder]. ["UbuntuDevelopment/UsingDevelopmentReleases"] explains how to safely work and test on the current development release.
 * Backports are explained at [:UbuntuBackports]
 * You may want to build them in a [[DebootstrapChroot]] or in [[PbuilderHowto|pbuilder]]. [[UbuntuDevelopment/UsingDevelopmentReleases]] explains how to safely work and test on the current development release.
 * Backports are explained at [[UbuntuBackports]]
Line 142: Line 143:
[[Anchor(Tools)]] <<Anchor(Tools)>>
Line 145: Line 146:
You will find some tools explained in the [:PackagingGuide/Recipes:MOTU Recipes], also from `gutsy` on, you will find `ubuntu-dev-tools` in the archive, which contains [:UbuntuDevTools:tools for developing Ubuntu]. You will find some tools explained in the [[PackagingGuide/Recipes|MOTU Recipes]], also from `gutsy` on, you will find `ubuntu-dev-tools` in the archive, which contains [[UbuntuDevTools|tools for developing Ubuntu]].
Line 147: Line 148:
[[Anchor(NewPackages)]] <<Anchor(NewPackages)>>
Line 150: Line 151:
The process for either requesting a new package or getting your own new package included in Ubuntu is described at ["UbuntuDevelopment/NewPackages"]. The process for either requesting a new package or getting your own new package included in Ubuntu is described at [[UbuntuDevelopment/NewPackages]].
Line 153: Line 154:
[[Anchor(Archive)]] <<Anchor(Archive)>>
Line 156: Line 157:
All current official Ubuntu packages are stored in the master archive, which is widely mirrored. It is administered by the archive administration team. The [:UbuntuDevelopment/PackageArchive:Packaging Archive section] covers details such as the processes of interaction with the build daemons and the archive, also it explains how different architectures and package components are handled and how the autobuilders work. All current official Ubuntu packages are stored in the master archive, which is widely mirrored. It is administered by the archive administration team. The [[UbuntuDevelopment/PackageArchive|Packaging Archive section]] covers details such as the processes of interaction with the build daemons and the archive, also it explains how different architectures and package components are handled and how the autobuilders work.
Line 159: Line 160:
[[Anchor(InstallationMedia)]] <<Anchor(InstallationMedia)>>
Line 162: Line 163:
The [:UbuntuDevelopment/InstallationMedia:Installation media] section discusses the different supported installation media types, how to obtain them and contains pointers to Installer development. The [[UbuntuDevelopment/InstallationMedia|Installation media]] section discusses the different supported installation media types, how to obtain them and contains pointers to Installer development.
Line 164: Line 165:
[[Anchor(LanguagePacks)]] <<Anchor(LanguagePacks)>>
Line 178: Line 179:
[[Anchor(Resources)]] <<Anchor(Resources)>>
Line 187: Line 188:
CategoryProcess[[BR]]CategoryUbuntuDevelopment CategoryProcess<<BR>>CategoryUbuntuDevelopment

Overview of Development

Ubuntu is developed by a team of UbuntuDevelopers. There are two types of UbuntuDevelopers: core developers and MOTU. This process is transparent to the public, and open to any contributor who demonstrates the necessary skills and commitment to the project.

Ubuntu is based on Debian, sharing many of its packages, tools and techniques with that project. Differences between Ubuntu and Debian are described in UbuntuForDebianDevelopers.

Ubuntu is periodically released according to a set schedule.

Like most operating systems, Ubuntu is complex, and it can help to get a broad overview of its architecture first. For that, see UbuntuArchitecture.

If you have been directed to this page for advice on contributing to Ubuntu as a developer, you may also be interested in ContributeToUbuntu.

Working with Other Developers

You are not alone! Ubuntu is the work of many developers, and we devote some effort to enabling efficient collaboration with tools, infrastructure, government and a cooperative spirit.

Starting points

UbuntuDevelopers explains the role of developers in the Ubuntu project and how to join the team.

The MOTU team, in addition to their development activities, provide information and guidance for new and prospective Ubuntu developers. If you're newly interested in Ubuntu development and looking for answers, introduce yourself and listen in!

If you're looking for tasks which need doing, many of those are tracked in the bug tracking system. The BugSquad maintains several lists of them at Bugs/Tags.

If you already have experience working with Debian packages, most of your knowledge applies equally well to Ubuntu packaging. If you are a Debian developer, UbuntuForDebianDevelopers summarizes some of the differences between the projects, and later sections in this document provide details of our infrastructure.

To submit patches for review or to help reviewing patches, please refer to the Code Review process.

To find the developer responsible for the component you're working on, see DeveloperResponsibilities.

Communication

Email discussion among Ubuntu developers takes place on the ubuntu-devel mailing list, which is moderated (excepting registered Ubuntu developers). The ubuntu-devel-discuss mailing list is available for open discussion about Ubuntu development. All UbuntuDevelopers should subscribe to the ubuntu-devel-announce mailing list, where important development events are announced. Various other mailing lists are available, some of which focus on specific areas of development.

The #ubuntu-devel channel on the FreeNode IRC network is home to many Ubuntu developers for real-time communication.

Automated notifications of development activity are also useful for keeping up with what other developers are working on.

A comprehensive matrix of communication channels can be found on DeveloperCommunication.

Bugs and the BugSquad

Ubuntu bug reports are tracked in Launchpad. HelpingWithBugs contains information about how they are handled. The BugSquad documentation describes how to cooperate with other developers and volunteers working on bug triage; it is required reading for new developers, as developers will typically need to spend a significant amount of time working with the bug tracking system.

The BugSquad (and the Ubuntu Bug Control team, which is comprised of more experienced triagers who can prioritize bugs) are here to help you as a developer. If you are responsible for a non-trivial number of bugs, it is a good idea to spend some time on helping them help you. A useful starting point is to add specific information about your packages to DebuggingProcedures: this may include both special tricks for debugging them effectively and any particular policy you have on how you want your bugs to be handled (e.g. assignment, tags, etc.). When adding significant chunks of new information to DebuggingProcedures, please send a note to ubuntu-bugsquad@lists.ubuntu.com about it.

Members of the Bug Squad can be found on the #ubuntu-bugs channel on the FreeNode IRC network. There is also the ubuntu-bugsquad mailing list for general discussion regarding bugs and bug triaging.

Release Critical bugs

RCBugTargetting documents the intended use of the various facilities of the bug tracking system to track release-critical bugs.

  • Showstopper bugs Critical and milestoned to the relevant release. Those bugs will hold up the release if not fixed.

  • Release-critical bugs Critical and high importance bugs milestoned to the relevant release. Those bugs need to be fixed or worked around/documented before the release.

In particular, if you make a temporary change to a package for whatever reason which should be reverted before release, please file a release-critical bug about it so that this can be tracked by the release team.

The Release Process

Ubuntu does time-based releases. The Release Process section covers all the release management steps such as beginning a new release, planning it, merging with upstream, feature development, stabilization and freezes, milestone, finalization and stable releases.

Packaging

If you're interested in packaging work, but don't have much experience yet, you should read this to get involved in the MOTU team.

Working with Debian-format Packages

Ubuntu uses the Debian packaging format. The following resources explain how to create and modify Debian-format packages.

Working with Ubuntu Packages

  • Set the target suite in debian/changelog to be the code name of the current development branch, e.g. "dch -D intrepid"

  • When working with a package which originated in Debian, use a version number derived from the Debian version number with ubuntu<revision> appended. e.g. Debian 1.0-2 becomes 1.0-2ubuntu1, followed by 1.0-2ubuntu2, etc.

  • When fixing a bug tracked in Launchpad, be sure to insert LP: #xxxxxx notation in your changelog entry, for example:

    mypackage (2.2-2) intrepid; urgency=low
    
      * hello(1) now prints "Hello, world!" instead of "Hello yourself." (LP: #500000)
    
     -- A. Developer <adeveloper@ubuntu.com> Mon, 17 Dec 2007 18:27:50 +0000
    Note: The regex in Launchpad looks for LP: #xxxxxx at a minimum. The preferred form is (LP: #xxxxxx).
  • When creating a new package which may later be added to Debian, use a revision of the form -0ubuntu1
  • Remember to include the orig.tar.gz if this is a new upstream version of a non-native package but you have already patched it before upload. A missing original tarball may cause the upload to be rejected or silently dropped. Use dpkg-buildpackage -S -sa to generate such an upload. If the orig.tar.gz is already in the distribution then you don't need to upload it again.

  • Always be aware of the release schedule and any applicable freezes. The cooperation of all developers is needed in order to ensure a successful release!

  • If your changes may affect the work of other developers, it is a good idea to discuss them on a mailing list first
  • For merging a Ubuntu package with a newer Debian version, see /Merging

Revision control (Bazaar)

Bazaar, an open source revision control system and Canonical sponsored project, is the preferred revision control system in Ubuntu. Many Ubuntu packages are maintained in Bazaar, which makes it easy for other developers to contribute changes to them, which can be easily merged by the maintainer.

Note that, as a practical matter, many packages are not yet maintained in Bazaar, but in other revision control systems or none on a case-by-case basis. Where no revision control system is used, the history of uploads recorded in Launchpad may be useful.

Derivative Distributions

Several derivatives of Ubuntu are available (also sometimes called "flavours"). A number of people in the Ubuntu community work on one or more of these derivative versions. Kubuntu, Edubuntu, and Xubuntu are all maintained directly in the Ubuntu archive.

Building

You should always build and test packages locally before submitting them to Ubuntu. Failure to do so will waste the time of other members of the community, so please be considerate.

Tools

You will find some tools explained in the MOTU Recipes, also from gutsy on, you will find ubuntu-dev-tools in the archive, which contains tools for developing Ubuntu.

New Packages

The process for either requesting a new package or getting your own new package included in Ubuntu is described at UbuntuDevelopment/NewPackages.

The Package Archive

All current official Ubuntu packages are stored in the master archive, which is widely mirrored. It is administered by the archive administration team. The Packaging Archive section covers details such as the processes of interaction with the build daemons and the archive, also it explains how different architectures and package components are handled and how the autobuilders work.

Installation media

The Installation media section discusses the different supported installation media types, how to obtain them and contains pointers to Installer development.

Language packs

Unlike other distributions we do not ship upstream translations from source packages directly in binary application packages in main and restricted, since this does not allow us any flexibility in editing them on a central place (Launchpad), update them independently from the applications, and update them post release. That is why we separate packages and their translations in Ubuntu and maintain/package them independently.

The complete lifecycle of translations (import, maintenance, export, and language pack structure) is described on TranslationLifecycle.

Other Resources

These resources should be incorporated into new or existing sections elsewhere in this document, but are temporarily recorded here so that we remember to come back to them later:


CategoryProcess
CategoryUbuntuDevelopment

UbuntuDevelopment (last edited 2023-02-09 00:47:28 by arraybolt3)