Mi primer PR (Pull Request) en Github

Bueno, me tomaré la libertad de salir un poco de mi zona de confort, para entrar en otra de mis zonas de confort :P FOSS. En este post pretendo, así como hice con Gentoo, primero compartir un poco de mi experiencia personal y así tratar de emocionarlos un poco a poder sumergirse de lleno en el mundo de los proyectos y las contribuciones. Sin más que agregar, empecemos:

FOSS

Free and Open Source Software (por sus siglas en inglés) es una corriente que envuelve tanto a proyectos open source como de software libre. No pretendo discutir las diferencias entre ambos ya que ya lo he hecho en repetidas oportunidades, incluso una vez tuve que explicar todo al mismo señor Stallman que me contactó por correo en una de las listas de proyectos que abundan por internet. Un artículo que me emociona mucho y el cual les voy a compartir se encuentra en la página oficial de GNU y como muchos de sus documentos, se encuentran traducidos a diversos idiomas. Les adjunto el link y me tomaré la libertad de citar uno de los párrafos que más me llaman la atención.

https://www.gnu.org/education/edu-schools.es.html

La razón más profunda para utilizar software libre en las escuelas es la educación moral. Esperamos que las escuelas enseñen hechos básicos y habilidades útiles, pero esa es solo una parte de su función. La tarea fundamental de las escuelas es enseñar a ser buenos ciudadanos, incluyendo el hábito de ayudar a los demás. En el ámbito informático, esto se traduce en enseñar a compartir el software. Las escuelas, a partir del jardín infantil, deberían decirle a sus alumnos: «Si traéis software a la escuela, debéis compartirlo con los demás niños. Y debéis mostrar el código fuente en clase, por si alguien quiere aprender. Por lo tanto, no está permitido traer a la escuela software que no sea libre, a menos que sirva para hacer algún trabajo de ingeniería inversa».

Como pueden ver, el software libre es una corriente más que técnica, yo diría moral. Es como acercarnos un paso más a este mundo en el que el egoísmo y la soberbia están de lado y podemos tener gente que realmente comparte y se preocupa por los demás.

Bueno, no pretendo hacerlos fervientes usuarios de software libre, pero los animo a que den un salto por los documentos, y vean lo bueno que puedan rescatar :)

Proyectos

Todo software, ya sea open source o free software, tiene un proyecto y probablemente una comunidad girando a su alrededor. Estos son quienes lo mantienen, mejoran, protegen, etc. Como es de esperarse, mientras más grande es el proyecto, las estructuras se vuelven cada vez más específicas en cuanto a procesos y formas, y evidentemente es lo correcto puesto que a mayor número de participantes, los errores pueden ser mayores si no se tienen bien definidas las formas de colaborar y los procesos para hacerlo.

La principal regla al momento de optar por contribuir a un programa FOSS, es USAR dicho programa :D Y puede que suene un poco tonto lo que digo, pero en realidad tiene mucho sentido. ¿Cómo nacen muchos de los features que incluye un programa? Pues por necesidad. Cada funcionalidad existente surge en base a que alguien (una o muchas personas) necesitan de dicha función. Es por esto que si tu deseas compartir y colaborar a una comunidad, un paso indispensable es que uses lo que desarrollan.

¿Es necesario ser un experto programador?

Yo quiero comenzar esta parte haciendo una simple pregunta. ¿Cómo se convierte uno en un experto programador? Aquí algunos me dirán, pues escribiendo código, y a todas esas personas yo les comento que ese no es el enfoque correcto. ¿Por qué?

Leer código te hace mejor programador

Piensen en esto un poco antes de continuar. ¿Qué escritor nació sabiendo escribir? ¿No es acaso primero aprender a leer, para nutrir el cerebro con muchos otros autores y así eventualmente poder empezar a escribir algo con contenido y valor? Sucede exactamente igual con el código, uno debe aprender a leer mucho antes de aprender a escribir.

Tu código probablemente no es tan bueno

Para los que lleven programando por muchos años, perdón si con esto destruyo sus concepciones de lo que han logrado en todo este tiempo, pero es verdad. Para los que hemos tenido la oportunidad de colaborar en proyectos realmente grandes, lo primero que puedes apreciar es que existe muchísima gente que es muchísimo más talentosa que uno. Evidentemente esto antes que ser una desventaja, es un punto por el cual apoyar en un proyecto te convierte en un mejor desarrollador.

Tener cientos, o tal vez miles, de ojos revisando tu código día a día, te hace descubrir en qué aspectos tu lógica no es la mejor de todas. La principal ventaja de esto es que con el pasar del tiempo, tu cerebro va descubriendo nuevas formas de proceder, y los errores “infantiles” que cometías al principio de tu participación, se convierten en un vago recuerdo.

