Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python 개선 제안 한국어 번역

PEP 430 – 기본 온라인 문서를 Python 3으로 마이그레이션하기

Author:
Alyssa Coghlan <ncoghlan at gmail.com>
BDFL-Delegate:
Georg Brandl
Status:
Final
Type:
Informational
Created:
27-Oct-2012

Table of Contents

번역·라이선스 안내

이 비공식 한국어 번역은 원문 Copyright 절의 Public Domain 조건에 따라 제공합니다. 원저자와 공식 원문은 그대로 표시합니다. 수정되지 않은 기준 원문 · 공식 최신판

초록

이 PEP는 사용자가 docs.python.org에 접속할 때 제공되는 Python 문서의 기본 버전을 2.7에서 Python 3.3으로 마이그레이션하기 위한 전략을 제안합니다.

이 제안은 기존 Python 2 문서로 연결되는 딥 링크의 의미를 보존하면서도 Python 3 문서를 기본적으로 제공하고, Python 3 문서가 2등 시민처럼 보이지 않도록 Python 2 및 3 문서를 제공하는 하위 호환성 방안을 제안합니다.

배경

전체 Python 생태계를 Python 2에서 Python 3으로 전환하는 작업이 여전히 진행 중인 가운데, docs.python.org 루트 URL에서 기본적으로 표시되는 버전을 Python 2 문서에서 Python 3 문서로 변경하는 시기와 방법은 주기적으로 제기되는 질문 [1], [2] 중 하나입니다.

주요 우려 사항

모든 마이그레이션 제안은 몇 가지 주요 우려 사항을 해결해야 합니다.

초보자를 혼란스럽게 하지 않기

많은 초보자는 서드파티 리소스를 통해 Python을 학습합니다. 이러한 리소스 중 온라인 리소스가 아닌 것도 많으며, 추가적인 배경 지식과 세부 정보를 위해 python.org 온라인 문서를 참조할 수 있습니다.

중요한 점은 온라인 문서가 업데이트되더라도 “추가된 버전” 및 “변경된 버전” 태그가 일반적으로 사용자가 자신이 사용하는 특정 버전에 맞게 조정하는 데 충분한 정보를 제공한다는 것입니다.

python.org 문서로 연결되는 딥 링크가 Python 2 계열 내에서 간혹 끊어질 수 있지만, 이는 매우 드문 일입니다.

Python 3으로의 마이그레이션은 매우 다른 문제입니다. 이름 변경과 제거로 인해 많은 링크가 끊어질 수 있으며, Python 2 계열에 대한 “추가된 버전” 및 “변경된 버전” 정보가 완전히 사라집니다.

유용한 리소스를 망가뜨리지 않기

python.org의 메일링 리스트 아카이브와 Stack Overflow 같은 질문 및 답변 사이트 등 유용한 Python 리소스가 많이 있으며, 이러한 곳의 링크는 아무리 충분한 사전 공지를 제공하더라도 업데이트될 가능성이 매우 낮습니다.

현재 모든 오래된 게시물과 질문에 대한 답변은 한정되지 않은 URL에서 Python 2 문서를 가져올 것으로 예상하고 docs.python.org로 연결됩니다. Python 3과 관련된 답변의 링크는 경로 구성 요소에 /py3k/를 명시하여 한정합니다.

제안

이 PEP는 5월에 처음 제시된 아이디어 [3]를 기반으로 하며, Python 2에 특정한 딥 링크를 전혀 not migrate하지 않고, docs.python.org에서 사용자에게 제시되는 모든 URL을 관련 릴리스 계열에 맞게 적절히 한정하는 방식을 채택하는 것입니다.

http://docs.python.org의 루트 URL 방문자는 http://docs.python.org/3/로 자동 리디렉션되지만, http://docs.python.org/library/os와 같이 버전별 계층 구조에서 더 깊은 링크는 대신 http://docs.python.org/2/library/os와 같은 Python 2 전용 링크로 리디렉션됩니다.

Python 2 문서의 명시적으로 한정된 경로로 리디렉션될 특정 하위 경로는 다음과 같습니다.

  • /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

기존 /py3k/ 하위 경로는 새로운 /3/ 하위 경로로 리디렉션됩니다.

표시되는 URL

이 방식에 따르면 별칭 지정 및 재작성 규칙을 모두 적용한 후 다음 URL이 사용자에게 표시됩니다.

  • http://docs.python.org/x/*
  • http://docs.python.org/x.y/*
  • http://docs.python.org/dev/*
  • http://docs.python.org/release/x.y.z/*
  • http://docs.python.org/devguide

