Como fazer um evento de contribuição open source

Nos últimos tempos, realizamos vários eventos de contribuição para projetos de código aberto (ex: Hackathon de kUnit, Hackathon de Tradução, Hackathon de 1 Caractere, Calourada LKCAMP, etc). Por isso, decidimos documentar nosso método para organizar esse tipo de evento. Isso está separado nos tópicos abaixo e, para cada um dos quais, há um resumo (“TLDR”).


Antes do evento

Determinar o público alvo

TLDR: oriente-se pelos interesses e conhecimentos do público

Antes de escolher a contribuição que será feita no evento é importante determinar o público alvo do evento. Isso é crucial para pensar em uma atividade que seja interessante e paupável para a maioria dos participantes esperados para o evento.

Por exemplo, quando fomos convidados a fazer um evento para a Semana da Computação da Unicamp (SECOMP), decidimos dedicar grande parte do evento ao ensinamento dos básicos de git e GitHub/GitLab. Isto, pois tínhamos a expectativa de que grande parte do público não estaria familiarizado com essas ferramentas, já que grande parte do público da SECOMP é composto por estudantes de outros curso além de Engenharia e Ciência da Computação.

Escolher a contribuição

TLDR: escolha uma contribuição que seja comum e siga um padrão
Ferramentas: Telegram (comunicação entre organizadores do evento), Jitsi (serviço de video-conferência), Etherpad (registro)

Ao determinar o público, o próximo passo é selecionar uma contribuição. Para isso, sempre buscamos uma mudança que:

  1. Seja comum, para que possamos encontrar projetos que precisam dela
  2. Siga um padrão, para que possamos ensiná-la em pouco tempo

Um exemplo desse tipo de contribuição foi a que fizemos no Hackathon de Tradução. Neste evento, ensinamos a contribuição com tradução para projetos que implementam essa funcionalidade usando uma tecnologia específica (GNU gettext). Essa contribuição é comum (1.), porque muitos projetos ainda carecem de tradução para o português brasileiro, e segue um padrão (2.), porque adicionar uma nova tradução segue o mesmo fluxo de trabalho mesmo entre diferentes projetos.

Tendo escolhido a contribuição, decidimos a sequência das atividades que serão realizadas no evento. Em seguida, dividimos as tarefas entre os membros do nosso grupo, deixando a responsabilidade de cada um escrita em um documento Etherpad.

Selecionar projetos

TLDR: tenha uma lista de projetos pronta para o dia do evento
Ferramentas: Ethercalc (planilhas), IRC ou Matrix ou Email (comunicação com mantenedores)

Para que o evento aconteça de maneira fluida, nós preparamos uma planilha Ethercalc com projetos que carecem da contribuição escolhida para o evento. Essa foi a planilha do Hackathon de 1 Caractere:

planilha-projetos

Essas planilhas tipicamente incluem os seguintes campos:

  • Nome do projeto
  • Descrição do projeto
  • Link do repositório do projeto
  • Screenshot do projeto
  • Status: pull request, merged, etc
  • Pessoa ou grupo responsável (inicialmente vazio)

Além disso, entramos em contato com os mantenedores dos projetos caso a convenção seja se comunicar antes de enviar uma contribuição (ex: por issues no GitHub ou GitLab, por mensagens no IRC ou Matrix, por emails em mailing lists, etc).

Isso ocorreu no Hackathon de kUnit, em que contribuimos para o kernel linux modernizando testes unitários. Levando em conta a escala do kernel linux, decidimos entrar em contato com os mantenedores das partes do kernel que receberiam as contribuições, a fim de melhor entender se a contribuição seria desejável para eles.

Praticar a contribuição

TLDR: toda a equipe deve fazer uma contribuição de exemplo
Ferramentas: Ethercalc (planilhas)

Depois de selecionar a contribuição e os projetos que carecem dela, todos os membros do LKCAMP envolvidos na organização do evento devem fazer uma contribuição. Com isso,

  • Nós confeccionamos exemplos para servirem de modelo para os participantes do evento

  • Nós antecipamos e nos preparamos para problemas comuns, que podem ocorrer no dia do evento (ex: problemas de setup, erros de compilação, etc)

Ao finalizar uma contribuição de exemplo, atualizamos a planilha de projetos, preenchendo o campo “Pessoa ou grupo responsável” com “Equipe LKCAMP” como destacado na imagem abaixo.

planilha-lkcamp

Aprender e ensinar além do mínimo

TLDR: aproveite evento para aprender e ensinar o máximo possível

Para nós, os eventos são uma oportunidade de ensinar aos participantes tudo que julgarmos relevante para a contribuição escolhida. Por isso, sempre buscamos entender e explicar a contribuição muito além do mínimo necessário para fazê-la.

Por exemplo, a contribuição que ensinamos no Hackathon de 1 Caractere era muito simples (literamente um único caractere!), mas aproveitamos a oportunidade para explicar conceitos de programação orientada a objetos e noções de design de interface acessível.

Escrever uma postagem no blog

TLDR: material escrito é crucial para participantes e organizadores
Ferramentas: Hugo (geração de site estático), GitLab (hospedagem)

Por fim, confeccionamos um material escrito que documenta todo o processo de realização da contribuição escolhida (incluindo os conteúdos adicionais mencionados no item anterior). Esse material é publicada no nosso blog.

Esse material serve como consulta para os participantes do evento, evitando que eles se percam durante nossas explicações. Além disso, esse material serve como documentação para a própria equipe do LKCAMP.

Vale dizer também que o formato escrito evita erros de digitação e de sintaxe, pois permite que os participantes copiem (Ctrl + c) e colem (Ctrl + v) os recortes de código exemplificados, ao invés de transcrevê-los manualmente a partir de slides.


Durante o evento

Apresentar um tutorial

TLDR: a primeira parte do evento é curta e expositiva
Ferramentas: Libre Office Impress ou LaTeX Beamer (slides)

A primeira parte do evento é uma apresentação de slides, feita utilizando Libre Office Impress ou LaTeX Beamer, que ensina a contribuição escolhida e aborda os assuntos de aprofundamento relacionados a ela. Sempre que possível, a apresentação segue a mesma estrutura que a postagem no blog.

Disponibilizar tempo para contribuir

TLDR: a segunda parte do evento é longa e “mão na massa”

Depois da apresentação, a maior parte do tempo do evento é alocada para tempo livre para realizar a contribuição. Nesse momento, todos os membros do LKCAMP que estiverem presentes assumem o papel de monitores e prestam assistência individual aos participantes que ficarem com dúvidas.


Obrigado por ler até aqui, esperamos que essa postagem tenha sido informativa! Caso tenha interesse em organizar eventos de contribuição para projetos de código aberto, não hesite em entrar em contato com a gente no nosso grupo de Telegram.

Até a próxima! 🐧 💙