Open Source... ¿Cómo llegamos hasta aquí?

Published: (February 2, 2026 at 03:45 PM EST)
2 min read
Source: Dev.to

Source: Dev.to

Introducción

En el hackathon de Octoberfest de GitHub, los proyectos open source llamaron mi atención porque los bounties eran pagos. Descargué el repositorio y, un par de meses después, pude comenzar a trabajar en él.

El proyecto cuenta con un canal de Discord donde se publica diariamente todo lo referente al proyecto y donde todos podemos comunicar nuestros avances o ideas; es como trabajar con un equipo que desarrolla un framework o biblioteca de aprendizaje automático.

Al leer la documentación descubrí que, comparado con mi repositorio local, faltaban algunos archivos importantes que trataban de cómo tinygrad convertía el tensor en código máquina (kernel GPU).

Actualizar el repositorio

# Ver el último commit o los últimos commits de la rama master
git log -1 origin/master --format="%h%n%an%n%ad%n%s" --date=iso

# Guardar cambios locales
git stash save "aquí el mensaje"

# Descargar cambios (fetch o pull) y mezclar
git fetch origin master   # o git pull origin master
git merge master

# Aplicar los cambios guardados
git stash apply stash@{#}

Seleccionar un bounty

  1. Buscar archivos locales que contengan palabras clave del bounty.

    find . -name "speed_v_torch" -type f
    grep -r "test_sum" .github/workflows/
  2. Consultar el historial si no se encuentra nada relevante:

    git log -1 --pretty=format:"%cd" -- test/test_speed_v_torch.py
  3. Entender el problema:

    • ¿Quién lo causa?
    • ¿Por qué ocurre?

Análisis del código

Identificación de componentes principales

PreguntaQué buscar
Entrada principalargs, tensores
Salida principalreturn, resultado
Transformaciónsuma, compilación, optimización
Estado mantenidocaché, contadores
Dependenciasimports, otras clases

Funciones misteriosas

  1. Rastrear origen: revisar los import y buscar la definición.
  2. Responsabilidad: entender a qué clase pertenece y cuál es su rol.
  3. Uso: identificar quién la crea, qué contiene, quién la usa y dónde se modifica.

Patrones de diseño y factory methods

  • Buscar métodos con prefijos como from_, create_, build_.
  • Identificar patrones comunes (singleton, factory, etc.).

Flujo de datos

  • Mapear inputs → outputs.
  • Dibujar diagramas mentales que muestren el recorrido de los tensores.

Configuraciones y pruebas

  • Localizar constantes y ajustes (constants, settings).
  • Revisar la carpeta test/ para ejemplos de uso.
  • Analizar bloques try/except para entender el manejo de errores.

Documentación interna

  • Explicar cada pieza de código como si se lo contaras a un niño de 5 años.
  • Esta práctica ayuda a consolidar la comprensión y a mejorar la lógica de programación.

Herramientas usadas

  • Git para control de versiones y exploración del historial.
  • PDB (con Vim) para depuración paso a paso: n, l, p, w, r.
  • Find / Grep para búsquedas rápidas en el árbol de archivos.

Próximos pasos

  • Analizar el flujo de datos de un tensor en tinygrad.
  • Revisar la user guide para GPU AMD: kernel-descriptor.

Gracias por leer

Continuaré compartiendo mis hallazgos a medida que avance en el proyecto.

Back to Blog

Related posts

Read more »