O perigo de sugerir algum recurso em um produto, especialmente de código aberto, é que você receberá a resposta "por que não faz isso?".
Isso é válido e é legal que você possa fazer a alteração sozinho. Mas sabemos praticamente que os produtos geralmente melhoram à medida que os programadores ouvem a voz dos usuários - mesmo que esses usuários sejam outros programadores. E, a maneira eficiente de fazer essas alterações pode incluir alguém que já está trabalhando no projeto, adotando a ideia e implementando-a.
Existem alguns termos comuns usados para se referir a problemas de desenvolvimento de software. por exemplo, ciclismo . Existe um termo comum usado que essencialmente responde: "Sim, eu sei que posso mudar praticamente qualquer coisa do mundo - mesmo código fechado. Eu poderia ser contratado e escrever esse código. Mas, neste caso, estou apenas fazendo uma observação que pode de fato ser útil para outro codificador já adequado para fazer essa alteração facilmente - ou apenas para discutir possibilidades ".
[ps (alguns dias depois) - Eu deveria ter apontado que "enviar um patch" costuma ser dito com humor irônico e estou buscando uma resposta espirituosa apropriada.]
fonte
Respostas:
É um ponto difícil: como o usuário não paga direta ou indiretamente por um produto, ele não pode solicitar a implementação de um recurso. Não é como se você fosse uma parte interessada ou um cliente direto que encomendou o produto, e nem mesmo um usuário final de um produto comercial.
Dito isto, "enviar um patch" não é uma resposta válida. Não é educado. Não é certo. Mesmo para um produto de código aberto. "Enviar um patch" é a versão curta de:
Que tal enviar um patch?
Bem, não é tão fácil. Para fazer isso:
Você deve conhecer os idiomas usados no projeto de código aberto.
Você deve poder carregar o código-fonte do controle de versão para poder modificá-lo.
Você deve ter todas as versões corretas de quaisquer dependências de construção instaladas (incluindo bibliotecas de tempo de execução e ferramentas de construção).
Você deve poder compilar esse código fonte , o que não é tão óbvio em alguns casos. Especialmente, quando um grande projeto leva algumas horas para compilar e exibir 482 erros e milhares de avisos, você pode ser corajoso em procurar a fonte desses erros.
Você deve entender muito bem como o projeto é realizado , qual é o estilo de codificação a ser usado, se houver, como executar testes de unidade etc. Se o projeto não tiver uma documentação decente (o que geralmente ocorre em projetos de código aberto) ), pode ser muito difícil.
Você deve se adaptar ao projeto e aos hábitos dos desenvolvedores que participam ativamente do projeto. Por exemplo, se você usa o .NET Framework 4 diariamente, mas o projeto usa o .NET Framework 2.0, não pode usar o LINQ, nem o Code Contracts, nem outros milhares de novos recursos das versões mais recentes da estrutura.
Seu patch deve ser aceito (a menos que você faça a alteração apenas para si mesmo, sem a intenção de compartilhá-lo com a comunidade).
Se sua intenção é participar ativamente do projeto, você pode fazer todas essas coisas e investir seu tempo nele. Se, por outro lado, houver apenas um bug menor irritante ou um recurso simples que estiver faltando, passar dias, semanas ou meses estudando o projeto, então fazer o trabalho em si em alguns minutos é irracional, a menos que você goste.
Então, há uma réplica canônica para "é código aberto, envie um patch"? Acho que não. Ou você explica à pessoa que ela é indelicada ou simplesmente para de falar com ela.
fonte
A réplica canônica é enviar um patch.
fonte
Essa é a resposta padrão quando os desenvolvedores não acham que farão algo em um prazo razoável, mas isso foi repetidamente mencionado.
É mais injusto quando é repetidamente abordado, mas a pessoa que mencionou mais recentemente não sabe disso e apenas recebe "estamos fazendo correções para isso" imediatamente. Nesse caso, o mantenedor está farto da discussão, mas o usuário pensa que é um novo tópico. De qualquer forma, o mais provável é que você consiga "fazer correções" imediatamente, não leve para o lado pessoal, mas talvez queira ler os arquivos e o rastreador de erros para obter mais detalhes sobre o problema.
Se você mesmo solicita repetidamente uma solicitação, "aceitar patches" pode ser uma exclusão relativamente educada, em comparação com algumas alternativas menos educadas ...
E, é claro, existem mantenedores rudes que dizem "remendando" sem nenhuma explicação para ninguém, mas eu diria que é uma minoria.
Se você já manteve um projeto de código aberto com muitos usuários, saberá que há 100 vezes mais solicitações do que os mantenedores poderiam receber, e muitas dessas solicitações são importantes para o solicitante, mas seriam escandalosamente difíceis, ou perturbaria muitos outros usuários ou teria outra falha que só é visível com uma compreensão global do projeto e da base de código. Ou, às vezes, há apenas pedidos de julgamento, e leva muito tempo para discutir cada um repetidamente.
A maioria das empresas de código aberto não oferece acesso aos desenvolvedores, e você recebe apenas o tratamento silencioso ou uma história educada, porém falsa, do suporte ao cliente. Portanto, no código aberto, pelo menos, você tem algumas opções (pague alguém para codificar o recurso etc.) e, embora os desenvolvedores possam ser grosseiros, pelo menos eles dão respostas diretas. Eu prefiro ter "não" do que o habitual "está no nosso roteiro ... [2 anos depois] ... ainda está no nosso roteiro", tipo de coisa que recebi de vários fornecedores ...
Então, acho que não há uma resposta. Talvez o mantenedor de código aberto esteja realmente muito ocupado, talvez seja um idiota, mas de qualquer forma, provavelmente eles têm um trabalho difícil e entrar em um debate sobre quem tem a última palavra não está indo a lugar algum. O melhor que você pode fazer é contribuir de alguma maneira e tentar ser construtivo.
Talvez não seja código, mas possivelmente há muitas análises e documentação de cenários de usuário que você poderia fazer. Quando eu mantinha o gerenciador de janelas GNOME, muitas vezes teria sido útil para as pessoas analisarem um problema globalmente considerando todos os usuários e anotarem realmente os problemas, prós e contras e o que deveria acontecer de uma perspectiva global.
(Em vez disso, o habitual era começar a arder como se eles fossem o único usuário que importava e não houvesse trocas. E enquanto isso é ótimo, e é um ponto de dados, e muitas vezes eu conseguia ser educado ou até mesmo resolver seu problema eventualmente .. o flamejante não faz nada acontecer mais rapidamente. Apenas confunde emoções e causa desperdício de tempo de todos.
fonte
A razão pela qual você obtém essa resposta não é que os mantenedores são idiotas, é porque você não os convenceu adequadamente da proposta de valor deles trabalhando em seu recurso para você .
A melhor resposta é iniciar um diálogo sobre o valor do seu recurso para a comunidade como um todo , para ver se você pode convencê-los a mudar de idéia. Talvez eles estejam certos e saibam mais sobre as necessidades da própria comunidade do que você - mas, novamente, talvez não.
Se o recurso é valioso apenas para você e de pouco ou nenhum valor para a comunidade, acho que o dinheiro é um excelente motivador, enquanto reclamar da atitude deles não é.
fonte
Não há uma resposta razoável que provavelmente faça alguma diferença. Tentar convencer os voluntários a fazer algo que eles não têm intenção de fazer é uma perda de tempo ... ou pior.
Suas opções são:
Faça o que a resposta sugere; ou seja, implemente o recurso e envie-o como um patch. É chamado "devolvendo algo".
Encontre alguém que esteja disposto a implementar o recurso por dinheiro real. Pode ser o próprio projeto (por exemplo, em troca de patrocínio), alguém associado ao projeto ou algum "codificador de aluguel" aleatório.
Encontre um produto alternativo.
Se você recebeu essa resposta quando fez uma sugestão "útil", considere como poderia ter respondido se estivesse no lugar dele. Por exemplo, como você responderia se achasse que a sugestão não valia a pena / foi bem pensada / inteligível / etc, mas não teve tempo ou paciência para participar de um debate prolongado?
Eu estive envolvido em um projeto de SO de código aberto de longa duração, e uma das coisas mais irritantes são as pessoas que se sentam na "galeria de amendoins" e o enchem de sugestões de como fazer as coisas "melhor" que:
Freqüentemente, a melhor resposta é desafiar a pessoa a se envolver no projeto ... e esperar que ela entenda a dica ... "colocar ou calar a boca". Infelizmente, os mais irritantes nem sequer dão uma dica.
Obviamente, a outra resposta a essas pessoas é não responder ou ignorá-las completamente.
fonte
A resposta seria razoável se você e o programador em questão fossem iguais e soubessem o mesmo sobre a base de código e a linguagem e todas as outras coisas relevantes a essa coisa específica que você está apontando.
Você não é igual (ou provavelmente o faria), então sugiro uma resposta adequada:
"Não há como eu conseguir fazer o mais rápido e bom possível, e é por isso que pedi para você me ajudar em primeiro lugar. Por favor!"
Acredito que é contrário à natureza humana fundamental dizer então "oh, sim, essa coisa em que passei muito tempo e é muito boa é tão simples que qualquer pessoa pode sair da rua e fazer um trabalho tão bom quanto Eu posso ".
fonte
A réplica canônica é bifurcar o projeto.
fonte
A resposta canônica para "enviar um patch" é:
fonte
Envie um caso de teste abrangente .
fonte
"Se você fizer isso, eu incluirei" é muito melhor que "não".
Se você não conseguir fazer o trabalho por um motivo ou outro, explique a circunstância ao mantenedor do projeto em particular.
Se você não estiver disposto a contribuir de alguma forma para um projeto de código aberto que gostaria de usar, procure suporte comercial ou outro produto comercial.
fonte
"Obrigado pela resposta."
Porque:
fonte
Você não precisa dizer nada. O próprio fato de os desenvolvedores terem respondido é uma indicação suficiente para que eles já saibam que o problema existe e isso causa problemas para (pelo menos alguns) usuários.
No final do dia, nada do que você disser vai convencer o desenvolvedor a trabalhar para você, se ele não quiser.
fonte
Um bom projeto de código aberto terá um sistema de solicitação de bug / recurso no qual os usuários podem enviar bugs / recursos e outros podem votar neles para que os mantenedores possam identificar o que é importante para a comunidade como um todo. A maneira mais rápida de colocar seu recurso em prática é enviar um patch para ele. Período ... não há como contornar isso.
fonte
Pessoalmente, eu gostaria de obter uma resposta de "Este é um problema conhecido, mas infelizmente não é um problema a ser resolvido tão cedo. Os desenvolvedores estão trabalhando em outros problemas. Não há ETA no momento".
A resposta "enviar um patch" é muito rude, pois pressupõe várias coisas:
Mesmo se assumirmos que o fabricante da resposta "enviar um patch" sabe tudo o que foi dito acima, isso simplesmente faz a declaração parecer "X horas do meu tempo valem mais do que as ordens de grandeza mais horas do que você gostaria de acordar" para acelerar e corrigir o problema ".
Geralmente, quando recebo uma resposta rude de um desenvolvedor quando pergunto sobre um problema que tenho ou envia um erro, paro de usar esse programa. Eu não uso mais o uTorrent (não é de código aberto, mas o ponto permanece), por exemplo, porque as respostas que recebi no fórum de "suporte" foram muito rudes. Enviei um problema que tive no fórum Bug Reports. O encadeamento foi imediatamente bloqueado com um link para outro encadeamento sobre um problema semelhante, mas diferente em um encadeamento (que também foi bloqueado, é claro). Enquanto isso, abri um tópico no fórum de discussão geral perguntando se alguém havia encontrado uma solução alternativa para o problema. No tempo que levou para salvar esse tópico e voltar e ver que meu primeiro tópico havia sido bloqueado, meu tópico em Geral foi bloqueado e minha conta do fórum foi banida por comportamento perturbador. Eu desinstalei o uTorrent e não voltei desde então.
fonte
Apenas responder "enviar um patch" é uma IMO grosseira, mas ainda assim ... se você usa software de código aberto para algo sério, deve estar preparado para cuidar dele, se necessário.
O seguinte é baseado em uma postagem de Jeremias Maerki (da fama do Apache FOP):
Eu acho que é uma versão completa muito válida da resposta "enviar um patch".
fonte
Toda vez que vejo isso, começo imediatamente a procurar um produto alternativo. Para mim, isso é um sinal perigoso de que os mantenedores não se importam com seus usuários (ruim se o seu projeto for usado em qualquer lugar) ou perderam o interesse no projeto. Ambos geralmente significam que o projeto morrerá em breve ou será atormentado pela estagnação, à medida que os desenvolvedores se recusam a avançar no projeto.
(Observe que não estou dizendo que o primeiro relatório de erro que você vê com esse tipo de resposta é executado. Você deve observar uma tendência geral. Se a maioria dos relatórios de erros terminar com esse tipo de resposta, siga este conselho. Se são apenas algumas, então essas são provavelmente as solicitações de recursos que não se enquadram nos objetivos do projeto ou são extremamente específicas para o uso)
Como o @MainMa disse, começar a contribuir para um novo projeto é muito difícil. A maioria dos desenvolvedores não entende isso, pois trabalha no projeto há meses / anos e isso faz sentido para eles. Às vezes, isso pode ser um erro honesto.
fonte
Ocasionalmente, brinco que o software livre pode ser livre como na cerveja, livre como na fala ou livre, pois você recebe o que paga.
Enquanto digo isso de brincadeira (trabalho para uma empresa que usa muitos OSS), mas acho que existe uma verdade - se você deseja suporte em nível comercial, precisa usar software comercial com um acordo de suporte adequado ou encontrar um solução de software de código aberto que permite esse nível de suporte (geralmente através de alguém sendo pago para fornecê-lo, mas potencialmente através de sua organização empregando ou atribuindo recursos de desenvolvimento para trabalhar nele).
"Enviar um patch" é irritante, mas destaca algo sobre o OSS e talvez seja um lembrete de que o OSS não é adequado para todos em todas as situações, pelo menos não sem garantir que você tenha uma estrutura de suporte sólida ( internamente, pago por ou através da comunidade).
Costumamos pensar em software que é gratuito como na cerveja, mas não na fala (que é um freeware não aberto). Talvez este seja um caso em que deveríamos pensar no software tão livre quanto na fala, mas não como na cerveja.
fonte
Mude para uma alternativa bem conservada.
Da minha experiência com projetos de código aberto bem mantidos, é que, se você criar um relatório de bug ou solicitação de recurso bem definido, há uma chance muito alta de ser implementado.
fonte
"Posso trabalhar apenas uma coisa de cada vez, mas posso reclamar de muitas coisas ao mesmo tempo. Acho que as duas funções são úteis". - akkartik no ycombinator .
fonte
Considero que quando alguém está trabalhando em um projeto, fornecendo lançamentos e suporte, um contrato tácito e implícito de suporte entre desenvolvedor e usuário surge. O desenvolvedor assumiu a responsabilidade implícita de oferecer suporte à base de código para seus usuários, incluindo a adição de recursos mediante solicitação.
"Enviar um patch" é basicamente dar o dedo aos usuários, na minha opinião. Isso é contextual - às vezes é um esforço demais para ser implementado, às vezes destrói o projeto existente ou incorre em creaturite com taxas, ou qualquer um de vários outros motivos. Mas, em última análise, está dizendo: "Dane-se, não faça isso". O que, em minha opinião, é, em algum nível, uma violação desse contrato tácito.
fonte
Existem várias maneiras de fazer isso.
Proposta de recurso e votação. mas isso leva tempo.
Seja contratado por uma empresa que precisa dele para fazer o patch. Obviamente, essa é a melhor solução, mas prepare-se para colaborar com o cara que cria o software de código aberto que deseja atualizar.
Descobrir por que o recurso não foi implementado também é importante. Muitas vezes, o recurso está fora da linha do projeto de software: a equipe não deseja esse recurso, não se sente necessário ou apenas pensa que não é a melhor maneira de fazer algo. Nesse caso, você deve apenas bifurcar o projeto e fazer você mesmo.
Use software proprietário que faça o que você deseja.
Lembre-se de que o software OOP geralmente facilita o processo de integração de um recurso.
Se lamentar em uma lista de discussão, no irc ou em um fórum apenas irritará os programadores e dará munição aos proponentes do OSS.
fonte
Não há nada que você possa dizer que o faça fazê-lo. Afinal, por que ele deveria? Por causa dos desejos de um usuário? Não é uma razão suficientemente boa.
Porém , se você pode coletar um número razoável de usuários e fornecer razões racionais ("Eu quero isso" não é uma razão racional). Por que esse recurso pode ser útil, em geral, e para você e vários outros, ele pode mudar de idéia? .
Embora haja também um caso especial que deve ser considerado. Que dev. está cansado de desenvolver o aplicativo, desejando lentamente abandoná-lo (tem outras coisas a fazer) e, portanto, está abandonando lentamente os pedidos de recursos. Além de tentar convencê-lo a liberar o código, nesse caso, praticamente não há nada que você possa fazer, mesmo com relação ao acima.
fonte
Projetos de código aberto, em particular, são amigáveis com recompensas ou financiamento do desenvolvimento de um recurso específico, mesmo que o novo recurso não chegue aos lançamentos oficiais.
Além disso, sim, uma das idéias por trás da publicação de código aberto é que qualquer pessoa e todos tenham o direito e a responsabilidade de fazer suas próprias contribuições.
Com o código fechado, seu melhor recurso é reunir um grupo estatisticamente importante da base de usuários que deseja soluções como as que você deseja.
fonte
Na minha experiência, essa resposta geralmente é dada se a solicitação do usuário não se encaixa no objetivo do projeto. Isso acontece quando as pessoas pensam que você implementará tudo o que elas lhe propõem e um pouco mais - de graça, código aberto e um futuro ótimo e feliz.
"Enviar um patch" é uma resposta relativamente rude (e deve ser evitada, é claro. Especialmente nesta forma concisa e nítida. Existem muitas maneiras de expressar aproximadamente a mesma mensagem - por exemplo, "convide" os usuários para ajudar porque você não tenha tempo para implementá-lo por conta própria). Mas, como está, é um indicador claro de "pare de desperdiçar meu tempo". Como tal, não há muito que você possa fazer sobre isso, nem resposta "canônica".
A melhor resposta que consigo pensar é apresentar um patch . Supondo que seu patch funcione, você pelo menos provou que a idéia não é totalmente irrealista. Normalmente, isso significa que as pessoas responsáveis pelo projeto reconsiderarão a proposta.
fonte
"enviar um patch" é uma escova legítima para idéias que não se encaixam nos objetivos do projeto. Provavelmente é melhor, a longo prazo, dizer que a idéia é péssima ou você está tentando usar o projeto para algo muito além do escopo pretendido, mas "ei, se você acha que o que está pedindo é tão trivial, por que não" você tenta encaixá-lo em nossa base de códigos existente "é adequado.
Se for menor e realmente útil para os usuários pretendidos do projeto, basta enviar o relatório de erro, descrever claramente o problema, dar etapas para reproduzir, indicar que você está usando a compilação noturna atual e deixar por isso mesmo.
O que pode parecer uma pequena mudança simples que ajudaria toneladas de usuários pode realmente ser uma enorme dor de cabeça que ninguém usaria além de você. Esse é o melhor caso para "enviar um patch".
Também é possível que você tenha se deparado com um caso como o notório mantenedor da glibc, que parece ter uma mente única de que seu sistema é o universo, sua interpretação das especificações é a palavra de deus, e isso é tudo o que existe, independentemente de quantas pessoas prefeririam o contrário.
fonte
Eu sugeriria criar um projeto para implementar o recurso em sites como RentACoder / ELance / etc, e postar sobre ele no fórum original do projeto de código aberto. Qualquer um dos programadores nos projetos de código aberto, incluindo o autor, agora tem um incentivo financeiro para considerar sua solicitação.
fonte
Na verdade, me inscrevi apenas para responder a esta pergunta.
Há necessidade de uma réplica? Essa resposta geralmente é usada quando o desenvolvedor conhece o problema, mas não o considera importante.
Vou te dar um exemplo ao vivo. O ubuntu abandonou o suporte systray (mas pode ser contornado pela lista branca de um aplicativo) e adicionou novos indicadores de aplicativo. alguns aplicativos, como Júpiter, contavam com o suporte systray, de modo que o desenvolvedor falou sobre o pessoal de trabalho em vez de adicionar o suporte ao indicador de aplicativo, então pedi ao desenvolvedor para adicionar o suporte ao indicador de aplicativo. A resposta foi "Envie-nos patches". perguntando a razão pela qual eles escolheram não implementar isso. havia isso
Justo. o desenvolvedor tem motivos para não implementar um recurso, mas está disposto a aceitar patches. isso não é realmente rude e ofensivo, portanto não houve necessidade de uma resposta.
Conclusão: a réplica canônica seria enviar o patch, mas se você não puder, não há necessidade de uma réplica
fonte
Inicie uma recompensa pelo recurso que você deseja.
Ou saia e compre o produto que afirma fazer exatamente o que você deseja e abuse do pessoal de suporte quando descobrir que o marketing não corresponde às suas expectativas.
fonte
O melhor que consigo pensar é "você é péssimo".
Desculpe, obviamente isso não ajuda muito, mas acho que essa é apenas uma das situações infelizes em que o usuário está completamente ferrado. Um apelo brutalmente honesto à consciência do desenvolvedor é um último esforço.
Você poderia tentar oferta ( tosse ) "doações" para ter seu problema abordado, mas temo que tal prática se fez comum levaria a alguns realmente ruim perda de integridade no setor, como correções de bugs nunca deve ser feita rentável, tanto para Software "gratuito" ou comercial.
fonte