{"title":"버그 리포트와 기능 개발 요청","version":"3.0","locale":"ko","docname":"internals/contributing/bugs-and-features","url":"/ko/3.0/internals/contributing/bugs-and-features/","canonical":"https://djangodocs.dev/ko/3.0/internals/contributing/bugs-and-features/","summary":"중요 보안 관련 이슈는 “반드시” security @ djangoproject . com . 에만 연락 주시기 바랍니다. 이는 쟝고 개발자들 중에서도 최고 수준 개발자들에게만 오랫동안 열려 있는 비공개 목록이며, 이에 대한 내용은 대중에 공개되지 않습니다. 좀 더 상세한 정보들은 :doc:`…","html":"<h1>버그 리포트와 기능 개발 요청<a class=\"heading-anchor\" href=\"#reporting-bugs-and-requesting-features\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<aside class=\"admonition admonition-important\">\n<p class=\"admonition-title\">중요</p>\n<p>보안 관련 이슈는 “반드시” <a class=\"reference external\" href=\"mailto:security&#37;&#52;&#48;djangoproject&#46;com\">security<span>&#64;</span>djangoproject<span>&#46;</span>com</a>. 에만 연락 주시기 바랍니다. 이는 쟝고 개발자들 중에서도 최고 수준 개발자들에게만 오랫동안 열려 있는 비공개 목록이며, 이에 대한 내용은 대중에 공개되지 않습니다. 좀 더 상세한 정보들은  :doc:` 우리의 보안 정책 &lt;/internals/security&gt;` 문서를 참조하시기 바랍니다.</p>\n</aside>\n<p>그렇지 않으면,  <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>ticket tracker &lt;<a class=\"reference external\" href=\"https://code.djangoproject.com/\">https://code.djangoproject.com/</a>&gt;`_에 버그를 보고하거나 새로운 기능을 요청할 때, 다음과 같은 사항을 고려해주시기 바랍니다.</p>\n<ul class=\"simple\">\n<li><p>누군가 이미 버그나 기능요청을 티켓 트래커에  <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>searching`_나 진행중인 <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>custom queries`_로 제출하지 않았는지를 확인합니다.</p></li>\n<li><p>지원 요청 질문들을 티켓시스템에 사용하지 마십시오. <a class=\"reference internal\" href=\"/ko/3.0/internals/mailing-lists/#django-users-mailing-list\"><span class=\"std std-ref\">django-users</span></a> 리스트나, <a class=\"reference external\" href=\"irc://irc.freenode.net/django\">#django</a> IRC채널을 이용하시기 바랍니다.</p></li>\n<li><p>Don’t reopen issues that have been marked “wontfix” without finding consensus\nto do so on <a class=\"reference internal\" href=\"/ko/3.0/internals/mailing-lists/#django-developers-mailing-list\"><span class=\"std std-ref\">django-developers</span></a>.</p></li>\n<li><p>Don’t use the ticket tracker for lengthy discussions, because they’re\nlikely to get lost. If a particular ticket is controversial, please move the\ndiscussion to <a class=\"reference internal\" href=\"/ko/3.0/internals/mailing-lists/#django-developers-mailing-list\"><span class=\"std std-ref\">django-developers</span></a>.</p></li>\n</ul>\n<section id=\"reporting-bugs\">\n<span id=\"id1\"></span><h2>버그 리포팅<a class=\"heading-anchor\" href=\"#reporting-bugs\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Well-written bug reports are <em>incredibly</em> helpful. However, there’s a certain\namount of overhead involved in working with any bug tracking system so your\nhelp in keeping our ticket tracker as useful as possible is appreciated. In\nparticular:</p>\n<ul class=\"simple\">\n<li><p><strong>Do</strong> read the <a class=\"reference internal\" href=\"/ko/3.0/faq/\"><span class=\"doc\">FAQ</span></a> to see if your issue might\nbe a well-known question.</p></li>\n<li><p><strong>Do</strong> ask on <a class=\"reference internal\" href=\"/ko/3.0/internals/mailing-lists/#django-users-mailing-list\"><span class=\"std std-ref\">django-users</span></a> or <a class=\"reference external\" href=\"irc://irc.freenode.net/django\">#django</a> <em>first</em> if you’re not sure if\nwhat you’re seeing is a bug.</p></li>\n<li><p><strong>Do</strong> write complete, reproducible, specific bug reports. You must\ninclude a clear, concise description of the problem, and a set of\ninstructions for replicating it. Add as much debug information as you can:\ncode snippets, test cases, exception backtraces, screenshots, etc. A nice\nsmall test case is the best way to report a bug, as it gives us a\nhelpful way to confirm the bug quickly.</p></li>\n<li><p><strong>Don’t</strong> post to <a class=\"reference internal\" href=\"/ko/3.0/internals/mailing-lists/#django-developers-mailing-list\"><span class=\"std std-ref\">django-developers</span></a> only to announce that you have filed a\nbug report. All the tickets are mailed to another list, <a class=\"reference internal\" href=\"/ko/3.0/internals/mailing-lists/#django-updates-mailing-list\"><span class=\"std std-ref\">django-updates</span></a>,\nwhich is tracked by developers and interested community members; we see them\nas they are filed.</p></li>\n</ul>\n<p>작성하신 티켓의 라이프사이클을 확인하시려면 다음 문서를 참조해 주세요 <a class=\"reference internal\" href=\"/ko/3.0/internals/contributing/triaging-tickets/\"><span class=\"doc\">Triaging tickets</span></a>.</p>\n</section>\n<section id=\"reporting-user-interface-bugs-and-features\">\n<h2>사용자 인터페이스 와 기능 버그 리포팅<a class=\"heading-anchor\" href=\"#reporting-user-interface-bugs-and-features\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>If your bug or feature request touches on anything visual in nature, there\nare a few additional guidelines to follow:</p>\n<ul class=\"simple\">\n<li><p>Include screenshots in your ticket which are the visual equivalent of a\nminimal testcase. Show off the issue, not the crazy customizations\nyou’ve made to your browser.</p></li>\n<li><p>If the issue is difficult to show off using a still image, consider\ncapturing a <em>brief</em> screencast. If your software permits it, capture only\nthe relevant area of the screen.</p></li>\n<li><p>If you’re offering a patch which changes the look or behavior of Django’s\nUI, you <strong>must</strong> attach before <em>and</em> after screenshots/screencasts.\nTickets lacking these are difficult for triagers to assess quickly.</p></li>\n<li><p>Screenshots don’t absolve you of other good reporting practices. Make sure\nto include URLs, code snippets, and step-by-step instructions on how to\nreproduce the behavior visible in the screenshots.</p></li>\n<li><p>Make sure to set the UI/UX flag on the ticket so interested parties can\nfind your ticket.</p></li>\n</ul>\n</section>\n<section id=\"requesting-features\">\n<h2>기능 요청<a class=\"heading-anchor\" href=\"#requesting-features\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>We’re always trying to make Django better, and your feature requests are a key\npart of that. Here are some tips on how to make a request most effectively:</p>\n<ul class=\"simple\">\n<li><p>Make sure the feature actually requires changes in Django’s core. If your\nidea can be developed as an independent application or module — for\ninstance, you want to support another database engine — we’ll probably\nsuggest that you develop it independently. Then, if your project gathers\nsufficient community support, we may consider it for inclusion in Django.</p></li>\n<li><p>First request the feature on the <a class=\"reference internal\" href=\"/ko/3.0/internals/mailing-lists/#django-developers-mailing-list\"><span class=\"std std-ref\">django-developers</span></a> list, not in the\nticket tracker. It’ll get read more closely if it’s on the mailing list.\nThis is even more important for large-scale feature requests. We like to\ndiscuss any big changes to Django’s core on the mailing list before\nactually working on them.</p></li>\n<li><p>Describe clearly and concisely what the missing feature is and how you’d\nlike to see it implemented. Include example code (non-functional is OK)\nif possible.</p></li>\n<li><p>Explain <em>why</em> you’d like the feature. In some cases this is obvious, but\nsince Django is designed to help real developers get real work done,\nyou’ll need to explain it, if it isn’t obvious why the feature would be\nuseful.</p></li>\n</ul>\n<p>If there’s a consensus agreement on the feature, then it’s appropriate to\ncreate a ticket. Include a link the discussion on <a class=\"reference internal\" href=\"/ko/3.0/internals/mailing-lists/#django-developers-mailing-list\"><span class=\"std std-ref\">django-developers</span></a> in the\nticket description.</p>\n<p>As with most open-source projects, code talks. If you are willing to write the\ncode for the feature yourself or, even better, if you’ve already written it,\nit’s much more likely to be accepted. Fork Django on GitHub, create a feature\nbranch, and show us your work!</p>\n<p>See also: <a class=\"reference internal\" href=\"/ko/3.0/internals/contributing/writing-documentation/#documenting-new-features\"><span class=\"std std-ref\">Documenting new features</span></a>.</p>\n</section>\n<section id=\"how-we-make-decisions\">\n<span id=\"id2\"></span><h2>How we make decisions<a class=\"heading-anchor\" href=\"#how-we-make-decisions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Whenever possible, we strive for a rough consensus. To that end, we’ll often\nhave informal votes on <a class=\"reference internal\" href=\"/ko/3.0/internals/mailing-lists/#django-developers-mailing-list\"><span class=\"std std-ref\">django-developers</span></a> about a feature. In these votes we\nfollow the voting style invented by Apache and used on Python itself, where\nvotes are given as +1, +0, -0, or -1. Roughly translated, these votes mean:</p>\n<ul class=\"simple\">\n<li><p>+1: “I love the idea and I’m strongly committed to it.”</p></li>\n<li><p>+0: “Sounds OK to me.”</p></li>\n<li><p>-0: “I’m not thrilled, but I won’t stand in the way.”</p></li>\n<li><p>-1: “I strongly disagree and would be very unhappy to see the idea turn\ninto reality.”</p></li>\n</ul>\n<p>Although these votes on <a class=\"reference internal\" href=\"/ko/3.0/internals/mailing-lists/#django-developers-mailing-list\"><span class=\"std std-ref\">django-developers</span></a> are informal, they’ll be taken very\nseriously. After a suitable voting period, if an obvious consensus arises we’ll\nfollow the votes.</p>\n<p>However, consensus is not always possible. If consensus cannot be reached, or\nif the discussion towards a consensus fizzles out without a concrete decision,\nthe decision may be deferred to the <a class=\"reference internal\" href=\"/ko/3.0/internals/organization/#technical-board\"><span class=\"std std-ref\">technical board</span></a>.</p>\n<p>Internally, the technical board will use the same voting mechanism. A\nproposition will be considered carried if:</p>\n<ul class=\"simple\">\n<li><p>There are at least three “+1” votes from members of the technical board.</p></li>\n<li><p>There is no “-1” vote from any member of the technical board.</p></li>\n</ul>\n<p>Votes should be submitted within a week.</p>\n<p>Since this process allows any technical board member to veto a proposal, a\n“-1” vote should be accompanied by an explanation of what it would take to\nconvert that “-1” into at least a “+0”.</p>\n<p>Votes on technical matters should be announced and held in public on the\n<a class=\"reference internal\" href=\"/ko/3.0/internals/mailing-lists/#django-developers-mailing-list\"><span class=\"std std-ref\">django-developers</span></a> mailing list.</p>\n</section>","rootId":"reporting-bugs-and-requesting-features","toc":[{"title":"버그 리포팅","anchor":"reporting-bugs","children":[]},{"title":"사용자 인터페이스 와 기능 버그 리포팅","anchor":"reporting-user-interface-bugs-and-features","children":[]},{"title":"기능 요청","anchor":"requesting-features","children":[]},{"title":"How we make decisions","anchor":"how-we-make-decisions","children":[]}],"breadcrumbs":[{"docname":"internals/index","title":"Django internals","url":"/ko/3.0/internals/"},{"docname":"internals/contributing/index","title":"Contributing to Django","url":"/ko/3.0/internals/contributing/"}],"prev":{"docname":"internals/contributing/new-contributors","title":"Advice for new contributors","url":"/ko/3.0/internals/contributing/new-contributors/"},"next":{"docname":"internals/contributing/triaging-tickets","title":"Triaging tickets","url":"/ko/3.0/internals/contributing/triaging-tickets/"},"formats":{"html":"/ko/3.0/internals/contributing/bugs-and-features/","markdown":"/ko/3.0/internals/contributing/bugs-and-features.md","json":"/ko/3.0/internals/contributing/bugs-and-features.json"},"source":"https://github.com/django/django/blob/stable/3.0.x/docs/internals/contributing/bugs-and-features.txt","official":"https://docs.djangoproject.com/ko/3.0/internals/contributing/bugs-and-features/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}