Cómo contribuir a proyectos y comunidades abiertas

Yani Bellini Saibene

Agenda para hoy

  • ¿Qué es una contribución para un proyecto de código abierto?
  • …¿y para una comunidad?
  • Ejemplos con rOpenSci
  • ¿Cómo puedo ayudar a las personas a contribuir a mi paquete?

Contribuciones

Cuando escuchas “Hice una contribución a un proyecto o comunidad de código abierto”…

…¿qué te viene a la mente?

Desde la perspectiva de una comunidad

Tenemos algunos modelos de participación

Comunidad de Practica

Grupo de personas que comparten una pasión por algo que saben como hacer, y que interactúan regularmente con el objetivo de aprender como hacerlo mejorEtienne Wenger

¿Cómo alguien llega a formar parte de una comunidad?

Camino hacia la Inclusión

Seis pasos desde “nunca escuché de esto” hasta “esto es lo mío”

  • Conciencia: Escuché hablar de esto.
  • Comprensión: Entiendo qué es y cómo sería involucrarme.
  • Identificación: me imagino haciendo esto.
  • Acceso: Puedo hacer esto (física, logística, financiera, …)
  • Pertenencia: Siento que encajo.
  • Apropiación: Me importa tanto como para asumir la responsabilidad.

Camino hacia la Inclusión

Seis pasos desde “nunca escuché de esto” hasta “esto es lo mío”

  • Conciencia: redes sociales, conferencias, meetups.
  • Comprensión: README, documentación, sitio web
  • Identificación: casos de uso, entrevistas, experiencias
  • Acceso: codigo de conducta, zonas horarias
  • Pertenencia: idiomas
  • Apropiación: onboarding, issues etiquetados, guías de contribución

Camino hacia la Inclusión

  • ¿Cuáles son tus comunidades de práctica relacionadas con R?

  • ¿Qué actividad o herramienta te ayudó a integrarte en tu comunidad?

  • ¿Puedes dar ejemplos de otras comunidades o proyectos de los que formas parte y en qué etapa te encuentras?

  • ¿Cuánto tiempo te tomó pasar de un estado a otro?

¿Cómo alguien participa en una comunidad?

Modelo de Participación Comunitaria CSCCE

Ejemplo

Joel tenía previsto visitar Oslo, Noruega, para dar un taller.

Se puso en contacto con Mo, otra persona activa de rOpenSci, para proponerle tomar un café,

y Mo le preguntó si estaría dispuesto a dar otro taller.

Mo había visto a Joel en una “conversaciones con la comunidad” de rOpenSci sobre {targets} y quería aprovechar su experiencia para empezar a profundizar en el tema.

Joel se dio cuenta de que esa era la motivación que necesitaba para actualizar los materiales del taller, así que aceptó encantado.

Ejemplo

  • Community Call: Joel estaba contribuyendo y Mo estaba en consumo
  • Blog Post: Joel y Mo estaban colaborando
  • Workshop: Joel y Mo estaban co-creando

Colaboración con otras organizaciones y comunidades.

Modelo de Participación Comunitaria CSCCE

  • ¿Cuál es tu forma más habitual de participar en tu comunidad?

  • ¿Dónde ubicarías el Programa de Campeones?

Modelo de Participación Comunitaria CSCCE

Los programas de campeones suelen estar en todo el espectro

Ejemplos de actividades de campeones

  • Transmitir: publican en redes sociales para difundir más ampliamente

  • Contribuir: invitan a otros a asistir a un evento;

  • Colaborar: organizan una llamada comunitaria;

  • Co-crear: realizan capacitaciones u otras actividades para otros en la comunidad

Ejemplos de rOpenSci

Ejemplos de rOpenSci

  • ¿Has participado en alguna de estas opciones?

  • ¿Cuál te gustaría probar?

  • ¿Cuál te parece más accesible o útil para tus grupos de trabajo u otras comunidades?

  • Puedes usar muchas de estas opciones como tu actividad de difusión para el Programa de Campeones.

  • Nos gustaría aprender cómo podemos mejorar estas actividades. Difunde información sobre estas opciones a personas en tus comunidades.

¿Cómo son útiles estos conceptos para mi paquete?

Transmitir

  • Crea un README completo: explica claramente qué hace tu paquete, cómo instalarlo y cómo los usuarios pueden empezar a usarlo. Incluye ejemplos o casos de uso y (enlaces a) cualquier información relevante que pueda ayudar a los usuarios a entender cómo tu paquete puede ayudarles.

  • Fija el repositorio de tu paquete a tu perfil para que otras personas puedan encontrarlo rápidamente.

  • Crea un universo en R-universe, simplifica la instalación de tu paquete y proporciona estadísticas e información útiles sobre él.

Transmitir

  • Recomendamos crear un sitio web de documentación para tu paquete usando pkgdown.

  • Aprovecha plataformas como Mastodon, LinkedIn y foros específicos de R como R-bloggers y R Weekly para anunciar el lanzamiento de tu paquete.

  • Si te gusta dar charlas, puedes presentar en un Grupo de Usuarios de R o Capítulo de R-Ladies.

  • Presentar tu paquete en una conferencia específica del dominio o en conferencias específicas de R (LatinR ;-)).

  • Si tu paquete encaja en una Vista de Tareas de CRAN puedes proponer su adición.

Contribuir / Colaborar

Haz que tu repositorio sea amigable para la contribución y colaboración

  • Código de conducta (CODE_OF_CONDUCT.md): puedes insertar uno con use_code_of_conduct() del paquete usethis. La plantilla proviene de https://www.contributor-covenant.org.

  • Licencia OSI (LICENSE.md).

  • Guía de contribución (CONTRIBUTING.md): una forma fácil de insertar una plantilla para una guía de contribución es use_tidy_contributing() del paquete usethis.

Contribuir / Colaborar

En grupos usa tu paquete o el paquete que creamos en las otras capacitaciones y

  • agrega un Código de Conducta.

  • agrega una Guía de Contribución.

Ayuda de {usethis}: https://usethis.r-lib.org/reference/use_code_of_conduct.html

Guía de contribución

Las preferencias personales en una guía de contribución incluyen:

  • ¿Preferencias de estilo?

  • ¿Infraestructura como roxygen2?

  • ¿Preferencias de flujo de trabajo? ¿Issue antes de un PR?

  • Describe cómo reconoces las contribuciones.

  • ¿Una declaración de alcance, como en el paquete skimr?

  • Recomendamos que las guías de contribución incluyan una declaración de ciclo de vida que aclare visiones y expectativas para el desarrollo futuro de tu paquete.

Gestión de issues

  • Plantilla(s) de issue: ayudan a los usuarios a completar mejores reportes de errores o solicitudes de funcionalidades.

  • Etiquetado de issues: usa etiquetas como “help wanted” y “good first issue” para ayudar a colaboradores potenciales, incluyendo principiantes, a encontrar tu repositorio.

  • Fijar issues: Puedes fijar hasta 3 issues por repositorio que luego aparecerán en la parte superior de tu rastreador de issues como tarjetas de issue atractivas. Puede ayudar a publicitar cuáles son tus prioridades.

Recursos adicionales: Colaborar / Co-crear.

¡Tiempo para Comentarios y Preguntas! :-)