Como he estado trabajando más o menos a tiempo completo en [Neotoma](https://neotoma.io) (anteriormente Asheville) desde el verano pasado, tuve la oportunidad de iniciarme verdaderamente en el software de código abierto por primera vez.

Me complace decir que además de trabajar en repositorios disponibles públicamente específicos de Neotoma, he creado algunos repositorios que espero sean útiles como módulos para otras aplicaciones Node.js en general:

- [Park Ranger](https://github.com/markmhx/park-ranger): un administrador de dependencias específicas del entorno, como variables de entorno, archivos de configuración y archivos de certificados SSL.

  Se llama "guardaparques" porque un programa de computadora siempre se ejecuta en un entorno determinado, a menudo determinado por su dispositivo o un entorno específico elegido dentro de ese dispositivo junto con otros entornos posibles. ¿Y tú a quién buscas cuando estás disfrutando del entorno natural y tienes dudas sobre él…? Así es, un guardaparque.

  Básicamente seguí reescribiendo el mismo código de utilidad en mis repositorios para manejar las diferencias basadas en el entorno, principalmente entre mi máquina de desarrollo local y el host de implementación. Entonces, lo refactoricé todo en este módulo para acelerar las mejoras del código y el mantenimiento en el futuro. Mi punto de partida fue [dotenv](https://github.com/motdotla/dotenv) pero rápidamente me di cuenta de que era demasiado simple para mis necesidades.

- [Hoist](https://github.com/markmhx/grunt-hoist): un conjunto de tareas Grunt para implementar aplicaciones Node.js en hosts y ejecutar procedimientos remotos relacionados.

  De manera similar a mi experiencia con Park Ranger, me encontré reescribiendo ligeras variaciones de las mismas rutinas de implementación en todos los repositorios (como rsync'ing archivos, ejecutando "npm install" y reiniciando el servidor remoto). Así que creé este conjunto de tareas (que automáticamente están disponibles para los proyectos principales como scripts npm) para estandarizar la forma en que abordo esto. También simplifican enormemente mi enfoque hacia el desarrollo continuo, incluso cuando creo nuevos microservicios o hago cambios rápidos en las dependencias locales a lo largo del camino.

- [Proxy](https://github.com/neotoma/proxy): un servidor proxy para solicitudes HTTP y HTTPS.

  Cuando comencé a alojar las primeras versiones de Neotoma para pruebas cerradas, necesitaba una forma sencilla de admitir diferentes servidores ejecutándose en el mismo host en todos los protocolos (HTTP frente a HTTPS), puertos y subdominios. Por ejemplo, el mismo host que usa HTTP para servir la página de inicio de Neotoma también atiende solicitudes HTTPS a su API subyacente y solicitudes HTTP y HTTPS a la aplicación web real de Neotoma que se ejecuta en un subdominio para realizar pruebas.

  Si bien este repositorio se encuentra bajo la organización Neotoma, puede ser utilizado por cualquiera que quiera hacer lo mismo con sus hosts que ejecutan múltiples servidores.

Hay otros repositorios públicos en desarrollo más directamente relacionados con Neotoma que no enumeraré aquí, pero que se pueden encontrar en la [organización Neotoma GitHub](https://github.com/neotoma). Si bien aún no he buscado activamente contribuciones, todos los repositorios enumerados anteriormente y en esa organización están abiertos a solicitudes de extracción en caso de que desee realizar algún cambio.