Entendendo a Comunicação em Projetos de Código Aberto
Um estudo analisa como os desenvolvedores lidam com discussões e problemas em software de código aberto.
― 6 min ler
Índice
No mundo de hoje, muitos projetos de código aberto usam várias formas de se comunicar. Isso inclui diretrizes para contribuir, regras de comportamento e espaços para fazer perguntas. Em 2020, o GitHub lançou um novo recurso chamado Discussões para ajudar a separar a comunicação da colaboração entre Desenvolvedores. No entanto, ainda não tá claro como os desenvolvedores usam esses espaços, quão fácil é decidir quando mudar uma conversa e se essas decisões levam tempo.
Pra entender isso melhor, um estudo analisou 259 Repositórios NPM e 148 repositórios PyPI. O objetivo era categorizar as razões para mover discussões para Problemas e vice-versa.
Comunicação em Projetos de Código Aberto
Os projetos de código aberto têm muitos canais de comunicação pra ajudar os membros da equipe a compartilhar informações e manter a comunidade engajada. Esses canais podem incluir regras pra contribuir e discussões sobre comportamento do usuário. Muitos estudos mostraram que projetos no GitHub costumam usar múltiplos métodos de comunicação pra coletar conhecimento novo e atualizar o que já existe.
O recurso de Discussões do GitHub foi lançado pra criar um espaço pra interações da comunidade. Ele permite que comunidades de código aberto e desenvolvedores façam perguntas e compartilhem ideias sem atrapalhar o fluxo de trabalho. Diferente dos Problemas do GitHub, que traçam tarefas específicas, as Discussões servem mais como um fórum de conversa.
Embora o GitHub tenha dado algumas diretrizes pra usar Discussões, não tá claro como os desenvolvedores mantêm e usam esses canais. Esse estudo tem a intenção de preencher essa lacuna analisando como os desenvolvedores decidem entre usar Discussões e Problemas.
Questões de Pesquisa
A pesquisa focou em três perguntas principais:
- Quais são as razões que levam desenvolvedores a converter discussões em problemas?
- Quais razões os desenvolvedores têm pra converter problemas em discussões?
- Leva tempo pra decidir sobre uma conversão entre discussões e problemas?
Metodologia
Pra responder essas perguntas, os pesquisadores realizaram um estudo detalhado dos repositórios. Eles usaram uma abordagem sistemática pra categorizar conversas e analisar como elas foram convertidas. Coletaram dados sobre os tópicos de conversa e anotaram os motivos de cada conversão.
Preparação do Conjunto de Dados
O estudo focou em dois grandes ecossistemas, NPM e PyPI. Os pesquisadores selecionaram repositórios que tinham bases de contribuidores ativas, que são mais propensas a usar o recurso de Discussões. Depois de filtrar os dados, eles compilaram um conjunto de dados abrangente de discussões e problemas.
Analisando Conversões
Convertendo Discussões em Problemas
A primeira análise investigou por que discussões são frequentemente transformadas em problemas. Quatro motivos principais foram identificados:
- Relatar um Bug: Isso acontece quando discussões apontam um bug real que precisa de atenção.
- Repositório Externo: Às vezes, discussões abordam tópicos que são mais adequados para outros repositórios.
- Relatar uma Melhoria: Quando uma Discussão sugere uma melhoria ou um pedido de recurso que deve ser rastreado como um problema.
- Relatar um Pedido de Esclarecimento: Muitas discussões precisam de mais clareza e requerem um problema pra entender melhor o tópico.
Dentre essas razões, a mais comum foi a necessidade de esclarecimento, contabilizando uma porcentagem significativa das conversões.
Convertendo Problemas em Discussões
Em seguida, o estudo analisou por que problemas são transformados em discussões. Sete razões foram destacadas:
- Tópico Não Acionável: Muitos problemas não requerem ação direta e são simplesmente perguntas ou sugestões.
- Problemas Inválidos: Alguns problemas carecem de detalhes suficientes ou não atendem aos formatos exigidos pra rastreamento.
- Não é um Bug: Os desenvolvedores costumam categorizar bugs enviados por usuários como não-bugs, levando a conversões.
- Mais Discussão: Alguns problemas precisam de mais input antes de serem classificados.
- Já Resolvido: Se o problema já foi resolvido em outro lugar, pode ser movido para uma discussão.
- Repositório Externo: Semelhante às discussões para problemas, isso se aplica quando um problema é levantado no lugar errado.
- Armazenamento de Informação: Às vezes, problemas são convertidos só pra manter informações relevantes acessíveis à comunidade.
A razão mais frequente pra mover problemas pra discussões foi o tópico ser não-acionável, mostrando que muitos problemas não precisam de atenção imediata.
Investimento de Tempo nas Conversões
O próximo passo foi explorar quanto tempo os desenvolvedores passaram decidindo se convertiam discussões ou problemas. Os dados mostraram que, enquanto poucos posts estavam envolvidos em sugerir uma conversão, levantar a intenção de conversão levou um tempo considerável. Por exemplo, levou uma média de mais de 15 horas pra discussões se transformarem em problemas.
Isso indica que, embora o número de conversas possa ser baixo, as decisões sobre convertê-las nem sempre são diretas ou rápidas.
Implicações para as Partes Interessadas
As descobertas da pesquisa têm implicações importantes tanto para desenvolvedores quanto para pesquisadores:
Para Desenvolvedores: O estudo oferece uma estrutura pra ajudar desenvolvedores a escolher quando usar Discussões e Problemas, visando reduzir conversões desnecessárias. Desenvolvedores, especialmente os novatos, são encorajados a usar Discussões para problemas incertos primeiro.
Para Pesquisadores: As descobertas sugerem áreas potenciais para pesquisas futuras, incluindo sistemas automatizados pra identificar tópicos duplicados e problemas não-acionáveis de forma mais eficiente.
Conclusão
O estudo lança luz sobre a natureza complexa da comunicação em projetos de código aberto. Ele destaca as formas como os desenvolvedores convertem entre discussões e problemas, as razões por trás dessas mudanças e o tempo envolvido nas decisões. Ao entender essas dinâmicas, os desenvolvedores podem melhorar suas estratégias de comunicação, levando a colaborações mais eficazes. A pesquisa fornece insights valiosos sobre como otimizar o uso dos recursos de comunicação do GitHub, garantindo que tanto novos quanto experientes desenvolvedores possam contribuir de forma mais eficaz para seus projetos.
Título: When Conversations Turn Into Work: A Taxonomy of Converted Discussions and Issues in GitHub
Resumo: Popular and large contemporary open-source projects now embrace a diverse set of documentation for communication channels. Examples include contribution guidelines (i.e., commit message guidelines, coding rules, submission guidelines), code of conduct (i.e., rules and behavior expectations), governance policies, and Q&A forum. In 2020, GitHub released Discussion to distinguish between communication and collaboration. However, it remains unclear how developers maintain these channels, how trivial it is, and whether deciding on conversion takes time. We conducted an empirical study on 259 NPM and 148 PyPI repositories, devising two taxonomies of reasons for converting discussions into issues and vice-versa. The most frequent conversion from a discussion to an issue is when developers request a contributor to clarify their idea into an issue (Reporting a Clarification Request -35.1% and 34.7%, respectively), while agreeing that having non actionable topic (QA, ideas, feature requests -55.0% and 42.0%, respectively}) is the most frequent reason of converting an issue into a discussion. Furthermore, we show that not all reasons for conversion are trivial (e.g., not a bug), and raising a conversion intent potentially takes time (i.e., a median of 15.2 and 35.1 hours, respectively, taken from issues to discussions). Our work contributes to complementing the GitHub guidelines and helping developers effectively utilize the Issue and Discussion communication channels to maintain their collaboration.
Autores: Dong Wang, Masanari Kondo, Yasutaka Kamei, Raula Gaikovina Kula, Naoyasu Ubayashi
Última atualização: 2023-07-13 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2307.07117
Fonte PDF: https://arxiv.org/pdf/2307.07117
Licença: https://creativecommons.org/licenses/by/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.
Ligações de referência
- https://github.blog/2020-05-06-new-from-satellite-2020-github-codespaces-
- https://resources.github.com/devops/process/planning/discussions/
- https://dzhavat.github.io/2020/04/04/my-thoughts-on-github-discussions.html
- https://libraries.io/
- https://graphql.org/
- https://github.com/sbaltes/github-retriever/
- https://www.surveysystem.com/sscalc.htm
- https://github.com/prisma/prisma/discussions/10488
- https://github.com/facebook/docusaurus/discussions/6099
- https://github.com/eslint/eslint/discussions/14669
- https://github.com/gatsbyjs/gatsby/discussions/32147
- https://github.com/Automattic/mongoose/discussions/10516
- https://github.com/aws-amplify/amplify-js/discussions/8106
- https://github.com/grafana/grafana/discussions/46356
- https://github.com/logaretm/vee-validate/discussions/3723
- https://github.com/keycloak/keycloak/discussions/8988
- https://github.com/serialport/node-serialport/discussions/2287
- https://github.com/gatsbyjs/gatsby/discussions/31283
- https://github.com/facebook/create-react-app/discussions/11405
- https://github.com/date-fns/date-fns/discussions/2841
- https://github.com/vercel/next.js/discussions/12325
- https://github.com/vercel/next.js/discussions/27756
- https://github.com/apache/superset/discussions/19185
- https://github.com/ant-design/ant-design/discussions/29818
- https://github.com/apache/airflow/discussions/14315
- https://github.com/invertase/react-native-firebase/discussions/4290
- https://github.com/renovatebot/renovate/discussions/14457
- https://github.com/posl/GitHub_Discussion_Conversion