diff --git a/docs/index.txt b/docs/index.txt index c5addd50780..fb20bdf3a1b 100644 --- a/docs/index.txt +++ b/docs/index.txt @@ -310,7 +310,9 @@ you can contribute: * **Community:** :doc:`How to get involved ` | :doc:`The release process ` | + :doc:`Team organization ` | :doc:`Meet the team ` | + :doc:`Current roles ` | :doc:`The Django source code repository ` | :doc:`Security policies ` | :doc:`Mailing lists ` diff --git a/docs/internals/contributing/committing-code.txt b/docs/internals/contributing/committing-code.txt index 2f8599de5bc..d853d643fad 100644 --- a/docs/internals/contributing/committing-code.txt +++ b/docs/internals/contributing/committing-code.txt @@ -7,19 +7,6 @@ interested in knowing how code gets committed into Django core. If you're a community member who wants to contribute code to Django, have a look at :doc:`writing-code/working-with-git` instead. -Commit access -------------- - -Core developers are people who have a long history of contributions to -Django's codebase, a solid track record of being polite and helpful on the -mailing lists, and a proven desire to dedicate serious time to Django's -development. The bar is high for full commit access. - -Decisions on new committers will follow the process explained in -:ref:`how-we-make-decisions`. To request commit access, please contact an -existing committer privately. Public requests for commit access are potential -flame-war starters, and will simply be ignored. - .. _handling-pull-requests: Handling pull requests diff --git a/docs/internals/index.txt b/docs/internals/index.txt index 02c1c5bb1bb..807283f0d03 100644 --- a/docs/internals/index.txt +++ b/docs/internals/index.txt @@ -18,7 +18,9 @@ the hood". contributing/index mailing-lists + organization team + roles security release-process deprecation diff --git a/docs/internals/organization.txt b/docs/internals/organization.txt new file mode 100644 index 00000000000..3f2423114b5 --- /dev/null +++ b/docs/internals/organization.txt @@ -0,0 +1,193 @@ +================================== +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 the + `Django Code of Conduct`_. + +The Django Project isn't a legal entity. The `Django Software Foundation`_, a +non-profit organization, handles financial and legal matters related to the +Django Project. Other than that, the Django Software Foundation lets the +Django Project manage the development of the Django framework, its ecosystem +and its community. + +.. _Django Code of Conduct: https://www.djangoproject.com/conduct/ +.. _Django Software Foundation: https://www.djangoproject.com/foundation/ + +Since 2014, the Django Project is an aristocracy_. The Django core team makes +the decisions, elects its technical board, and nominates new team members. +While it holds decision power in theory, it aims at using it as rarely as +possible in practice. Rough consensus should be the norm and formal voting an +exception. + +Until 2014, the Django Project was a benevolent_ dictatorship_. + +.. _aristocracy: http://en.wikipedia.org/wiki/Aristocracy +.. _benevolent: http://www.holovaty.com/writing/bdfls-retiring/ +.. _dictatorship: http://jacobian.org/writing/retiring-as-bdfls/ + +Core team +========= + +Role +---- + +The core team is the group of trusted volunteers who manage the Django +Project. They assume many roles required to achieve the project's goals, +especially those that require a high level of trust. They make the decisions +that shape the future of the project. + +Core team members are expected to act as role models for the community and +custodians of the project, on behalf of the community and all those who rely +on Django. + +They will intervene, where necessary, in online discussions or at official +Django events on the rare occasions that a situation arises that requires +intervention. + +They have authority over the Django Project infrastructure, including the +Django Project website itself, the Django GitHub organization and +repositories, the Trac bug tracker, the mailing lists, IRC channels, etc. + +Prerogatives +------------ + +Core team members may participate in formal votes, typically to nominate new +team members and to elect the technical board. + +Some contributions don't require commit access. Depending on the reasons why a +contributor joins the team, they may or may not have commit permissions to the +Django code repository. + +However, should the need arise, any team member may ask for commit access by +writing to the core team's mailing list. Access will be granted unless the +person 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 who +need them through the same process. + +Membership +---------- + +The core team finds its origins with the :ref:`four people +` who created Django. It has grown to :ref:`a few dozen +people ` by co-opting volunteers who demonstrate: + +- 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 Django + +As the project matures, contributions go way beyond code. Here's an incomplete +list 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 designs + +Very few areas are reserved to core team members: + +- Reviewing security reports +- Merging patches (code, docs, or tests) +- Packaging releases + +Core team membership acknowledges sustained and valuable efforts that align +well 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 and +no veto by the technical board. + +Core team members are always looking for promising contributors, teaching them +how the project is managed, and submitting their names to the core team's vote +when they're ready. If you would like to join the core team, you can contact a +core team member privately or ask for guidance on the :ref:`Django Core +Mentorship mailing-list `. + +There's no time limit on core team membership. However, in order to provide +the general public with a reasonable idea of how many people maintain Django, +core team members who have stopped contributing are encouraged to declare +themselves as "past team members". Those who haven't made any non-trivial +contribution 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 privileges +such as voting rights and commit access. + +Technical board +=============== + +Role +---- + +The technical board is a group of experienced and active committers who steer +technical choices. Their main concern is to maintain the quality and stability +of the Django Web Framework. + +Prerogatives +------------ + +The technical board holds two prerogatives: + +- Making major technical decisions when no consensus is found otherwise. This + happens 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, it +fulfills a similar function to the former Benevolent Dictators For Life. + +When the board wants to exercise one of these prerogatives, it must hold a +private, simple majority vote on the resolution. The quorum is the full +committee — each member must cast a vote or abstain explicitly. Then the board +communicates the result, and if possible the reasons, on the appropriate +mailing-list. There's no appeal for such decisions. + +In addition, at its discretion, the technical board may act in an advisory +capacity on non-technical decisions. + +Membership +---------- + +The technical board is an elected group of five committers. They're expected +to be experienced but there's no formal seniority requirement. Its current +composition is published :ref:`here `. + +A new board is elected after each major release of Django. The election +process is managed by the outgoing technical board. The first election is +bootstrapped by the retiring BDFLs. The election process works as follows: + +1. Candidates advertise their application for the technical board to the team. + + They must be committers already. There's no term limit for technical board + members. + +2. 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, at +the outgoing board's discretion. + +Changing the organization +========================= + +Changes to this document require a four fifths majority of votes cast in a +core team vote and no veto by the technical board. diff --git a/docs/internals/roles.txt b/docs/internals/roles.txt new file mode 100644 index 00000000000..80ba1e7c2d9 --- /dev/null +++ b/docs/internals/roles.txt @@ -0,0 +1,10 @@ +===== +Roles +===== + +.. _technical-board-list: + +Technical board +=============== + +The first technical board hasn't been elected yet. diff --git a/docs/internals/team.txt b/docs/internals/team.txt index cb20fa68a97..f3fdc5c88d6 100644 --- a/docs/internals/team.txt +++ b/docs/internals/team.txt @@ -2,6 +2,8 @@ Django team =========== +.. _original-team-list: + The original team ================= @@ -55,6 +57,8 @@ Journal-World`_ of Lawrence, Kansas, USA. .. _heroku: http://heroku.com/ .. _Rdio: http://rdio.com +.. _core-team-list: + The current team ================ @@ -551,8 +555,8 @@ Baptiste Mispelon .. _Solid Links: http://solidlinks.nl/ .. _Erik's Pony Checkup: http://ponycheckup.com/ -Retired team members -==================== +Past team members +================= Georg "Hugo" Bauer Georg created Django's internationalization system, managed i18n