Organization of the Django Project
Principles
The Django Project is managed by a team of volunteers pursuing three goals:
- Driving the development of the Django Web Framework,
- Fostering the ecosystem of Django-related software,
- Leading the Django community in accordance with the values described in theDjango Code of Conduct.The Django Project isn't a legal entity. The Django Software Foundation, anon-profit organization, handles financial and legal matters related to theDjango Project. Other than that, the Django Software Foundation lets theDjango Project manage the development of the Django framework, its ecosystemand its community.
The Django core team makes the decisions, nominates its new members, andelects its technical board. While it holds decision power in theory, it aimsat using it as rarely as possible in practice. Rough consensus should be thenorm and formal voting an exception.
Core team
Role
The core team is the group of trusted volunteers who manage the DjangoProject. They assume many roles required to achieve the project's goals,especially those that require a high level of trust. They make the decisionsthat shape the future of the project.
Core team members are expected to act as role models for the community andcustodians of the project, on behalf of the community and all those who relyon Django.
They will intervene, where necessary, in online discussions or at officialDjango events on the rare occasions that a situation arises that requiresintervention.
They have authority over the Django Project infrastructure, including theDjango Project website itself, the Django GitHub organization andrepositories, the Trac bug tracker, the mailing lists, IRC channels, etc.
Prerogatives
Core team members may participate in formal votes, typically to nominate newteam members and to elect the technical board.
Some contributions don't require commit access. Depending on the reasons why acontributor joins the team, they may or may not have commit permissions to theDjango code repository.
However, should the need arise, any team member may ask for commit access bywriting to the core team's mailing list. Access will be granted unless theperson withdraws their request or the technical board vetoes the proposal.
Core team members who have commit access are referred to as "committers" or"core developers".
Other permissions, such as access to the servers, are granted to those whoneed them through the same process.
Membership
Django team membersdemonstrate:
- a good grasp of the philosophy of the Django Project
- a solid track record of being constructive and helpful
- significant contributions to the project's goals, in any form
willingness to dedicate some time to improving DjangoAs the project matures, contributions go way beyond code. Here's an incompletelist of areas where contributions may be considered for joining the core team,in no particular order:
Working on community management and outreach
- Providing support on the mailing-lists and on IRC
- Triaging tickets
- Writing patches (code, docs, or tests)
- Reviewing patches (code, docs, or tests)
- Participating in design decisions
- Providing expertise in a particular domain (security, i18n, etc.)
- Managing the continuous integration infrastructure
- Managing the servers (website, tracker, documentation, etc.)
- Maintaining related projects (djangoproject.com site, ex-contrib apps, etc.)
Creating visual designsVery few areas are reserved to core team members:
Reviewing security reports
- Merging patches (code, docs, or tests)
- Packaging releasesCore team membership acknowledges sustained and valuable efforts that alignwell with the philosophy and the goals of the Django Project.
It is granted by a four fifths majority of votes cast in a core team vote andno veto by the technical board.
Core team members are always looking for promising contributors, teaching themhow the project is managed, and submitting their names to the core team's votewhen they're ready. If you would like to join the core team, you can contact acore team member privately or ask for guidance on the Django CoreMentorship mailing-list.
There's no time limit on core team membership. However, in order to providethe general public with a reasonable idea of how many people maintain Django,core team members who have stopped contributing are encouraged to declarethemselves as "past team members". Those who haven't made any non-trivialcontribution in two years may be asked to move themselves to this category,and moved there if they don't respond. Past team members lose their privilegessuch as voting rights and commit access.
Technical board
Role
The technical board is a group of experienced and active committers who steertechnical choices. Their main concern is to maintain the quality and stabilityof the Django Web Framework.
Prerogatives
The technical board holds two prerogatives:
- Making major technical decisions when no consensus is found otherwise. Thishappens on the django-developers mailing-list.
- Veto a grant of commit access or remove commit access. This happens on the
django-core
mailing-list.In both cases, the technical board is a last resort. In these matters, itfulfills a similar function to the former Benevolent Dictators For Life.
When the board wants to exercise one of these prerogatives, it must hold aprivate, simple majority vote on the resolution. The quorum is the fullcommittee — each member must cast a vote or abstain explicitly. Then the boardcommunicates the result, and if possible the reasons, on the appropriatemailing-list. There's no appeal for such decisions.
In addition, at its discretion, the technical board may act in an advisorycapacity on non-technical decisions.
Membership
The technical board is an elected group of five committers. They're expectedto be experienced but there's no formal seniority requirement.
A new board is elected after each feature release of Django. The electionprocess is managed by a returns officer nominated by the outgoing technicalboard. The election process works as follows:
- Candidates advertise their application for the technical board to the team.
They must be committers already. There's no term limit for technical boardmembers.
- Each team member can vote for zero to five people among the candidates.Candidates are ranked by the total number of votes they received.
In case of a tie, the person who joined the core team earlier wins.
Both the application and the voting period last between one and two weeks, atthe outgoing board's discretion.
Changing the organization
Changes to this document require a four fifths majority of votes cast in acore team vote and no veto by the technical board.