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>`.

Caso contrário, antes de relatar um bug ou solicitar uma nova funcionalidade, por favor leve em consideração esses pontos gerais:

  • 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 problemas que tenham sido marcados com a tag “wontfix” por um desenvolvedor do projeto. Essa tag significa que a decisão de não corrigir ou a conclusão de que não é possível corrigir foi tomada para esse problema em particular. Se você não sabe ao certo o porquê, por favor pergunte na lista 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.

  • Escreva relatos de bugs que sejam reproduzíveis, completos, específicos. Você deve incluir uma descrição limpa, concisa do problema, e um conjunto de instruções para reproduzi-lo. Adicione o máximo de informações de debug que você puder: trechos de código, casos de teste, logs das exceções, screenshots, etc. A melhor forma de relatar um bug é escrevendo um bom e pequeno caso de teste, já que ele nos fornece uma maneira fácil de confirmar o bug rapidamente.

  • Não poste na lista django-developers apenas para anunciar que você acabou de reportar um bug. Todos os novos tickets são enviados para outra lista, django-updates, que é monitorada por desenvolvedores e membros da comunidade interessados; assim que os tickets são criados nós somos avisados.

Para entender o ciclo de vida do seu ticket uma vez que você o tenha criado, veja Triangulando 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ê está oferecendo um patch que muda a aparência ou o comportamento da UI do Django, você deve anexar screenshots/screencasts do antes e o depois . Tickets que não possuem isso são difíceis de fazer a triagem e para os desenvolvedores do núcleo avaliarem rapidamente.

  • 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.

  • Certifique-se de que a sua funcionalidade requer mudanças no núcleo do Django. Se a sua ideia pode ser desenvolvida como um módulo ou uma aplicação independente — como por exemplo, você deseja suporte a um novo banco de dados — nós provavelmente vamos sugerir que você desenvolva isso de forma independente. Só então, se o seu projeto tiver suporte suficiente da comunidade, nós podemos considerá-lo para inclusão dentro do 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 os desenvolvedores do projeto concordarem com a funcionalidade, então é apropriado criar um ticket. Inclua um link para a discussão na lista django-developers na descrição do ticket.

Como em muitos projetos open-source, o código fala. Se você estiver interessado em desenvolver a nova funcionalidade você mesmo, ou ainda melhor, se você já desenvolveu ela. As chances de ela ser aceita são muito maiores. Faça um fork do Django no GitHub, crie uma branch para a funcionalidade, e mostre-nos o seu trabalho!

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 ele não for atingido, ou se a discussão em busca de um consenso se perde sem uma decisão concreta, qualquer :ref:’membro do projeto <core-team>’ pode delegar a decisão para o :ref:’conselho técnico <technical-board>’.

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