PEP for updating the URL layout on docs.python.org

This commit is contained in:
Nick Coghlan 2012-10-28 00:36:36 +10:00
parent 4ec7327960
commit c42dc66be1
1 changed files with 200 additions and 0 deletions

200
pep-0430.txt Normal file
View File

@ -0,0 +1,200 @@
PEP: 430
Title: Migrating to Python 3 as the default online documentation
Version: $Revision$
Last-Modified: $Date$
Author: Nick Coghlan <ncoghlan@gmail.com>
Status: Draft
Type: Informational
Content-Type: text/x-rst
Created: 27-Oct-2012
Abstract
========
This PEP proposes a strategy for migrating the default version of the
Python documentation presented to users of Python when accessing
docs.python.org from 2.7 to Python 3.3.
It proposes a backwards compatible scheme that preserves the meaning of
existing deep links in to the Python 2 documentation, while still
presenting the Python 3 documentation by default, and presenting the
Python 2 and 3 documentation in a way that avoids making the Python 3
documentation look like a second-class citizen.
Background
==========
With the transition of the overall Python ecosystem from Python 2 to Python 3
still in progress, one question which arises periodically [1_, 2_] is when
and how to handle the change from providing the Python 2 documentation as
the default version displayed at the docs.python.org root URL to providing
the Python 3 documentation.
While efforts are under way [3_] to improve the general version switching
support in the online documentation, this PEP is technically independent
of those improvements.
Key Concerns
============
There are a couple of key concerns that any migration proposal needs to
address.
Don't Confuse Beginners
-----------------------
Many beginners learn Python through third party resources. These resources,
not all of which are online resources, may reference in to the python.org
online documentation for additional background and details.
Importantly, even when the online documentation is updated, the "version
added" and "version changed" tags usually provide enough information for
users to adjust appropriately for the specific version they are using.
While deep links in to the python.org documentation may occasionally break
within the Python 2 series, this is very rare.
Migrating to Python 3 is a very different matter. Many links would break due
to renames and removals, and the "version added" and "version changed"
information for the Python 2 series is completely absent.
Don't Break Useful Resources
----------------------------
There are many useful Python resources out there, such as the mailing list
archives on python.org and question-and-answer sites like Stack Overflow,
where links are highly unlikely to be updated, no matter how much notice
is provided.
Old posts and answers to questions all currently link to docs.python.org
expecting to get the Python 2 documentation at unqualified URLs. Links from
answers that relate to Python 3 are explicitly qualified with ``/py3k/`` in
the path component.
Proposal
========
This PEP (based on an idea originally put forward back in May [4_]) is to
*not migrate* the Python 2 specific deep links at all, and instead adopt a
scheme where all URLs presented to users on docs.python.org are qualified
appropriately with the relevant release series.
Visitors to the root URL at ``http://docs.python.org`` would be automatically
redirected to ``http://docs.python.org/3/``, but links deeper in
the version-specific hierarchy, such as to
``http://docs.python.org/library/os``, would instead be redirected to
a Python 2 specific link such as ``http://docs.python.org/2/library/os``.
The specific subpaths which would be remapped to explicitly qualified
paths for the Python 2 docs are:
* ``/c-api/``
* ``/distutils/``
* ``/extending/``
* ``/faq/``
* ``/howto/``
* ``/library/``
* ``/reference/``
* ``/tutorial/``
* ``/using/``
* ``/whatsnew/``
* ``/about.html``
* ``/bugs.html``
* ``/contents.html``
* ``/copyright.html``
* ``/license.html``
* ``/genindex.html``
* ``/glossary.html``
* ``/py-modindex.html``
* ``/search.html``
The existing ``/py3k/`` subpath would be remapped to the new ``/3/`` subpath.
Presented URLs
--------------
With this scheme, the following URLs would be presented to users after
resolution of any aliasing and rewriting rules:
* ``http://docs.python.org/x/*``
* ``http://docs.python.org/x.y/*``
* ``http://docs.python.org/release/x.y.z/*``
* ``http://docs.python.org/devguide``
The ``/x/`` URLs mean "give me the latest documentation for this release
series``. Differences relative to previous versions in the release series
will be available through "version added" and "version changed" markers.
The ``/x.y/`` URLs mean "give me the latest documentation for this release".
It differs from the status quo in that the URLs will actually remain
available in the user's browser for easy copy and pasting. (Currently,
references to specific versions that are not the latest in their release
series will resolve to a stable URL for a specific maintenance version in
the "release" hierarchy, while the current latest version in the release
series resolves to the release series URL. This makes it hard to get a
"latest version specific URL", since it is always necessary to construct
them manually).
Rationale
=========
There is some desire to switch the unqualified references to mean Python 3
as a sign of confidence in Python 3. Such a move would either break a lot of
things, or else involve an awful lot of work to *avoid* breaking things.
I believe we can get much the same effect without breaking the world by:
1. Deprecating the use of unqualified references to the online
documentation (while promising to preserve the meaning of such
references indefinitely)
2. Updating all python.org and python-dev controlled links to use
qualified references (excluding archived email)
3. Redirecting visitors to the root of ``http://docs.python.org`` to
``http://docs.python.org/3.x``
Most importantly, because this scheme doesn't alter the behaviour of any
existing deep links, it could be implemented with a significantly shorter
warning period than would be required for a scheme that risked breaking
deep links, or started to redirect unqualified links to Python 3. The
only part of the scheme which would require any warning at all is the
step of redirecting the "http://docs.python.org/" landing page to the
Python 3.3 documentation.
Namespaces are one honking great idea - let's do more of those.
Implementation
==============
The URLs on docs.python.org are controlled by the python.org infrastructure
team rather than through the CPython source repo, so acceptance and
implementation of the ideas in this PEP will be up to the team.
References
==========
.. [1] May 2012 discussion
(http://mail.python.org/pipermail/python-dev/2012-May/119524.html)
.. [2] October 2012 discussion
(http://mail.python.org/pipermail/python-ideas/2012-October/017406.html)
.. [3] Issue for easier access to other version of the same docs page
(http://bugs.python.org/issue8040)
.. [4] Using a "/latest/" path prefix
(http://mail.python.org/pipermail/python-dev/2012-May/119567.html)
Copyright
===========
This document has been placed in the public domain.