Con esto solo quiero reforzar el hecho de que un proyecto te hace bien, tanto para aprender a leer como para aprender a escribir código, lo que a la larga te convertirá en un experto programador.

Y… ¿si yo no soy programador?

Este es un punto que quiero tocar también porque mucha gente piensa que si no escribe código, no hay nada que se pueda hacer para ayudar. Este es un mito urbano de los más perjudiciales que existen.

Muchos proyectos requiere de más mano de obra en temas que no son de código de la que requieren para producir código. Tal vez en marketing, o en publicidad, o derecho, incluso en planeamiento de eventos, la ayuda siempre es bienvenida. Además de que te permite conocer nueva gente, el participar en estos proyectos te permite conocer nuevas formas de pensar y al mismo tiempo compartir experiencias nuevas.

¿Cómo participo?

Pues si ya estás aquí, espero que al menos un poco de curiosidad te pique por participar en proyectos FOSS ;) . Para comenzar es necesario comprender que cada proyecto y comunidad tiene su proceso propio. Muchos de estos se juntan en distintos puntos, y divergen en otros, pero al fin de cuentas, el primer punto de referencia para participar será la comunidad del programa que usas.

Página web

Cada página web tiene su propia sección de Contribuye. Y si no la tiene, pues esa es la primer cosa en la que puedes ayudar :D aprende el proceso, conversa con la comunidad, y escribe un pequeño texto para que puedas guiar a otros por el proceso ;) Si ya tienen uno, pero no está en español, pues puedes tomarte un fin de semana para traducirlo y así estarás ayudando a tu proyecto y al mismo tiempo a todos los de habla hispana :) Dos pájaros de un tiro ;)

Listas de correo

Mucha de la comunicación de las comunidades se da por listas de correo, es necesario subscribirse y empezar a tomarse un par de minutos al día para leerlos. Tal vez al principio no entiendas, pero te aseguro que con el pasar de los días o semanas, irás comprendiendo lo que sucede. Antes de darte cuenta, ya estarás escribiendo en la lista, y no pasará mucho antes de que la gente te empiece a preguntar opinión o posibles soluciones (si te esfuerzas claro está ;) ).

Github

Este es un punto crucial para toda persona que desee colaborar en un proyecto FOSS, aprender a manjera Github, o Gitlab, o Bitbucket, o cualquier host que albergue el código del repositorio, te permitirá ayudar de manera tangible a la mejora de la comunidad.

IRC/Gitter/Telegram

IRC (Internet Relay Chat) ha estado desde los primeros días del internet. Así es como la gente se comunicaba antes de whatsapp y los smartphones. Y como es de esperarse, muchos proyectos tienen sus canales de IRC a disposición donde se pueden hacer preguntas y conversar sobre temas del proyecto o comunidad, o tener una charla espontánea :) siempre teniendo cuidado porque uno nuca sabe lo que puede encontrar en internet ;)

Mi primer PR

Bueno, aquí no vengo a explicar cómo es que se hace un Pull Request en detalle, eso lo dejaré para otro post si es que les interesa comenzar a participar.

Como programador

Diseño propio. Christopher Díaz Riveros

Como no programador

Diseño propio. Christopher Díaz Riveros

El primero fue un bug de seguridad en el cual incorporé un parche para resolverlo, el segundo es parte del capítulo 7 del libro de Git. Sigo trabajando en ambos proyectos, incluso hace poco terminé de traducir por completo el programa git al español. (Saldrá en la versión 2.15 ;) )

Son aportes pequeños como podrán ver, no más de 100 líneas de código ( de las cuales bastantes solo fueron copiar y pegar lo que ya existía en un nuevo archivo), pero son mi contribución al proyecto :) y son cosas que yo uso a diario.

Como puede apreciar, la sensación es bastante indescriptible :) ver tu nombre en algo que usas, saber que ayudas a mucha gente en el proceso, y  ¡aprender a hacerlo cada día mejor! ¿Puede acaso haber algo mejor que esto? :)

En conclusión:

Me prometí a mi mismo mantener corto este post pero creo que no ha sido tan corto como esperé que sería :P . En fin, espero que con esto les haya picado un poco la curiosidad por empezar a colaborar en proyectos FOSS. Y pronto poder ver sus commits en muchos programas que ustedes usen a diario ;) disculpen que haga tanto énfasis en esto, pero deben comprender que nadie puede mejorar algo que no conoce, y por eso es indispensable poder conocer antes de mejorar :)

Saludos

 

Published by

ChrisADR

I'm a young developer who loves open source and free software technologies, I'm the founder of CodeLabora, an open source community which aims to help young developers from Latin America to get involved with open source and free software projects and communities around the world. I like to learn and my favorite subjects are security and Linux. I've recently finished an internship as security analyst and contribute to the security project from my Linux community, Gentoo Linux, as Gentoo Linux Security Advise (GLSA) Coordinator