Python 변경하기¶
때때로 Python 언어나 표준 라이브러리를 변경하거나 개선하려는 아이디어가 제시됩니다. 이 페이지에서는 변경 사항을 제안하는 방법과 그 과정에서 예상할 수 있는 일을 설명합니다.
고려 사항¶
먼저 Python을 변경하기는 어렵다는 점을 이해하십시오. 언어가 변경되면 모든 현재와 미래의 Python 프로그래머가 결국 제안하려는 변경 사항을 알아야 합니다. 책을 개정하고 코드를 변경해야 하며, 새로운 작업 방식을 익혀야 합니다. Python 변경은 절대로 가볍게 결정되지 않습니다.
하위 호환성은 중요한 고려 사항입니다. 기존 Python 코드는 계속 작동해야 합니다. 이 규칙에도 예외는 있지만 매우 드물며, 변경의 이점이 기존 코드를 손상시키는 비용보다 훨씬 클 때만 허용됩니다.
언어 변경은 중대한 일이므로 모든 변경 사항은 많은 Python 사용자에게 유익해야 합니다. 변경 사항이 소수의 Python 개발자에게만 도움이 된다면 적용되지 않습니다. 아이디어가 Python 커뮤니티의 많은 구성원에게 유용할지 알아보는 좋은 방법은 Discourse의 아이디어 카테고리에서 논의하는 것입니다. Python의 표준 라이브러리에서 제안한 변경 사항의 이점을 얻을 수 있는 코드의 예를 찾아볼 수도 있습니다.
중요
이러한 모든 이유로 Python에 제안되는 변경 사항은 대부분 거부됩니다. 그렇다고 해서 변경 사항을 제안해서는 안 된다는 의미는 아닙니다. 대안을 살펴보고 커뮤니티의 피드백을 받는 것이 유용할 수 있습니다. 다만 변경 사항을 승인받기는 어렵다는 점을 알아두십시오. 이를 개인적으로 받아들이지 마십시오.
새로운 기능 및 언어 변경 사항 제안하기¶
변경 사항을 제안하는 과정에는 다음 단계가 포함됩니다.
아이디어를 자세히 설명하십시오.
아이디어에 관한 논의에 참여하십시오.
드물게 아이디어가 공식 제안 단계로 발전합니다.
아이디어 설명하기¶
Discourse의 아이디어 카테고리는 새로운 기능과 언어 변경 사항을 논의하기 위해 특별히 마련되었습니다. 그곳에서 새 주제로 제안하십시오.
제안은 상세해야 합니다. 어떤 변경을 하려는지, 왜 그 변경을 하려는지, 그리고 그 변경이 Python 사용자에게 어떤 이점을 제공하는지 설명하십시오. 구체적으로 작성하십시오. 변경이 기존 코드에 미치는 영향을 고려했음을 보여 주십시오.
다음은 하지 말아야 할 사항입니다:
아이디어를 Python 개선 제안서(PEP) 형식으로 작성하지 마십시오. 어떤 정보를 포함해야 하는지 판단하는 지침으로 PEP 템플릿을 사용하는 것은 좋지만, 아이디어가 추가 검토 대상으로 채택되기 전에는 완전한 PEP를 작성하려고 하지 마십시오.
제안하는 변경 사항의 목록을 작성하지 마십시오. 각 아이디어는 별도로 논의해야 합니다. 변경을 제안하는 것은 상당한 노력이 필요한 작업입니다. 각 제안에 시간을 들여야 합니다. 성의 없이 작성된 목록은 진지하게 받아들여지지 않습니다.
아이디어의 타당성을 설명할 때 다음은 변경할 좋은 이유가 아닙니다:
“다른 언어에서는 이런 방식으로 작동합니다.” 언어마다 다릅니다. 한 언어에서 잘 작동하는 방식이 Python에서는 잘 작동하지 않을 수 있으며, Python에 이미 비슷한 작업을 수행하는 방법이 있을 수도 있습니다.
“있으면 좋을 것입니다.” 이는 너무 모호합니다. 변경이 가져올 이점을 구체적으로 설명하고 비용도 함께 고려하십시오.
다음은 해야 할 사항입니다:
아이디어가 이전에 제안된 적이 있는지 조사하십시오. 과거에 제안되었다가 거부된 제안이 많이 있습니다. 아이디어에 이전 논의 이력이 있다면 그 논의를 읽고 거부된 이유를 확인하십시오. 이전에 거부된 아이디어는 채택될 가능성이 특히 낮습니다. 이전 논의에서 제기된 우려를 해소할 수 있다면 제안에서 이를 언급하십시오.
다른 아이디어가 어떻게 제시되는지 살펴보십시오. 이는 제안을 구체화하는 데 도움이 됩니다.
어떤 종류의 우려가 제기되고 어떤 반론에 답해야 하는지 이해하기 위해 다른 아이디어를 읽어 보십시오. 이러한 우려를 미리 해소할 수 있다면 제안이 더 설득력 있어집니다.
아이디어를 완전히 설명하고 변경이 가져올 모든 영향을 고려했음을 보여 줄 수 있도록 충분한 세부 정보를 제공하십시오. 간결성과 완전성 사이에서 적절한 균형을 유지하십시오. 필요한 정보를 모두 포함한다면 짧은 제안이 논의하기 더 쉽습니다.
토론에 참여하십시오.¶
제안을 게시하면 사람들이 응답할 것입니다. 토론을 계속하고, 질문에 답하며, 반대 의견에 대응해야 합니다. 이는 절차의 중요한 부분입니다. 다른 사람들의 관점은 아이디어가 미칠 전체적인 영향을 살펴보고 미처 고려하지 못한 장점이나 약점을 찾는 데 도움이 됩니다.
거의 항상 어느 정도의 반대에 부딪히게 됩니다. 실망하거나 개인적인 일로 받아들이지 마십시오. 관련 PEP Index의 긴 Withdrawn and Rejected PEPs 목록이 보여 주듯이, 그리고 성숙한 프로그래밍 언어에 걸맞게 Python에 중대한 변경 사항을 도입하는 일은 간단하지 않습니다.
선의로 토론에 참여하십시오. 토론의 목표는 서로 상충하는 사안들 사이에서 최선의 균형을 찾는 것입니다. 아이디어에 가치가 있다면 토론을 통해 이를 다듬고 더욱 탄탄하게 만들 수 있습니다. 아이디어에 결함이 있다면 토론을 통해 이를 파악하여 해결하거나 다음 단계로 넘어갈 수 있습니다. 토론이 생산적으로 진행되도록 하고, 개인이 아니라 사안에 집중하십시오.
코어 팀 구성원들은 언어와 설계상의 고려 사항을 잘 알고 있으므로 이들과 토론하는 것이 특히 유용합니다. 제안이 PEP 단계에 이르면 코어 팀 구성원 한 명이 후원자로 필요합니다. 때로는 이들의 의견이 서로 다르거나 단지 확신하지 못할 수도 있습니다. 명확하게 긍정적인 분위기가 형성되지 않으면 Status Quo Wins a Stalemate원칙이 적용됩니다.
아이디어가 받아들여지지 않더라도 토론은 자신과 다른 사람들이 Python의 설계를 더 잘 이해하고 향후 제안에 참고하는 데 도움이 될 수 있습니다.
공식 제안¶
아이디어가 긍정적인 반응을 얻으면 누군가가 이를 issue tracker에 기능 요청으로 게시하거나, 더 큰 변경 사항이라면 PEP 절차에 따라 PEP로 작성하자고 제안할 것입니다. 축하합니다!
PEP 절차¶
일반 Python 커뮤니티의 호응을 얻을 만한 제안이 마련되면 변경 사항을 공식적으로 제안하기 위한 PEP 절차를 시작할 수 있습니다. 이 절차는 코어 팀에서 후원자를 찾는 것부터 시작합니다. PEP와 PEP 절차에 관한 정보는 PEP 1을, 예시는 PEP Index를 참조하십시오.
PEP가 채택되면 언어 변경 사항이 향후 Python 릴리스에 도입됩니다. 그렇지 않으면 향후 유사한 언어 변경을 제안할 사람들에게 참고가 되도록 PEP가 설명과 함께 거부된 것으로 기록됩니다.