Como você diz "é de código aberto, envia um patch" para que seja amigável?


18

Nas respostas de Qual é a réplica canônica de "é código aberto, envie um patch"? , muitas pessoas expressaram a opinião de que simplesmente pedir às pessoas para enviar um patch é arrogante e rude.

Mas parece-me que, como desenvolvedor em qualquer projeto de código aberto, você verá muito mais solicitações de recursos na lista de discussão do que poderia implementar. Portanto, quando um usuário diz: "Gostaria de ver o recurso X", a verdade é que as chances de ele ser implementado são muito pequenas, a menos que eles mesmos enviem um patch. Além disso, às vezes é necessário um pouco de incentivo para transformar um usuário em colaborador.

Por outro lado, você não quer assustar (potenciais) colaboradores por parecer rude.

Então, como você diria "envie correções em vez de solicitar recursos" de maneira amigável?

Atualização: Obrigado por todas as sugestões! Vejo que a maioria deles exige explicações bastante longas. Mas como eu prefiro evitar (a) explicar a mesma coisa todos os dias (leva muito tempo) ou (b) usar trechos que colo no email (torna-se impessoal muito rápido), eu me pergunto: alguém escreveu isso em um documento que eu possa vincular?

(Coisas específicas do projeto, como escrever testes, compilar o código e enviar o patch, ainda precisam ser documentadas, é claro, mas acho que esses problemas técnicos devem entrar no CONTRIBUTING.txt de qualquer maneira.)


10
Muito importante, se você não pretende aceitar patches, não solicite! Ou seja, se você diz "Enviar um patch", deve estar disposto a aceitar um patch limpo e bem escrito.
edA-qa mort-ora-y

1
@ edA-qa - não necessariamente todo patch limpo e bem escrito - mas se é provável que você vete novos recursos, você provavelmente deve ter uma maneira de as pessoas proporem esses recursos a você por uma resposta provavelmente / provavelmente não antes de investir muito tempo desenvolvendo-os.
Steve314

@ Steve, não quero dizer patches não solicitados , essa é uma história diferente. Quero dizer especificamente como na pergunta, se você disser a alguém para enviar um patch.
edA-qa mort-ora-y

É apenas arrogante e rude quando você realmente quer dizer "que pode ou não ser uma boa idéia, vá embora". Se você honestamente quer dizer que é uma má ideia, diga. Se você quer dizer que é uma ideia genuinamente boa que você não tem tempo para implementar, diga-o. E indique que você estaria disposto a aceitar um patch que implementasse esse recurso. (Dessa forma, talvez alguém realmente envie um patch.) O problema em dizer "enviar um patch" é vago e desprezível.
David Schwartz

Respostas:


8

Você não

Na medida em que eu estou experimentando, os contribuidores candidatos são mexedores e não enviarão uma solicitação de recurso apenas solicitando-a. Eles normalmente o solicitam com algum nível de participação:

  • Não seria legal se [...]? Pode ser possível fazer A, B e C. (Isso é uma isca para: eu não tenho tempo, mas aqui está uma idéia especificada caso você o faça.)
  • Aqui está um patch para fazer / aqui está uma correção para [...].
  • Estou pensando em escrever um patch para fazer [...] e poderia usar feedback / alguém está interessado em ajudar.
  • Etc.

Os codificadores que enviam uma solicitação de recurso imediatamente, geralmente o fazem por um motivo. Alguns deles incluem (e eu sei que os dois últimos acontecem no WordPress, por exemplo):

  • Eles estão profundamente envolvidos em outros projetos de código aberto, ou seja, não têm tempo.
  • Eles são free-riders e pretendem manter as coisas assim.
  • Está muito além do seu nível de habilidade / escrito em um idioma sobre o qual eles não sabem nada.
  • Eles usam o software por falta de uma opção melhor e não querem lidar com uma pilha fedorenta de código batsh * t ^ \ b.
  • Eles não podem mais ser incomodados porque seus patches anteriores foram ignorados / rejeitados, ou seja, pensam que eles estavam desperdiçando seu tempo.

Mais tipicamente, as solicitações de recursos serão provenientes de usuários finais que não puderam contribuir com o patch, mesmo que quisessem. Especialmente quando enviado fora do sistema de bilhética.


Penso que a sua prioridade mais importante deve ser não adiar colaboradores potenciais / existentes, em vez de tentar recrutar ativamente novos. É extremamente importante, e digo isso por experiência própria. Eu tenho uma maneira estranha de escolher uma nova base de código, que envolve a leitura superficial do código para obter algum nível de compreensão, entrar no sistema de bilhética e corrigir bugs fáceis de aprender para aprender os detalhes internos (e arquivar) novos como eu teste). Ao longo dos anos, inundei alguns projetos com dezenas de tickets e patches. Muitas vezes, esses tickets recebem pouca ou nenhuma atenção oportuna (nem mesmo um reconhecimento, por exemplo, mantenha-o!) - inclusive quando eles vêm com etapas de diagnóstico documentadas e testes de unidade anexados.


