Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 23 additions & 18 deletions docs/internals/contributing/writing-code/index.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,43 +5,48 @@ Contributing code
So you'd like to write some code, documentation or tests to improve Django?
There are several ways you can help Django's development.

.. toctree::
:hidden:

submitting-patches
unit-tests
working-with-git
coding-style
javascript
../accessibility
../committing-code

Tutorials
=========

The Django tutorial contains a whole section that walks you step-by-step
through the contributing code process.

.. toctree::
:maxdepth: 1

/intro/contributing
* :doc:`/intro/contributing`

How-to guides
=============

If you already have some familiarity with the processes and principles,
our documentation also contains useful guidance on specific topics:

.. toctree::
:maxdepth: 1

How to submit a patch to Django for new and/or fixed behavior <submitting-patches>
How to write and run tests </topics/testing/overview>
How to run Django's unit tests <unit-tests>
How to work with Git and GitHub <working-with-git>
* :doc:`How to submit a patch to Django for new and/or fixed behavior
</internals/contributing/writing-code/submitting-patches>`
* :doc:`How to write and run tests </topics/testing/overview>`
* :doc:`How to run Django's unit tests
</internals/contributing/writing-code/unit-tests>`
* :doc:`How to work with Git and GitHub
</internals/contributing/writing-code/working-with-git>`

Related topics
==============

It's important to understand how we work and the conventions we adopt.

.. toctree::
:maxdepth: 1

coding-style
javascript
../accessibility
../committing-code
* :doc:`/internals/contributing/writing-code/coding-style`
* :doc:`/internals/contributing/writing-code/javascript`
* :doc:`/internals/contributing/accessibility`
* :doc:`/internals/contributing/committing-code`

We maintain a curated list of small issues suited to first-time or less
experienced contributors, using the "easy pickings" filter. These are strongly
Expand Down
48 changes: 24 additions & 24 deletions docs/internals/howto-release-django.txt
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,12 @@ There are a lot of details, so please read on.

To generate a checklist compiling the tasks described below as relevant to
the specific release(s) you are issuing, use the checklists app in the
`project admin <https://www.djangoproject.com/admin/checklists/>`_. This
`project admin <https://www.djangoproject.com/admin/checklists/>`__. This
populates a lot of boilerplate you will need for announcements, CVE
publication, and hashes for commit messages. By using this app for preparing
security issue metadata, your peer releasers can check your entries and
consult them again in the future. See `example checklist
<https://www.djangoproject.com/checklists/release/5.2.4/>`_.
<https://www.djangoproject.com/checklists/release/5.2.4/>`__.

Prerequisites
=============
Expand Down Expand Up @@ -98,12 +98,12 @@ permissions.
* A clean Python virtual environment (Python 3.10+, pip 26.1+) to build
artifacts.

* Access to `Django's project on PyPI <https://pypi.org/project/Django/>`_ to
* Access to `Django's project on PyPI <https://pypi.org/project/Django/>`__ to
upload binaries, ideally with extra permissions to `yank a release
<https://pypi.org/help/#yanked>`_ if necessary. Ensure your PyPI account
<https://pypi.org/help/#yanked>`__ if necessary. Ensure your PyPI account
only uses WebAuthn-based authentication factors, not TOTP (one-time codes).
Create an API token following the `official documentation
<https://pypi.org/help/#apitoken>`_, and set up your ``$HOME/.pypirc`` file
<https://pypi.org/help/#apitoken>`__, and set up your ``$HOME/.pypirc`` file
like this:

.. code-block:: ini
Expand All @@ -124,9 +124,9 @@ permissions.
password = # A project token.

* Access to `Django's project on Transifex
<https://app.transifex.com/django/django/>`_, with a Manager role. Generate
<https://app.transifex.com/django/django/>`__, with a Manager role. Generate
an API Token in the `user setting section
<https://app.transifex.com/user/settings/api/>`_ and set up your
<https://app.transifex.com/user/settings/api/>`__ and set up your
``$HOME/.transifexrc`` file like this:

.. code-block:: ini
Expand All @@ -139,16 +139,16 @@ permissions.
* Access to the Django admin on ``djangoproject.com`` as a "Site maintainer".

* Access to create a post in the `Django Forum - Announcements category
<https://forum.djangoproject.com/c/announcements/7>`_ and to send emails to
the `django-announce <https://groups.google.com/g/django-announce/>`_
<https://forum.djangoproject.com/c/announcements/7>`__ and to send emails to
the `django-announce <https://groups.google.com/g/django-announce/>`__
mailing list.

* Access to the ``django-security`` repo in GitHub. Among other things, this
provides access to the pre-notification distribution list (needed for
security release preparation tasks).

* Access to the Django project on `Read the Docs
<https://readthedocs.org/projects/django/>`_.
<https://readthedocs.org/projects/django/>`__.

Pre-release tasks
=================
Expand All @@ -160,7 +160,7 @@ any time leading up to the actual release.
10 (or more) days before a security release
-------------------------------------------

#. Reserve one `CVE ID <https://www.cve.org/About/Overview/>`_ per security
#. Reserve one `CVE ID <https://www.cve.org/About/Overview/>`__ per security
issue as follows. (Or, if you lack CNA credentials, email
``cna@djangoproject.com`` with a request.)

