Aprendiendo del Open Source IV - 2020

Extensión universitaria 2020 colaborando con la comunidad open source. Sodep S.A. y Universidad Católica "Nuestra Señora de la Asunción".

Aprendiendo del Open Source IV - 2020

El 2020 se convirtió en un año de cambios inesperados para todos. Nos vimos forzados a cambiar muchos hábitos en nuestra vida personal, laboral y académica o de formación en general.

Dentro del proceso de adaptación para convivir con la situación sanitaria que nos toca; tuvimos la oportunidad por cuarto año consecutivo de participar del UC Autumn of Code, una extensión universitaria de la Universidad Católica "Nuestra Señora de la Asunción", Sede Asunción.

La materia Ingeniería del Software 2; tiene como parte de su evaluación introducir a los alumnos a participar de proyectos Open Source. Sodep presentó sus propuestas nuevamente con muy buenos resultados al final del proceso. Las experiencias de años anteriores nos sirvieron muchísimo, desde el 2017 cuando empezó todo (Ediciones 2018 y 2019).

En uno de los proyectos mejorados este año, nuestro stack de backend favorito Spring, una vez más nos ha demostrado que la actualización entre versiones del Framework, incluyendo el JDK y el servidor de aplicaciones, es una tarea de complejidad media y  totalmente realizable en un periodo relativamente corto. Varias veces nos tocó migrar entre versiones de Spring, Apache Tomcat y JDK; y los resultados fueron muy satisfactorios en todas las ocasiones. El backward compatibility que permiten tanto Pivotal para Spring como Apache para el Tomcat; es algo digno de apreciar, sobre todo para proyectos que buscan un largo tiempo de vida, permitiendo mantener el sistema al día en seguridad y tecnología.

Agradecemos la participación en esta edición de Alejandro Elías Insaurralde y Matías Irala Aveiro, así como su buena predisposición para el trabajo totalmente remoto y coordinado mediante medios virtuales.

Los proyectos de este año fueron:

  • Actualizar estilos y librerías de un proyecto Android al 2020: Mboehao, un proyecto Android template con múltiples funcionalidades.
  • Actualizar el Captura Connector Repository a Spring Boot 2.x , una aplicación que permite sincronizar datos entre sistemas empresariales y el servicio de Formularios móviles Captura.

Les dejo aquí las experiencias en las palabras de los colaboradores.

EXPERIENCIA SODEP S.A. 2020
Mi experiencia corresponde al trabajo práctico de la materia Ingeniería de Software 2, dada por el profesor Luca Cernuzzi. Seleccioné el tema de Mboehao, un proyecto Open Source, manejado por el profesor Ale Feltes, que fue mi tutor durante todo el desarrollo del proyecto.
El proyecto que me fue dado para el desarrollo, consistía en modernizar la aplicación base de ejemplo Mboehao, para el API disponible en 2020 y los estilos de Material Design; eliminando APIs deprecadas, estilos viejos y preparando las características acordes las exigencias del Google Play a febrero 2020. Básicamente trataba de importar la aplicación Mboehao al Android Studio (mi elección) e implementar mejoras gráficas, además de actualizar las librerías y reemplazar funciones obsoletas y antiguas.
Al contar con cierta experiencia trabajando con Android Studio y Java, el desarrollo en la parte de Android Studio me fue relativamente fácil, ya que la herramienta en sí te ayuda bastante a la hora de actualizar librerías y demás cosas.
La dificultad que se presentó fue la de levantar el backend para hacer que el login de la aplicación funcione. Cuenta con la documentación correspondiente, pero es muy limitada.
Mi función ahí fue (después de levantarlo) mejorar la documentación e instrucciones para que a los alumnos/personas que continúen en el proyecto les sea más fácil implementarlo, de esta manera evitar los problemas que se presentaron. He agregado unas cuantas recomendaciones para que sea más fácil el proceso, que fue donde perdí más tiempo durante el desarrollo total.
Una vez levantado el backend, prácticamente era trabajar en Android Studio, implementando el Material Design 2020, proveído por Google. Hay mucha información y documentación sobre esto en internet, así que no debería ser difícil para nadie realizar esta parte o intentar mejorarla.
El tutor con quien me tocó trabajar, fue de gran ayuda durante todo el desarrollo del proyecto, contestando mis preguntas/dudas sobre temas correspondientes al trabajo vía Slack. También hemos hablado por WhatsApp en algunos casos, donde mis preguntas eran de urgencia más alta y siempre respondió de manera apropiada, sin ningún problema.
Respecto a mi conducta durante el trabajo, tuve algunas fallas a la hora de comunicarme con el tutor. Ya que, en una ocasión, habíamos quedamos un día para una reunión y no aparecí. Más adelante hablamos sobre eso y pedí las correspondientes disculpas al profesor por mi falla. Luego de eso, todo fue bastante bien y profesional entre ambos. Referente a las recomendaciones del profesor para mejorar el proyecto, siempre lo escuché e implementé todo lo que había requerido. Creo que nunca hubo ningún problema en ese aspecto.
Por otra parte, en el proyecto hubo cosas que no me gustaron mucho. Como por ejemplo el uso de una webview dentro de una aplicación no me parece muy actualizado, además de que saca lo atractivo a un diseño de aplicación. Los layouts de la aplicación estaban separados en parte, cosa que realmente es muy innecesario y un poco molesto para el programador estar buscando las partes correspondientes para poder trabajar en eso. Lo que hice fue reemplazar algunos layouts creando nuevos, pero solo 1 layout por pantalla.
Creo que así es más ordenado a la hora de modificar el código. El código Java me gustó, ordenado y documentado en su mayoría.
No obstante, recomiendo a las personas que trabajen en este proyecto que siempre pregunten sus dudas al tutor, no importa lo absurda que crean que sea. Cualquier consulta es importante a la hora de realizar un proyecto de esta magnitud. Y por sobre todo dar énfasis en la comunicación. Informar en todo momento al tutor asignado el avance del proyecto, qué hace falta, etc. Eso es sumamente importante para el tutor tanto como para la persona que trabaja en el proyecto.
En conclusión, me gustó mucho ser parte de este proyecto y lo volvería a hacer si me preguntan. Muy buen tutor, un trabajo interesante donde se aprenden muchas cosas nuevas durante el desarrollo, como GitHub y sus funcionalidades, como hacer commits, push y pull request a repositorios, distintas branches, sus usos, etc.
De hecho, nunca lo he usado hasta ahora y me di cuenta que es sumamente importante el uso de la herramienta a la hora de desarrollar con varias personas, fomentando así la interacción con otras personas.
Agradezco al profesor Ale Feltes por permitirme trabajar con él y ayudarme a mejorar en mis capacidades de programador para el futuro.
Alejandro Elías Insaurralde.


