El mundo del Open Source (o Código Abierto) es vasto y puede ser fácil perderse en él. Al principio, puede parecer inaccesible e intimidante, por lo que una de las preguntas en este punto son: ¿Por dónde empiezo? ¿Qué reglas y códigos de conducta tengo que seguir? ¿Puedo contribuir si ni siquiera sé programar?
No te preocupes, en este artículo os daremos todos los consejos que necesites para empezar con buen pie, elegir un buen proyecto para colaborar y así enviar tu primera contribución.
Lo primero que tendrias que hacer es decidir en qué proyecto quieres empezar a hacer tu primera contribución. Teniendo en cuenta que hay millones de proyectos Open Source, puede ser difícil encontrar tal proyecto.
Una primera idea, quizás la más simple, sería identificar proyectos que te gusten, que suelas usar o que signifiquen mucho para ti. Será más fácil empezar en un entorno familiar que te pueda mantener motivado a colaborar a largo plazo.
También es importante tener en cuenta la madurez del proyecto y su tamaño. Puede ser tentador empezar con frameworks grandes, librerías o herramientas como VS Code, MongoDB, Android, React…. Este tipo de proyectos tienen muchos colaboradores y muchos bugs por arreglar o características por añadir. Las contribuciones en este tipo de proyectos suelen dar algo de satisfacción cuando estas acaban siendo integradas; pero debido a que estos proyectos tienen millones de líneas de código, no son la mejor elección para empezar en el Open Source. Esas comunidades ya están bien desarrolladas y mucha gente se dedica a ofrecer contribuciones que sólo unos pocos mantenedores han de revisar. Por lo tanto, se puede tardar un tiempo antes de que tu contribución sea estudiada y potencialmente acabe siendo aceptada.
Empezar en proyectos más pequeños con potencial es una mejor manera de empezar. Echa un ojo a proyectos en auge, por ejemplo en GitHub trending, y encuentra aquellos que coincidan con tus intereses.
Otra buena manera de identificar un proyecto adecuado para ti es elegir aquellos que estén buscando activamente a colaboradores. Algunas páginas y herramientas pueden ayudar a ello:
-
Awesome for beginners es una lista de proyectos que buscan colaboradores (sean principiantes o no) listando sus "Good First Issues". De la misma manera, la página Up for grabs hace posible encontrar proyectos en busca de colaboradores.
-
CodeTriage es una herramienta para suscribirse a proyectos Open Source y recibir nuevas peticiones para colaborar a estos cada día.
-
First contributions es un poco distinto. Se trata de un workshop para hacer tu primera contribución en menos de cinco minutos. Introduce la base y el flujo de trabajo de Git para hacer contribuciones en GitHub. Además de este tutorial, la página ofrece enlaces a "Good First Issues" en proyectos de GitHub grandes.
-
Organizaciones y eventos como HacktoberFest son también una buena manera de empezar en proyectos que buscan colaboradores. Por ejemplo, el hack.commit.push organiza un día de desarrollo Open Source, indiferentemente de tu nivel. Se empieza con una serie de workshops de iniciación, que siguen luego con contribuciones en proyectos Open Source con ayuda de mentores.
Una vez hayas encontrado tu proyecto de ensueño (o varios de estos), necesitarás dedicarte a leer sobre esos proyectos. El archivo README es un buen punto de partida para tener una visión general del proyecto. El Código de Conducta y la Guía de Contribuciones están más enfocados en cómo interactuar con el proyecto y su comunidad. No son muy largos de leer, pero son obligatorios de leer antes de hacer una contribución. Te dará todos los consejos, reglas y procedimientos que hay que seguir para permitir la consistencia y mantenimiento del proyecto.
El código de conducta
Muchos de los proyectos Open Source tienen un código de conducta. Permite a los mantenedores del proyecto definir las reglas y comportamientos a adoptar en su proyecto.
Los puntos esenciales de este código definen las reglas que deben seguir los participantes. Aprende a respetar diferentes puntos de vista, escucha y acepta el feedback de tus contribuciones. Ten entre tus expectativas que hayan potenciales desacuerdos sobre lo que se ha contribuido; así que no te lo tomes a pecho. A veces, durante las revisiones, es posible que los individuos no estén de acuerdo con algunas decisiones o aproximaciones que se hayan tomado. Por lo tanto es muy importante ser profesional y respetar el Código de Conducta. Todo feedback es valioso y es durante estas discusiones donde más se aprende.
También es muy importante ser paciente. Algunos proyectos Open Source se mantienen en el tiempo libre de alguien. Puede tomarse un buen tiempo en que tu contribución se pueda revisar o aceptar.
Aquí tienes un ejemplo del Código de Conducta que se usa en algunos proyectos: Contributor convenant. Las reglas que se definen deberían aplicarse tanto en el mundo del Open Source como en entornos más profesionales.
La guía de contribuciones
Este documento define los flujos y maneras de trabajar en el proyecto, además de ayudar a entender los estándares y expectativas de la comunidad. Por ejemplo:
- ¿Cómo monto mi entorno de desarrollo?
- ¿Cómo publico una issue?
- ¿Qué estándares han de seguirse en los commits?
- ¿Qué expectativas han de cumplirse con los tests?
Si una contribución no sigue estas prácticas, puede que acabe siendo rechazada antes siquiera de que alguien lo revise. Estos estándares sirven para mantener la coherencia en el proyecto pero también para ahorrar tiempo a quienes mantienen el proyecto. Por eso, léelo con atención.
Únete a la comunidad
Un proyecto no sólo se limita a la documentación y el código fuente. Es también importante entender e interactuar con la comunidad del proyecto. Hay diferentes roles en un proyecto Open Source. Los tres principales:
- Los mantenedores o colaboradores core, que están desde el principio del proyecto o han sido invitados a este rol gracias a todas las contribuciones que se han hecho.
- Colaboradores, quienes participan en la vida del proyecto ofreciendo contribuciones (documentación, arreglos de bugs...), respondiendo preguntas o abriendo tickets.
- Y los Usuarios, quienes usarán el proyecto y muchas veces dan feedback, mandan bugs, proponen mejoras o preguntan en foros.
Los medios de comunicación en la comunidad varían según el proyecto. Puede ser una mailing list, un canal de Slack, un grupo de Discord u otra herramienta de este tipo. Ahí podrás hacer preguntas, ayudar a definir roadmaps, o simplemente discutir con otros.
Ahora que has identificado un proyecto que te interese y has leído la documentación necesaria para empezar, estás listo para ofrecer tu primera contribución al mundillo.
Sobre todo, no necesitas saber cómo programar para contribuir a proyectos Open Source:
- ¿Te gusta escribir? Corrige o desarrolla la documentación del proyecto.
- ¿Eres un maestro del diseño? Crea un logo o una página web para el proyecto.
- ¿Te gusta comunicar? Responde a las preguntas de la comunidad
Todas las contribuciones son válidas y ayudan al proyecto. Aquí tienes una lista de tareas (no muy exhaustiva) que se pueden hacer para ayudar a este tipo de proyectos:
Documentación
- Escribe y corrige la documentación del proyecto
- Traduce la documentación a otros idiomas.
Organización
- Reporta bugs o propón nuevas características
- Responde a los issues, archívalos y ciérralos de ser necesario.
- Responde a las preguntas que surjan (por ejemplo en GitHub, Stack Overflow...)
Comunicación
- Escribe artículos o tutoriales
- Organiza charlas o conferencias sobre el proyecto;
- Comenta por Twitter (nuevas versiones, contribuciones...);
- Crea un diseño para el proyecto (logo, colores...);
- Diseña una página web para el proyecto.
Programación
- Revisa los Códigos de Conducta;
- Diseña y desarrolla tests;
- Automatiza el proyecto (CI, CD...);
- Arregla bugs;
- Añade nuevas características.
Si no sabes por donde empezar, consulta la lista de issues abiertos en el proyecto. En muchos de ellos, algunos tickets se identifican con etiquetas como "Good First Issues" o "Beginner". Están identificadas por los colaboradores principales como contribuciones simples y tomas de contacto con el proyecto. También puedes echar un ojo a los tickets categorizados como "Help needed/wanted", que esperan a que alguien pueda asignarse tal tarea.
Cuando hayas identificado una issue o un ticket al que deseas contribuir, deberías ubicarte en el contexto del proyecto. Así que no dudes en preguntar a otros colaboradores para pedir información. Las discusiones e intercambios de información son esenciales para empezar una nueva contribución. Te guiarán a través de las expectativas de la comunidad, cómo validar una solución técnica o identificar restricciones o dificultades potenciales.
Antes de publicar tu primera contribución, comprueba tu código y no dudes en probarlo antes de enviarlo. No dudes tampoco en explicar el contexto y documentar tu contribución. Todo lo que ayude a otros colaboradores y mantenedores del proyecto para revisar la contribución harán acelerar ese proceso.
Finalmente, cuando hayas hecho tu primera contribución, no olvides publicarlo y compartirlo con el mundo a través de Twitter, Facebook o tu red social favorita.