1
Eu não poderia concordar mais. Parece haver um sentimento geral entre os projetos do F / OSS de que qualquer pessoa que envie uma solicitação de recurso é preguiçosa e poderia enviar um patch / modificar sua própria instalação se realmente quisesse esse recurso. É extremamente desanimador para quem simplesmente não sabe programar ou não tem tempo porque está envolvido em outros projetos. Não são as palavras "enviar um patch" que são grosseiras, mas a suposição de que o usuário não tem mais nada em mente.
Shauna

9

Em resumo, você explica que não tem tempo ilimitado para fazer o trabalho deles de graça. (Você pode pular o bit 'de graça') e, para que eles possam contribuir a qualquer momento, não é o seu projeto, é o projeto de todos.

então você diz: "Lamentamos muito, é uma ótima idéia, mas estamos ocupados demais com todo o restante do trabalho, vamos adicioná-lo à lista, mas se você realmente quiser incluir isso, e você gostaria de nos ajudar, contribuindo para o projeto, isso seria maravilhoso.Temos uma documentação para ajudar os caras a fazer alterações no projeto, eles estão aqui, então se você tiver as habilidades e o tempo e quiser nos ajudar, envie-nos um patch com as alterações. Talvez tenhamos que fazer alguns mods quando o recebermos, para que ele se encaixe nos padrões do projeto, mas você estará nos um grande favor, pelo menos, nos dando uma vantagem para este trabalho e nós amaremos você por nos ajudar ".

É claro que, assim que você começar a pedir patches, nunca poderá deixá-los em seu sistema de tickets por muito tempo; se você ganhar muito, estará integrando-os mais do que fazendo o trabalho que costumava fazer. Você pode não gostar disso, mas é necessário se você quiser que os patches continuem chegando.


Eu gosto disso. Talvez isso seja realmente algo melhor colocado na documentação para que você não a copie e cole toda vez que precisar explicar isso. E então você acabou de dizer "você gostaria de contribuir um patch http: //.../#contributing?"
Jo Liss

@JoLiss: Você criticou minha resposta por parecer impessoal; como você acha que copiar e colar um hiperlink para uma FAQ é melhor? Se você usar uma resposta em lata, use uma que mostre empatia ou pareça profissional (ou ambas). Essa ideia para um atalho não é nenhuma; de fato, é exatamente o tipo de grosseria que a pergunta original estava reclamando.
Aaronaught

Huh, interessante. Eu não sabia que as pessoas necessariamente acharia rude se você postar um link. Por outro lado, acho que as respostas enlatadas são muito impessoais. Então talvez seja melhor digitar esses tipos de explicação quando eles surgirem.
precisa

6

Seja educado e explique a situação claramente. Que tal algo como:

Obrigado pelo seu feedback. Achamos seu recurso muito interessante, mas, apesar dos nossos esforços para implementar os recursos mais solicitados em nosso produto, não temos tempo suficiente para implementá-los todos. Se você é um desenvolvedor, pode se juntar a nós contribuindo com o projeto, já que é de código aberto.

Veja, você não pode simplesmente dizer "Por que você está me incomodando com seus pedidos? Não estou aqui para trabalhar de graça; se você deseja esse recurso, vá implementá-lo". A pessoa pode não ser desenvolvedor, pode não conhecer o idioma usado para desenvolver o produto etc.

Portanto, em vez de ser rude, você pode sugerir a participação no projeto e também explicar por que você pode não conseguir implementar o recurso.


Outra maneira de não ser rude é não ter que dizer nada. Se você tiver um site em que os usuários do seu aplicativo possam sugerir novos recursos e reportar bugs, convém classificar os itens por prioridade: por exemplo, se um recurso for solicitado por 10.000 usuários e outro for solicitado por apenas 10 , há chances de que o primeiro seja implementado primeiro.

Nesse site, você sempre pode colocar uma sugestão "implemente você mesmo" para os recursos que, após alguns dias ou semanas, não receberam votos suficientes de outros usuários.


5

Obrigado pelo seu pedido. Nós o adicionamos ao backlog do projeto e o revisaremos em breve.

Observe que, devido ao volume de solicitações, não podemos garantir que todas serão implementadas. Contamos com voluntários. Portanto, se você é um desenvolvedor, considere doar parte do seu tempo e enviar um patch . Caso contrário, saiba que estamos todos trabalhando duro para obter a lista de pendências e atenderemos a sua solicitação o mais rápido possível.

Realmente, isso foi tão difícil?


+1 excelente; resposta profissional e agradável. @ Jo Liss: tenha em mente que a maioria das pessoas simplesmente deseja usar o software, não dedicar suas vidas a ele.
Steven A. Lowe

