¿Qué necesito para contribuir al código open source?


Seguramente día a día utilizas alguna librería open source en alguno de tus proyectos, ¿no te gustaría saber que esa librería que utilizas día a día tiene un toque tuyo?

Si la respuesta es un "Si", estás en el lugar correcto, primero que nada debemos entender que el software open source está abierto a mejora continua y no precisamente requiere que los contribuidores sean programadores expertos, si bien, todo software requiere código, también requiere documentación, traducciones, pruebas unitarias, pruebas funcionales, reporte de bugs entre otras acciones que pueden ayudar a mejorar esa librería y tú puede ayudar con ello.

En general e independientemente del lenguaje de tu preferencia, existen algunos aspectos que debes tomar en cuenta para poder ser parte de la comunidad open source, enseguida te dejo una lista de los requisitos para convertirte en contribuidor o colaborador de algún proyecto:

  1. Conocer y usar git.
  2. Tener ganas de formar parte de un proyecto.
  3. Paciencia para resolver problemas y atender comentarios.
  4. (Casi siempre requerido) Saber inglés.
  5. Cumplo con todo, ¿por dónde comienzo?

Si no tienes algúno de estos puntos, no te preocupes del todo, estoy construyendo esta serie de blogs esperando que te funcionen como guía para realizar tu primera contribución.

Contribuir es el acto de agregar alguna mejora o corrección en un proyecto open source, colaborar es el acto de ser un contribuidor constante en cierto proyecto, un colaborador hace de un proyecto suyo e inclusive puede llegar a tener permisos de administración o decisión sobre ciertos aspectos del proyecto.

Conocer y utilizar GIT

git es lo primero que debes aprender para comenzar a contribuir en proyectos open source, te recomiendo tener un conocimiento básico/intermedio de ésta herramienta para que puedas gestionar los cambios o modificaciones que envíes a algún proyecto. La mayoría de los proyectos open source utilizan git y suelen estar almacenadas en GitHub y GitLab, si aún no tienes cuenta te recomiendo que la crees, es totalmente gratuito.

Tip: Te recomiendo ampliamente que estés familiarizado con los conceptos: fork, clone, branch, commit, pull, push, rebase, squash , pull request, code review. Si tienes alguna duda o deseas profundizar más en estos conceptos, tenemos un post dedicado a este tema, puedes verlo aquí.

Tener ganas de formar parte de un proyecto

Contribuir o colaborar en proyectos open source requiere de esfuerzo y tiempo, una de las razónes por las que las personas no participan en este tipo de proyectos es porque no deja ganancias económicas (al menos al principio), pero provee una manera de enriquecer tu currículum y de mejorar en mucho tus habilidades de programador.

Con el tiempo, contribuir puede ayudarte a conseguir mejores oportunidades y/o si tu librería o proyecto comienza a ganar popularidad, la gente comenzará a hacer donaciones y/o a mantener tu proyecto económicamente.

Es muy difícil llegar a éste punto, pero no es imposible.

Paciencia para resolver problemas

Identificar algún problema, necesidad o mejora en librerías open source puede ser complicado, a parte de ésto, dedicar algunas horas o días para brindar una solución, enviarla para revisión y que te pidan muchos cambios o que rechacen tu PR puede ser muy frustrante, incluso podría parecer que es demasiado trabajo y que no es bien compensado, ¡ten mucha paciencia!.

Si te propones ayudar en algún proyecto, sea que tus cambios sean aceptados o no, tendrás un crecimiento personal y profesional muy grande, esto incrementa tu confianza y poco a poco te darás cuenta de que contribuir se hará más sencillo cada vez.

Lidiar con las revisiones será un proceso que comenzarás a disfrutar por el aprendizaje que te dejan y las personas que vas conociendo son una de las principales ventajas de ser parte de ésta comunidad.

Saber inglés

La mayoría de las librerías open source populares están escritas en inglés, no es necesario que seas totalmente bilingüe, pero si te servirá que tengas las habilidades básicas para explicar qué conlleva tú mejora y documentarla si es necesario.

