Tips para crear y configurar tu proyecto Open Source
Cuando creamos un proyecto open source o libre, no solemos utilizar ninguna infraestructura, integración continua, configuraciones anvanzadas… Pero, hoy en día, podríamos tener todo eso configurado en minutos y con herramientas gratuitas. Pero, ¿cómo?
Cuando trabajamos para una gran corporación o empresa, y estamos en un proyecto de software, lo más probable es que desarrollemos bajo una arquitectura definida, con varias personas en un equipo, nuestro equipo coordinado con otros equipos, con un sistema de integración continua, etc… Todas estas características, al igual que provocan un sistema más complejo para trabajar, también nos facilitan sistemas para que esta tarea se lleve a cabo más fácilmente y garantizando mayor calidad y mantenibilidad a los desarrollos.
El problema que nos podemos encontrar, es que si desarrollamos un programa solos y en nuestra casa, posiblemente no tengamos los conocimientos necesarios para definir y desarrollar los pipelines con Jenkins, o simplemente, el tiempo necesario para llevarlos a cabo. Esto puede ocasionar, que llevemos a cabo nuestros proyectos, con las configuraciones más esenciales.
Pero, gracias al opensource o en algunos casos, a las licencias gratuitas para proyectos libres de muchos productos de este sector, podemos tener todas estas configuraciones gratis e integrarlas con pasos muy sencillos.
Partiendo de que queremos crear un proyecto frontend, vamos a definir las posibles herramientas y configuraciones, que podríamos añadir para conseguir:
-
Tener nuestro programa en un repositorio accesible por nuestro equipo
-
Configuraciones iniciales en nuestro proyecto para garantizar la calidad
-
Configuración integración continua
-
Validación de nuestro código
-
Integración con sistema de chat
-
Despliegue de nuestra aplicación en un servidor gratuito
Este contenido, lo explicamos en un evento de la mano de Girls in Tech, para el pre-hackathon que estaban llevando a cabo. Lo podéis encontrar en Youtube.
El flujo resumido, al que vamos a querer aspirar será:
Como podéis comprobar en el diagrama anterior, partiremos del ordenador desde el que estamos trabajando
Lo primero que haremos será ir a Github, y crearnos una cuenta gratuita en el caso de que no la tengamos. Esta plataforma, nos permitirá crear nuestros proyectos y gestionarlos con multi-equipo, además de muchas más cosas. En el mercado existen plataformas similares y gratuitas que podríamos utilizar, tales como Gitlab o Bitbucket. En este caso, vamos a elegir Github, porque es donde podemos encontrar la mayoría de proyectos opensource publicados.
Una vez creada nuestra cuenta, procederíamos a crear nuestro proyecto dentro de la plataforma. Si no tenemos activados ninguno de los plugins de la plataforma, solo nos solicitará algunos datos y si queremos incluir el readme, licencia, etc…
Posteriormente solo nos faltaría clonar el proyecto y ponernos a trabajar. Generalmente, y sobre todo si estáis trabajando con más personas, será aconsejable que utilicéis alguna estrategia de ramas, por ejemplo Gitflow. Esto os permitirá poder trabajar a la vez en el mismo proyecto sin que hayan demasiados conflictos. En el caso de que no estéis acostumbrados a trabajar desde la línea de comandos, es posible utilizar herramientas más visuales que os faciliten las tareas, como Sourcetree o GithubDesktop
Ya en nuestro proyecto, algunos conceptos a nivel de calidad de código que deberíamos tener en cuenta serían:
En nuestro proyecto open source
Calidad de código para el proyecto open source
Lo más habituales es que tengamos diferentes librerías instaladas y configuradas para que nos validen el lenguaje de programación que estemos usando, y en algunos casos, también el framework.
IDE
Instálate y configúrate un IDE adecuado para para el lenguaje y framework que vayas a utilizar. Estos te van a permitir instalar diferentes plugins, que complementaría y/o integrarán las librerías que en el apartado anterior habías instalado.
Test Unitarios
Desarrolla tu proyecto como si fueras a crear test unitarios, con los patrones de desarrollo correspondientes. Con esto, conseguirás que tu código sea más legible, mantenible y óptimo.
Test de seguridad
Aunque tu proyecto sea frontend, puedes utilizar diferentes herramientas para validar la seguridad básica de tu proyecto como por ejemplo npm audit o github scan.
Documentación Funcional
Crea documentación en el readme del proyecto con markdown, sobre todo los comandos y partes importantes. Será más sencillo para ti y el resto del equipo, cómo funciona el proyecto, partes clave, librerías que deberemos configurar, etc.
No olvides que puedes crear subcarpetas, añadir imágenes, añadir enlaces, etc. Además de ser integrable en plataformas de gestión de documentación como el Confluence.
Documentación Técnica
A pesar de que con los nuevos estándares de desarrollo y metodologías se indique que es necesario un código autoexplicativo, no está de más, instalar alguna librería que te autogenere documentación de todo el proyecto, para que de un vistazo rápido, podamos analizar los puntos importantes. Algunas de ellas serían Javadoc, JSDoc, Compodoc, etc…
Otras
Aún podríamos indicar otras configuraciones, test y temas a tener en cuenta tales como test funcionales, test de integración, optimización al desarrollo, etc…
Integración Continua
Una de las ventajas que nos facilitará haber creado nuestro proyecto en Github, es que podremos configurar nuestro sistema de integración continua gratuitamente. Esto lo realizaremos con Travis, con el que podremos configurar nuestro pipeline e integrarlo con Github gratuitamente y con una configuración sencilla.
Lo único que deberemos hacer es instalarlo a través del Marketplace de Github, eligiendo la versión gratuita. Una vez instalado, cada vez que creemos un proyecto, nos preguntará si queremos activar Travis para el proyecto. Posteriormente, deberemos añadir un archivo de configuración en nuestro proyecto, para que lance las pipeline. Un ejemplo con JS sería:
Podéis observar que estamos indicando el lenguaje con el que vamos a trabajar, la versión de node y los scripts que vamos a querer lanzar con travis.
Sonarqube
Además de las librerías y plugins instalados en los apartados anteriores, en la mayoría de los proyectos corporativos, tendremos otras herramientas que nos validarán el código en muchos aspectos. Estas suelen tener configuraciones más avanzadas y detalladas que las que tenemos en local. Esto además, nos puede ayudar si no tenemos experiencia definiendo las reglas en local, ya que vendrán con configuraciones predefinidas.
Dos de las herramientas más utilizadas en estos casos serían SonarQube y Kiuwan. Aunque SonarQube lo podríamos instalar en nuestro ordenador, haremos uso de la versión online y gratuita SonarCloud, que nos permite una integración automática con nuestros repositorios github, sin tener que configurar nada.
Una vez nos hayamos registrado, nos dejará importar nuestro espacio de trabajo y todos o el proyecto, que deseemos que analice.
Como podéis observar, obtendremos diferentes métricas y el tiempo necesario para resolverlos. Algo muy interesante y que una vez que estemos dado de alta, será aplicará automáticamente en nuestros proyectos.
Además, en configuraciones más complejas, podremos integrarlo fácilmente con nuestro Travis.
Herramientas de comunicación para el proyecto open source
Si estamos trabajando como parte de un equipo y además es online, será habitual que estemos utilizando alguna herramienta de comunicación tipo chat, donde dejemos todos nuestros mensajes y podamos enviarnos archivos.
Algunas de estas plataformas serían Discord, Slack, Rochet.chat. Cualquiera de las tres, nos permitirá configurar hooks, para que todo lo que pase en nuestro repositorio Github se nos vaya notificando a través de estas plataformas.
Despliegue
Una vez que queremos mostrar nuestro proyecto desplegado, tendremos diferentes opciones gratuitas. Hace años, podíamos utilizar herramientas como Heroku o Firebase, para desplegar en un dominio nuestro proyecto, sin tener que pagar. Pero Github, también nos permitirá tener nuestra web desplegada, sin tener que salir de la plataforma, a través de Github Pages. Con una configuración sencilla a través de nuestro panel de configuración, podremos indicar, qué rama tenemos para desplegar, que además nos facilitará un subdominio, donde podremos ver nuestra web.
Bibliografía
https://youtu.be/SpeJMPKeexQ?t=5011
https://spain.girlsintech.org/
https://www.sourcetreeapp.com/
https://docs.npmjs.com/cli/v6/commands/npm-audit
https://github.blog/2020-09-30-code-scanning-is-now-available/
https://www.atlassian.com/es/software/confluence
https://es.wikipedia.org/wiki/Javadoc
https://www.sonarqube.org/developer-edition/