General nerdness

Ivan Reyes – Trying to blag is never easy, that's why I have no posts xD

Cómo hacer un pull request integrable en Github

Oct 08, 2019


Paper stacks

Recientemente he estado probando Twit, una librería de node, ha resultado efectiva, pero para utilizarla en Typescript necesito instalar sus typings, y esos typings estan incompletos. Entonces hoy voy a hacer un pull request a DefinitelyTyped y espero que sea integrable a su proyecto.

¿Qué es DefinitelyTyped?

Es una colección de declaration files. Muchas librerías de node.js no soportan activamente Typescript, en general son compatibles de cualquier forma, pero para utilizarlas necesitamos los typings las funciones, variables, argumentos, etc. que forman parte de la librería.

Usualmente cuando instalamos un typing basta instalar el mismo nombre de la librería precedido con @types/ por ejemplo:

npm install --save twit
npm install --save-dev @types/twit

Forking & Cloning

Primero vamos a hacer un fork del repositorio que queremos modificar. Realmente solo es presionar un botón, pero el efecto es que en tu cuenta de Github vas a tener una copia exacta del repositorio en su estado actual. El resto de las modificaciones las vamos a realizar sobre nuestro fork.

Forkeando un repositorio

Clonamos el repositorio, en mi caso Darkade/DefinitelyTyped, y buscamos el archivo que queremos modificar. Para estos typings generalmente vamos a modificar index.d.ts

git clone https://github.com/Darkade/DefinitelyTyped.git
cd DefinitelyTyped/types/twit
emacs index.d.ts # emacs o el editor que quieras

Contribution guidelines

Muchos proyectos tienen contribution guidelines básicamente son las prácticas que mejoran las posibilidades de que tu contribución se integre al repositorio principal. Para DefinitelyTyped puedes verlas directamente en su README.

Generalmente es hacer modificaciones, correr y escribir pruebas, y hacer un commit message claro. Una vez que esta todo listo

git commit -a -m "Updated types for @types/twit"
git push origin

Pull request

Una vez que pusheamos de vuelta a nuestro repositorio si vamos entonces al repositorio original vamos a ver un botón de Compare & pull request.

Pull request button

Muchos proyectos grandes te van a mostrar una plantilla de cosas que debes incluir en tu pull request. Es importante que la leas por completo y que la llenes lo mejor posible, ya uqe haces más fácil el trabajo de las personas que le dan mantenimiento al proyecto.

Template para pull requests

Este es el pull request que yo hice para DefinitelyTyped. Ya esta integrado y puedes ver todo el proceso. En este momento todavía no esta aprobado pero espero que en los siguientes días se integre.

Una última cosa que notar es que muchos proyectos han empezado a integrar bots en su proceso de aprobación.

Bot de pull requests

De igual manera lee por completo los comentarios que el bot haga, ya que este ahí para hacer más fácil el trabajo de los integradores.

Tips

  • Has cambios “atómicos” que sean pequeños y/o concisos. Si haces muchos cambios a la vez es más dificil para los integradores revisar tus que es lo que hiciste entonces es más dificil que sea integrado
  • Has commits claros y pocos. Si haces muchos commits trata de limpiarlos antes de tu pull request utilizando git rebase -i
  • Mantén un perfil relativamente activo en Github. Sobre todo si haces cambios grandes tener un perfil activo en varios proyectos hace que tus cambios sean más confiables
  • En el espíritu del Free Software: si haces un cambio local a un proyecto es posible que valga la pena hacer un pull request. Tener mejor software para todos empieza con buenos pull requests

Muchas gracias por leer este artículo, ya que estas aquí quizas te interese aprender más sobre Angular o Jupyter (python)

– Ivan Reyes