Relatando bugs e solicitando funcionalidades

Importante

Por favor relatar problemas de segurança somente em security@djangoproject.com. Esta é uma lista privada acessível apenas para desenvolvedores django veteranos e altamente confiáveis, seu conteúdo não está disponível publicamente. Para mais detalhes, por favor veja :doc: nossas políticas de segurança </internals/security>`.

Por outro lado, antes de reportar um “bug” ou requerer uma nova funcionalidade no ticket tracker, considere estes pontos:

  • Verifique se alguém já relatou o bug ou solicitou sua funcionalidade fazendo consultas customizadas no rastreador de tickets
  • Não utilize o sistema de tickets para pedir suporte. Para isso utilize a lista django-users ou o canal IRC ‘#django’.
  • Não reabra “issues” que já foram marcadas como “wontfix” sem entrar em consenso no django-developers.
  • Não utilize o rastreador de tickets para discussões importantes, elas provavelmente serão perdidas. Se um ticket em particular é controverso, por favor mova a discussão para a lista django-developers.

Relatando bugs

Relatos de bugs bem escritos são incrivelmente úteis. Porém, existe uma certa quantidade de sobrecarga envolvida em trabalhar com qualquer sistema de rastreamento de bugs de modo que a sua ajuda em manter nosso rastreador de tickets o mais eficiente possível é muito apreciada. Em particular:

  • Leia a FAQ para saber se o seu problema não é uma questão recorrente.
  • Pergunte na lista django-users ou no canal ‘#django” primeiro se você não tem certeza de que o que você está vendo é realmente um bug.
  • Do write complete, reproducible, specific bug reports. You must include a clear, concise description of the problem, and a set of instructions for replicating it. Add as much debug information as you can: code snippets, test cases, exception backtraces, screenshots, etc. A nice small test case is the best way to report a bug, as it gives us a helpful way to confirm the bug quickly.
  • Don’t post to django-developers only to announce that you have filed a bug report. All the tickets are mailed to another list, django-updates, which is tracked by developers and interested community members; we see them as they are filed.

Para entender o ciclo de vida do seu ticket uma vez que você o tenha criado, veja Triagem de tickets.

Relatando bugs de interface e funcionalidades

Se a sua nova funcionalidade ou bug tem a ver com qualquer coisa visual, existem mais algumas regras para seguir:

  • Inclua screenshots no seu ticket que são o equivalente visual de um teste de caso pequeno. Mostre o problema, não as incríveis customizações que você fez no seu navegador.
  • Se o problema for muito difícil de mostrar usando uma imagem, considere capturar um breve screencast. Se o seu software permitir isso, capture somente a área relevante da tela.
  • Se você esta oferecendo um patch que muda a aparência ou comportamento da UI do Django, você precisa anexar antes e depois screenshots/screencasts. Tickets sem esses requisitos são difíceis para os validadores acessarem rápido.
  • Screencasts não absolvem você de outras boas práticas ao reportar um bug. Certifique-se de incluir URLs, trechos de código, e instruções passo-a-passo sobre como reproduzir o comportamento exibido nas screenshots.
  • Certifique-se de incluir a tag UI/UX no ticket para que outras partes interessadas no problema possam encontrá-lo.

Solicitando novas funcionalidades

Nós estamos sempre tentando deixar o Django melhor, e as suas solicitações por novas funcionalidades são uma peça chave nesse processo. Aqui vão algumas dicas sobre como fazer uma solicitação de forma eficiente.

  • Make sure the feature actually requires changes in Django’s core. If your idea can be developed as an independent application or module — for instance, you want to support another database engine — we’ll probably suggest that you develop it independently. Then, if your project gathers sufficient community support, we may consider it for inclusion in Django.
  • Primeiro faça a sua solicitação na lista django-developers, e não no rastreador de tickets. Ela será lida mais de perto e estará dentro de uma lista de e-mail. Isso é ainda mais importante para solicitações de grande impacto. Nós gostamos de discutir qualquer grande mudança no núcleo do Django em nossa lista de e-mail antes de começar a trabalhar nelas de fato.
  • Descreva claramente e de forma concisa qual é a funcionalidade que você não encontrou e como você gostaria que ela fosse implementada. Se possível inclua códigos como exemplos (código que não funciona é válido).
  • Explique porque você gostaria dessa funcionalidade. Em alguns casos é bem óbvio, mas como o Django foi desenvolvido para ajudar desenvolvedores de verdade a realizar tarefas de verdade, você terá que explicar, caso não seja óbvio, por qual motivo essa funcionalidade seria útil.

Se há um consenso sobre a funcionalidade, então é apropriado criar um ticket. Inclua um link para a discussão na lista django-developers na descrição do ticket.

As with most open-source projects, code talks. If you are willing to write the code for the feature yourself or, even better, if you’ve already written it, it’s much more likely to be accepted. Fork Django on GitHub, create a feature branch, and show us your work!

Veja também: Documentando novas funcionalidades.

Como nós tomamos decisões

Quando possível, nós tentamos chegar em um consenso. Para tanto, nós geralmente temos votos informais na lista django-developers sobre uma funcionalidade. Nesses votos nós seguimos o estilo adotado pela Apache e usado no próprio Python, onde os votos são dados como +1, +0, -0, ou -1. Traduzindo, esses votos significam:

  • +1: “Eu adorei a ideia e estou fortemente comprometido com ela.”
  • +0: “Por mim OK.”
  • -0: “Não me animou, mas eu não vou ficar no caminho.”
  • -1: “Eu definitivamente não gostei e ficaria realmente chateado de ver essa ideia virando realidade.”

Embora esses votos na lista django-developers sejam informais, eles são levados bem a sério. Depois de um tempo razoável de votação, se um consenso óbvio surge nós vamos seguir os votos.

Porém, consenso nem sempre é possível. Se o consenso não é alcançável, or a discussão está indo em direção a um consenso desapontador sem uma decisão concreta, a decisão pode ser diferida para o conselho técnico.

Internamente, o conselho técnico irá usar o mesmo mecanismo de votação. A proposição será considerada acatada se:

  • Existirem pelo menos 3 votos do tipo “+1” de membros do conselho técnico.
  • Não existem votos do tipo “-1” de membros do conselho técnico.

Votos devem ser submetidos dentro de uma semana.

Como esse processo permite que qualquer membro do conselho técnico vete a proposta, um voto do tipo “-1” deve estar acompanhado de uma explicação sobre o que seria preciso para converter esse “-1” em pelo menos um voto do tipo “+0”.

Votos sobre assuntos técnicos devem ser anunciados e mantidos públicos na lista de e-mail django-developers.

Back to Top