Expand Down Expand Up @@ -248,7 +248,7 @@ A few days before any release
have been integrated.

In addition to having a configured Transifex account, ensure that the `tx
CLI <https://developers.transifex.com/docs/cli>`_ is available in your
CLI <https://developers.transifex.com/docs/cli>`__ is available in your
``PATH``. You can then fetch all translations since a given date by running:

.. code-block:: shell
Expand All @@ -275,7 +275,7 @@ A few days before any release
Lastly, commit the changed/added files (both ``.po`` and ``.mo``) and create
a new PR targeting the stable branch of the corresponding release (example
`PR updating translations for 4.2
<https://github.com/django/django/pull/16715>`_).
<https://github.com/django/django/pull/16715>`__).

Once merged, forward port the changes into ``main`` (:commit:`example commit
<cb27e5b9c0703fb0edd70b2138e3e53a78c9551d>`).
Expand All @@ -293,7 +293,7 @@ A few days before any release

#. If this is the "dot zero" release of a new series, create a new branch from
the current stable branch in the `django-docs-translations
<https://github.com/django/django-docs-translations>`_ repository. For
<https://github.com/django/django-docs-translations>`__ repository. For
example, when releasing Django 4.2:

.. code-block:: shell
Expand Down Expand Up @@ -355,9 +355,9 @@ cut. The following items should be addressed in this branch:
<7288866da4dddf3705148c703421858ec19cdb78>`).

Concrete examples for past feature release bootstrap branches: `5.2 bootstrap
<https://github.com/django/django/pull/18127>`_, `5.1 bootstrap
<https://github.com/django/django/pull/17246>`_, `5.0 bootstrap
<https://github.com/django/django/pull/16432>`_.
<https://github.com/django/django/pull/18127>`__, `5.1 bootstrap
<https://github.com/django/django/pull/17246>`__, `5.0 bootstrap
<https://github.com/django/django/pull/16432>`__.

Feature freeze tasks
====================
Expand Down Expand Up @@ -403,19 +403,19 @@ Feature freeze tasks
__ https://www.djangoproject.com/admin/docs/documentrelease/add/

#. Add the new branch to `Read the Docs
<https://readthedocs.org/projects/django/>`_. Since the automatically
<https://readthedocs.org/projects/django/>`__. Since the automatically
generated version names ("stable-A.B.x") differ from the version names used
in Read the Docs ("A.B.x"), update the Read the Docs config for the version
to point to the slug ``A.B.x`` and set it as active. `See more details
<https://github.com/readthedocs/readthedocs.org/issues/12483>`__.

#. `Create a PR on PyPI proposing the new Trove classifier
<https://github.com/pypa/trove-classifiers/pulls?q=is%3Apr+django+trove+classifier>`_.
<https://github.com/pypa/trove-classifiers/pulls?q=is%3Apr+django+trove+classifier>`__.
For example ``Framework :: Django :: 5.2``.

#. Update the current branch under active development and add pre-release
branch in the `Django release process
<https://code.djangoproject.com/#Djangoreleaseprocess>`_ on Trac.
<https://code.djangoproject.com/#Djangoreleaseprocess>`__ on Trac.

#. Update the ``docs/fixtures/doc_releases.json`` JSON fixture for
djangoproject.com, so people without access to the production DB can still
Expand Down Expand Up @@ -603,7 +603,7 @@ Making the release(s) available to the public
Now you're ready to actually put the release out there. To do this:

#. Create a new ``Release`` entry in the `djangoproject.com's admin
<https://www.djangoproject.com/admin/releases/release/add/>`_. If this is a
<https://www.djangoproject.com/admin/releases/release/add/>`__. If this is a
security release, this should be done 15 minutes before the announced
release time, no sooner:

Expand Down Expand Up @@ -734,7 +734,7 @@ You're almost done! All that's left to do now is:

#. Update the current stable branch and remove the pre-release branch in the
`Django release process
<https://code.djangoproject.com/#Djangoreleaseprocess>`_ on Trac.
<https://code.djangoproject.com/#Djangoreleaseprocess>`__ on Trac.

#. Update djangoproject.com's download page (`example PR
<https://github.com/django/djangoproject.com/pull/1444>`__).
Expand All @@ -744,7 +744,7 @@ You're almost done! All that's left to do now is:

#. Ensure that the EOL versions are mentioned in the blog post. See
`example announcement
<https://www.djangoproject.com/weblog/2025/apr/02/django-52-released/>`_.
<https://www.djangoproject.com/weblog/2025/apr/02/django-52-released/>`__.

#. Create a tag for the EOL stable branch and delete the stable branch.
Inspect and use the ``scripts/archive_eol_stable_branches.py`` helper.
Expand Down Expand Up @@ -787,7 +787,7 @@ You're almost done! All that's left to do now is:

#. If this was an ``rc`` pre-release, call for translations for the upcoming
release in the `Django Forum - Internationalization category
<https://forum.djangoproject.com/c/internals/i18n/14>`_.
<https://forum.djangoproject.com/c/internals/i18n/14>`__.

Notes on setting the VERSION tuple
==================================
Expand Down
Loading