Gosto da essência, mas pessoalmente acho que o tom é um pouco impessoal. Você geralmente não é uma empresa que presta serviço ao cliente, é apenas um desenvolvedor conversando com um colega. Até o pessoal da 37signals evita esse tipo de linguagem .
precisa

@JoLiss Você está prestando serviço ao cliente, quer queira ou não acreditar. E você não disse nada sobre "colegas". É possível que a pessoa com quem você está falando seja um desenvolvedor, mas, a menos que você saiba disso, não acho que seja uma suposição apropriada a ser feita (a menos que você esteja trabalhando nas ferramentas do desenvolvedor, mas não especificou isso na questão). Finalmente, o pessoal de 37 sinais falando sobre o que constitui besteira é ... irônico, para dizer o mínimo.
Aaronaught

Hum. Não tenho certeza se gostaria de dar a impressão de estar prestando atendimento ao cliente ... Porém, seu argumento de que os usuários não são necessariamente colegas é bem aceito. Re 37signals, aqui está outro post de blog que fala sobre tom - acho que o ponto não é tanto que você não deva besteira, mas que não deve parecer uma corporação sem rosto. Na minha opinião, essa é uma boa estratégia e é ainda mais verdadeira para projetos de código aberto.
precisa

2
@JoLiss: Se você quer ser mais pessoal do que isso, ótimo, todo o poder para você - esse, para mim, é o padrão mínimo que você deve cumprir em termos de cortesia. Não basta dizer "enviar um patch" - explique que você está ocupado, não é preguiçoso ou desinteressado; reconheça que eles podem não ser capazes de enviar um patch e que, mesmo que sejam, ainda assim eles estariam fazendo um favor a você.
Aaronaught

4

Bem, em vez de apenas dizer "enviar um patch", você deve elaborar um pouco mais.

  • Deixe claro que você não tem tempo para isso agora ou no futuro próximo; portanto, se outros quiserem implementá-lo em breve, não há como fornecer um patch.
  • Aproveite o tempo para avaliar o recurso. Se você gosta sinceramente, não há mal em dizer isso. Encorajar as pessoas. Ou se você acha que o recurso é realmente ruim, reserve um tempo para explicar isso.
  • Forneça alguma ajuda inicial. Ninguém conhece a base de código como você. Você não tem tempo para fazê-lo, mas provavelmente sabe exatamente como faria e por onde começar. Dentro de 5 a 10 minutos, você pode compartilhar o conhecimento de que outras pessoas precisariam de horas para descobrir. Além disso, isso ajuda a sua imagem geral a prevalecer. Em vez de ter recursos alienígenas ligados ao seu projeto, você pode orientar os contribuidores para uma boa integração.

Concordo com isso, mas gostaria de acrescentar que você precisa de diretrizes muito claras sobre o que espera de um patch. (por exemplo, em conformidade com os padrões de código, unidade testada, documentada). Isso é importante, porque é muito provável que você seja o responsável pelo suporte ao recurso - os remetentes de patches raramente ficam por perto para corrigir seus erros ou oferecer suporte a outros usuários da sua biblioteca.
Mark Heath

3

Aqui está o que eu normalmente digo ...

"Essa é uma sugestão interessante e seria legal se o FooBarLib pudesse fazer isso. Infelizmente, o FooBarLib é apenas um projeto de tempo livre para mim, por isso é improvável que eu consiga fazê-lo em um futuro próximo. Congratulo-me com os envios ao FooBarLib, portanto, se você conseguir implementar isso pessoalmente, sinta-se à vontade para enviar um patch (leia primeiro nossas diretrizes "como contribuir para o FooBarLib").


2

Além das boas maneiras de dizer "Enviar um patch", forneça também documentação orientada ao desenvolvedor para que outras pessoas que realmente desejam o recurso possam atualizar seu projeto com facilidade. Muitos projetos não são compatíveis com os desenvolvedores e exigem dias, no mínimo, para ler milhares de linhas de código e toneladas de pequenos casos de teste, cutucando diferentes partes do sistema para se acertar.

Se você fornecer ajuda aos possíveis desenvolvedores, eles estarão mais do que dispostos a fornecer ajuda. Isso significa boa documentação de código, boas páginas wiki que explicam o fluxo (ou um bom diagrama UML / quadro branco) e uma maneira fácil de aceitar patches.


-2

Eu realmente amo a maneira como o github incentiva outras pessoas a participarem do projeto. Várias versões do mesmo projeto podem existir em diferentes contas de usuário. Se você não gostar da direção em que estou adotando o projeto, bifurque-o. Você pode enviar solicitações pull facilmente, mas não fica parado esperando que eu as aceite.

Então, minha resposta é frequentemente, apenas bifurque-se.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.