Considera que las revisiones de PR funcionan como una especie de chat sobre tu código y regularmente te preguntarán algunas cosas cómo:

  • ¿Cuál es el motivo de tu cambio.
  • ¿Qué ventajas tiene?.
  • ¿Qué implicaciones/impacto tiene?
  • Siempre debes estar preparado para contestar este tipo de cuestiones.

Cumplo con todo ¿por dónde comienzo?

Si no sabes por dónde comenzar, cada proyecto en github tiene una sección llamada issues, en ella puedes ver todos los problemas u oportunidades de mejora que han encontrado o propuesto otros desarrolladores, ingresa en el issue que más te llame la atención e intenta resolverlo.

Si no eres un programador con mucha experiencia o te sientes muy inseguro, puedes comenzar por buscar issues relacionados con documentación o traducciones, estos suelen ser fáciles y te ayudarán a ganar confianza en ti mismo para hacer contribuciones cada vez más difíciles.

Tips

Por mi experiencia en campo, te puedo compartir algunos tips que te pueden ayudar a lograr a sacarle el mayor provecho y agilizar el proceso de contribución:

  • Realiza pull requests pequeños y enfocados a una sola solución:

    Cada pull request debe pasar por un proceso de revisión, éste proceso suele ser lento porque las personas que revisan el código deben hacer muchas revisiones además de seguir aportando mejoras al proyecto, por ello, intenta que tu pull request sea lo más compacto posible, pero sin sacrificar la calidad ni las buenas prácticas.

  • Se profesional al recibir comentarios respecto a tu trabajo: Los reviewers de código tienen una tarea difícil, y es asegurar que los cambios que proponemos no dañen de ninguna manera el funcionamiento o el requerimiento inicial del proyecto, cuando un reviewer te solicite cambios o rechace tu PR, tomalo como una crítica constructiva y continúa con tu trabajo. Si tienes dudas respecto al motivo de rechazo o no queda del todo claro el mensaje del reviewer siéntete con las libertad de preguntar los motivos.

  • Disfruta contribuir, tomate tu tiempo: Es open source, regularmente no tienes ganancias económicas por participar en estos proyectos, todos los involucarados en el proyecto saben esto y por ende suelen ser muy pacientes en cuanto a avances, de igual manera, avanza a tu ritmo y disfruta de colaborar o contribuir.

    No olvides ser paciente con las actividades que no dependen de ti, como los code reviews.

  • Investiga las mejores prácticas del lenguaje: Independientemente del lenguaje que utilices, siempre intenta seguir las mejores prácticas de código, esto ayuda en muchas ocasiones a agilizar el proceso de code review y minimiza el número de correcciones solicitadas o rechazos.

  • Realiza tests de tus mejoras o cambios: Asegurate de que los cambios que realices estén respaldados por un buen test, es casi un hecho que te lo van a solicitar, pero de igual manera, es buena idea acostumbrarse a hacer test para minimizar el riesgo de bugs en el proyecto.

  • Lee la sección Contributing incluida en el archivo README.md de cada proyecto: En este archivo se especifican las reglas para que puedas contribuir de manera exitosa, a veces colocan code standards, en ocasiones te solicitan que ejecutes una serie de pruebas para asegurarte de que tu código no afectó en nada, entre otros datos importantes. Si tú eres el propietario del proyecto, no olvides agregar esta sección al archivo README.md

  • Se respetuoso con los otros contribuidores: Considera que al ser partícipe de proyectos open source, estarémos tratando con personas de diferentes culturas, todos tenemos diferentes maneras de hacer las cosas e ideologías, siempre debes estás abierto al dialogo y debes respetar a las personas con las que interactúas.

Conclusión

Contribuir en proyectos open source no es fácil, pero las recompensas valen la pena; la experiencia, el aprendizaje y las conexiones que obtienes no tienen comparación. Te invito a que crees una cuenta en GitHub (si aún no la tienes), busques en ella una librería que utilizas mucho e intentes realizar una contribución.

Te deseo lo mejor en el mundo open source, y si ya tienes experiencia cuéntame de ella en los comentarios.