Trabajos Fin de Grado en Ingeniería Informática
Lenguajes y Sistemas Informáticos
Trabajos Fin de Grado en Ingeniería Informática
Propuestas de Trabajos
Directora: Covadonga Rodrigo (covadonga@lsi.uned.es)
Objetivo: El objetivo de este proyecto es la creación de una actividad de aprendizaje adaptativo basada en la generación de un flujo de preguntas al estudiante de forma interactiva a través de Telegram.
Descripción: El aprendizaje adaptativo (adaptive learning) es un método que individualiza las estrategias de enseñanza-aprendizaje según las necesidades y preferencias del alumno. Tiene particular aplicación en la educación mixta y en línea, desarrollada con el apoyo de entornos virtuales de aprendizaje. Se pretende diseñar y testar una actividad específica de auto-evaluación guiada que contenga preguntas realizadas por profesores y también generadas de forma automatizada mediante ChatGPT.
Metodología: desarrollo de software mediante enfoque iterativo e incremental, de manera que se generen versiones demostrables a partir del primer mes de trabajo en el proyecto.
Requisitos: conocimientos de programación en PHP. Se utilizará la API Telegram Bot.
Director: Francisco Iniesto (finiesto@lsi.uned.es)
Objetivo: El objetivo de este proyecto es la revisión de los principales proveedores de chatbots\asistentes virtuales existentes el mercado para la implementación de la elección elegida.
Descripción: Se va a proceder recopilar y analizar las distintas soluciones que existen en el mercado para la implementación de chatbots\asistentes virtuales. Para lo cual se tendrán en cuenta varios criterios principales:
- Su accesibilidad y usabilidad, teniendo en cuenta Web Content Accessibility Guidelines (WCAG) que son un conjunto de pautas además de otros estándares complementarios.
- Su compatibilidad con Inteligencia Artificial Generativa (GenAI).
- La posibilidad de personalización e integración en sistemas de gestión de contenido educativo como Moodle. Además de su coste o código abierto.
Una vez tomada la decisión de cuál es la solución más apropiada se realizará una implementación en un entorno que de soporte a las necesidades de la ETSI Informática con las directrices y el apoyo del director.
Metodología: En primer lugar, se realizará un estudio de los principales proveedores y tecnologías disponibles para generación de chatbots\asistentes virtuales de entorno Web disponibles. Posteriormente se procederá a analizar sus características de accesibilidad, usabilidad, compatibilidad con GenAI e integración en entornos educativos. Una vez elegida la mejor opción se procederá a su implementación y validación.
Requisitos: Básicos: familiaridad con tecnologías de programación Web. Deseados: lectura de documentación en inglés y conocimientos de análisis de accesibilidad Web con WCAG.
Director: Miguel Ángel Rodríguez García
Objetivo: Desarrollo de un modelo de aprendizaje computacional para problemas de clasificación.
Descripción: Utilización de técnicas de aprendizaje profundo para resolver problemas candentes en el dominio del Procesamiento del Lenguaje Natural.
Entre los problemas a resolver, se destacan: identificación implícita de polaridad en el lenguaje natural, identificación de entidades y sus relaciones en el texto, elaboración de algoritmos para clasificar correos y evitar ataques de physing,
Metodología: La realización del proyecto se llevará acabo mediante una metodología incremental que permita al alumno ir aprendiendo paso a paso, desde el inicio con algoritmos de aprendizaje automático básicos, hasta el desarrollo de arquitecturas profundas de redes neuronales.
Requisitos previos: Habilidades de programación en lenguajes interpretado como python y dominio del inglés para la lectura de la documentación.
Directora: Raquel Martínez Unanue (raquel@lsi.uned.es), Miguel Ángel Rodríguez. (miguelangel.rodriguez@lsi.uned.es)
Objetivo: dada una tarea del dominio biomédico se pretende implementar un sistema que permita la transferencia de conocimiento de un dominio a otro, o de una lengua a otra, asumiendo que en el dominio y/o lengua origen se dispone de más conocimiento que en el dominio y/o lengua destino para resolver la tarea.
Descripción: Es habitual en problemas relacionados con la minería de textos y el procesamiento del lenguaje natural que para una determinada tarea se dispongan de herramientas y recursos cuando ésta está limitada a un determinado dominio o a una lengua. Las técnicas de aprendizaje por transferencia (transfer learning) permiten exportar y aprovechar ese conocimiento en otro dominio de especialidad o lengua. Las aplicaciones estarán relacionadas con el dominio biomédico.
Metodología: Se desarrollarán y aplicarán diferentes técnicas de aprendizaje por transferencia a una tarea concreta.
Requisitos: Conocimientos de Java o Python.
Directores: Víctor Fresno (vfresno@lsi.uned.es) y Enrique Amigó (enrique@lsi.uned.es)
Objetivo: El objetivo de este proyecto es el desarrollo de una aplicación que permita comparar representaciones de frases cortas (sentences) basadas en embeddings generados con diferentes modelos de Deep Learning.
Descripción: Desarrollo de una aplicación que permita integrar y comparar diferentes modelos Transformers recopilados en https://huggingface.co/transformers.
Metodología: Se realizará en primer lugar un estudio del problema de la creación de embeddings para representar fragmentos de textos más largos que una palabra, así como de las diferentes arquitecturas neuronales que se han propuesto con este objetivo. Se desarrollará una aplicación que permita ejecutar en paralelo diferentes modelos y aplicar fases de fine-tuning a cada uno de ellos.
Requisitos: Conocimientos de Python.
Director: Miguel Ángel Rodríguez García (miguelangel.rodriguez@lsi.uned.es)
Objetivo: Este TFG tiene por objetivo desarrollar modelos de aprendizaje automático para resolver problemas actuales en el procesamiento, entendimiento y generación del lenguaje natural.
Descripción: Debido la diversidad del dominio de aplicación de este TFG, el primer paso se centra en concretar el dominio del problema a resolver. Actualmente, en el procesamiento del lenguaje existen diversos problemas que van desde problemas de textos generativos, análisis contenido clínico, identificación de lenguaje inclusivo o dañino, evaluación de perfiles políticos, entre otros. Después de seleccionar el problema a abordar, se deberá identificar conjuntos de datos, diseñar e implementar algoritmos basados en aprendizaje automático para tratar de resolver el problema.
Metodología: La realización del proyecto se llevará acabo mediante una metodología incremental que permita al alumno ir aprendiendo paso a paso, desde el inicio con algoritmos de aprendizaje automático básicos, hasta el desarrollo de arquitecturas profundas de redes neuronales.
Requisitos previos: Habilidades de programación en lenguajes interpretado como python y dominio del inglés para la lectura de la documentación
Director:
Francisco Iniesto (finiesto@lsi.uned.es)
Objetivo:
El objetivo de este proyecto es la creación de un sistema de gestión para la evaluación de la accesibilidad web que permita incluir, editar y comparar auditorias de accesibilidad web realizadas sobre un mismo o varios recursos, por distintos evaluadores, en diversos formatos visuales y estadísticos.
Descripción:
En la actualidad existen distintos estándares y normas desarrollados por el World Wide Web Consortium (W3C) para mejorar la accesibilidad de los sitios web y las aplicaciones web. Por una parte las Web Content Accessibility Guidelines (WCAG 2.2) se encargan de la accesibilidad de entornos web, mientras que otras guías como Natural Language Interface Accessibility User Requirements (NAUR) evalúa la accesibilidad de interfaces de lenguaje natural, finalmente mientras que la Cognitive and Learning Disabilities Accessibility Task Force (COGA) propone guías para y técnicas para agentes de usuario con el fin de hacer que el contenido web sea accesible para personas con discapacidades cognitivas y de aprendizaje.
El sistema de gestión debe permitir importar datos, así como crear, editar y guardar auditorías de accesibilidad directamente en el entorno. Además, la visualización de modelos comparativos, incluyendo datos estadísticos, así como la visualización de los resultados de distintas auditorias y comparativas de las mismas.
Metodología:
En primer lugar, se realizará un estudio de los principales sistemas de gestión y dashboards existentes en el área de las ciencias y su uso. Posteriormente se procederá a investigar de las distintas herramientas para su creación. Una vez elegida la mejor opción se procederá a su implementación
Requisitos:
Básicos: Conocimientos de programación para entornos gráficos (principalmente Python) y conocimientos básicos en estadística. Deseados: lectura de documentación en inglés y conocimientos de análisis de accesibilidad Web.
Directores:
-
Fernando López Ostenero - flopez@lsi.uned.es
-
Alberto Pérez - alberto.perez@lsi.uned.es
Objetivo:
Implementar un motor que permita la edición y ejecución de aventuras al estilo de los libros “Elige tu propia aventura” en las que se presenten una serie de opciones limitadas que dirigirán la trama según las elecciones del jugador.
Descripción:
Los libros “Elige tu propia aventura” son un subgénero dentro de los libro-juegos que comenzaron a aparecer en los años 30 del siglo XX. Deben su nombre a la serie homónima originalmente publicada por Bantam Books en 1979 y alcanzó su cénit en la siguiente década, siendo traducidos a más de 25 idiomas.
En este PFG se comenzaría explorando el origen de los libro-juegos que llevó a la creación de este género de aventuras en particular. Se analizarán los elementos que tienen todos en común y se extraerán las características que los forman.
No se trata de alcanzar una solución específica, sino de proponer un sistema que permita almacenar la descripción completa de un libro-juego de este estilo que luego podrá ser exportado para ser jugado en diferentes motores, incluso a formato epub.
Metodología:
El trabajo se llevará a cabo en varias etapas tratando en cada una de ellas de incorporar nuevas funcionalidades respecto a la anterior. Se seguirá un modelo de desarrollo de Software Libre. El proyecto tendrá licencia libre y se desarrollará utilizando un repositorio alojado en GitHub, siguiendo un modelo de ramas y releases básico y utilizando Issues y Pull Requests para documentar los cambios y las posibles mejoras.
La idea final es tener un proyecto de Software Libre real que cualquiera pueda utilizar y al que cualquiera pueda contribuir, dejando así abierta la puerta a que otras personas puedan tanto aprender de él, como extenderlo en el futuro (por ejemplo, mediante otros TFGs).
En cuanto a las etapas, una posible división sería como sigue:
-
Analizar las características de estos libros, tanto de los clásicos de los años 80 como de las nuevas versiones que han ido surgiendo desde entonces.
-
Diseño de la información que constituye cada “escena” del libro (entendiendo por escena a una sección en la que la aventura transcurre sin intervención del lector.
-
Se tendrá en cuenta que las escenas podrán incluir estados (por ejemplo que se haya conseguido una llave en una escena leída con anterioridad), lo que podrá alterar el curso de la aventura.
-
Editor gráfico de escenas donde se pueda ver el grafo de escenas con sus relaciones y se pueda acceder a la edición de las mismas.
-
Implementación de un motor simple para reproducirlas de forma interactiva.
-
Exportación de la aventura a formato epub para su reproducción en un libro electrónico.
-
[Bonus] Implementar una aventura sencilla que demuestre las capacidades del motor.
Requisitos:
-
Conocimientos de programación. Lenguajes como Javascript, Python, Java, C o C++ pueden ser útiles.
-
Conocimientos de HTML y CSS.
-
Inglés leído y escrito.
Directores:
-
Alberto Pérez - alberto.perez@lsi.uned.es
-
Fernando López Ostenero - flopez@lsi.uned.es
Objetivo:
Implementar un motor que permita crear juegos de tipo Game & Watch basándonos en tecnologías actuales.
Variante: implementarlo para un sistema hardware real basado en ESP32
Descripción:
Las máquinas Game & Watch nacieron en 1980 y adquirieron una gran popularidad en la época. Muy resumidamente, la pantalla se dividía en segmentos sin intersección entre sí, que podían estar encendidos o apagados. A partir de esta idea básica se crearon multitud de juegos de muy diversas temáticas.
En este PFG comenzaríamos por analizar su historia, cómo surgieron, cómo funcionaban e incluso juegos posteriores para ordenador que adoptaron su misma filosofía, para proponer el diseño de nuestro propio motor para la creación de este tipo de juegos. Aunque lo importante será el diseño, para que cualquiera pueda, a partir de él, implementarlo en un lenguaje de su elección, se deberá implementar una versión sencilla del mismo.
El PFG no está orientado a una solución específica, sino que la persona que lo desarrolle podrá proponer cómo abordarlo tras analizar las distintas alternativas existentes (lo que permitirá situar el trabajo en el estado del arte).
El motor deberá proporcionar al desarrollador las acciones necesarias (gestión de pantalla, gestión de entrada, desarrollo de la partida, etc.) para implementar juegos de este tipo, tanto en pantalla simple como en pantalla doble.
El PFG podría incluir un ejemplo de uso del motor, es decir, un juego creado utilizando el motor a modo de demostración. También podría plantearse la posibilidad de crear un editor que permitiera generar juegos de forma sencilla.
Metodología:
El trabajo se llevará a cabo en varias etapas tratando en cada una de ellas de incorporar nuevas funcionalidades respecto a la anterior. Se seguirá un modelo de desarrollo de Software Libre. El proyecto tendrá licencia libre y se desarrollará en un repositorio alojado en GitHub, siguiendo un modelo de ramas y releases básico, y utilizando Issues y Pull Requests para documentar los cambios y las posibles mejoras.
La idea final es tener un proyecto de Software Libre real que cualquiera pueda utilizar y al que cualquiera pueda contribuir, dejando así abierta la puerta a que otras personas aprendan de él y lo extiendan en el futuro (por ejemplo, mediante otros PFGs).
En cuanto a las etapas, una posible división sería como sigue:
-
Revisar el estado de la cuestión y comprender la arquitectura y el funcionamiento de las distintas soluciones.
-
Propuesta de tecnologías para abordar el problema.
-
Diseño de la arquitectura del motor. Componentes e interacciones entre ellos.
-
Implementación del motor.
-
Implementar un juego sencillo que muestre las capacidades del motor.
-
[Bonus] Implementar un editor sencillo que permita crear juegos para el motor.
Requisitos:
-
Conocimientos de programación. Lenguajes como Javascript, Python, Java, C o C++ pueden ser útiles.
-
Inglés leído y escrito
Directores: Raquel Martínez Unanue (raquel@lsi.uned.es) y Soto Montalvo (soto.montalvo@urjc.es)
Objetivo: En este proyecto se pretende diseñar e implementar un sistema para el reconocimiento de entidades biomédicas y la identificación de un determinado conjunto de relaciones entre ellas en textos de biomedicina en español.
Descripción: El reconocimiento de entidades y las posibles relaciones que puedan existir entre ellas es fundamental para la extracción de conocimiento de textos no estructurados. Existen diferentes enfoques en el estado del arte, fundamentalmente basados en aprendizaje automático, pero su eficacia es limitada dada la dificultad del problema.
Metodología: Se partirá del estudio de los sistemas existentes que resuelven este problema de manera más exitosa y se llevará a cabo una implementación basada en ellos. El sistema se desarrollará y se evaluará con los recursos proporcionados en https://knowledge-learning.github.io/ehealthkd-2020/.
Requisitos: Conocimientos de Java o Python.
Director:
Alberto Pérez García-Plaza (alberto.perez@lsi.uned.es)
Álvaro Rodrigo Yuste (alvarory@lsi.uned.es)
Objetivo:
Diseñar e implementar una herramienta para la recopilación, almacenamiento y análisis exploratorio de información procedente de perfiles públicos en redes sociales, permitiendo obtener estadísticas descriptivas y visualizar patrones de actividad de usuarios en diferentes plataformas.
Descripción:
La creciente presencia de usuarios en múltiples redes sociales genera grandes volúmenes de información que pueden resultar de interés para tareas de análisis de comportamiento digital, comunicación, marketing o investigación social. Sin embargo, la recopilación y explotación de estos datos suele requerir el uso de herramientas específicas y conocimientos técnicos avanzados.
Este proyecto tiene como objetivo desarrollar una herramienta que facilite la obtención automática de información pública de diferentes redes sociales (según las APIs o mecanismos de acceso disponibles), permitiendo almacenar los datos recopilados y generar estadísticas descriptivas sobre la actividad de los usuarios. Entre otras funcionalidades, la herramienta podrá analizar aspectos como frecuencia de publicación, evolución temporal de la actividad, utilización de hashtags, menciones, interacción con otros usuarios o distribución de contenidos.
La aplicación deberá proporcionar una interfaz sencilla que permita configurar las fuentes de datos, lanzar procesos de recopilación y visualizar los resultados obtenidos mediante tablas, gráficos e informes básicos.
Se podrá extender con funcionalidades opcionales como un módulo de perfilado lingüístico básico (nubes de palabras, términos más frecuentes, análisis temporal del vocabulario, etc.)
Metodología:
- Estudio de las APIs, bibliotecas y mecanismos disponibles para la obtención de datos de redes sociales.
- Diseño de la arquitectura de la aplicación y de los mecanismos de almacenamiento de la información recopilada.
- Implementación de módulos de adquisición de datos para una o varias plataformas seleccionadas.
- Desarrollo de funcionalidades de análisis estadístico y visualización de resultados.
- Realización de pruebas utilizando perfiles y conjuntos de datos reales.
- Evaluación de la herramienta y análisis de las limitaciones encontradas.
- Elaboración de la memoria y presentación de resultados.
Requisitos:
- Conocimientos básicos de programación en Python.
- Conocimientos básicos sobre bases de datos y manejo de datos estructurados.
- Conocimientos básicos de desarrollo software.
- Se valorarán conocimientos previos de análisis de datos, visualización de información y consumo de APIs web, aunque no son imprescindibles.
Directores: Lourdes Araujo Serna (lurdes@lsi.uned.es) y Juan Martinez-Romo (juaner@lsi.uned.es)
Objetivo: En este proyecto se pretende diseñar e implementar un sistema para la visualización interactiva de los eventos y datos más relevantes mencionados en un documento médico ordenados temporalmente.
Descripción: Este tipo de herramientas son de gran utilidad para el personal sanitario que puede obtener una imagen inmediata del historial de un paciente, sin necesidad de una lectura detallada de largos documentos. El desarrollo del proyecto requiere representar las menciones
temporales que aparecen en el documento (hace 3 años, todas las semanas, etc.), así como de los sucesos médicos (ingreso, nueva medicación, etc.), y las relaciones entre ellos.
Se necesitará también explorar las opciones más adecuadas para la visualización de los datos.
Metodología: Se partirá del estudio de los sistemas existentes que resuelven este problema de manera más exitosa y se llevará a cabo una implementación basada en ellos.
Los datos de entrada al sistema se realizarán mediante ficheros de intercambio de datos en formato JSON.
El sistema se desarrollará y se evaluará con datos anotados con eventos y expresiones temporales.
Requisitos: Conocimientos de Python.
Directores:
-
Alberto Pérez - alberto.perez@lsi.uned.es
-
Fernando López Ostenero - flopez@lsi.uned.es
Objetivo:
Implementar un motor que permita crear aventuras conversacionales apoyándose en tecnologías actuales de Procesamiento del Lenguaje Natural (PLN).
Descripción:
Las aventuras conversacionales nacieron a mediados de los 70 y desde entonces han evolucionado bastante. En este PFG comenzaríamos por analizar su historia, desde los primeros parsers hasta sistemas modernos basados en GPT, para proponer nuestro propio motor para la creación de este tipo de juegos.
El PFG no está orientado a una solución específica, sino que la persona que lo desarrolle podrá proponer cómo abordar su desarrollo tras haber analizado las distintas alternativas existentes (lo que permitirá situar el trabajo dentro del estado del arte). Se deben utilizar, eso sí, tecnologías propias del ámbito del PLN.
Algunas opciones podrían ser:
-
Utilizar analizadores de dependencias y/o constituyentes a partir de los cuales identificar las acciones que desea realizar el usuario.
-
Utilizar modelos de lenguaje que permitan clasificar las intenciones del usuario.
El motor también debe soportar una representación del mundo (en el que se desarrolla la aventura) y la realización de acciones que permitan a la persona que juegue moverse e interactuar con el entorno.
El PFG podría incluir un ejemplo de uso del motor, es decir, una aventura creada utilizándolo a modo de demostración.
Metodología:
El trabajo se llevará a cabo en varias etapas tratando en cada una de ellas de incorporar nuevas funcionalidades respecto a la anterior. Se seguirá un modelo de desarrollo de Software Libre. El proyecto tendrá licencia libre y se desarrollará utilizando un repositorio alojado en GitHub, siguiendo un modelo de ramas y releases básico y utilizando Issues y Pull Requests para documentar los cambios y las posibles mejoras.
La idea final es tener un proyecto de Software Libre real que cualquiera pueda utilizar y al que cualquiera pueda contribuir, dejando así abierta la puerta a que otras personas puedan tanto aprender de él, como extenderlo en el futuro (por ejemplo, mediante otros TFGs).
En cuanto a las etapas, una posible división sería como sigue:
-
Revisar el estado del arte y entender la arquitectura y funcionamiento de las distintas soluciones.
-
Propuesta de tecnologías de PLN para abordar el problema.
-
Diseño de la arquitectura del motor. Componentes e interacciones entre ellos.
-
Implementación del motor, fundamentalmente tendrá 2 partes:
-
reconocimiento de la acción solicitada por el usuario
-
ejecución de la misma.
-
-
[Bonus] Implementar una aventura sencilla que demuestre las capacidades del motor.
Requisitos:
-
Conocimientos de programación. Lenguajes como Javascript, Python, Java, C o C++ pueden ser útiles.
-
Inglés leído y escrito
Directores: Alberto Pérez (alberto.perez@lsi.uned.es) y Santiago Dueñas (sduenas@bitergia.com)
Objetivo: Desarrollar un componente para SortingHat que:
- Recomiende qué perfiles de usuarios podrían corresponder a la misma persona (y por tanto podrían ser mezclados)
- Recomiende al usuario cuál podría ser la organización a la que pertenece una determinada identidad de SortingHat en base a información disponible públicamente en Internet.
Descripción: GrimoireLab es un toolkit Open Source para la recolección, enriquecimiento, consumo y visualización de datos procedentes de herramientas comunmente utilizadas en el proceso de desarrollo de Software Libre (Git, GitHub. GitLabe, Gerrit, Jira, Jenkins, StackExchange, Pipermail, etc.). La manera en que se visualzan los datos es a través de dashboards (p.e. https://chaoss.biterg.io/). Estos Dashboards se construyen sobre OpenSearch Dashboards (antes Kibana). Una parte importante de estos dashboards son las identidades únicas, o dicho de otra forma, las personas que hay detrás de los perfiles de usuarios que se encuentran en las distintas fuentes de datos. Para ser capaces de calcular y mostrar métricas robustas es muy importante ser capaces de atribuir las contribuciones a sus autores independientemente de la fuente o el perfil que utilicen para realizarlas. La gestión de estas identidades la realiza un componente llamado SortingHat que permite mezclar o separar perfiles de usuario y asignarles las organizaciones a las que han pertenecido durante un periodo de tiempo determinado.
Este trabajo está orientado a mejorar SortinHat para facilitar al usuario parte del trabajo manual que debe realizar para gestionar las identidades. Para ello se proponen dos caminos principales (durante el desarrollo del trabajo el alumno puede proponer abordar nuevas líneas de trabajo si lo desea, cuya inclusión será evaluada por los directores):
- Recomendación de perfiles similares para mezclar. Se trata de encontrar perfiles que pudieran pertenecer a la misma persona y que no estén aún mezclados. Para ello contamos con la información almacenada en la propia base de datos de SortingHat y podríamos basarnos en la similitud de nombres, correos electrónicos, nombres de usuario, etc. Sería conveniente además que con la sugerencia se incluya cierta información de por qué se realiza o con qué grado de confianza se propone.
- [Extra] También se podría explorar el uso de la información de los perfiles mezclados manualmente para extraer umbrales o reglas que aplicar automáticamente.
- Recomendación de afiliaciones. Dado una identidad, SortingHat es capaz de asociarla a una organización en base al dominio de su correo electrónico, sin embargo hay dos cosas que no hace y que serán parte de este trabajo:
- Cuando aparece un dominio para el que no hay organización asociada, buscar la posible organización y sugerir al usuario su inclusión en la base de datos.
- Cuando un usuario no tiene correo electrónico asociado o éste pertenece a un servidor genérico (gmail, hotmail, etc.) actualmente no hay más solución que buscar manualmente en Internet esa persona y tratar de averiguar a que organización pertenece. El objetivo sería reproducir en la medida de lo posible esos pasos manuales para que se realicen de forma automática y proponer al usuario la posible organización o las fuentes en las que se ha encontrado información relevante para que la consulte y decida. Por ejemplo, un camino habitual es buscar su perfil en GitHub y ver si tiene organización asociada y buscar su nombre en LinkedIn para comprobar si tiene perfil publico con información de afiliación. Ambas cosas, y posiblemente otras, podrían automatizarse para facilitar el trabajo del administrador de SortingHat.
Metodología: El trabajo se llevará a cabo en varias etapas tratando en cada una de ellas de incorporar nuevas funcionalidades respecto a la anterior. Se seguirá un modelo de desarrollo de Software Libre. El proyecto tendrá licencia libre y se desarrollará utilizando un repositorio alojado en GitHub, siguiendo un modelo de forks, ramas y releases (si fuera necesario) básico y utilizando Issues y Pull Requests para documentar los cambios y las posibles mejoras.
La idea final es tener una serie de desarrollos que puedan ser contribuídos upstream a SortingHat. Si bien que esto se realice o que sean aceptados no es requisito necesario para el trabajo, sí es deseable completar el ciclo para entender mejor cómo funcionan los proyectos de este tipo.
En cuanto a las etapas, una posible división sería como sigue:
- Instalar GrimoireLab y entender su arquitectura y funcionamiento. Será necesario disponer de un entorno funcional y con datos para poder realizar pruebas en las etapas posteriores. Sobre todo nos centraremos en SortingHat y sus interacciones con el resto de componentes, su API y su front-end web.
- Evaluación de alternativas para sugerir perfiles similares para mezclar.
- Implementación de alguna(s) de estas alternativas.
- Evaluación de alternativas para sugerir nuevas organizaciones que incluir en la base de datos.
- Implementación de alguna de estas alternativas.
- Evaluación de alternativas para sugerir posibles afiliaciones para las identidades más allá del dominio de su e-mail y de los confines de SortingHat.
- Implementación de alguna de estas alternativas.
Si bien el trabajo propone varias líneas de acción, dependiendo de la profundidad con la que se vayan atacando cada una de ellas puede que no se lleguen a cubrir todas estas etapas.
Requisitos: Conocimientos de Python, JavaScript, SQL, GraphQL (recomendable, pero se puede aprender durante el trabajo) e inglés leído y escrito
