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