FAQ: 오픈소스 참여방법

Django 프로젝트에 참여하려면 어떻게 시작해야 하나요?

관심을 가져주셔서 고맙습니다! 프로젝트 참여에 대한 문서가 있으니 참고하시기 바랍니다. 제목은 Django에 참여하기입니다.

저는 몇 주전 티켓 시스템에 버그 픽스를 제출했습니다. 그런데 왜 저의 패치가 무시되고 있죠?

걱정마세요. 당신을 무시하는 것이 아닙니다!

“티켓이 무시되는 것”은 “티켓이 아직 미참여 상태에 있는 것”과 다릅니다( 즉 이 둘 사이에는 중요한 차이점이 있습니다). Django 티켓 시스템은 수백 개의 오픈 티켓을 포함하고 있으며, 최종 사용자의 입장에서 보면 각각 다양한 수준의 기능상 임팩트를 가지고 있습니다. 또한 Django 개발자들은 리뷰하고 우선순위를 매겨야 합니다.

무엇보다도 Django 프로젝트에 참여하는 모든 이는 자발적 참여자입니다. 결론적으로, 이 프레임워크에 투자하는 시간은 제한적입니다. 그리고 투자할 수 있는 여가시간은 주 단위로 바뀝니다. 만약에 바쁜 경우라면 원하는 만큼 투자할 수 없겠죠.

티켓이 오랫동안 체크인 되지 않고 걸려있는 일이 일어나지 않도록 하는 최선의 방법은, 코드의 내용을 잘 모르는 사람이라 할지라도 문제를 이해하고 수정사항을 확인하기 아주 쉽게 만드는 것입니다.

  • 버그를 재현하기 위한 명확한 지침이 있는가? 만약 이것이 특정 모듈에 대한 의존성을 갖거나, contrib 모듈 또는 특정 데이터베이스를 건드리는 경우라면, 그에 친숙하지 않은 사람이라 할 지라도 이해하기 쉬운 지침을 제공하는가?
  • 티켓에 몇개의 패치가 포함되어 있는 경우, 각 패치가 하는 역할이 명확한가? 즉, 어떠한 것이 무시되어야 하며, 또 어떠한 것이 중요한지 명확한가?
  • 패치는 유닛테스트를 포함하고 있는가? 만약에 포함하고 있지 않다면, 그 이유에 대한 명백한 이유가 있는가? 테스트는 문제가 무엇인지 간단명료하게 표현하며, 패치가 실제로 문제를 해결함을 보여주는가?

만약 당신이 제출한 패치를 Django에 포함하지 않는다 할지라도 이를 무시하지는 않으며, 다만 티켓을 종결(close)시킬 것입니다. 그러므로 당신의 티켓이 계속 오픈 상태로 있다면 그것은 무시되는 것이 아니라, 단지 저희가 아직까지도 티켓을 처리할 시간이 없다는 의미입니다.

언제 그리고 어떻게 핵심 팀에게 제가 작업한 패치에 대해서 상기시켜 줄 수 있나요?

주의를 끌 수 있는 한가지 방법은 메일링리스트에 정중하고 시의적절한 메시지를 남기는 것입니다. 정확한 시점을 결정하기 위해서, 당신은 스케줄을 유심히 보아야 할 것입니다. 만약에 핵심 개발자가 기능구현 마감시점 또는 planning phase를 관리하는 시점이라면, 당신의 글은 관심을 받기 힘들겁니다. 그러나, 핵심 개발자가 특정버그를 잡는 시점이라면 당신은 충분히 관심을 받을 수 있습니다.(이 시점은 버그가 잡히기 직전 또는 베타릴리즈가 다가올 때등을 예로 들 수 있음)

IRC 역시 좋은 방법이 될 수 있으며, 다시 강조하지만 가능한 전략적이고 시의적절하게 대처하세요. 예를 들자면, 버그 스프린트 등이 정말로 좋은 타이밍입니다.

또 하나의 방법은 여러개의 연관성있는 티켓들을 한꺼번에 제시하는 것입니다. 핵심 개발자가 버그를 잡기위해서 작업하는 부분이 한동안 보지 못했던 부분인 경우가 있습니다. 이런 경우 모든 상세코드가 어떻게 잘 동작하는지 기억해 내기 위해 시간이 조금 걸릴 수 있습니다. If you collect several minor bug fixes together into a similarly themed group, you make an attractive target, as the cost of coming up to speed on an area of code can be spread over multiple tickets.

코어개발자에게 개인적으로 메일을 쓰거나 동일한 이슈에 여러번 반복적으로 문의하는 것을 삼가해주세요. 이러한 행동으로 말미암아 추가적인 관심을 끌기 어렵게 만들 수 있습니다. 당신이 버그가 수정이 되려면 이러한 행동은 삼가해 주시기 바랍니다.

제가 여러번 말씀드렸지만 저의 패치를 계속 무시하시네요!

진지하게 말씀드립니다. 정말로 저희는 당신을 무시하지 않습니다. 만약 당신의 패치가 Django에 포함되지 않는다면, 저희는 티켓을 종결할 것입니다. 모든 티켓들은 우선순위가 매겨집니다, 즉 특정 티켓들은 또 다른 티켓보다 먼저 리뷰될 수 있습니다.

특정 버그 하나에 얼마나 많은 사람이 영향을 받느냐에 따라서 그 버그에 대한 우선 순위가 매기질 수 있습니다. 일반적으로 많은 사람에게 영향을 줄 수 있는 버그는 그 외의 버그들 보다 우선순위가 높아 질겁니다.

특정 버그가 다른 특정한 문제의 한 증상인 경우, 그 버그는 한동안 무시될 수 있습니다. 저희가 코딩하고 테스트하고 수많은 패치들을 적용하는 동안에도 종종 좋은 솔류션들이 적용될 수 있습니다. 만약 특정 컴포넌트에 대한 리빌드(rebuild) 또는 리팩터(refactor)가 진행되는 중이라면, 이와 관련된 컴퍼넌트와 관련된 버그들은 많은 주목을 받지는 못할 것입니다. 다시한번 말하지만, 이것은 단지 한정된 자원때문에 발생하는 우선순위의 문제입니다. 리빌드(rebuild)에 집중함으로써, 모든 작은 버그들이 한꺼번에 종결(close)될 수 있으며, 바라건대 이로써 향후에 발생할 작은 버그들이 양산되는 것을 막아주기도 합니다.

이유가 무엇이건, 명심할 것이 있습니다. 당신이 특정 버그를 정기적으로 보고하는 동안에도, 그것이 모든 개별 Django사용자들이 동일한 버그를 만나게 된다는 의미는 아니다. 사용자들은 각각 다른 방식으로, 다른 조건아래 다른 파트에 부하(스트레스)를 주면서 Django를 사용합니다. 우리가 우선순위를 결정할때는, 일반적으로 전체 커뮤니티의 니즈를 최대한 고려합니다. 특정사용하만을 위해서 결정하지 않습니다. 이는 당신의 이슈가 중요하지 않다는 이야기가 아닙니다 - 저희는 항상 제한된 시간안에 단지 한명 보다는 10명을 기쁘게 해주려고 합니다.