Aprendizaje de trabajo con Sodep S.A junto al Proyecto Captura.
por Matías Irala

Finales de febrero del 2020, junto a los compañeros finalmente estábamos adaptándonos al nuevo semestre (el intenso noveno semestre); a la vez se presentaba una carrera entre todos en la asignatura de Ingeniería de Software 2, en el que cada uno debía escoger una propuesta para participar en un proyecto Open Source guiados por un tutor, el cual contemplaba el no ínfimo 50% de la calificación de la materia.
Para tomar mi decisión de qué proyecto escoger primeramente consulté a los conocidos que ya habían aprobado la asignatura la experiencia que tuvieron con sus tutores; luego analicé los proyectos disponibles teniendo en cuenta el conocimiento que estaría adquiriendo con ellos. Tras este largo análisis me decidí por la propuesta ofrecida por Sodep S.A. junto al tutor Ale Feltes, en el que estaba seguro de que aprendería enormemente, y a la vez estaba emocionado por trabajar por primera vez en un proyecto de mediana complejidad con 4.1k líneas de código. 
Contacté con el tutor Ale Feltes y rápidamente organizamos una reunión, en dicha reunión me explicó todo lo relacionado con el proyecto Captura, me dio todas las herramientas que estaría necesitando para empezar a trabajar junto a las primeras directivas a seguir.
La primera directiva fue levantar el proyecto, me puse a leer la documentación que dio el tutor e inmediatamente finalicé esta tarea. Con el paso inicial terminado, el tutor dio las siguientes tareas a resolver, los cuales implicaban lo esencial del aporte que realizaría al proyecto (como dirían mis compañeros, la cruz del asunto). 
La tarea era migrar la aplicación de Spring a Spring Boot, allí me vino a la mente la frase de un profesor de la universidad: “This isn't the time to use that!” ..., digo “Siempre lean la documentación completa”; busqué varias guías y luego de leerlas fue sencillo el trabajo, aunque hubo unos cuantos (varios) intentos fallidos.
Luego de haber finalizado y entregado al tutor la parte que considero fue la más complicada del trabajo, la continuación del desarrollo fue viento en popa.
Más que destacar el trabajo realizado cabe resaltar lo aprendido, en primer lugar, se encuentra todo lo relacionado con la participación de proyectos en comunidad, utilizando para ello herramientas como Github; por ejemplo, antes de este proyecto mi uso de Github era básico y la descripción de mis commits dejaban mucho que desear, luego con el desarrollo del proyecto fui aprendiendo y mejorando, a veces a base de errores.
Otro aprendizaje es la experiencia de un trabajo real y las cuestiones que esto implica. Aprendí la importancia de la comunicación en equipo, usando para ello herramientas como Slack, también aprendí la importancia de desarrollar un código claro, preciso, estructurado y sobre todo documentado, para que en el futuro sea sencillo para otra persona trabajar sobre el mismo, entre varios aprendizajes más.
Algo importante que me llevo es la valentía de participar en cualquier proyecto por más complicado que parezca, cuando comencé a trabajar en el proyecto las extensas 4.1k líneas de código parecían realmente algo oscuro e inexplorable, pero con paciencia fui entendiendo todas las líneas de código, dónde y cómo debía de modificar para solucionar un issue, etcétera.
En junio del 2020 realicé el último commit, lo cual realmente fue gratificante al ver todo el trayecto seguido, todo lo aprendido y los resultados que obtuve en el proyecto con mi esfuerzo y la guía del tutor. En conclusión, fue un gusto haber elegido trabajar en el proyecto Captura con Sodep S.A. guiado por el tutor Ale Feltes.