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.
  • 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.
  • If you’re offering a patch which changes the look or behavior of Django’s UI, you must attach before and after screenshots/screencasts. Tickets lacking these are difficult for triagers to assess quickly.
  • 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.

If there’s a consensus agreement on the feature, then it’s appropriate to create a ticket. Include a link the discussion on django-developers in the ticket description.

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.

However, consensus is not always possible. If consensus cannot be reached, or if the discussion towards a consensus fizzles out without a concrete decision, the decision may be deferred to the 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