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 vamos a hacer un pull request a DefinitelyTyped y espero que sea integrable a su proyecto en Github.
¿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.
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.
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.
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.
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 difícil para los integradores revisar que es lo que hiciste entonces es más difícil 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í quizás te interese aprender más sobre Angular o Jupyter (python)
Anya es actuaria, nuestra CRO, y ha pasado los últimos años llevando su conocimiento de datos e investigación de operaciones al Software y al Diseño. Está obsesionada con los juegos de mesa, su diseño y sus mecánicas. También colecciona sistemas de juegos de rol que jamás juega. Cree que Nolan’s Batman is overrated y va a pasar horas hablando de eso si se lo permiten.
SCRUM | Design [Sprint] Thinking | Python | Fate Core | PbtA | 35 mm
Anya es actuaria, nuestra CRO, y ha pasado los últimos años llevando su conocimiento de datos e investigación de operaciones al Software y al Diseño. Está obsesionada con los juegos de mesa, su diseño y sus mecánicas. También colecciona sistemas de juegos de rol que jamás juega. Cree que Nolan’s Batman is overrated y va a pasar horas hablando de eso si se lo permiten.
SCRUM | Design [Sprint] Thinking | Python | Fate Core | PbtA | 35 mm