TypeORM – Lista de Ideas para Google Summer of Code (GSoC)
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Este documento describe posibles ideas de proyectos GSoC para TypeORM. Cada propuesta incluye una descripción, objetivos, resultados esperados y nivel de dificultad.
Relaciones Polimórficas de Primera Clase en TypeORM
Descripción
Actualmente TypeORM carece de soporte nativo para relaciones polimórficas (una relación única que apunta a múltiples tipos de entidad). Los usuarios recurren a soluciones alternativas que son difíciles de tipar, propensas a errores e inconsistentes entre bases de datos.
Mentores
Objetivos
-
Diseñar una API de relaciones polimórficas de primera clase para TypeORM
-
Garantizar compatibilidad con los decoradores de relaciones existentes
-
Implementar soporte para migraciones y sincronización de esquemas
Resultados esperados
-
Nuevo(s) decorador(es) para relaciones polimórficas
-
Soporte en QueryBuilder para uniones polimórficas
-
Documentación y ejemplos claros
-
Implementación compatible con versiones anteriores
Dificultad
Media - Se estiman 175 horas
Habilidades requeridas
TypeScript, funcionamiento interno de ORM, diseño de esquemas SQL
Mejora de Seguridad de Tipos e Inferencia en TypeORM
Descripción
A pesar de estar escrito en TypeScript, TypeORM tiene varias áreas débilmente tipadas (relaciones, resultados de QueryBuilder, métodos de repositorio). Mejorar la inferencia de tipos mejoraría significativamente la experiencia del desarrollador y la corrección del código.
Mentores
Objetivos
-
Mejorar inferencia de tipos en relaciones (lazy y eager)
-
Tipar fuertemente los resultados de
QueryBuilder -
Reducir el uso de
anyen APIs públicas -
Mejorar genéricos para
RepositoryyEntityManager
Resultados esperados
-
Mejores garantías en tiempo de compilación
-
Menos errores en tiempo de ejecución
-
Mejoras incrementales sin rupturas de compatibilidad
-
Documentación de patrones de tipado recomendados
Dificultad
Media - Se estiman 175 horas
Habilidades requeridas
TypeScript avanzado, genéricos, diseño de APIs para bibliotecas
Soporte para Vectores: Tipos, Indexación y Búsqueda en Múltiples Bases de Datos
Descripción
Los embeddings vectoriales son cada vez más comunes en aplicaciones modernas (IA, búsquedas, recomendaciones). Si bien TypeORM tiene soporte parcial para tipos de columnas vectoriales, carece de una solución unificada y completa para almacenamiento, indexación y consulta de vectores en diferentes bases de datos.
Este proyecto busca proporcionar soporte integral para vectores en TypeORM, abarcando tipos de columnas vectoriales, mapeos específicos por base de datos, indexación vectorial y abstracciones de alto nivel para búsqueda vectorial.
Mentores
Objetivos
-
Añadir soporte para columnas vectoriales en bases de datos restantes (ej. Oracle)
-
Investigar limitaciones de SQLite y ofrecer soporte para vectores de
libsqldonde sea posible -
Definir una API consistente para columnas vectoriales en múltiples bases de datos
-
Implementar soporte para índices vectoriales donde las bases de datos lo permitan
-
Exponer consultas de similitud vectorial mediante
QueryBuilder -
Implementar una abstracción de almacén vectorial de alto nivel sobre los repositorios
-
Opcional: explorar consultas estilo grafo de conocimiento (ej. APIs inspiradas en SPARQL)
Resultados esperados
-
Nuevo soporte para
@Column({ type: "vector" })en múltiples bases de datos -
Mapeos vectoriales específicos por base de datos, alternativas y limitaciones
-
Soporte para índices vectoriales multiplataforma
-
APIs de alto nivel para búsqueda vectorial y consultas de similitud
-
Arquitectura extensible para futuras funciones relacionadas con IA y búsquedas
-
Documentación y ejemplos claros
Dificultad
Media — Se estiman 175 horas
Habilidades requeridas
Dialectos SQL, internos de bases de datos, arquitectura de drivers de TypeORM, estrategias de indexación, optimización de consultas, diseño de APIs
Modularización de las APIs de definición de entidades
Mentores
Descripción
TypeORM actualmente soporta dos formas de definir entidades: entidades basadas en clases (decoradores) y esquemas de entidad. Con el tiempo, estos enfoques han divergido, con el soporte de esquemas de entidad frecuentemente rezagado respecto a las entidades basadas en clases en características y seguridad de tipos.
Este proyecto se enfoca en extraer y modularizar los estilos de definición de entidades en componentes más claros y mejor aislados, con el objetivo de mantener ambos enfoques sincronizados y permitir futuras mejoras arquitectónicas. En lugar de intentar una reestructuración completa a monorepo, el proyecto apunta a un subconjunto bien definido y alcanzable de ese trabajo.
Objetivos
-
Extraer la lógica de definición de entidades en módulos o paquetes claramente separados
-
Mejorar la paridad entre entidades basadas en clases y esquemas de entidad
-
Explorar una API de definición de entidades basada en funciones con fuerte inferencia de tipos
-
Reducir la duplicación entre estilos de definición de entidades
-
Sentar bases para futura modularización (ej. CLI, logging, caché)
Resultados esperados
-
Mejor sincronización de características entre esquemas de entidad y entidades basadas en clases
-
Abstracciones internas más limpias para la definición de metadatos de entidades
-
Inferencia de tipos mejorada para definiciones de entidades no basadas en clases
-
Límites claros que hagan futuras refactorizaciones y modularizaciones más seguras
Dificultad
Difícil - Estimado 350 horas
Habilidades requeridas
TypeScript, sistema de metadatos de TypeORM, diseño de APIs, refactorización de bases de código grandes
Abstracción de dialecto SQL para desarrollo de drivers personalizados
Descripción
Agregar o mantener drivers de bases de datos en TypeORM es actualmente complejo y está fuertemente acoplado a implementaciones existentes. Introducir una abstracción más clara de dialecto SQL facilitaría el soporte de nuevas bases de datos y reduciría la duplicación entre drivers.
Este proyecto busca definir e introducir una capa de dialecto SQL que encapsule el comportamiento SQL específico de cada base de datos, permitiendo un desarrollo más sencillo de nuevos drivers y una mejor separación de preocupaciones dentro de TypeORM.
Mentores
Objetivos
-
Diseñar una abstracción de dialecto SQL que capture comportamientos específicos de cada base de datos
-
Extraer lógica común de generación SQL de drivers existentes
-
Definir puntos de extensión claros para implementar nuevos dialectos
-
Documentar cómo construir un controlador personalizado utilizando el sistema de dialectos
Resultados esperados
-
Una interfaz de dialecto SQL bien definida
-
Reducción de la duplicación en los controladores existentes
-
Mejorada mantenibilidad de los controladores actuales
-
Ruta clara para controladores de bases de datos contribuidos por la comunidad
Dificultad
Difícil - Estimado 350 horas
Habilidades requeridas
Dialectos SQL, funcionamiento interno de bases de datos, TypeScript, arquitectura de controladores de TypeORM
Convocatoria abierta para ideas propuestas por la comunidad
TypeORM da la bienvenida a ideas de proyectos para Google Summer of Code propuestas por colaboradores y miembros de la comunidad.
Si tienes experiencia con TypeORM y has identificado puntos problemáticos, características faltantes o mejoras arquitectónicas, te animamos a sugerir una idea de proyecto para GSoC.
Las ideas sugeridas pueden incluir (sin limitarse a):
-
Mejoras en los controladores existentes o soporte para bases de datos
-
Optimizaciones de rendimiento
-
Mejoras en la experiencia del desarrollador y herramientas
-
Mejoras en la documentación o infraestructura de pruebas
-
Nuevas características
Las ideas propuestas deben incluir:
-
Una breve descripción del problema
-
Resultados esperados y alcance
-
Dificultad estimada
-
Áreas técnicas relevantes (TypeScript, SQL, controladores, etc.)
Las ideas propuestas por la comunidad serán revisadas por los mantenedores y podrán añadirse a la lista oficial de proyectos de GSoC.
Herramientas Modernas para Migraciones e Instantáneas
Descripción
El flujo de trabajo actual de migraciones de TypeORM se centra en la CLI, lo cual puede ser engorroso en proyectos basados en TypeScript y limita casos de uso avanzados. Además, los proyectos con historiales de migraciones extensos enfrentan una inicialización lenta y propensa a errores al configurar nuevos entornos.
Este proyecto busca modernizar las herramientas de migración de TypeORM mediante la introducción de una API programática para generación de migraciones e instantáneas de esquema opcionales. Estas mejoras harían la generación de migraciones más flexible y permitirían una inicialización más rápida de nuevas bases de datos sin necesidad de ejecutar todas las migraciones históricas.
Mentores
Objetivos
-
Introducir una API programática para generar migraciones sin depender de la CLI
-
Habilitar plantillas de migración personalizables
-
Diseñar un mecanismo de instantáneas de esquema que represente la estructura final de la base de datos
-
Permitir inicializar nuevas bases de datos usando instantáneas preservando el historial de migraciones
-
Garantizar compatibilidad con los flujos de migración existentes
Resultados esperados
-
Mejor experiencia para desarrolladores en flujos con TypeScript y sin CLI
-
Configuración de bases de datos más rápida y confiable para proyectos grandes
-
Generación de migraciones y plantillas más flexible
-
Documentación clara y patrones de uso recomendados
Dificultad
Media - Se estiman 175 horas
Habilidades requeridas
TypeScript, SQL, sistema de migraciones de TypeORM, funcionamiento interno de CLI, diseño de APIs y herramientas
Cómo empezar
Se anima a los estudiantes interesados en contribuir a TypeORM como parte de Google Summer of Code a involucrarse temprano. Se recomienda encarecidamente familiarizarse con la base de código, el flujo de contribución y las prácticas de la comunidad antes de enviar una propuesta.
Para empezar:
-
Únete a nuestro servidor de Discord.
-
Lee CONTRIBUTING.md.
-
Explora el repositorio y documentación de TypeORM para comprender su arquitectura y bases de datos compatibles.
-
Intenta resolver un problema pequeño o mejorar la documentación para familiarizarte con el proceso de contribución.