Primer paso para contribuir en proyectos Open Source


Creo que contribuir en proyectos Open Source nos puede ayudar muchísimo a nivel profesional, incluso más de lo que podamos imaginar, por ello quiero comenzar con esta guía. Dejando aquí mis notas sé que me ayudaré y al mismo tiempo ayudaré a otros.

¡Comencemos!

Existe una herramienta destinada a controlar el código fuente, esa es Git, y se le conoce como sistema de control de versiones. La primera etapa requiere que aprendamos Git y GitHub. Es la clave para entrar en el mundo Open Source como profesional. Lo comento así porque el no comprenderlo me impidió colaborar y aportar en su momento.

Imagina que estamos creando un componente con la capacidad de ser instalado en un sistema completo. En ese sentido, la calidad y el control son fundamentales. Allí trabajamos con Git y vamos avanzando en diferentes etapas, implementando pequeñas funciones, al mismo tiempo que nos aseguramos de que lo que estamos construyendo actualmente no afectará lo que ya hemos creado anteriormente; este último es lo que se conoce como control de versiones.

Git puede parecer complicado al principio porque no vemos con nuestro ojos lo que está pasando. Pero si vamos paso a paso podríamos descubrir porque es el mejor invento del mundo para programar y colaborar con otros profesionales.

En esta guía desarrollaré los términos y algunos comandos básicos para empezar.

Control de versiones

Técnicamente, es una forma de seguir los cambios de un conjunto de archivos. Uno de sus objetivos es trabajar fácilmente con las versiones anteriores de algún archivo o etapa anterior del sistema. Otro objetivo, y el que considero más importante es el trabajo en equipo, incluso compartiendo el mismo archivo sin afectar el trabajo de otras personas.

Puede que veas estas siglas VCS o SCM. De hecho, la página de Git se llama git-scm.com, nota que incluye las siglas scm.

  • SCM: Significa Source Code Management.
  • VCS: Significa Version Control System.

Son términos equivalentes, ahora cuando los veas sabrás que se refiere a la gestión o administración de cambios del código.

En la pregunta ¿Qué es Git? La respuesta sería, es un SCM. ¡Sencillo! Mediante el control de versiones podemos ver los cambios, cuándo se realizaron, quién los realizó, también podemos ver el mensaje con el que se guardaron los cambios y más cosas como las siguientes:

  1. Navegar entre las versiones.
  2. Crear ramas para hacer cambios: Aquí puedes hacer cambios o experimentos, probar nuevas características, hacer reparaciones de errores sin afectar a la rama principal.
  3. También puedes asignar una etiqueta.

Todo esta información nos permitirá comprender el razonamiento que hubo detrás de dichos cambios.

Conceptos

Los términos del Open Source son los términos de Git, debemos comprender su terminología para crear y aportar grandes soluciones.

  • Repository: En palabras sencillas es la carpeta raíz donde se guarda todo sobre nuestro sistema y Git; el nombre de un repositorio termina en .git (por ejemplo, https://github.com/italofantone/italofantone.com.git).
  • Tree: Significa árbol, y es directamente la estructura de datos dentro del repositorio que representa a los archivos y carpetas en un commit específico.
  • Commit: Es un objeto en Git, y habla de confirmar los cambios realizados, es registrar nuestros cambios en el repositorio en un momento específico. Podemos decir que es un punto importante en la historia del repositorio.
  • Object: En Git tenemos a los objetos blob (archivo), tree (la estructura de carpetas y archivos), commit (versión específica del tree con autor, fecha y mensaje) y tag (referencia específica y directa a un commit. Se usa normalmente para marcar a una versión).
  • Hash: Es un número que representa cualquier cosa en Git (un archivo, un commit o cualquier otro objeto en el repositorio). Permite verificar si un archivo o un objeto ha cambiado mediante la comparación del hash actual con el hash anterior.
  • Branch: Es una parte independiente que deriva del proyecto principal, es lo que nos permite programar de manera independiente y no obstaculizar el trabajo de otros compañeros, la rama principal normalmente se llama main.

¿Qué es GitHub?

Es una plataforma online, allí podemos subir nuestros proyectos, revisarlos y colaborar con otros. Por supuesto está basada en Git pero incluye herramientas adicionales como colaboración, seguimiento de errores o problemas, definición de proyectos y mucho más.

Cuando estamos aprendiendo con estas herramientas normalmente nos preguntamos sobre sus diferencias. Bueno, en un proyecto debemos trabajar localmente con Git y remotamente en GitHub. Esto simplifica el proceso de colaboración ya que incluye un flujo de trabajo con usuarios para trabajar juntos y en equipo.

Configuración inicial de Git

Siempre debemos configurar algunas variables globales como user.name y user.email. Así que configura tus datos.

Tu nombre:

git config --global user.name "nombre"

Tu email:

git config --global user.email "email"

Comandos para confirmar tu configuración:

git config --global user.name
git config --global user.email

Para ver ambos datos usamos el sigueinte comando:

git config --list 

Comandos básicos de Git

Todo lo que necesitamos conocer aparecerá cuando ejecutamos el comando git --help.

  • git --version: ¿Qué versión tenemos instalada?
  • git status: Muestra el estado del tree. Es el comando que nos permite ver qué cambios tenemos.
  • git add: Con este comando le decimos a Git que realice un seguimiento de cambios en ciertos archivos.
  • git commit: Este comando guarda el trabajo realizado, es confirmar los cambios.
  • git log: Log significa registro, nos permite ver la información de nuestros commits anteriores Cada commit tiene un mensaje, con este comando leemos dicha información.

Iniciar un repositorio

mkdir git-example
cd git-example
git init

Luego haz algunos cambios y revisa con los siguientes comandos:

ls
git add .
git commit -m "Mensaje en inglés descriptivo"
git log
git branch