/x/ URL은 “이 릴리스 시리즈에서 릴리스된 버전의 최신 문서를 제공하십시오”를 의미합니다. 소스 코드 관리 시스템의 관련 유지 관리 브랜치에서 문서를 가져옵니다(이는 Python 2에서는 항상 2.7 브랜치이고, Python 3에서는 현재 3.3입니다). 릴리스 시리즈의 이전 버전과 비교한 차이점은 “버전 추가됨” 및 “버전 변경됨” 표시를 통해 확인할 수 있습니다.

/x.y/ URL은 “이 릴리스의 최신 문서를 제공하십시오”를 의미합니다. 소스 코드 관리 시스템의 관련 유지 관리 브랜치에서 문서를 가져옵니다(현재 개발 중인 버전인 경우에는 기본 브랜치에서 가져옵니다). URL이 사용자의 브라우저에서 실제로 계속 이용 가능하여 쉽게 복사하고 붙여 넣을 수 있다는 점에서 현재 상태와 다릅니다. (현재 릴리스 시리즈에서 최신 버전이 아닌 특정 버전에 대한 참조는 “release” 계층의 특정 유지 관리 버전에 대한 안정적인 URL로 확인되는 반면, 릴리스 시리즈의 현재 최신 버전에 대한 참조는 릴리스 시리즈 URL로 확인됩니다. 따라서 “최신 버전별 URL”을 얻기가 어렵습니다. 항상 수동으로 구성해야 하기 때문입니다).

/dev/ URL은 소스 코드 관리 시스템의 기본 브랜치에 있는 문서를 의미합니다.

/release/x.y.x/ URL은 해당 릴리스의 문서를 릴리스 당시의 상태 그대로 가리킵니다.

개발자 안내서는 버전에 종속되지 않으므로 자체적인 안정적인 /devguide/ URL을 유지합니다.

근거

Python 3에 대한 자신감의 표시로, 한정되지 않은 참조가 Python 3을 의미하도록 전환하려는 요구가 일부 있습니다. 이러한 변경은 많은 것을 중단시키거나, 중단을 피하기 위해 엄청난 작업을 필요로 할 것입니다.

다음과 같은 방법으로 세상을 망가뜨리지 않고도 거의 동일한 효과를 얻을 수 있다고 생각합니다:

  1. 온라인 문서에 대한 미한정 참조(unqualified reference)의 사용을 폐지 예정으로 지정합니다(이러한 참조의 의미는 무기한 보존할 것을 약속하면서)
  2. python.org와 python-dev가 관리하는 모든 링크를 한정 참조(qualified reference)를 사용하도록 갱신합니다(보관된 이메일은 제외)
  3. http://docs.python.org의 루트를 방문하는 사람들을 http://docs.python.org/3.x로 리디렉션합니다

가장 중요한 점은, 이 방식이 기존의 딥 링크(deep link) 동작을 전혀 변경하지 않기 때문에, 딥 링크를 깨뜨릴 위험이 있는 방식이나 미한정 링크를 Python 3으로 리디렉션하기 시작하는 방식에 필요한 기간보다 훨씬 짧은 경고 기간만으로 구현할 수 있다는 것입니다. 이 방식에서 그나마 경고가 필요한 유일한 부분은 “http://docs.python.org/” 랜딩 페이지를 Python 3.3 문서로 리디렉션하는 단계입니다.

네임스페이스는 정말 굉장한 아이디어입니다 - 이런 것을 더 만듭시다.

이 PEP에서 설명하는 접근 방식은 기본 브랜치의 내용에 접근하는 두 가지 방법, 즉 /dev/로 접근하는 방법과 적절한 /x.y/ 참조를 사용하는 방법을 제공한다는 점에 유의하십시오. 이는 의도적인 것으로, 기본 브랜치는 두 가지 다른 목적으로 참조되기 때문입니다:

  • 다음 릴리스의 예정된 기능을 논의할 때 추가 정보를 제공하기 위해서입니다(이 경우 /x.y/ URL이 적절합니다)
  • 버전에 관계없이 개발자가 다음 기능 릴리스의 문서에 접근할 수 있는 안정적인 대상을 제공하기 위해서입니다(이 경우 /dev/ URL이 적절합니다)

구현

docs.python.org의 URL은 CPython 소스 저장소가 아니라 python.org 인프라 팀이 관리하므로, 이 PEP에 담긴 아이디어의 수용과 구현 여부는 해당 팀에 달려 있습니다.

참고 자료