PEP for updating the URL layout on docs.python.org
This commit is contained in:
parent
4ec7327960
commit
c42dc66be1
|
@ -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.
|
Loading…
Reference in New Issue