버그 리포트와 기능 개발 요청

중요

보안 관련 문제는 ``security@djangoproject.com``**으로만** 보고해 주시기 바랍니다. 이 비공개 메일링 리스트는 오랫동안 활동해 온 신뢰받는 Django 개발자들에게만 열려 있으며, 아카이브는 공개되지 않습니다. 자세한 내용은 :doc:`our security policies </internals/security>`을 확인하세요.

버그 리포팅

`ticket tracker <https://code.djangoproject.com/>`_에 버그를 제보하기 전에 다음 사항을 고려해 주세요.

  • 티켓 트래커에서 searching 또는 `custom queries`_를 사용하여 이미 동일한 버그 보고가 제출되지 않았는지 확인하세요.

  • 지원 관련 질문에는 티켓 시스템을 사용하지 마세요. 대신 Django Forum`_ 또는 `Django Discord server`_를 이용하세요.

  • `Django Forum`_에서 합의 없이 “wontfix”로 표시된 이슈를 다시 열지 마세요.

  • new feature ideas GitHub 프로젝트를 통해 이슈를 진행하지 않고 “needsnewfeatureprocess”로 표시된 이슈를 다시 열지 마세요.

  • 긴 논의에는 티켓 트래커를 사용하지 마세요. 내용이 파악하기 어려워질 수 있습니다. 특정 티켓에 대한 논의가 길어질 경우, 논의를 `Django Forum`_으로 옮겨주세요.

잘 쓰여진 버그 리포트들은 믿을수없을 정도로 유용합니다. 그러나 어떠한 버그 트래킹 시스템 작업들을 사용하는것들도 일정량의 오버헤드가 수반되므로 티켓 트래커를 최대한 유용하게 보관해 주시기 바랍니다

  • 당신의 이슈가 잘 알려진 문제인지 보고싶다면 FAQ 1 읽어주세요

  • 보고 있는 내용이 버그인지 확신이 서지 않는다면 우선 Django Forum 또는 `Django Discord server`_에 문의하세요.

  • 완전하고, 재현가능하고, 특정한 버그 리포트를 쓰시오. 문제에 대한 명확하고 간결한 설명과 문제를 재현하기 위한 지시사항을 포함해야 합니다. 코드 스니펫, 테스트 사례, 예외 백트레이스, 스크린샷 등과 같은 디버그 정보를 최대한 많이 추가세요. 작고 멋진 테스트 케이스는 버그를 신속하게 확인할 수 있는 유용한 방법을 제공하기 때문에 버그를 보고하는 가장 좋은 방법입니다.

  • 단순히 버그 보고서를 제출했다는 사실을 알리기 위한 목적으로 `Django Forum`_에 글을 게시하지 마세요. 모든 티켓은 |django-updates|라는 다른 메일링 리스트로 전송되며, 이 목록은 개발자와 관심 있는 커뮤니티 구성원이 확인하고 있습니다. 따라서 티켓이 제출되는 즉시 확인할 수 있습니다.

생성한 티켓의 처리 과정을 이해하려면 :ref:`triage-workflow`를 참고하세요.

사용자 인터페이스 버그 보고

버그가 시각적인 요소에 영향을 미치는 경우, 추가로 따라야 할 몇 가지 지침이 있습니다.

  • 티켓에는 최소한의 테스트 케이스를 보여줄 수 있도록 스크린샷을 포함하세요. 브라우저의 과도한 개인 설정이 아닌, 문제 자체가 드러나는 화면을 보여주세요.

  • 스틸컷을 이용해 문제를 보이기가 어려울경우, 간단한 스크린 캐스트를 캡처하는것을 고려하십시오. 소프트웨어에서 허용하는 경우 화면의 관련 영역만 캡처합니다.

  • Django UI의 모양이나 동작을 변경하는 패치를 제공하는 경우, 반드시 변경 전 변경 후 스크린샷이나 스크린캐스트를 첨부해야 합니다. 이러한 자료가 없는 티켓은 분류자가 빠르게 평가하기 어렵습니다.

  • 스크린샷이 리포팅에 필요한 다른 양식들을 면제해주지는 않습니다. 스크린샷에 보이는 행위를 재현하는 방법에 대한 URL, 코드 조각 및 단계적 지시들을 포함해야 합니다.

  • 관심 있는 사람들이 티켓을 찾을 수 있도록 티켓에 UI/UX 플래그를 설정해야 합니다.

  • 접근성과 관련된 문제인 경우, 관련 accessibility standard 링크를 포함해 주세요.

기능 요청

우리는 항상 Django를 더 좋게 만들기 위해 노력하고 있고, 이 부분에 있어 당신의 기능 요청은 매우 중요합니다. 다음은 요청을 가장 효과적으로 기능을 요청하는 방법에 대한 몇 가지 팁입니다

  • 제안하는 기능이 Django 코어의 변경을 필요로 하는지 검토해 보세요. 다른 데이터베이스 엔진 지원과 같이 독립적인 애플리케이션이나 모듈로 개발 가능한 아이디어라면, 우선 독립적으로 개발해 볼 것을 권장합니다. 이후 해당 프로젝트가 커뮤니티의 충분한 지지를 얻게 된다면, Django에 포함하는 방안을 고려하겠습니다.

  • 티켓 트래커가 아닌 new feature ideas GitHub 프로젝트의 Idea 열에 새 항목을 추가하여 기능을 제안하세요. 이곳은 커뮤니티와 :ref:`Steering Council <steering-council>`이 Django 생태계를 위한 새로운 아이디어를 검토하는 곳입니다. 제안 내용이 규모가 크거나 복잡할수록 이 단계는 특히 중요합니다. 개발을 시작하기 전에 Django 코어의 중요한 변경 사항은 충분히 논의하는 것을 선호합니다. 경우에 따라서는 기능이 Django 릴리스 주기와 독립적으로 발전할 수 있는 서드파티 패키지로 구현하는 것이 더 적합할 수 있습니다.

  • 누락된 기능이 무엇인지, 그리고 어떻게 구현하고 싶은지 명확하고 간결하게 설명하십시오. 가능한 경우 예제 코드(함수형태가 아니어도 괜찮음)를 포함하십시오.

  • 이 기능을 원하는 *이유*에 대해 설명합니다. 최소한의 사용 경우를 설명하면 다른 사람이 해당 사용 사례가 어디에 적합한지, 그리고 동일한 사용 사례를 달성하는 다른 방법이 이미 있는지 이해하는 데 도움이 될 것입니다.

이곳도 확인하세요: 새로운 기능을 문서화합니다..

성능 최적화 요청

성능 저하 보고나 성능 최적화 제안 시에는 티켓 분류자가 재현할 수 있도록 벤치마크와 실행 명령을 제공해야 합니다.

Django의 기존 벤치마크에 대한 자세한 내용은 :ref:`django-asv-benchmarks`에서 확인할 수 있습니다.

의사 결정 방법

가능한 한 대략적인 합의를 지향합니다. new feature ideas GitHub 프로젝트의 이슈에서는 커뮤니티 피드백을 확인하기 위해 이모지 반응을 사용하며, 각 이모지의 의미는 다음과 같습니다.

  • 👍: 이 기능을 지지하며 사용할 의향이 있습니다.

  • 👎: 이 기능에 반대하거나, 사용자 또는 Django에 문제가 발생할 수 있다고 생각합니다.

  • 😕: 이 기능에 대해 특별한 의견은 없습니다.

  • 🎉: 이 기능은 구현이 간단하며 유용해 보입니다.

:ref:`Steering Council <steering-council>`은 프로젝트의 아이디어를 정기적으로 검토하고, 커뮤니티의 지지를 받은 아이디어를 다음 단계로 진행합니다.

  • 아이디어

  • 승인 - 아이디어 구체화 - 팀 구성

  • 진행 중

  • 해결안 구현 - 검토 - 피드백

  • 유지관리자 필요(Django에 한함)

  • 완료

기능 아이디어나 Django의 방향에 대한 논의가 Django Forum에서 이루어지는 경우도 있습니다. 이러한 논의에는 비공식 투표가 포함될 수 있으며, Apache에서 고안되어 Python에서도 사용되는 투표 방식을 따릅니다. 이 투표는 +1, +0, -0, -1로 표현됩니다. 대략적으로 각 투표의 의미는 다음과 같습니다.

  • +1: “저는 그 아이디어를 매우 좋아하고 그것에 강하게 전념하고 있습니다.”

  • +0: “괜찮을 것 같네요.”

  • -0: “저는 흥미롭진 않지만, 반대하지는 않을 것입니다.”

  • : “저는 그 생각이 현실로 바뀌는 것을 보는 것에 강하게 반대하며 매우 불행할 것입니다.”

이러한 투표는 비공식적이지만 그 결과를 매우 중요하게 받아들입니다. 적절한 투표 기간을 거친 후 명확한 합의가 이루어지면 그 결과를 따릅니다.

How to test pre-release versions of Django

Testing pre-releases is a great way to contribute to Django. Early testers help catch bugs before the final release, ensuring a smoother upgrade experience for everyone.

사전 요구 사항

Before testing a pre-release, it is important that your project is running smoothly on the latest stable release of Django. That way, any regressions can be attributed to the pre-release. See the Django를 최신 버전으로 업그레이드하는 방법 guide for instructions on getting up to date.

To ensure your project is ready, you should also:

  • Read the release notes: Review the Release notes for the upcoming version to learn about upgrade paths for deprecated features or about minor backward-incompatible changes.

  • Resolve deprecation warnings: Run your tests with deprecation warnings enabled to become aware of required follow-up actions:

    $ python -Wa manage.py test
    

Testing your project

You can install the latest pre-release using pip:

$ python -m pip install --pre Django

Once installed, run your project’s test suite. Rather than just checking if tests pass, try the following:

  • Check dependency support: Determine whether major dependencies support the new version by checking Django version classifiers on PyPI. Since those projects also value early bug reports, don’t let a lack of support prevent you from testing.

  • Monitor performance: You can run your tests with the test --durations flag to identify potential performance regressions.

  • Automate tests in CI: Consider running your Continuous Integration (CI) pipeline with the pre-release version.

  • Test manually: While automated tests are great, manually testing your application’s main workflows is an important part of verifying compatibility with a new release.

Reporting issues

If you discover a bug, please report it via the Django issue tracker so it can be fixed before the final release. When creating the ticket, be sure to set the Django version field to the exact pre-release version you are testing.

If you suspect a regression, it’s helpful to report the specific commit that caused it. See 회귀 분석 이등분 for instructions.

You can also discuss any issues or share feedback in the Pre-releases category on the Django Forum.