Ubuntu Developers¶
Ubuntu Developers represent an important part of the creation of Ubuntu. They have a direct influence on the software included in Ubuntu and whether it meets the needs of end users. They are responsible for ensuring that Ubuntu works, and works as well as it can with the resources available.
Everybody is welcome to work on any package they want to improve and we value these contributions. If you don’t have upload rights yet, sponsors can review your work and upload it for you.
If you wanted to categorize the different kinds of involvement and upload rights in Ubuntu, it would look like this:
Ubuntu Prospective Developers who probably just started contributing to Ubuntu.
Ubuntu Contributing Developers, who were recognized with Ubuntu Membership.
Per-Package Uploaders (PPU), who can upload specific packages.
Ubuntu Developers (from delegated teams), who can upload to a specific Package Set.
MOTU, who can upload to universe and multiverse.
SRU developers, who can upload any package but only to stable releases.
Ubuntu Core Developers (core-dev), who can upload to all areas of Ubuntu.
See Path to upload rights below for a visual guide.
Ubuntu Developer membership¶
Ubuntu Developers get all the benefits of Ubuntu Membership. They also get:
Voting privileges to confirm Ubuntu Technical Board and Developer Membership Board nominations.
The opportunity to be nominated for the Developer Membership Board.
Access to all Valve-produced games for Steam.
Note
A few Per-Package Uploaders are not members of ubuntu-dev
and are not eligible for these benefits.
One way to check this is to run bin/lp-check-membership
from the lptools
package.
Path to upload rights¶
Note
The links shown on this page are subject to sudden changes over the next few months as more of the documentation it refers to is migrated here. Please expect inconsistencies – and feel welcome to correct any links you find that are incorrect.
These interactive charts show the skills needed to obtain permissions for uploading changes to the Ubuntu Package Archive. They can be used as a guide to help build your applications for upload rights on:
The uploader’s journey¶
Since Ubuntu is based on Debian, they share a similar technical skillset. This means that as a contributor, you may want to contribute to Debian as well as Ubuntu, or just focus on one (as you prefer).
This diagram shows the overall expected progression paths you can take as a contributor. Click any of the nodes to learn more.
block-beta columns 6 %% Column 1 block:col1 columns 2 space:5 Ubuntu{{"<b>Ubuntu<br>path</br>"}} Start(("Start")) space:2 Debian{{"<b>Debian<br>path</b>"}} end Start --> Ubuntu Start --> Debian %% Column 2 block:col2 columns 2 space:4 Basics("<a href='#upload-path-basics'>Basics</a>") id1((" ")) space:2 Contributor("<a href="https://www.debian.org/doc/manuals/maint-guide/">Contributor</a>") space end %% Column 3 block:col3 columns 2 UploadRights{{"<b>Upload<br>rights</b>"}} PPU["<a href='https://documentation.ubuntu.com/project/who-makes-ubuntu/developers/dmb-joining-ppu/'>PPU*</a>"] space:2 Intermediate("<a href='#upload-path-intermediate'>Intermediate</a>") id2((" ")) space:2 Maintainer("<a href='https://wiki.debian.org/DebianMaintainer'>Maintainer</a>") space end %% Column 4 block:col4 columns 2 space PackageSet["<a href='https://documentation.ubuntu.com/project/who-makes-ubuntu/developers/dmb-joining-packageset/'>PPU*<br>PackageSet</a>"] space:2 Advanced("<a href='#upload-path-advanced'>Advanced</a>") id3((" ")) space:2 Developer("<a href='https://wiki.debian.org/DebianDeveloper'>Developer</a>") space end %% Column 5 block:col5 columns 2 space MOTU["<a href='https://documentation.ubuntu.com/project/who-makes-ubuntu/developers/dmb-joining-motu/'>MOTU</a>"] space:2 Expert("<a href='#upload-path-expert'>Expert</a>") id4((" ")) space:4 end %% Column 6 block:col6 columns 2 space CoreDev["<a href='https://documentation.ubuntu.com/project/who-makes-ubuntu/developers/dmb-joining-core-dev/'>Core Dev</a>"] space:2 Main("<a href='#upload-path-expert'>Expert<br>in main</a>") id5((" ")) space:4 end %% Connections Basics --> Intermediate Intermediate --> Advanced Advanced --> Expert Expert --> Main id2 --> PPU id3 --> PackageSet id4 --> MOTU Main --- id5 id5 --> CoreDev Contributor --> Maintainer Maintainer --> Developer %% Styling classDef debianStyle fill: #F8A3C0, stroke: #DD1155 class Debian,Contributor,Maintainer,Developer debianStyle classDef ubuntuStyle fill: #FFDAB9, stroke: #E95420,stroke-width:1px; class Ubuntu,Basics,Intermediate,Advanced,Expert,Main ubuntuStyle classDef uploaderStyle fill: #FFDF7E, stroke: #FBAB13 class UploadRights,PPU,PackageSet,MOTU,CoreDev uploaderStyle classDef invisible fill: transparent, stroke: transparent class id1,col1,col2,col3,col4,col5,col6,col7 invisible classDef solid fill: #000, stroke: transparent class id2,id3,id4,id5 solid
Basics¶
As a Prospective Developer you should start your learning here. These topics will get you started with a good foundation for your future contributions to Ubuntu. As you complete tasks that build your confidence and skills, you can apply for Ubuntu Developer Membership as a Contributing Developer.
block-beta columns 2 block:left InitialStudies("Initial studies") columns 1 Concepts{{"<a href=https://github.com/canonical/ubuntu-maintainers-handbook>Concepts</a>"}} GitUbuntu{{"git-ubuntu"}} DebianPolicy{{"<a href=https://www.debian.org/doc/debian-policy/>Debian Policy</a>"}} end block:right InitialTasks("Initial tasks") columns 1 BugTriage["<a href='https://documentation.ubuntu.com/project/contributors/bug-triage/'>Bug triage</a>"] BiteSizedBugs["Bite-sized bugs"] TrivialPackgeMerges["Trivial package merges"] end InitialStudies --> InitialTasks classDef Studies fill: #FFDAB9, stroke:#F4A460; class InitialStudies,InitialTasks Studies classDef invisible fill:transparent,stroke:transparent; class left,right invisible
Once your team and/or mentor says you are ready for more, you can move onto the Intermediate-level tasks.
Intermediate¶
This set of topics are more in-depth, as well as being quite hands-on. Completing the tasks in this set will prepare you for Advanced-level work.
block-beta columns 3 block:left columns 1 IntermediateStudies("Intermediate studies") UnderstandDep8{{"<a href=https://salsa.debian.org/ci-team/autopkgtest/blob/master/doc/README.package-tests.rst>Understand DEP8</a>"}} ComplexPackageMerges{{"Complex package merges"}} SRU{{"<a href=https://canonical-sru-docs.readthedocs-hosted.com/>Study SRU</a>"}} space:1 end block:middle columns 1 IntermediateTasks("Intermediate tasks") AddAUTOPKGTESTS["<a href=https://documentation.ubuntu.com/project/contributors/bug-fix/package-tests/>Add Autopkgtest</a>"] ProposeMigration["<a href=https://documentation.ubuntu.com/project/how-ubuntu-is-made/processes/proposed-migration/>Proposed Migration</a>"] DoSRUS["Do SRUS"] WorkOnBugs["Work on packaging bugs/features"] end block:right columns 2 space PPU["<a href='https://documentation.ubuntu.com/project/who-makes-ubuntu/developers/dmb-joining-ppu/'>PPU*</a>"] space:8 end UnderstandDep8 --> AddAUTOPKGTESTS ComplexPackageMerges --> ProposeMigration SRU --> DoSRUS IntermediateTasks --> PPU classDef Studies fill: #FFDAB9, stroke:#F4A460; class IntermediateStudies,IntermediateTasks Studies classDef invisible fill:transparent,stroke:transparent; class left,middle,right invisible
Once you have done enough of these tasks that your team/mentor says you are ready to continue your journey, you can move onto the Advanced topics.
At this time, you may also be ready to apply for Per-Package Upload (PPU) rights. This will depend very much on the package you are interested in gaining upload rights for. Some of the more complex packages will need you to complete the Advanced path first.
Advanced¶
block-beta columns 3 block:left AdvancedStudies("Advanced studies") columns 1 space:3 StudyFFE{{"<a href=https://documentation.ubuntu.com/project/release-team/freeze-exceptions/>Study FFE</a>"}} PlusOne{{"<a href=https://documentation.ubuntu.com/project/contributors/advanced/plus-one-maintenance/>Study +1</a>"}} end block:middle AdvancedTasks("Advanced tasks") columns 1 UpstreamSubmissionFixes["Upstream submission fixes/features"] UpstreamSubmissionDelta["Upstream submission of delta"] MilestonesAndExceptions["Milestones and exceptions"] DoAnFFE["Do An FFE"] PlusOneShadowing["+1 Shadowing"] end block:right columns 2 space PPU["<a href='https://documentation.ubuntu.com/project/who-makes-ubuntu/developers/dmb-joining-ppu/'>PPU*</a>"] space PackageSet["<a href='https://documentation.ubuntu.com/project/who-makes-ubuntu/developers/dmb-joining-packageset/'>Package Set</a>"] space:8 end AdvancedTasks --> PPU AdvancedTasks --> PackageSet StudyFFE --> DoAnFFE PlusOne --> PlusOneShadowing classDef Studies fill: #FFDAB9, stroke:#F4A460; class AdvancedStudies,AdvancedTasks Studies classDef invisible fill:transparent,stroke:transparent; class left,middle,right invisible
With enough of these tasks under your belt to demonstrate your skills and experience, you can move onto the Expert topics.
At this point, you are likely to be ready to apply for Per-Package Upload (PPU) rights, or if there is a set of packages you are interested in working on, you can apply for Package Set instead.
Expert¶
The Expert-level studies will prepare you for becoming a member of MOTU, where
you will help to maintain packages in universe
.
If you want to, you can continue your Expert-level studies by further
specializing in main
– you need to do this if you want to apply for
the Core Developer role.
block-beta columns 3 block:topleft columns 1 ExpertStudies("Expert studies") StudyLibaryTransitions{{"<a href=https://wiki.debian.org/Teams/ReleaseTeam/Transitions>Study libary transitions</a>"}} StudyPackageTransitions{{"<a href=https://wiki.debian.org/PackageTransition>Study package transitions</a>"}} id1((" ")) end block:topright columns 1 ExpertTasks("Expert tasks") DoLibaryTransitions["Do libary transitions"] DoPackageTransitions["Do package transitions"] space:1 end block:motu columns 2 id2((" ")) MOTU["<a href='https://documentation.ubuntu.com/project/who-makes-ubuntu/developers/dmb-joining-motu/'>MOTU</a>"] space:4 id3((" ")) space end ExpertTasks --> MOTU block:lowerleft columns 1 ExpertinMainStudies("Expert in <code>main</code> studies") space StudyMIR{{"<a href=https://documentation.ubuntu.com/project/MIR/main-inclusion-review/>Study MIR</a>"}} space:1 end block:lowerright columns 1 ExpertinMainTasks("Expert in <code>main</code> tasks") DoMIR["Do an MIR"] space SeedChange["Seed change"] end block:coredev columns 2 space CoreDev["<a href='https://documentation.ubuntu.com/project/who-makes-ubuntu/developers/dmb-joining-core-dev/'>Core Dev</a>"] space:6 end ExpertinMainTasks --> CoreDev id1 --> ExpertinMainStudies id2 --- id3 id3 --- id1 StudyLibaryTransitions-->DoLibaryTransitions StudyPackageTransitions-->DoPackageTransitions StudyMIR-->DoMIR StudyMIR-->SeedChange classDef Studies fill: #FFDAB9, stroke:#F4A460; class ExpertStudies,ExpertTasks,ExpertinMainStudies,ExpertinMainTasks Studies classDef invisible fill: transparent, stroke: transparent class topleft,topright,lowerleft,lowerright,motu,coredev invisible classDef solid fill: #000, stroke: transparent class id1,id2,id3 solid