Como proceder quando há suspeita de um erro nas bibliotecas de código aberto?

8

Estamos usando algumas bibliotecas de código aberto em nossos projetos. Às vezes, existem alguns problemas encontrados em alguns deles (provavelmente erros de biblioteca, mas também pode ser um uso incorreto do nosso lado, especialmente quando às vezes a documentação não está exatamente 100% completa). Como as bibliotecas costumam ser bastante complexas, às vezes é difícil depurá-las para identificar a origem do problema. Você pode me ajudar a resumir quais outras opções existem e como proceder exatamente com elas?

Recentemente, encontrei alguns problemas estranhos ao usar o TCMalloc (alocador de memória escalonável do Google) no Windows, por isso gostaria de receber respostas que se aplicariam a essa biblioteca específica, mas respostas mais gerais também são boas.

1) Peça assistência ao mantenedor / proprietário do projeto. Como isso pode ser feito?

2) Contrate alguém para identificar e corrigir o problema. Como fazer isso? Como posso encontrar alguém com experiência suficiente em alguma biblioteca específica?

... outras opções?

Suma
fonte
1
Eu recomendo a opção (1), todo site de projeto de código aberto tem o local para arquivar defeitos ou tente entrar em contato com os desenvolvedores por meio de sua lista de e-mails. Você deve conseguir a resposta mais cedo, considerando se o projeto ainda está ativo.
1
@ NinjaCoder: usar um projeto morto com documentação insuficiente pode ser uma má decisão; a atividade no projeto deve ser considerada ao ser escolhida.
Matthieu M.
@ Matthieu - Concordo plenamente com você.
Pergunte ao projeto, não pessoas específicas no projeto. IE, faça um comentário no fórum ou equivalente. Você realmente não precisa se preocupar com a depuração do código (a menos que queira se aprofundar no desenvolvimento), basta fornecer um meio para os desenvolvedores reproduzirem os bugs. Os desenvolvedores recebem atualizações regulares por e-mail contendo postagens das páginas de desenvolvimento. Faça um bom trabalho ao traçar o perfil do problema e os desenvolvedores o encontrarão. Além disso, não espere uma correção imediata, pois provavelmente será incluída na próxima versão.
Evan Plaice

Respostas:

15

Eu normalmente tento o seguinte, em ordem:

1) Verifique a lista de discussão ou fóruns para ver se meu erro é novo, se já está no rastreador ou se foi corrigido em uma versão mais recente / SVN / qualquer que seja

2) Se o bug não for conhecido, pergunte sobre ele na lista de discussão. É quando você é informado de que é um recurso, não um bug e / ou RTFM;)

3) Se o bug é realmente um bug e é novo, você pode esperar até que alguém o conserte (você pode ajudar fornecendo informações adicionais, testes ou depuração) ou consertar você mesmo e enviar um patch

Se você precisar corrigir o bug com urgência, sua melhor aposta é executar as etapas 2 e 3 juntas (relatar o bug e propor um patch). Caso contrário, seu bug poderá ou não ser corrigido em tempo hábil, dependendo se alguém achar que vale a pena corrigi-lo. Eu acho que você pode "subornar" os desenvolvedores ou outros membros da comunidade para trabalhar no seu bug, embora eu nunca tenha experimentado esse.

ggambett
fonte
+1 para verificar a lista de endereços. Eu esqueci de mencionar isso.
Matt Ellen
Além disso, na etapa 2, um pequeno caso de teste pode realmente ajudar. (Esta abordagem aplica-se igualmente a não-aberta bibliotecas de código / componentes / ...:. O mais fácil você fazer ver o bug, o mais fácil de obter uma correção)
Richard
@ Matt: Obrigado. Para ser justo, nem todo projeto tem uma lista de discussão ou fórum ativo por trás. Felizmente, os projetos que mais invadi (o que não é muito) são SDL e Ogre, que têm comunidades muito ativas.
precisa saber é o seguinte
5
Você esqueceu ... Se quiser que outra pessoa veja o bug, apresente as condições necessárias para reproduzir o bug com precisão. Usuários que entram na conversa e dizem 'seu código está quebrado' serão ignorados, enquanto que um usuário responsável que fornece um bom perfil do que acionou o bug geralmente recebe ajuda o mais rápido (desde que haja mantenedores ativos). A correção de um bug que afeta diretamente um usuário geralmente será uma prioridade. Apenas, não descarte que o tempo do desenvolvedor seja valioso (e eles já podem ser consumidos com seu próprio desenvolvimento no projeto).
Evan Plaice
5

O melhor do OSS é que você tem o código fonte!

Assim, você pode fazer a correção sozinho ou contratar alguém para fazer isso.

O importante é retribuir à comunidade e verificar sua correção!

ozz
fonte
4

A maneira mais sensata que encontrei, quando você tem um problema com uma biblioteca e não possui as habilidades necessárias para encontrar o problema, é entrar em contato com os mantenedores. Eles conhecem o código e serão gratos por saber sobre os bugs, se é isso que é, ou apontarão a direção de como usar a biblioteca corretamente.

Por exemplo, tive um problema que não consegui resolver quando desenvolvia um site que usava SVG Web . Como não tenho habilidades de script de ação, iniciei um tópico perguntando sobre o problema e me disseram para registrar um bug com um caso de teste mínimo. Acabou que o problema estava no navegador, então tive que ajustar meu código levemente.

Se você é inteligente o suficiente para consertar você mesmo, não se esqueça de devolver o que aprendeu.

Matt Ellen
fonte
2

Se você tem uma boa idéia de como reproduzir o bug, escrever um teste de unidade expondo o bug seria um bom ponto de partida. (Geralmente, os projetos de código aberto já possuem grandes suítes de teste).

O teste de unidade com falha é uma boa maneira de comunicar o "bug" ao mantenedor do projeto. Se não for um bug, mas simplesmente você quem o estiver usando incorretamente, o mantenedor indicará que isso ocorre por design e, na maioria das vezes, por um motivo.

Pete
fonte
1
Infelizmente, a única reprodução que tenho até agora requer vários GBs de dados, nosso aplicativo e várias horas para ser executado. Tentarei reduzir isso de alguma forma como meu primeiro passo, pois entendo que a reprodução será crucial para os mantenedores ou qualquer pessoa externa que possa estar olhando para o problema.
Suma
1

Escreva um caso de teste limpo e envie-o para a lista de discussão.

Com frequência, o IME encontra um erro no seu próprio código ao escrever o caso de teste.

sujeira vermelha
fonte
1

Só porque ainda não foi mencionado, leia " Como fazer perguntas de maneira inteligente ". Tem muitos conselhos valiosos sobre como abordar as perguntas e pedir ajuda de uma comunidade de desenvolvimento. Muito disso se resume a: entender como a comunidade funciona e garantir que você siga as regras. Se você for respeitoso, faça uma pergunta inteligente, fornecendo todos os detalhes necessários (e receita de reprodução, se possível), provavelmente obterá uma resposta razoável.

Glenn McAllister
fonte